From c640d7cf59b694be381ffb0248f60e25505cd2dd Mon Sep 17 00:00:00 2001 From: merdan Date: Tue, 12 Apr 2022 11:58:43 +0500 Subject: [PATCH] active brands --- .../Controllers/IntegrationController.php | 11 ++- .../Sarga/Importer/src/ImportRepository.php | 63 +++++---------- .../src/Repositories/ProductRepository.php | 76 ++++++------------- 3 files changed, 48 insertions(+), 102 deletions(-) diff --git a/packages/Sarga/API/Http/Controllers/IntegrationController.php b/packages/Sarga/API/Http/Controllers/IntegrationController.php index df1a45ebc..36ca4c175 100644 --- a/packages/Sarga/API/Http/Controllers/IntegrationController.php +++ b/packages/Sarga/API/Http/Controllers/IntegrationController.php @@ -12,13 +12,11 @@ use Webkul\Marketplace\Repositories\SellerRepository; class IntegrationController extends Controller { - protected $productRepository; - protected $sellerRepository; - public function __construct(ProductRepository $productRepository, SellerRepository $sellerRepository) + public function __construct(protected ProductRepository $productRepository, + protected SellerRepository $sellerRepository) { - $this->sellerRepository = $sellerRepository; - $this->productRepository = $productRepository; + } public function store(){ @@ -63,7 +61,8 @@ class IntegrationController extends Controller return response()->json(['errors'=>$validation->getMessageBag()->all()],422); } - if($product = $this->productRepository->findOneByField('product_number',$data['product_number'])){//product_group_id + if($product = $this->productRepository->findOneByField('sku',$data['product_group_id'])) + {//product_group_id return response()->json(['success'=>true,'product_id' => $product->id]); } elseif($product = $this->productRepository->create($data)){ diff --git a/packages/Sarga/Importer/src/ImportRepository.php b/packages/Sarga/Importer/src/ImportRepository.php index 49ca6fd64..fbf5af44e 100644 --- a/packages/Sarga/Importer/src/ImportRepository.php +++ b/packages/Sarga/Importer/src/ImportRepository.php @@ -135,53 +135,26 @@ class ImportRepository extends \Webkul\Core\Eloquent\Repository foreach($attributes as $code => $value){ $attribute = $this->attributeRepository->findOneByField('code', $code); - if ($attribute->value_per_channel) { - if ($attribute->value_per_locale) { - foreach (core()->getAllChannels() as $channel) { - foreach (core()->getAllLocales() as $locale) { - $this->attributeValueRepository->create([ - 'product_id' => $product->id, - 'attribute_id' => $attribute->id, - 'channel' => $channel->code, - 'locale' => $locale->code, - 'value' => $value, - ]); - } - } - } else { - foreach (core()->getAllChannels() as $channel) { - $this->attributeValueRepository->create([ - 'product_id' => $product->id, - 'attribute_id' => $attribute->id, - 'channel' => $channel->code, - 'value' => $value, - ]); - } - } - } else { - if ($attribute->value_per_locale) { - foreach (core()->getAllLocales() as $locale) { - $this->attributeValueRepository->create([ - 'product_id' => $product->id, - 'attribute_id' => $attribute->id, - 'locale' => $locale->code, - 'value' => $value, - ]); - } - } else { - try { - $attr = [ - 'product_id' => $product->id, - 'attribute_id' => $attribute->id, - 'value' => $value, - ]; - $this->attributeValueRepository->create($attr); - }catch (\Exception $e) { - Log::error($e->getMessage()); - } + $attr = [ + 'product_id' => $product->id, + 'attribute_id' => $attribute->id, + 'value' => $value + ]; - } + if($attribute->value_per_channel){ + $attr['channel'] = config('app.channel'); } + + if ($attribute->value_per_locale){ + foreach (core()->getAllLocales() as $locale){ + $attr['locale'] = $locale->code; + $this->attributeValueRepository->create($attr); + } + + }else{ + $this->attributeValueRepository->create($attr); + } + } } } \ No newline at end of file diff --git a/packages/Sarga/Shop/src/Repositories/ProductRepository.php b/packages/Sarga/Shop/src/Repositories/ProductRepository.php index a682f086f..6c676fbee 100644 --- a/packages/Sarga/Shop/src/Repositories/ProductRepository.php +++ b/packages/Sarga/Shop/src/Repositories/ProductRepository.php @@ -270,7 +270,7 @@ class ProductRepository extends WProductRepository public function create($data){ $time_start = microtime(true); - $product['sku'] = 'G-'.$data['product_group_id']; + $product['sku'] = $data['product_group_id']; // return array_map(fn($value): int => $value * 2, range(1, 5)); $product['type'] = (!empty($data['color_variants']) || !empty($data['size_variants'])) ? 'configurable':'simple'; @@ -348,7 +348,9 @@ 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) { - if($variant = $this->createVariant($parentProduct, "{$colorVariant['product_number']}-{$sizeVariant['itemNumber']}")) + $variant = $this->createVariant($parentProduct, "{$data['product_group_id']}-{$colorVariant['product_number']}-{$sizeVariant['itemNumber']}"); + + if($variant) { $this->assignImages($variant, $colorVariant['images']); $this->assignAttributes($variant, [ @@ -368,7 +370,7 @@ class ProductRepository extends WProductRepository } } - elseif($variant = $this->createVariant($parentProduct, $colorVariant['product_number'])) + elseif($variant = $this->createVariant($parentProduct, "{$data['product_group_id']}-{$colorVariant['product_number']}")) { $this->assignImages($variant, $colorVariant['images']); $this->assignAttributes($variant, [ @@ -390,7 +392,7 @@ class ProductRepository extends WProductRepository $attribute = $this->attributeRepository->findOneByField('code', 'size'); $parentProduct->super_attributes()->attach($attribute->id); foreach ($data['size_variants'] as $sizeVariant) { - if($variant = $this->createVariant($parentProduct, $data['product_number'] . $sizeVariant['size'])){ + if($variant = $this->createVariant($parentProduct, "{$data['product_group_id']}-{$data['product_number']}-{$sizeVariant['itemNumber']}")){ $this->assignImages($variant, $data['images']); $attributes = [ 'sku' => $variant->sku, @@ -598,58 +600,30 @@ class ProductRepository extends WProductRepository ]); } } - private function assignAttributes($product, $attributes,$check_option_values = false){ + private function assignAttributes($product, $attributes){ foreach($attributes as $code => $value){ $attribute = $this->attributeRepository->findOneByField('code', $code); - if ($attribute->value_per_channel) { - if ($attribute->value_per_locale) { - foreach (core()->getAllChannels() as $channel) { - foreach (core()->getAllLocales() as $locale) { - $this->attributeValueRepository->create([ - 'product_id' => $product->id, - 'attribute_id' => $attribute->id, - 'channel' => $channel->code, - 'locale' => $locale->code, - 'value' => $value, - ]); - } - } - } else { - foreach (core()->getAllChannels() as $channel) { - $this->attributeValueRepository->create([ - 'product_id' => $product->id, - 'attribute_id' => $attribute->id, - 'channel' => $channel->code, - 'value' => $value, - ]); - } - } - } else { - if ($attribute->value_per_locale) { - foreach (core()->getAllLocales() as $locale) { - $this->attributeValueRepository->create([ - 'product_id' => $product->id, - 'attribute_id' => $attribute->id, - 'locale' => $locale->code, - 'value' => $value, - ]); - } - } else { - try { - $attr = [ - 'product_id' => $product->id, - 'attribute_id' => $attribute->id, - 'value' => $value, - ]; - $this->attributeValueRepository->create($attr); - }catch (\Exception $e) { - Log::error($e); - Log::info($attr); - } + $attr = [ + 'product_id' => $product->id, + 'attribute_id' => $attribute->id, + 'value' => $value + ]; - } + if($attribute->value_per_channel){ + $attr['channel'] = config('app.channel'); } + + if ($attribute->value_per_locale){ + foreach (core()->getAllLocales() as $locale){ + $attr['locale'] = $locale->code; + $this->attributeValueRepository->create($attr); + } + + }else{ + $this->attributeValueRepository->create($attr); + } + } }