Refactored code and remove duplicate code
This commit is contained in:
parent
627140d0a4
commit
aa61de17d8
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace Webkul\Product\Http\Controllers;
|
||||
|
||||
use Exception;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Webkul\Admin\DataGrids\ProductDataGrid;
|
||||
|
|
@ -104,8 +103,10 @@ class ProductController extends Controller
|
|||
|
||||
if (
|
||||
ProductType::hasVariants(request()->input('type'))
|
||||
&& (! request()->has('super_attributes')
|
||||
|| ! count(request()->get('super_attributes')))
|
||||
&& (
|
||||
! request()->has('super_attributes')
|
||||
|| ! count(request()->get('super_attributes'))
|
||||
)
|
||||
) {
|
||||
session()->flash('error', trans('admin::app.catalog.products.configurable-error'));
|
||||
|
||||
|
|
@ -274,7 +275,7 @@ class ProductController extends Controller
|
|||
return response()->json([
|
||||
'message' => trans('admin::app.response.delete-success', ['name' => 'Product']),
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
} catch (\Exception $e) {
|
||||
report($e);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -53,7 +53,9 @@ class ProductForm extends FormRequest
|
|||
{
|
||||
$product = $this->productRepository->find($this->id);
|
||||
|
||||
$maxVideoFileSize = (core()->getConfigData('catalog.products.attribute.file_attribute_upload_size')) ? core()->getConfigData('catalog.products.attribute.file_attribute_upload_size') : '2048';
|
||||
$maxVideoFileSize = core()->getConfigData('catalog.products.attribute.file_attribute_upload_size')
|
||||
? core()->getConfigData('catalog.products.attribute.file_attribute_upload_size')
|
||||
: '2048';
|
||||
|
||||
$this->rules = array_merge($product->getTypeInstance()->getTypeValidationRules(), [
|
||||
'sku' => ['required', 'unique:products,sku,' . $this->id, new Slug],
|
||||
|
|
|
|||
|
|
@ -587,7 +587,7 @@ class Product extends Model implements ProductContract
|
|||
*
|
||||
* @return void
|
||||
*/
|
||||
public function refreshloadedAttributeValues(): void
|
||||
public function refreshLoadedAttributeValues(): void
|
||||
{
|
||||
self::$loadedAttributeValues = [];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -345,11 +345,14 @@ class ProductRepository extends Repository
|
|||
/**
|
||||
* Returns newly added product.
|
||||
*
|
||||
* @param int $count
|
||||
* @return \Illuminate\Support\Collection
|
||||
*/
|
||||
public function getNewProducts()
|
||||
public function getNewProducts($count = null)
|
||||
{
|
||||
if (! $count) {
|
||||
$count = core()->getConfigData('catalog.products.homepage.no_of_new_product_homepage');
|
||||
}
|
||||
|
||||
$results = app(ProductFlatRepository::class)->scopeQuery(function ($query) {
|
||||
$channel = core()->getRequestedChannelCode();
|
||||
|
|
@ -372,11 +375,14 @@ class ProductRepository extends Repository
|
|||
/**
|
||||
* Returns featured product.
|
||||
*
|
||||
* @param int $count
|
||||
* @return \Illuminate\Support\Collection
|
||||
*/
|
||||
public function getFeaturedProducts()
|
||||
public function getFeaturedProducts($count = null)
|
||||
{
|
||||
if (! $count) {
|
||||
$count = core()->getConfigData('catalog.products.homepage.no_of_featured_product_homepage');
|
||||
}
|
||||
|
||||
$results = app(ProductFlatRepository::class)->scopeQuery(function ($query) {
|
||||
$channel = core()->getRequestedChannelCode();
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ namespace Webkul\Tax\Helpers;
|
|||
class Tax
|
||||
{
|
||||
/**
|
||||
* Tax rate precission.
|
||||
* Tax rate precision.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
|
|
@ -93,7 +93,9 @@ class Tax
|
|||
return new class()
|
||||
{
|
||||
public $country;
|
||||
|
||||
public $state;
|
||||
|
||||
public $postcode;
|
||||
|
||||
function __construct()
|
||||
|
|
@ -101,7 +103,9 @@ class Tax
|
|||
$this->country = core()->getConfigData('taxes.catalogue.default-location-calculation.country') != ''
|
||||
? core()->getConfigData('taxes.catalogue.default-location-calculation.country')
|
||||
: strtoupper(config('app.default_country'));
|
||||
|
||||
$this->state = core()->getConfigData('taxes.catalogue.default-location-calculation.state');
|
||||
|
||||
$this->postcode = core()->getConfigData('taxes.catalogue.default-location-calculation.post_code');
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -25,8 +25,6 @@ class TaxCategoryRepository extends Repository
|
|||
*/
|
||||
public function attachOrDetach($taxCategory, $data)
|
||||
{
|
||||
$taxCategory->tax_rates;
|
||||
|
||||
$this->model->findOrFail($taxCategory->id)->tax_rates()->sync($data);
|
||||
|
||||
return true;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"/js/jquery-ez-plus.js": "/js/jquery-ez-plus.js?id=ba3c7cada62de152fd8fce211d0b1b70",
|
||||
"/js/velocity-core.js": "/js/velocity-core.js?id=73cc7c3501570ebe9151c72d954bd97d",
|
||||
"/js/velocity.js": "/js/velocity.js?id=0d596f41977fd0fae50ccb5efadd13f0",
|
||||
"/js/velocity.js": "/js/velocity.js?id=83a0618bf07b69ad4369c0bae1910296",
|
||||
"/js/manifest.js": "/js/manifest.js?id=e069a8f952a02ea0f290bcca8fab930e",
|
||||
"/js/components.js": "/js/components.js?id=31a698db1035bfcb62e3819412bcf2a1",
|
||||
"/js/components.js": "/js/components.js?id=4d84c5cd2cc1a94703fd04627b62bd26",
|
||||
"/css/velocity.css": "/css/velocity.css?id=99812a83c44eb8390c6e1d34d67259b8",
|
||||
"/css/velocity-admin.css": "/css/velocity-admin.css?id=b67a82956e53163b5e3ff45a44f9778f",
|
||||
"/images/icon-calendar.svg": "/images/icon-calendar.svg?id=870d0f733a58377422766f3152e15486",
|
||||
|
|
|
|||
|
|
@ -2,18 +2,28 @@
|
|||
|
||||
namespace Webkul\Velocity\Http\Controllers\Shop;
|
||||
|
||||
use Cart;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Webkul\Velocity\Helpers\Helper;
|
||||
use Webkul\Checkout\Facades\Cart;
|
||||
use Webkul\Checkout\Contracts\Cart as CartModel;
|
||||
use Webkul\Product\Repositories\ProductRepository;
|
||||
|
||||
class CartController extends Controller
|
||||
{
|
||||
/**
|
||||
* Retrives the mini cart details
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
* @param \Webkul\Product\Repositories\ProductRepository $productRepository
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(protected ProductRepository $productRepository)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the mini cart details
|
||||
*
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function getMiniCartDetails()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2,8 +2,35 @@
|
|||
|
||||
namespace Webkul\Velocity\Http\Controllers\Shop;
|
||||
|
||||
use Webkul\Velocity\Helpers\Helper;
|
||||
use Webkul\Product\Models\ProductFlat;
|
||||
use Webkul\Velocity\Repositories\VelocityCustomerCompareProductRepository as CustomerCompareProductRepository;
|
||||
|
||||
class ComparisonController extends Controller
|
||||
{
|
||||
/**
|
||||
* Contains route related configuration
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_config;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @param \Webkul\Velocity\Helpers\Helper $velocityHelper
|
||||
* @param \Webkul\Velocity\Repositories\VelocityCustomerCompareProductRepository $compareProductsRepository
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(
|
||||
protected Helper $velocityHelper,
|
||||
protected CustomerCompareProductRepository $compareProductsRepository
|
||||
)
|
||||
{
|
||||
$this->_config = request('_config');
|
||||
}
|
||||
|
||||
/**
|
||||
* Method for customers to get products in comparison.
|
||||
*
|
||||
|
|
@ -69,19 +96,22 @@ class ComparisonController extends Controller
|
|||
'product_flat_id' => $productId,
|
||||
]);
|
||||
|
||||
if (! $compareProduct) {
|
||||
// insert new row
|
||||
if ($compareProduct) {
|
||||
return response()->json([
|
||||
'status' => 'warning',
|
||||
'label' => trans('velocity::app.shop.general.alert.warning'),
|
||||
'message' => trans('velocity::app.customer.compare.already_added'),
|
||||
]);
|
||||
}
|
||||
|
||||
$productFlatRepository = app('\Webkul\Product\Models\ProductFlat');
|
||||
|
||||
$productFlat = $productFlatRepository
|
||||
$productFlat = app(ProductFlat::class)
|
||||
->where('id', $productId)
|
||||
->orWhere('parent_id', $productId)
|
||||
->orWhere('id', $productId)
|
||||
->get()
|
||||
->first();
|
||||
|
||||
if ($productFlat == null) {
|
||||
if (! $productFlat) {
|
||||
return response()->json([
|
||||
'status' => 'warning',
|
||||
'message' => trans('customer::app.product-removed'),
|
||||
|
|
@ -89,27 +119,16 @@ class ComparisonController extends Controller
|
|||
]);
|
||||
}
|
||||
|
||||
if ($productFlat) {
|
||||
$productId = $productFlat->id;
|
||||
|
||||
$this->compareProductsRepository->create([
|
||||
'customer_id' => $customerId,
|
||||
'product_flat_id' => $productId,
|
||||
'product_flat_id' => $productFlat->id,
|
||||
]);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => trans('velocity::app.customer.compare.added'),
|
||||
'label' => trans('velocity::app.shop.general.alert.success'),
|
||||
]);
|
||||
} else {
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'label' => trans('velocity::app.shop.general.alert.success'),
|
||||
'message' => trans('velocity::app.customer.compare.already_added'),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -6,47 +6,7 @@ use Illuminate\Foundation\Bus\DispatchesJobs;
|
|||
use Illuminate\Routing\Controller as BaseController;
|
||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||
|
||||
use Webkul\Velocity\Helpers\Helper;
|
||||
use Webkul\Product\Repositories\SearchRepository;
|
||||
use Webkul\Product\Repositories\ProductRepository;
|
||||
use Webkul\Customer\Repositories\WishlistRepository;
|
||||
use Webkul\Category\Repositories\CategoryRepository;
|
||||
use Webkul\Velocity\Repositories\Product\ProductRepository as VelocityProductRepository;
|
||||
use Webkul\Velocity\Repositories\VelocityCustomerCompareProductRepository as CustomerCompareProductRepository;
|
||||
|
||||
class Controller extends BaseController
|
||||
{
|
||||
use DispatchesJobs, ValidatesRequests;
|
||||
|
||||
/**
|
||||
* Contains route related configuration
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_config;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @param \Webkul\Velocity\Helpers\Helper $velocityHelper
|
||||
* @param \Webkul\Product\Repositories\SearchRepository $searchRepository
|
||||
* @param \Webkul\Product\Repositories\ProductRepository $productRepository
|
||||
* @param \Webkul\Category\Repositories\CategoryRepository $categoryRepository
|
||||
* @param \Webkul\Velocity\Repositories\Product\ProductRepository $velocityProductRepository
|
||||
* @param \Webkul\Velocity\Repositories\VelocityCustomerCompareProductRepository $compareProductsRepository
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(
|
||||
protected Helper $velocityHelper,
|
||||
protected SearchRepository $searchRepository,
|
||||
protected ProductRepository $productRepository,
|
||||
protected WishlistRepository $wishlistRepository,
|
||||
protected CategoryRepository $categoryRepository,
|
||||
protected VelocityProductRepository $velocityProductRepository,
|
||||
protected CustomerCompareProductRepository $compareProductsRepository
|
||||
)
|
||||
{
|
||||
$this->_config = request('_config');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,10 +2,47 @@
|
|||
|
||||
namespace Webkul\Velocity\Http\Controllers\Shop;
|
||||
|
||||
use Webkul\Velocity\Helpers\Helper;
|
||||
use Webkul\Product\Repositories\ProductRepository;
|
||||
use Webkul\Customer\Repositories\WishlistRepository;
|
||||
use Webkul\Category\Repositories\CategoryRepository;
|
||||
use Webkul\Velocity\Repositories\Product\ProductRepository as VelocityProductRepository;
|
||||
use Webkul\Velocity\Repositories\VelocityCustomerCompareProductRepository as CustomerCompareProductRepository;
|
||||
use Webkul\Product\Facades\ProductImage;
|
||||
|
||||
class ShopController extends Controller
|
||||
{
|
||||
/**
|
||||
* Contains route related configuration
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_config;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @param \Webkul\Velocity\Helpers\Helper $velocityHelper
|
||||
* @param \Webkul\Product\Repositories\ProductRepository $productRepository
|
||||
* @param \Webkul\Product\Repositories\WishlistRepository $wishlistRepository
|
||||
* @param \Webkul\Category\Repositories\CategoryRepository $categoryRepository
|
||||
* @param \Webkul\Velocity\Repositories\Product\ProductRepository $velocityProductRepository
|
||||
* @param \Webkul\Velocity\Repositories\VelocityCustomerCompareProductRepository $compareProductsRepository
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(
|
||||
protected Helper $velocityHelper,
|
||||
protected ProductRepository $productRepository,
|
||||
protected WishlistRepository $wishlistRepository,
|
||||
protected CategoryRepository $categoryRepository,
|
||||
protected VelocityProductRepository $velocityProductRepository,
|
||||
protected CustomerCompareProductRepository $compareProductsRepository
|
||||
)
|
||||
{
|
||||
$this->_config = request('_config');
|
||||
}
|
||||
|
||||
/**
|
||||
* Index to handle the view loaded with the search results.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -2,17 +2,14 @@
|
|||
|
||||
namespace Webkul\Velocity\Repositories\Product;
|
||||
|
||||
use Webkul\Core\Eloquent\Repository;
|
||||
use Illuminate\Container\Container;
|
||||
use Webkul\Product\Models\ProductAttributeValue;
|
||||
use Prettus\Repository\Traits\CacheableRepository;
|
||||
use Webkul\Product\Repositories\ProductRepository as BaseProductRepository;
|
||||
use Webkul\Product\Repositories\ProductFlatRepository;
|
||||
use Webkul\Attribute\Repositories\AttributeRepository;
|
||||
use Webkul\Product\Models\ProductAttributeValue;
|
||||
|
||||
class ProductRepository extends Repository
|
||||
class ProductRepository extends BaseProductRepository
|
||||
{
|
||||
use CacheableRepository;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
|
|
@ -25,72 +22,12 @@ class ProductRepository extends Repository
|
|||
Container $container
|
||||
)
|
||||
{
|
||||
parent::__construct($container);
|
||||
parent::__construct(
|
||||
$attributeRepository,
|
||||
$container
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify Model class name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function model(): string
|
||||
{
|
||||
return 'Webkul\Product\Contracts\Product';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns featured product
|
||||
*
|
||||
* @param int $count
|
||||
* @return \Illuminate\Support\Collection
|
||||
*/
|
||||
public function getFeaturedProducts($count)
|
||||
{
|
||||
$results = app(ProductFlatRepository::class)->scopeQuery(function($query) {
|
||||
$channel = core()->getRequestedChannelCode();
|
||||
|
||||
$locale = core()->getRequestedLocaleCode();
|
||||
|
||||
return $query->distinct()
|
||||
->addSelect('product_flat.*')
|
||||
->where('product_flat.status', 1)
|
||||
->where('product_flat.visible_individually', 1)
|
||||
->where('product_flat.featured', 1)
|
||||
->where('product_flat.channel', $channel)
|
||||
->where('product_flat.locale', $locale)
|
||||
->orderBy('product_id', 'desc');
|
||||
})->paginate($count);
|
||||
|
||||
return $results;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns newly added product
|
||||
*
|
||||
* @param int $count
|
||||
* @return \Illuminate\Support\Collection
|
||||
*/
|
||||
public function getNewProducts($count)
|
||||
{
|
||||
$results = app(ProductFlatRepository::class)->scopeQuery(function($query) {
|
||||
$channel = core()->getRequestedChannelCode();
|
||||
|
||||
$locale = core()->getRequestedLocaleCode();
|
||||
|
||||
return $query->distinct()
|
||||
->addSelect('product_flat.*')
|
||||
->where('product_flat.status', 1)
|
||||
->where('product_flat.visible_individually', 1)
|
||||
->where('product_flat.new', 1)
|
||||
->where('product_flat.channel', $channel)
|
||||
->where('product_flat.locale', $locale)
|
||||
->orderBy('product_id', 'desc');
|
||||
})->paginate($count);
|
||||
|
||||
return $results;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Search Product by Attribute
|
||||
*
|
||||
|
|
@ -99,10 +36,7 @@ class ProductRepository extends Repository
|
|||
*/
|
||||
public function searchProductsFromCategory($params)
|
||||
{
|
||||
$term = $params['term'] ?? '';
|
||||
$categoryId = $params['category'] ?? '';
|
||||
|
||||
$results = app(ProductFlatRepository::class)->scopeQuery(function($query) use($term, $categoryId, $params) {
|
||||
$results = app(ProductFlatRepository::class)->scopeQuery(function($query) use($params) {
|
||||
$channel = core()->getRequestedChannelCode();
|
||||
|
||||
$locale = core()->getRequestedLocaleCode();
|
||||
|
|
@ -121,14 +55,12 @@ class ProductRepository extends Repository
|
|||
->where('product_flat.locale', $locale)
|
||||
->whereNotNull('product_flat.url_key');
|
||||
|
||||
if ($term)
|
||||
$query->where('product_flat.name', 'like', '%' . urldecode($term) . '%');
|
||||
if (! empty($params['term'])) {
|
||||
$query->where('product_flat.name', 'like', '%' . urldecode($params['term']) . '%');
|
||||
}
|
||||
|
||||
if (
|
||||
$categoryId
|
||||
&& $categoryId !== ""
|
||||
) {
|
||||
$query = $query->where('product_categories.category_id', $categoryId);
|
||||
if (! empty($params['category'])) {
|
||||
$query = $query->where('product_categories.category_id', $params['category']);
|
||||
}
|
||||
|
||||
if (isset($params['sort'])) {
|
||||
|
|
|
|||
|
|
@ -46,8 +46,8 @@
|
|||
);
|
||||
} else {
|
||||
window.showAlert(
|
||||
`alert-success`,
|
||||
this.__('shop.general.alert.success'),
|
||||
`alert-warning`,
|
||||
this.__('shop.general.alert.warning'),
|
||||
`${this.__('customer.compare.already_added')}`
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ class CartCest
|
|||
])
|
||||
->update(['boolean_value' => 0]);
|
||||
|
||||
$this->simpleProduct2->refreshloadedAttributeValues();
|
||||
$this->simpleProduct2->refreshLoadedAttributeValues();
|
||||
|
||||
Event::dispatch('catalog.product.update.after', $this->simpleProduct2->refresh());
|
||||
|
||||
|
|
@ -109,7 +109,7 @@ class CartCest
|
|||
])
|
||||
->update(['boolean_value' => 0]);
|
||||
|
||||
$this->simpleProduct2->refreshloadedAttributeValues();
|
||||
$this->simpleProduct2->refreshLoadedAttributeValues();
|
||||
|
||||
Event::dispatch('catalog.product.update.after', $this->downloadableProduct2->refresh());
|
||||
|
||||
|
|
@ -132,7 +132,7 @@ class CartCest
|
|||
])
|
||||
->update(['boolean_value' => 0]);
|
||||
|
||||
$this->simpleProduct2->refreshloadedAttributeValues();
|
||||
$this->simpleProduct2->refreshLoadedAttributeValues();
|
||||
|
||||
Event::dispatch('catalog.product.update.after', $this->virtualProduct2->refresh());
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ class BookingCronCest
|
|||
['booking_product_id' => $bookingProducts[$i]->id]);
|
||||
|
||||
$products[$i]->refresh();
|
||||
$products[$i]->refreshloadedAttributeValues();
|
||||
$products[$i]->refreshLoadedAttributeValues();
|
||||
$I->assertNotFalse($products[$i]->status);
|
||||
}
|
||||
|
||||
|
|
@ -44,7 +44,7 @@ class BookingCronCest
|
|||
|
||||
for ($i=0; $i<$index; $i++) {
|
||||
$products[$i]->refresh();
|
||||
$products[$i]->refreshloadedAttributeValues();
|
||||
$products[$i]->refreshLoadedAttributeValues();
|
||||
|
||||
if ($bookingProducts[$i]->available_to < Carbon::now()) {
|
||||
$I->assertEquals(0, $products[$i]->status);
|
||||
|
|
|
|||
Loading…
Reference in New Issue