diff --git a/packages/Sarga/API/Http/Controllers/AttributeOptions.php b/packages/Sarga/API/Http/Controllers/AttributeOptions.php index 3582b78a6..16f917030 100644 --- a/packages/Sarga/API/Http/Controllers/AttributeOptions.php +++ b/packages/Sarga/API/Http/Controllers/AttributeOptions.php @@ -8,7 +8,7 @@ use Sarga\Shop\Repositories\AttributeOptionRepository; class AttributeOptions extends \Webkul\RestApi\Http\Controllers\V1\Shop\ResourceController { - protected $requestException = ['page', 'limit', 'pagination', 'sort', 'order', 'token','locale','search']; + protected $requestException = ['page', 'limit', 'pagination', 'sort', 'order', 'token','locale','search','category']; /** * Repository class name. * @@ -43,20 +43,26 @@ class AttributeOptions extends \Webkul\RestApi\Http\Controllers\V1\Shop\Resource $query = $this->getRepositoryInstance()->scopeQuery(function ($query) use ($request) { foreach ($request->except($this->requestException) as $input => $value) { - $query = $query->whereIn($input, array_map('trim', explode(',', $value))); + $query->whereIn($input, array_map('trim', explode(',', $value))); } if($key = $request->input('search')){ - $query = $query->where('admin_name','like', '%'.$key.'%'); + $query->where('admin_name','like', '%'.$key.'%'); //todo search in translations } if ($sort = $request->input('sort')) { - $query = $query->orderBy($sort, $request->input('order') ?? 'desc'); + $query->orderBy($sort, $request->input('order') ?? 'desc'); } else { - $query = $query->orderBy('id', 'desc'); + $query->orderBy('id', 'desc'); } + if($category = $request->input('category')){ + $query->join('product_attribute_values','product_attribute_values.integer_value','=','attribute_options.id') + ->join('product_categories','product_categories.product_id','=','product_attribute_values.product_id') + ->where('product_attribute_values.attribute_id','attribute_options.attribute_id') + ->where('product_categories.category_id',$category); + } return $query; }); diff --git a/packages/Sarga/Shop/src/Repositories/ProductRepository.php b/packages/Sarga/Shop/src/Repositories/ProductRepository.php index ae871d410..ac85d8358 100644 --- a/packages/Sarga/Shop/src/Repositories/ProductRepository.php +++ b/packages/Sarga/Shop/src/Repositories/ProductRepository.php @@ -114,17 +114,17 @@ class ProductRepository extends WProductRepository $qb->where('product_flat.visible_individually', 1); } - if (isset($params['search'])) { - $qb->where('product_flat.name', 'like', '%' . urldecode($params['search']) . '%'); - } - - if (isset($params['name'])) { - $qb->where('product_flat.name', 'like', '%' . urldecode($params['name']) . '%'); - } - - if (isset($params['url_key'])) { - $qb->where('product_flat.url_key', 'like', '%' . urldecode($params['url_key']) . '%'); - } +// if (isset($params['search'])) { +// $qb->where('product_flat.name', 'like', '%' . urldecode($params['search']) . '%'); +// } +// +// if (isset($params['name'])) { +// $qb->where('product_flat.name', 'like', '%' . urldecode($params['name']) . '%'); +// } +// +// if (isset($params['url_key'])) { +// $qb->where('product_flat.url_key', 'like', '%' . urldecode($params['url_key']) . '%'); +// } # sort direction $orderDirection = 'asc'; @@ -322,7 +322,11 @@ class ProductRepository extends WProductRepository private function calculatePrice($price){ $originalPrice = Arr::get($price, 'originalPrice.value'); $discountedPrice = Arr::get($price, 'discountedPrice.value'); - $price_attributes = []; + + $price_attributes = [ +// 'min_price'=>$discountedPrice,'max_price'=>$originalPrice + ]; + if($originalPrice > $discountedPrice){ $price_attributes['price'] = $originalPrice; $price_attributes['special_price'] = $discountedPrice; @@ -333,6 +337,7 @@ class ProductRepository extends WProductRepository return $price_attributes; } + public function createProduct($data){ $time_start = microtime(true); @@ -408,6 +413,7 @@ class ProductRepository extends WProductRepository foreach ($data['color_variants'] as $colorVariant) { $description = implode(array_map(fn($value): string => '
' . $value['description'] . '
', $colorVariant['descriptions'])); if (!empty($colorVariant['size_variants'])) { + $first = reset( $colorVariant['size_variants'] ); foreach ($colorVariant['size_variants'] as $sizeVariant) { $variant = $this->createVariant($parentProduct, "{$data['product_group_id']}-{$colorVariant['product_number']}-{$sizeVariant['itemNumber']}"); @@ -423,7 +429,7 @@ class ProductRepository extends WProductRepository // 'price' => $sizeVariant['price'], 'weight' => $colorVariant['weight'] ?? 0.45, 'status' => 1, - 'visible_individually' => 1, + 'visible_individually' => $first == $sizeVariant, 'url_key' => $variant->sku, 'source' => $colorVariant['url_key'], 'description' => $description, @@ -475,8 +481,8 @@ class ProductRepository extends WProductRepository 'weight' => $data['weight'] ?? 0.45, 'status' => 1, 'featured'=> 0, - 'new' => 1, - 'visible_individually' => 1, + 'new' => 0, + 'visible_individually' => 0, 'url_key' => $variant->sku, 'source' => $data['url_key'], 'description' => $desc, diff --git a/packages/Webkul/Product/src/Listeners/ProductFlat.php b/packages/Webkul/Product/src/Listeners/ProductFlat.php index 3af38ebf9..e55855db3 100644 --- a/packages/Webkul/Product/src/Listeners/ProductFlat.php +++ b/packages/Webkul/Product/src/Listeners/ProductFlat.php @@ -128,13 +128,13 @@ class ProductFlat */ public function afterProductCreatedUpdated($product) { - $this->createFlat($product); - if (ProductType::hasVariants($product->type)) { foreach ($product->variants()->get() as $variant) { $this->createFlat($variant, $product); } } + + $this->createFlat($product); } /**