From 92809547faf4bccea8a29013ccb9966eccf06679 Mon Sep 17 00:00:00 2001 From: merdan Date: Sun, 10 Apr 2022 17:00:58 +0500 Subject: [PATCH] active brands --- .../Controllers/IntegrationController.php | 14 +++++ .../Http/Resources/Catalog/VendorCategory.php | 26 +++++++++ packages/Sarga/API/Http/routes.php | 1 + .../src/Repositories/ProductRepository.php | 58 +++++++++++-------- 4 files changed, 75 insertions(+), 24 deletions(-) create mode 100644 packages/Sarga/API/Http/Resources/Catalog/VendorCategory.php diff --git a/packages/Sarga/API/Http/Controllers/IntegrationController.php b/packages/Sarga/API/Http/Controllers/IntegrationController.php index 34853cf79..ca77f2720 100644 --- a/packages/Sarga/API/Http/Controllers/IntegrationController.php +++ b/packages/Sarga/API/Http/Controllers/IntegrationController.php @@ -76,4 +76,18 @@ class IntegrationController extends Controller } + public function update(){ + try { + $data = json_decode(request()->getContent(),true); + } + catch (\Exception $e){ + Log::error($e->getMessage()); + return response()->json(['errors'=>$e->getMessage()],400); + } + + if(! $product = $this->productRepository->findOneByField('sku',$data['sku'])){ + return response()->json(['success'=> false,'message' => 'product not found'],400); + } + } + } \ No newline at end of file diff --git a/packages/Sarga/API/Http/Resources/Catalog/VendorCategory.php b/packages/Sarga/API/Http/Resources/Catalog/VendorCategory.php new file mode 100644 index 000000000..bf4c0c257 --- /dev/null +++ b/packages/Sarga/API/Http/Resources/Catalog/VendorCategory.php @@ -0,0 +1,26 @@ + $this->id, + 'name' => $this->name, + 'display_mode' => $this->display_mode, + 'image_url' => $this->image_url, + 'children' => Category::collection($this->children), + ]; + } +} \ No newline at end of file diff --git a/packages/Sarga/API/Http/routes.php b/packages/Sarga/API/Http/routes.php index 704240e9d..7f40e144e 100644 --- a/packages/Sarga/API/Http/routes.php +++ b/packages/Sarga/API/Http/routes.php @@ -126,6 +126,7 @@ Route::group(['prefix' => 'api'], function () { Route::group(['prefix' => 'scrap','middleware' =>['scrap']], function (){ Route::put('upload',[IntegrationController::class,'bulk_upload']); Route::put('create',[IntegrationController::class,'create']); + Route::put('update',[IntegrationController::class,'update']); }); }); diff --git a/packages/Sarga/Shop/src/Repositories/ProductRepository.php b/packages/Sarga/Shop/src/Repositories/ProductRepository.php index dab88b6ce..8a92ccbdb 100644 --- a/packages/Sarga/Shop/src/Repositories/ProductRepository.php +++ b/packages/Sarga/Shop/src/Repositories/ProductRepository.php @@ -266,6 +266,7 @@ class ProductRepository extends WProductRepository return $results; } + public function create($data){ $time_start = microtime(true); @@ -346,25 +347,28 @@ class ProductRepository extends WProductRepository $description = implode(array_map(fn($value): string => '

' . $value['description'] . '

', $colorVariant['descriptions'])); if (!empty($colorVariant['size_variants'])) { foreach ($colorVariant['size_variants'] as $sizeVariant) { - $variant = $this->createVariant($parentProduct, $colorVariant['product_number'] . $sizeVariant['size']); + if($variant = $this->createVariant($parentProduct, $colorVariant['product_number'] . $sizeVariant['size'])) + { + $this->assignImages($variant, $colorVariant['images']); + $this->assignAttributes($variant, [ + 'sku' => $variant->sku, + 'color' => $this->getAttributeOptionId('color', $colorVariant['color']), + 'name' => $colorVariant['name'], + 'size' => $this->getAttributeOptionId('size', $sizeVariant['size']), + 'price' => $sizeVariant['price'], + 'weight' => $colorVariant['weight'] ?? 0.45, + 'status' => 1, + 'visible_individually' => 1, + 'url_key' => $variant->sku, + 'source' => $colorVariant['url_key'], + 'description' => $description + ]); + } - $this->assignImages($variant, $colorVariant['images']); - $this->assignAttributes($variant, [ - 'sku' => $variant->sku, - 'color' => $this->getAttributeOptionId('color', $colorVariant['color']), - 'name' => $colorVariant['name'], - 'size' => $this->getAttributeOptionId('size', $sizeVariant['size']), - 'price' => $sizeVariant['price'], - 'weight' => $colorVariant['weight'] ?? 0.45, - 'status' => 1, - 'visible_individually' => 1, - 'url_key' => $variant->sku, - 'source' => $colorVariant['url_key'], - 'description' => $description - ]); } - } else { - $variant = $this->createVariant($parentProduct, $colorVariant['product_number']); + } + elseif($variant = $this->createVariant($parentProduct, $colorVariant['product_number'])) + { $this->assignImages($variant, $colorVariant['images']); $this->assignAttributes($variant, [ 'sku' => $variant->sku, @@ -648,13 +652,19 @@ class ProductRepository extends WProductRepository } private function createVariant($product, $sku){ - return $this->getModel()->create([ - 'parent_id' => $product->id, - 'type' => 'simple', - 'attribute_family_id' => $product->attribute_family_id, - 'sku' => $sku, - 'brand_id' => $product->brand_id - ]); + try{ + return $this->getModel()->create([ + 'parent_id' => $product->id, + 'type' => 'simple', + 'attribute_family_id' => $product->attribute_family_id, + 'sku' => $sku, + 'brand_id' => $product->brand_id + ]); + } + catch(\Exception $ex){ + return false; + } + }