/** * Edit Filter Group Action * @param Request $request * @param $id * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View * @author: Vini Dubey<*****@*****.**> */ public function editFilterGroup(Request $request, $id) { $postdata = $request->all(); $ObjProductFeatures = ProductFeatures::getInstance(); $ObjProductCategory = ProductCategory::getInstance(); $ObjProductFilterOption = ProductFilterOption::getInstance(); $userId = Session::get('fs_admin')['id']; if ($request->isMethod('POST')) { $inputData = $request->all(); $variantFilterInputData = $request->input('filter_variant'); $filedNames = array_diff(array_keys($variantFilterInputData[0]), ['product_filter_option_id']); $rulesAddFilter = ['productfiltergroupname' => 'required_if:productfiltertype,G|regex:/(^[A-Za-z0-9 ]+$)+/|max:255|unique:product_filter_option,product_filter_option_name,' . $id . ',product_filter_option_id', 'filterdescription' => 'required_if:productfiltertype,G|max:255', 'productcategories' => 'required_if:productfiltertype,G']; $messagesAddFeature = ['productfiltergroupname.required_if' => 'Please enter a name', 'productfiltergroupname.regex' => 'Name can contain alphanumeric characters and spaces only', 'productfiltergroupname.max' => 'Name is too long to use. 255 characters max.', 'filterdescription.max' => 'Description should not exceed 255 characters', 'filterdescription.required_if' => 'Filter description is required', 'productcategories.required_if' => 'Please select atleast one category']; $newdata = []; foreach ($filedNames as $varinatKey => $fileVal) { foreach ($variantFilterInputData as $VKey => $filedName) { $rulesAddFilter['filter_variant' . '.' . $VKey . '.' . $fileVal] = 'required_if:productfiltertype,V|unique:product_filter_option,product_filter_option_name'; $rulesAddFilter['filter_variant' . '.' . $VKey . '.' . $fileVal] = 'required_if:productfiltertype,V'; $messagesAddFeature['filter_variant' . '.' . $VKey . '.' . $fileVal . '.required_if'] = 'Please select filter variant'; $messagesAddFeature['filter_variant' . '.' . $VKey . '.' . $fileVal . '.required_if'] = 'Please select filter variant description'; } } $validator = Validator::make($request->all(), $rulesAddFilter, $messagesAddFeature); if ($validator->fails()) { return redirect('/admin/edit-filtergroup/' . $id)->withErrors($validator)->withInput(); } else { if ($inputData['productfiltertype'] == 'G') { $data['product_filter_option_name'] = $inputData['productfiltergroupname']; $data['product_filter_option_description'] = $inputData['filterdescription']; $data['product_filter_type'] = $inputData['productfiltertype']; $data['product_filter_variant_type'] = $inputData['filter_variant_type']; $temp = array(); $cat = $postdata['productcategories']; foreach ($cat as $catkey => $catval) { $category[$catkey] = $catkey; } $where = ['rawQuery' => 'product_filter_option_id = ?', 'bindParams' => [$id]]; $FilterGroup = $ObjProductFilterOption->getFilterDetailsById($where); $catdata = $FilterGroup[0]->product_filter_category_id; $cata = explode(",", $catdata); $categoryIds = implode(',', array_unique($category)); array_push($cata, $categoryIds); $catmain = implode(",", array_unique(explode(",", implode(",", $cata)))); $data['product_filter_category_id'] = $catmain; $data['added_by'] = $userId; $result = $ObjProductFilterOption->updateFilterOption($where, $data); } else { $temp = array(); foreach ($variantFilterInputData as $varianKey => $varianVal) { $temp['product_filter_option_name'] = $varianVal['name']; $temp['product_filter_option_description'] = $varianVal['description']; $temp['product_filter_type'] = $inputData['productfiltertype']; $temp['product_filter_group_id'] = $id; $temp['added_by'] = $userId; if (isset($varianVal['product_filter_option_id'])) { $temps['product_filter_option_id'] = $varianVal['product_filter_option_id']; $wheres = ['rawQuery' => 'product_filter_option_id =' . $varianVal['product_filter_option_id']]; $result = $ObjProductFilterOption->updateFilterOption($wheres, $temp); } else { $result = $ObjProductFilterOption->addProductfilterWhere($temp); } } } } if ($result) { $success = "Successfully Edited!"; return Redirect::back()->with(['status' => 'success', 'msg' => $success]); } else { $success = "Nothing to update!"; return Redirect::back()->with(['status' => 'info', 'msg' => $success]); } } $where = array('rawQuery' => 'category_status = ?', 'bindParams' => [1]); $allCategories = $ObjProductCategory->getAllCategoriesWhere($where); foreach ($allCategories as $key => $value) { $allCategories[$key]->display_name = $this->getCategoryDisplayName($value->category_id); } $whereId = ['rawQuery' => 'product_filter_option_id = ? OR product_filter_group_id = ?', 'bindParams' => [$id, $id]]; $selectColumns = DB::raw('product_filter_option.*, GROUP_CONCAT(CASE product_filter_type WHEN "V" THEN product_filter_option_name END ) AS var_names, GROUP_CONCAT(CASE product_filter_type WHEN "V" THEN product_filter_option_description END ) AS var_description, GROUP_CONCAT(CASE product_filter_type WHEN "V" THEN product_filter_option_id END ) AS var_ids'); $FilterGroup = $ObjProductFilterOption->getFilterOptionAndGroup($whereId, $selectColumns); if (isset($allCategories) && !empty($FilterGroup)) { foreach ($FilterGroup as $filterKey => $filterVal) { if ($filterVal->product_filter_type == 'G') { $catfilterName = array_filter(array_values(array_unique(explode(',', $filterVal->product_filter_category_id)))); if (!empty($catfilterName)) { $where = ['rawQuery' => 'category_id IN (' . implode(',', $catfilterName) . ')']; $selectColumns = ['product_categories.*']; $category = $ObjProductCategory->getCategoryNameById($where, $selectColumns); foreach ($category as $key => $val) { $filtecat[$key] = $val->category_id; } $whereFeature = array('rawQuery' => 'status = ? AND parent_id=? AND feature_id = ?', 'bindParams' => [1, 0, $filterVal->product_filter_feature_id]); $allFeatures = $ObjProductFeatures->getAllFeaturesWhere($whereFeature); $dataForView = json_decode($allFeatures, true); $errMsg = null; if ($dataForView['code'] != 200) { $errMsg = $dataForView['message']; } } } } $FilterGroup[0]->filterCategories = $allCategories; $FilterGroup[0]->selectedCategories = $filtecat; $FilterGroup[0]->filterFeatures = $dataForView['data'][0]; return view('Admin/Views/filter/edit-filtergroup', ['editfiltergroup' => $FilterGroup]); } }
public function editFilterGroup(Request $request, $id) { $postdata = $request->all(); $ObjProductFeatures = ProductFeatures::getInstance(); $ObjProductCategory = ProductCategory::getInstance(); $ObjProductFilterOption = ProductFilterOption::getInstance(); if ($request->isMethod('GET')) { $where = array('rawQuery' => 'category_status = ?', 'bindParams' => [1]); $allCategories = $ObjProductCategory->getAllCategoriesWhere($where); foreach ($allCategories as $key => $value) { $allCategories[$key]->display_name = $this->getCategoryDisplayName($value->category_id); } $whereId = array('rawQuery' => 'product_filter_option_id=?', 'bindParams' => [$id]); $FilterGroup = $ObjProductFilterOption->getFilterDetailsById($whereId); $catfilterName = array_values(array_unique(explode(',', $FilterGroup[0]->product_filter_category_id))); $category = $ObjProductCategory->getCategoryById($catfilterName); foreach ($category as $key => $val) { $filtecat[$key] = $val->category_id; } $whereFeature = array('rawQuery' => 'status = ?', 'bindParams' => [1], 'rawQuery' => 'parent_id=?', 'bindParams' => [0]); $allFeatures = $ObjProductFeatures->getAllFeaturesWhere($whereFeature); return view('Admin/Views/filter/edit-filtergroup', ['editfiltergroup' => $FilterGroup[0], 'selectedcategory' => $filtecat, 'categories' => $allCategories, 'features' => $allFeatures]); } elseif ($request->isMethod('POST')) { $data['product_filter_option_name'] = $postdata['productfiltergroupname']; $data['product_filter_option_description'] = $postdata['filterdescription']; $data['product_filter_category_id'] = $postdata['productcategories']; // $data['status'] = $postdata['productfiltergroupnamestatus']; // need to work // // $checkforproduct = $postdata['filtercheckproduct']; // // if ($checkforproduct == "on") { // $data['display_on_product'] = 1; // } else { // $data['display_on_product'] = 0; // } // $checkforproduct = ''; // $checkforcatalog = $postdata['filtercheckcatalog']; // if ($checkforcatalog == "on") { // $data['display_on_catalog'] = 1; // } else { // $data['display_on_catalog'] = 0; // } // $checkforcatalog = ''; // end // $temp = array(); $cat = $postdata['productcategories']; foreach ($cat as $catkey => $catval) { $category[$catkey] = $catkey; } // $FilterGroup = $ObjProductCategory->getCategoryInfoById($category); $where = ['rawQuery' => 'product_filter_option_id = ?', 'bindParams' => [$id]]; $FilterGroup = $ObjProductFilterOption->getFilterDetailsById($where); $catdata = $FilterGroup[0]->product_filter_category_id; $cata = explode(",", $catdata); $categoryIds = implode(',', $category); array_push($cata, $categoryIds); $catmain = implode(",", $cata); $data['product_filter_category_id'] = $catmain; $result = $ObjProductFilterOption->updateFilterOption($where, $data); } if ($result) { $success = "Successfully Edited!"; return Redirect::back()->with('message', $success); } else { $success = "Error!"; return Redirect::back()->with('message', $success); } }
public function editProduct(Request $request, $productId) { $temp = ["cacheid" => "testcacheid1", "testsdata" => [["lessonid" => "1", "drills" => [["drillid" => "1", "result_ids" => "1,2,3"], ["drillid" => "2", "result_ids" => "4"]]], ["lessonid" => "2", "drills" => [["drillid" => "1", "result_ids" => "1,2,3"], ["drillid" => "2", "result_ids" => "4"]]]]]; dd(json_encode($temp, true)); die; //GET from product //GET from productmeta $objModelProducts = Products::getInstance(); $whereForProduct = ['rawQuery' => 'products.product_id = ?', 'bindParams' => [$productId]]; $productData = json_decode($objModelProducts->getProductWhere($whereForProduct), true); if (!empty($productData['data'])) { $objModelCategory = ProductCategory::getInstance(); $objModelFeatures = ProductFeatures::getInstance(); $objModelProductMeta = ProductMeta::getInstance(); $objModelProductImage = ProductImage::getInstance(); $objModelProductOption = ProductOption::getInstance(); $objModelProductOptionVariant = ProductOptionVariant::getInstance(); $objModelProductOptionVariantRelation = ProductOptionVariantRelation::getInstance(); $objModelProductFeatureVariantRelation = ProductFeatureVariantRelation::getInstance(); $objModelProductOptVarCombination = ProductOptionVariantsCombination::getInstance(); $objModelProductFeature = ProductFeatures::getInstance(); $userId = Session::get('fs_admin')['id']; $whereForCat = ['rawQuery' => 'category_status =?', 'bindParams' => [1]]; $allCategories = $objModelCategory->getAllCategoriesWhere($whereForCat); $whereForFeatureGroup = ['rawQuery' => 'group_flag =? and status = ?', 'bindParams' => [1, 1]]; $allFeatureGroups = $objModelFeatures->getAllFeaturesWhere($whereForFeatureGroup); //GET from product_feature_variant_relation $catId = (int) $productData['data']['category_id']; $catFlag = true; $parentCategory = array(); $count = 1; $bindParamsForFeature = array(); $queryForFeature = ""; $queryForFeatureGroup = ""; while ($catFlag) { if ($count == 1) { $queryForFeatureGroup = '(product_features.group_flag = 1) and (product_features.for_categories LIKE ? OR product_features.for_categories LIKE ? OR product_features.for_categories LIKE ? OR product_features.for_categories LIKE ?'; $queryForFeature = '(group_flag = 0 and parent_id = 0) and (for_categories LIKE ? OR for_categories LIKE ? OR for_categories LIKE ? OR for_categories LIKE ?'; } else { $count++; $catId = $parentCategory['category_id']; $queryForFeatureGroup .= 'OR product_features.for_categories LIKE ? OR product_features.for_categories LIKE ? OR product_features.for_categories LIKE ? OR product_features.for_categories LIKE ?'; $queryForFeature .= 'OR for_categories LIKE ? OR for_categories LIKE ? OR for_categories LIKE ? OR for_categories LIKE ?'; } array_push($bindParamsForFeature, "%,{$catId}"); array_push($bindParamsForFeature, "%,{$catId},%"); array_push($bindParamsForFeature, "{$catId},%"); array_push($bindParamsForFeature, "{$catId}"); $parentCategory = array(); $whereForCat = ['rawQuery' => 'parent_category_id = ?', "bindParams" => [$catId]]; $parentCategory = $objModelCategory->getCategoryDetailsWhere($whereForCat); if (!$parentCategory) { $catFlag = false; } } $queryForFeature .= ")"; $queryForFeatureGroup .= ")"; $whereForFeature = ['rawQuery' => $queryForFeature, 'bindParams' => $bindParamsForFeature]; $featureDetails = json_decode($objModelProductFeature->getAllFeaturesWithVariantsWhere($whereForFeature), true); // $featureDetails = json_decode($objModelProductFeature->getAllFeaturesWithFVRelationWhere($whereForFeature), true); $whereForFeatureGroup = ['rawQuery' => $queryForFeatureGroup, 'bindParams' => $bindParamsForFeature]; $featureGroups = json_decode($objModelProductFeature->getAllFGsWithFsWhere($whereForFeatureGroup), true); foreach ($featureGroups['data'] as $keyFG => $valueFG) { $whereForFs = ['rawQuery' => "product_features.parent_id IN (?)", "bindParams" => [$valueFG['feature_ids']]]; $featureGroups['data'][$keyFG]['featureDetails'] = json_decode($objModelProductFeature->getAllFeaturesWithVariantsWhere($whereForFs), true)['data']; } $whereForFVRelation = ['rawQuery' => "product_id = ?", 'bindParams' => [$productId]]; $fvRelations = $objModelProductFeatureVariantRelation->getAllFeatureVariantRelationsWhere($whereForFVRelation); // dd($fvRelations); $response['code'] = $featureDetails['code']; $response['message'] = $featureDetails['message']; $response['data']['featureDetails'] = $featureDetails['data']; $response['data']['featureGroupDetails'] = $featureGroups['data']; //GET from options $whereForOptions = ['rawQuery' => 'status = 1']; $allOptions = $objModelProductOption->getAllOptionsWhere($whereForOptions); //GET from option_variants // $objModelProductOptionVariant->getVariants //GET from option_variant_relation $whereForOptVar = ['rawQuery' => "1"]; //product_id = ?", 'bindParams' => [$productId]]; $whereForJoin = ['column' => 'product_id', 'condition' => '=', 'value' => "{$productId}"]; $dataOptVarWithRelations = json_decode($objModelProductOptionVariant->getOptionVarWithRelationsWhere($whereForOptVar, ['*'], $whereForJoin), true); // dd(json_decode($dataOptVarWithRelations, true));//$objModelProductOptionVariantRelation //GET from option_variants_combination $whereForOptVarCombinations = ['rawQuery' => "product_id = ?", 'bindParams' => [$productId]]; $dataOptVarCombs = json_decode($objModelProductOptVarCombination->getAllCombinationsWhere($whereForOptVarCombinations), true); // dd(json_decode($dataOptVarCombs, true));//$objModelProductOptionVariantRelation //GET from product_images $whereForImages = ['rawQuery' => 'for_product_id = ? and for_combination_id = ?', 'bindParams' => [$productId, 0]]; $dataDefaultImages = json_decode($objModelProductImage->getAllImagesWhere($whereForImages), true); // dd($dataImages); if ($request->isMethod('post')) { dd($request); // $inputData = $request->input('product_data');//Excludes image $inputData = $request->all()['product_data']; //Includes image // print_a($inputData['options']); // print_a($_FILES); $returnData = ['code' => 400, "message" => "Nothing to update.", "data" => null]; if (isset($inputData['updateFormName'])) { $updateFormName = $inputData['updateFormName']; $errors = array(); switch ($updateFormName) { case "general": $rules = ['product_name' => 'required', 'price' => 'required', 'in_stock' => 'required', 'comment' => 'max:100']; $messages = array(); $validator = Validator::make($inputData, $rules, $messages); if ($validator->fails()) { return Redirect::back()->with(["code" => 400, "status" => 'error', 'message' => 'Please correct the following errors.'])->withErrors($validator)->withInput(); } else { $productData = array(); $productData['product_name'] = trim($inputData['product_name']); $productData['for_shop_id'] = $inputData['shop_id']; if (array_key_exists('product_type', $inputData)) { $productData['product_type'] = 1; } $productData['min_qty'] = $inputData['minimum_order_quantity']; $productData['max_qty'] = $inputData['maximum_order_quantity']; $productData['category_id'] = $inputData['category_id']; $productData['for_gender'] = $inputData['for_gender']; $productData['price_total'] = $inputData['price']; $productData['list_price'] = $inputData['list_price']; $productData['in_stock'] = $inputData['in_stock']; $productData['added_date'] = time(); $productData['added_by'] = $userId; $productData['status_set_by'] = $userId; $returnData = $objModelProducts->updateProductsWhere($productData); // $returnData['code'] = 200; // $returnData['message'] = "General details saved successfully"; // $returnData['data'] = null; } //--------------------------PRODUCT-METADATA----------------------------// $productMetaData['product_id'] = $productId; $productMetaData['full_description'] = trim($inputData['full_description']); $productMetaData['short_description'] = trim($inputData['short_description']); $productMetaData['weight'] = $inputData['shipping_properties']['weight']; $productMetaData['shipping_freight'] = $inputData['shipping_properties']['shipping_freight']; $shippingParams = array(); $shippingParams['min_items'] = $inputData['shipping_properties']['min_items']; $shippingParams['max_items'] = $inputData['shipping_properties']['min_items']; if (array_key_exists('box_length', $inputData['shipping_properties'])) { $shippingParams['box_length'] = $inputData['shipping_properties']['box_length']; } if (array_key_exists('box_width', $inputData['shipping_properties'])) { $shippingParams['box_width'] = $inputData['shipping_properties']['box_width']; } if (array_key_exists('box_height', $inputData['shipping_properties'])) { $shippingParams['box_height'] = $inputData['shipping_properties']['box_height']; } $productMetaData['shipping_params'] = json_encode($shippingParams); $productMetaData['quantity_discount'] = json_encode($inputData['quantity_discount']); $productMetaData['product_tabs'] = json_encode($inputData['product_tabs']); $insertedProductMetaId = $objModelProductMeta->addProductMetaData($productMetaData); if (!$insertedProductMetaId) { $errors[] = 'Sorry, some of the product data were not added, please update the same on the edit section.'; } //--------------------------END PRODUCT-METADATA----------------------------// //------------------------PRODUCT FEATURES START HERE---------------------// if (array_key_exists('features', $inputData)) { $productDataFeatures = $inputData['features']; $fvrDataToInsert = array(); foreach ($productDataFeatures as $keyPDF => $valuePDF) { if (array_key_exists("single", $productDataFeatures[$keyPDF])) { // $fvrDataToInsert[] = ['product_id' => $insertedProductId, 'feature_id' => $keyPDF, 'variant_ids' => 0, 'display_status' => $productDataFeatures[$keyPDF]['status']]; $objModelProductFeatureVariantRelation->addFeatureVariantRelation(['product_id' => $insertedProductId, 'feature_id' => $keyPDF, 'variant_ids' => 0, 'display_status' => $productDataFeatures[$keyPDF]['status']]); } else { if (array_key_exists("muliple", $productDataFeatures[$keyPDF])) { // $fvrDataToInsert[] = ['product_id' => $insertedProductId, 'feature_id' => $keyPDF, 'variant_ids' => implode(",", array_keys($valuePDF['multiple'])), 'display_status' => $valuePDF['status']]; $objModelProductFeatureVariantRelation->addFeatureVariantRelation(['product_id' => $insertedProductId, 'feature_id' => $keyPDF, 'variant_ids' => implode(",", array_keys($valuePDF['multiple'])), 'display_status' => $valuePDF['status']]); } else { if (array_key_exists("select", $productDataFeatures[$keyPDF])) { // $fvrDataToInsert[] = ['product_id' => $insertedProductId, 'feature_id' => $keyPDF, 'variant_ids' => $valuePDF['select'], 'display_status' => $valuePDF['status']]; $objModelProductFeatureVariantRelation->addFeatureVariantRelation(['product_id' => $insertedProductId, 'feature_id' => $keyPDF, 'variant_ids' => "" . $valuePDF['select'], 'display_status' => $valuePDF['status']]); } } } } // $objModelProductFeatureVariantRelation->addFeatureVariantRelation($fvrDataToInsert); } //------------------------PRODUCT FEATURES END HERE---------------------// break; //TODO update main image here //TODO update main image here case "images": $rules = ['mainimage' => 'image|mimes:jpeg,bmp,png|max:1000']; $messages['mainimage.image'] = 'Only jpg, jpeg, gif images allowed for upload.'; $validator = Validator::make($inputData, $rules, $messages); if ($validator->fails()) { return Redirect::back()->with(["code" => 400, "status" => 'error', 'message' => 'Please correct the following errors.'])->withErrors($validator)->withInput(); } else { //TODO update otherimages here //----------------------------PRODUCT-IMAGES------------------------------// $productImages = $_FILES['product_data']; $imageData = array(); if ($productImages['error']['mainimage'] == 0) { $mainImageURL = uploadImageToStoragePath($productImages['tmp_name']['mainimage'], 'product_' . $insertedProductId, 'product_' . $insertedProductId . '_0_' . time() . '.jpg', 724, 1024); if ($mainImageURL) { $mainImageData['for_product_id'] = $insertedProductId; $mainImageData['image_type'] = 0; $mainImageData['image_upload_type'] = 0; $mainImageData['image_url'] = $mainImageURL; $imageData[] = $mainImageData; } } else { $errors[] = 'Sorry, something went wrong. Main image could not be uploaded, You can upload it on edit section.'; } if (array_key_exists('otherimages', $productImages['name'])) { foreach ($productImages['tmp_name']['otherimages'] as $otherImageKey => $otherImage) { if ($otherImage != '') { $otherImageURL = uploadImageToStoragePath($otherImage, 'product_' . $insertedProductId, 'product_' . $insertedProductId . '_' . ($otherImageKey + 1) . '_' . time() . '.jpg', 724, 1024); if ($otherImageURL) { $otherImageData['for_product_id'] = $insertedProductId; $otherImageData['image_type'] = 1; $otherImageData['image_upload_type'] = 0; $otherImageData['image_url'] = $otherImageURL; $imageData[] = $otherImageData; } } } } if (!empty($imageData)) { $objModelProductImage->addNewImage($imageData); } //--------------------------END PRODUCT-IMAGES----------------------------// $returnData['code'] = 200; $returnData['message'] = "Images updated successfully"; $returnData['data'] = null; } break; case "options": $rules = ['mainimage' => 'image|mimes:jpeg,bmp,png|max:1000']; $messages['mainimage.image'] = 'Only jpg, jpeg, gif images allowed for upload.'; $validator = Validator::make($inputData, $rules, $messages); if ($validator->fails()) { return Redirect::back()->with(["code" => 400, "status" => 'error', 'message' => 'Please correct the following errors.'])->withErrors($validator)->withInput(); } else { //TODO options code here if (array_key_exists('options', $inputData)) { $finalOptionVariantRelationData = array(); $varDataForCombinations = array(); foreach ($inputData['options'] as $key => $optionValue) { $optionVariantRelationData['product_id'] = $insertedProductId; $optionVariantRelationData['option_id'] = $optionValue['option_id']; $optionVariantRelationData['status'] = $optionValue['status']; $tempOptionVariantData = array(); $variantIds = array(); //-------------------------OLD OPTION VARIANT START-----------------------// /* if (array_key_exists('variantData', $optionValue)) { foreach ($optionValue['variantData'] as $variantKey => $variantValue) { $temp = array(); if ($variantValue['variant_id'] == 0) { $variantData['option_id'] = $optionValue['option_id']; $variantData['variant_name'] = $variantValue['variant_name']; $variantData['added_by'] = $userId; $variantData['status'] = $variantValue['status']; $variantData['created_at'] = NULL; $insertedVariantId = $objModelProductOptionVariant->addNewVariantAndGetID($variantData); if ($insertedVariantId > 0) { array_push($variantIds, $insertedVariantId); $temp['VID'] = $insertedVariantId; $temp['VN'] = $variantValue['variant_name']; $temp['PM'] = $variantValue['price_modifier']; $temp['PMT'] = $variantValue['price_modifier_type']; $temp['WM'] = $variantValue['weight_modifier']; $temp['WMT'] = $variantValue['weight_modifier_type']; $temp['STTS'] = $variantValue['status']; } } else { array_push($variantIds, $variantValue['variant_id']); $temp['VID'] = $variantValue['variant_id']; $temp['VN'] = $variantValue['variant_name']; $temp['PM'] = $variantValue['price_modifier']; $temp['PMT'] = $variantValue['price_modifier_type']; $temp['WM'] = $variantValue['weight_modifier']; $temp['WMT'] = $variantValue['weight_modifier_type']; $temp['STTS'] = $variantValue['status']; } $tempOptionVariantData[] = $temp; } if (!empty($variantIds) && !empty($tempOptionVariantData)) { $optionVariantRelationData['variant_ids'] = implode(',', $variantIds); $optionVariantRelationData['variant_data'] = json_encode($tempOptionVariantData); } } */ //-------------------------OLD OPTION VARIANT END-----------------------// //-------------------------NEW OPTION VARIANT START---------------------// if (array_key_exists('variantData', $optionValue)) { foreach ($optionValue['variantData'] as $variantKey => $variantValue) { $temp = array(); array_push($variantIds, $variantValue['variant_id']); $temp['VID'] = $variantValue['variant_id']; $temp['VN'] = $variantValue['variant_name']; $temp['PM'] = $variantValue['price_modifier']; $temp['PMT'] = $variantValue['price_modifier_type']; $temp['WM'] = $variantValue['weight_modifier']; $temp['WMT'] = $variantValue['weight_modifier_type']; $temp['STTS'] = $variantValue['status']; $tempOptionVariantData[] = $temp; } } if (array_key_exists('variantDataNew', $optionValue)) { foreach ($optionValue['variantDataNew'] as $variantKey => $variantValue) { $temp = array(); $variantData['option_id'] = $optionValue['option_id']; $variantData['variant_name'] = $variantValue['variant_name']; $variantData['added_by'] = $userId; $variantData['status'] = $variantValue['status']; $variantData['created_at'] = NULL; $insertedVariantId = $objModelProductOptionVariant->addNewVariantAndGetID($variantData); if ($insertedVariantId > 0) { $varDataForCombinations[$variantValue['variant_id']] = $insertedVariantId; array_push($variantIds, $insertedVariantId); $temp['VID'] = $insertedVariantId; $temp['VN'] = $variantValue['variant_name']; $temp['PM'] = $variantValue['price_modifier']; $temp['PMT'] = $variantValue['price_modifier_type']; $temp['WM'] = $variantValue['weight_modifier']; $temp['WMT'] = $variantValue['weight_modifier_type']; $temp['STTS'] = $variantValue['status']; } $tempOptionVariantData[] = $temp; } } if (!empty($variantIds) && !empty($tempOptionVariantData)) { $optionVariantRelationData['variant_ids'] = implode(',', $variantIds); $optionVariantRelationData['variant_data'] = json_encode($tempOptionVariantData); } //-------------------------NEW OPTION VARIANT END---------------------// $finalOptionVariantRelationData[] = $optionVariantRelationData; } if (!empty($finalOptionVariantRelationData)) { $objModelProductOptionVariantRelation->addNewOptionVariantRelation($finalOptionVariantRelationData); } //------------------------PRODUCT OPTION COMBINATIONS START HERE---------------------// foreach ($inputData['opt_combination'] as $keyCombination => $valueCombination) { $flags = explode("_", $valueCombination['newflag']); $combinationVarIds = explode("_", $keyCombination); $flagKeys = array_keys($flags, "1"); foreach ($flagKeys as $keyFK => $valueFK) { $combinationVarIds[$keyFK] = $varDataForCombinations[$combinationVarIds[[$keyFK]]]; } //TODO ADD BARCODE, shippig info and image data for the combination here $dataCombinations['product_id'] = $insertedProductId; $dataCombinations['variant_ids'] = implode("_", $combinationVarIds); $dataCombinations['quantity'] = $valueCombination['quantity']; $dataCombinations['exception_flag'] = 0; if (isset($valueCombination['excludeflag']) && $valueCombination['excludeflag'] == 'on') { $dataCombinations['exception_flag'] = 1; } $objModelProductOptVarCombination->addNewOptionVariantsCombination($dataCombinations); } //------------------------PRODUCT OPTION COMBINATIONS END HERE---------------------// } $returnData['code'] = 200; $returnData['message'] = "Options saved successfully"; $returnData['data'] = null; } break; /* case "features": $returnData['code'] = 200; $returnData['message'] = "Features saved successfully"; $returnData['data'] = null; break; */ /* case "features": $returnData['code'] = 200; $returnData['message'] = "Features saved successfully"; $returnData['data'] = null; break; */ case "filters": $rules = ['mainimage' => 'image|mimes:jpeg,bmp,png|max:1000']; $messages['mainimage.image'] = 'Only jpg, jpeg, gif images allowed for upload.'; $validator = Validator::make($inputData, $rules, $messages); if ($validator->fails()) { return Redirect::back()->with(["code" => 400, "status" => 'error', 'message' => 'Please correct the following errors.'])->withErrors($validator)->withInput(); } else { $returnData['code'] = 200; $returnData['message'] = "Filters saved successfully"; $returnData['data'] = null; } break; case "tabs": $rules = ['mainimage' => 'image|mimes:jpeg,bmp,png|max:1000']; $messages['mainimage.image'] = 'Only jpg, jpeg, gif images allowed for upload.'; $validator = Validator::make($inputData, $rules, $messages); if ($validator->fails()) { return Redirect::back()->with(["code" => 400, "status" => 'error', 'message' => 'Please correct the following errors.'])->withErrors($validator)->withInput(); } else { $returnData['code'] = 200; $returnData['message'] = "Tab details saved successfully"; $returnData['data'] = null; } break; default: break; } } } foreach ($allCategories as $key => $value) { $allCategories[$key]->display_name = $this->getCategoryDisplayName($value->category_id); } return view('Admin/Views/product/editProduct', ['code' => '', 'allCategories' => $allCategories, 'allOptions' => $allOptions, 'featureGroups' => json_decode($allFeatureGroups, true), 'productData' => $productData['data'], 'dataOptVarWithRelations' => $dataOptVarWithRelations, 'dataOptVarCombs' => $dataOptVarCombs, 'dataDefaultImages' => $dataDefaultImages]); } else { return view('Admin/Views/product/editProduct', ['code' => '400', 'message' => 'No such product exists.', 'productData' => array()]); } }
public function editFeature(Request $request, $featureId) { $objModelFeatures = ProductFeatures::getInstance(); $objModelCategory = ProductCategory::getInstance(); $objModelFeatureVariants = ProductFeatureVariants::getInstance(); $whereForFeatureGroup = ['rawQuery' => 'group_flag =? and status = ?', 'bindParams' => [1, 1]]; $allFeatureGroups = $objModelFeatures->getAllFeaturesWhere($whereForFeatureGroup); $whereForFeature = ['rawQuery' => 'feature_id = ? and group_flag=?', 'bindParams' => [$featureId, 0]]; $featureDetails = $objModelFeatures->getFeatureWhere($whereForFeature); $whereForCat = ['rawQuery' => 'category_status =?', 'bindParams' => [1]]; $allCategories = $objModelCategory->getAllCategoriesWhere($whereForCat); $whereForFV = ['rawQuery' => 'feature_id = ?', 'bindParams' => [$featureId]]; $fvData = $objModelFeatureVariants->getAllFeatureVariantsWhere($whereForFV); if ($request->isMethod('post')) { // echo "<pre>"; print_r($request->input()); die; $dataUpdateFeature = array(); $dataUpdateFeature['parent_id'] = (string) json_decode($featureDetails, true)['data']['parent_id']; if ($request->input('parent_id') != null) { $dataUpdateFeature['parent_id'] = $request->input('parent_id'); } $rulesEditdFeature = ['feature_name' => 'required|regex:/(^[A-Za-z0-9 ]+$)+/|max:255|unique:product_features,feature_name,' . $featureId . ',feature_id,parent_id,' . $dataUpdateFeature['parent_id'] . ',group_flag,0', 'full_description' => 'max:255', 'feature_type' => 'required', 'for_categories' => 'required']; $messagesEditFeature = ['feature_name.required' => 'Please enter a name', 'feature_name.alpha_num' => 'Please enter a valid name', 'full_description.max' => 'Description should not exceed 255 characters', 'feature_type.required' => 'Please select a feature type', 'for_categories.required' => 'Please select atleast one category']; $featureVariants = $request->input('feature_variant')['name']; $featureVariantsDesc = $request->input('feature_variant')['description']; $featureVariantIds = $request->input('feature_variant')['variant_id']; // echo '<pre>'; print_r($featureVariantIds); die; foreach ($featureVariants as $keyFV => $valueFV) { //NEED MORE VALIDATION HERE $rulesEditdFeature['feature_variant.name.' . $keyFV] = 'regex:/(^[A-Za-z0-9 ]+$)+/|max:255|unique:product_feature_variants,variant_name,' . (isset($featureVariantIds[$keyFV]) ? $featureVariantIds[$keyFV] : 'NULL') . ',variant_id,feature_id,' . $featureId; $rulesEditdFeature['feature_variant.description.' . $keyFV] = 'regex:/(^[A-Za-z0-9 ]+$)+/|max:255'; $messagesEditFeature['feature_variant.name.' . $keyFV . '.regex'] = 'Name can contain alphanumeric characters and spaces only'; $messagesEditFeature['feature_variant.name.' . $keyFV . '.max'] = 'Name is too long to use. 255 characters max.'; $messagesEditFeature['feature_variant.name.' . $keyFV . '.unique'] = 'Variant name already in use.'; $messagesEditFeature['feature_variant.description.' . $keyFV . '.regex'] = 'Invalid description.'; } // $this->validate($request, $rulesEditdFeature, $messagesEditFeature); $validator = Validator::make($request->all(), $rulesEditdFeature, $messagesEditFeature); if ($validator->fails()) { return Redirect::back()->with(["code" => '400', 'message' => 'Please correct the following errors.'])->withErrors($validator)->withInput(); } else { $dataUpdateFeature['feature_name'] = $request->input('feature_name'); $dataUpdateFeature['full_description'] = $request->input('full_description'); $dataUpdateFeature['feature_type'] = $request->input('feature_type'); $selectedCategories = $request->input('for_categories'); $dataUpdateFeature['for_categories'] = implode(',', array_keys($selectedCategories)); $dataUpdateFeature['display_on_product'] = 0; if ($request->input('display_on_product') != null) { $dataUpdateFeature['display_on_product'] = 1; } $dataUpdateFeature['display_on_catalog'] = 0; if ($request->input('display_on_catalog') != null) { $dataUpdateFeature['display_on_catalog'] = 1; } $dataUpdateFeature['group_flag'] = 0; $whereForFeatureUpdate = ['rawQuery' => 'feature_id = ?', 'bindParams' => [$featureId]]; $updatedFeature = json_decode($objModelFeatures->updateFeatureWhere($dataUpdateFeature, $whereForFeatureUpdate), true); //CODE TO INSERT VARIANTS HERE $whereForVariantId = ['rawQuery' => 'feature_id =?', 'bindParams' => [$featureId]]; $selectedVariantColumn = array(DB::raw('GROUP_CONCAT(variant_id) AS variant_ids')); $oldVariantIds = explode(',', json_decode($objModelFeatureVariants->getFeatureVariantWhere($whereForVariantId, $selectedVariantColumn), true)['data']['variant_ids']); $inputVariantIds = array(); $updateVariantResultFlag = false; $newVariantResultFlag = false; $deletedVariantResultFlag = false; $variantIdsToDelete = $oldVariantIds; if ($dataUpdateFeature['feature_type'] != 0) { foreach ($featureVariants as $keyFV => $valueFV) { if ($valueFV != '') { if (isset($featureVariantIds[$keyFV]) && in_array($featureVariantIds[$keyFV], $oldVariantIds)) { //UPDATE VARIANT DETAILS $inputVariantIds[] = $featureVariantIds[$keyFV]; $updateVariantData = ''; $updateVariantData['variant_name'] = $valueFV; $updateVariantData['description'] = $featureVariantsDesc[$keyFV]; $whereForUpdateVariant = ['rawQuery' => 'variant_id =?', 'bindParams' => [$featureVariantIds[$keyFV]]]; $updateVariantResult = $objModelFeatureVariants->updateFeatureVariantWhere($updateVariantData, $whereForUpdateVariant); if ($updateVariantResult) { $updateVariantResultFlag = true; } } else { //ADD NEW VARIANT DETAILS $newVariantData['feature_id'] = $featureId; $newVariantData['variant_name'] = $valueFV; // $newVariantData['added_by'] = $userId; $newVariantData['description'] = $featureVariantsDesc[$keyFV]; $newInsertedVariantId = $objModelFeatureVariants->addFeatureVariant($newVariantData); if ($newInsertedVariantId) { $newVariantResultFlag = true; } } } } $variantIdsToDelete = array_diff($oldVariantIds, $inputVariantIds); } if (!empty($variantIdsToDelete)) { $whereForDeleteVariant = ['rawQuery' => 'variant_id IN (?)', 'bindParams' => [implode(',', $variantIdsToDelete)]]; $deletedVariantResult = $objModelFeatureVariants->deleteFeatureVariantWhere($whereForDeleteVariant); if ($deletedVariantResult) { $deletedVariantResultFlag = true; } } if (isset($updatedFeature) && $updatedFeature['code'] == 200 || isset($updateVariantResultFlag) && $updateVariantResultFlag || isset($newVariantResultFlag) && $newVariantResultFlag || isset($deletedVariantResultFlag) && $deletedVariantResultFlag) { //ALL DETAILS UPDATED return Redirect::back()->with(['code' => '200', 'message' => 'Changes saved successfully.']); } else { //NOTHING TO UPDATE return Redirect::back()->with(['code' => '200', 'message' => 'Nothing to update.']); } } } return view('Admin/Views/features/editFeature', ['code' => '', 'featureGroups' => json_decode($allFeatureGroups, true), 'allCategories' => $allCategories, 'featureDetails' => json_decode($featureDetails, true), 'fvData' => json_decode($fvData, true)]); //, ['successMsg' => $successMsg, 'errMsg' => $errMsg] }