From e8df3fe87150ff1b2a7cfd8938fc48ef6c931590 Mon Sep 17 00:00:00 2001 From: merdan Date: Wed, 19 Jan 2022 13:32:04 +0500 Subject: [PATCH] product scrap create vendor add --- .../Controllers/IntegrationController.php | 16 +++++++--- .../Sarga/API/Http/Controllers/Products.php | 13 ++++++++ .../API/Http/Resources/Catalog/Product.php | 6 ++-- .../API/Repositories/ProductRepository.php | 30 ++++++++++++++++++- .../admin/sellers/products/assign.blade.php | 2 +- 5 files changed, 58 insertions(+), 9 deletions(-) diff --git a/packages/Sarga/API/Http/Controllers/IntegrationController.php b/packages/Sarga/API/Http/Controllers/IntegrationController.php index a13b098ec..c0316366b 100644 --- a/packages/Sarga/API/Http/Controllers/IntegrationController.php +++ b/packages/Sarga/API/Http/Controllers/IntegrationController.php @@ -7,13 +7,16 @@ use Illuminate\Support\Facades\Validator; use Webkul\API\Http\Controllers\Shop\Controller; use Webkul\Core\Contracts\Validations\Slug; use Sarga\API\Repositories\ProductRepository; +use Webkul\Marketplace\Repositories\SellerRepository; class IntegrationController extends Controller { protected $productRepository; + protected $sellerRepository; - public function __construct(ProductRepository $productRepository) + public function __construct(ProductRepository $productRepository, SellerRepository $sellerRepository) { + $this->sellerRepository = $sellerRepository; $this->productRepository = $productRepository; } @@ -55,20 +58,25 @@ class IntegrationController extends Controller } $validation = Validator::make($data, [ -// 'category' => 'required', + 'category' => 'required', 'product_code' => ['required', 'unique:products,sku', new Slug], 'images' => 'required', 'name' => 'required', 'url_key'=> 'required', 'price' => 'required', + 'vendor' => 'required' ]); if ($validation->fails()) { return response()->json(['errors'=>$validation->getMessageBag()->all()],422); } - if($id = $this->productRepository->create($data)){ - return response()->json(['success'=>true,'product_id' => $id]); + if($product = $this->productRepository->create($data)){ + $seller = $this->sellerRepository->findOneByField('shop_title',$data['vendor']); + if($seller){ + $sellerProduct = $this->productRepository->createSellerProduct($product, $seller->id); + } + return response()->json(['success'=>true,'product_id' => $product->id]); }else{ return response()->json(['success'=>false]); } diff --git a/packages/Sarga/API/Http/Controllers/Products.php b/packages/Sarga/API/Http/Controllers/Products.php index badb117c5..60a195727 100644 --- a/packages/Sarga/API/Http/Controllers/Products.php +++ b/packages/Sarga/API/Http/Controllers/Products.php @@ -34,6 +34,19 @@ class Products extends ProductController ); } + /** + * Returns product's additional information. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function configurableConfig($id) + { + $product = $this->productRepository->findOrFail($id); + return response()->json([ + 'data' => app('Webkul\Product\Helpers\ConfigurableOption')->getConfigurationConfig($this->productRepository->findOrFail($id)), + ]); + } } diff --git a/packages/Sarga/API/Http/Resources/Catalog/Product.php b/packages/Sarga/API/Http/Resources/Catalog/Product.php index e4b900d9d..fc605e15e 100644 --- a/packages/Sarga/API/Http/Resources/Catalog/Product.php +++ b/packages/Sarga/API/Http/Resources/Catalog/Product.php @@ -66,9 +66,9 @@ class Product extends JsonResource $this->merge($this->specialPriceInfo()), /* super attributes */ - $this->mergeWhen($productTypeInstance->isComposite(), [ - 'super_attributes' => Attribute::collection($product->super_attributes), - ]), +// $this->mergeWhen($productTypeInstance->isComposite(), [ +// 'super_attributes' => Attribute::collection($product->super_attributes), +// ]), ]; } diff --git a/packages/Sarga/API/Repositories/ProductRepository.php b/packages/Sarga/API/Repositories/ProductRepository.php index 9bff02bcd..f610e0156 100644 --- a/packages/Sarga/API/Repositories/ProductRepository.php +++ b/packages/Sarga/API/Repositories/ProductRepository.php @@ -162,7 +162,7 @@ class ProductRepository extends WProductRepository Event::dispatch('catalog.product.create.after', $parentProduct); DB::commit(); - return $parentProduct->id; + return $parentProduct; } catch(\Exception $ex){ DB::rollBack(); @@ -172,6 +172,34 @@ class ProductRepository extends WProductRepository } + public function createSellerProduct($product, $seller_id){ + Event::dispatch('marketplace.catalog.product.create.before'); + + + $sellerProduct = parent::create([ + 'marketplace_seller_id' => $seller_id, + 'is_approved' => 1, + 'condition' => 'new', + 'description' => 'scraped product', + 'is_owner' => 1, + 'product_id' => $product->id, + ]); + + foreach ($sellerProduct->product->variants as $baseVariant) { + parent::create([ + 'parent_id' => $sellerProduct->id, + 'product_id' => $baseVariant->id, + 'is_owner' => 1, + 'marketplace_seller_id' => $seller_id, + 'is_approved' => 1, + 'condition' => 'new', + ]); + } + + Event::dispatch('marketplace.catalog.product.create.after', $sellerProduct); + + return $sellerProduct; + } private function assignImages($product,$images){ foreach($images as $image){ $this->imageRepository->create([ diff --git a/packages/Webkul/Marketplace/src/Resources/views/admin/sellers/products/assign.blade.php b/packages/Webkul/Marketplace/src/Resources/views/admin/sellers/products/assign.blade.php index 7f4308bd6..d79470d7f 100644 --- a/packages/Webkul/Marketplace/src/Resources/views/admin/sellers/products/assign.blade.php +++ b/packages/Webkul/Marketplace/src/Resources/views/admin/sellers/products/assign.blade.php @@ -32,7 +32,7 @@
- +