From 4bace8ad4b692dd75f6383c6dd6800f94d31f8d8 Mon Sep 17 00:00:00 2001 From: jitendra Date: Mon, 28 Mar 2022 15:15:15 +0530 Subject: [PATCH] Issue #2278 fixed --- .../src/DataGrids/CategoryProductDataGrid.php | 199 ++++++++++++++++++ .../Admin/src/Resources/lang/ar/app.php | 1 + .../Admin/src/Resources/lang/de/app.php | 1 + .../Admin/src/Resources/lang/en/app.php | 1 + .../Admin/src/Resources/lang/es/app.php | 1 + .../Admin/src/Resources/lang/fa/app.php | 1 + .../Admin/src/Resources/lang/fr/app.php | 1 + .../Admin/src/Resources/lang/hi_IN/app.php | 1 + .../Admin/src/Resources/lang/it/app.php | 1 + .../Admin/src/Resources/lang/nl/app.php | 1 + .../Admin/src/Resources/lang/pl/app.php | 1 + .../Admin/src/Resources/lang/pt_BR/app.php | 1 + .../Admin/src/Resources/lang/tr/app.php | 1 + .../Admin/src/Resources/lang/zh_CN/app.php | 1 + .../views/catalog/categories/create.blade.php | 2 +- .../views/catalog/categories/edit.blade.php | 10 + .../views/customers/reviews/edit.blade.php | 2 +- .../views/settings/channels/create.blade.php | 4 +- .../settings/inventory_sources/edit.blade.php | 2 +- .../Admin/src/Routes/catalog-routes.php | 2 + .../Http/Controllers/CategoryController.php | 14 ++ 21 files changed, 243 insertions(+), 5 deletions(-) create mode 100644 packages/Webkul/Admin/src/DataGrids/CategoryProductDataGrid.php diff --git a/packages/Webkul/Admin/src/DataGrids/CategoryProductDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CategoryProductDataGrid.php new file mode 100644 index 000000000..99f20d548 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/CategoryProductDataGrid.php @@ -0,0 +1,199 @@ +locale = core()->getRequestedLocaleCode(); + + /* channel */ + $this->channel = core()->getRequestedChannelCode(); + + /* parent constructor */ + parent::__construct(); + } + + /** + * Prepare query builder. + * + * @return void + */ + public function prepareQueryBuilder() + { + /* query builder */ + $queryBuilder = DB::table('product_flat') + ->leftJoin('products', 'product_flat.product_id', '=', 'products.id') + ->leftJoin('product_categories', 'products.id', '=', 'product_categories.product_id') + ->leftJoin('product_inventories', 'product_flat.product_id', '=', 'product_inventories.product_id') + ->select( + 'product_flat.locale', + 'product_flat.channel', + 'product_flat.product_id', + 'products.sku as product_sku', + 'product_flat.product_number', + 'product_flat.name as product_name', + 'products.type as product_type', + 'product_flat.status', + 'product_flat.price', + ); + + $queryBuilder->groupBy('product_flat.product_id', 'product_flat.locale', 'product_flat.channel'); + + $queryBuilder->where('product_categories.category_id', request('id')); + $queryBuilder->whereIn('product_flat.locale', [$this->locale]); + $queryBuilder->whereIn('product_flat.channel', [$this->channel]); + + $this->addFilter('product_id', 'product_flat.product_id'); + $this->addFilter('product_name', 'product_flat.name'); + $this->addFilter('product_sku', 'products.sku'); + $this->addFilter('product_number', 'product_flat.product_number'); + $this->addFilter('status', 'product_flat.status'); + $this->addFilter('product_type', 'products.type'); + + $this->setQueryBuilder($queryBuilder); + } + + /** + * Add columns. + * + * @return void + */ + public function addColumns() + { + $this->addColumn([ + 'index' => 'product_id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true, + ]); + + $this->addColumn([ + 'index' => 'product_sku', + 'label' => trans('admin::app.datagrid.sku'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true, + ]); + + $this->addColumn([ + 'index' => 'product_number', + 'label' => trans('admin::app.datagrid.product-number'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true, + ]); + + $this->addColumn([ + 'index' => 'product_name', + 'label' => trans('admin::app.datagrid.name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true, + ]); + + $this->addColumn([ + 'index' => 'product_type', + 'label' => trans('admin::app.datagrid.type'), + 'type' => 'string', + 'sortable' => true, + 'searchable' => true, + 'filterable' => true, + ]); + + $this->addColumn([ + 'index' => 'status', + 'label' => trans('admin::app.datagrid.status'), + 'type' => 'boolean', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true, + 'closure' => function ($value) { + if ($value->status == 1) { + return trans('admin::app.datagrid.active'); + } else { + return trans('admin::app.datagrid.inactive'); + } + }, + ]); + + $this->addColumn([ + 'index' => 'price', + 'label' => trans('admin::app.datagrid.price'), + 'type' => 'price', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true, + ]); + } + + /** + * Prepare actions. + * + * @return void + */ + public function prepareActions() + { + $this->addAction([ + 'title' => trans('admin::app.datagrid.edit'), + 'method' => 'GET', + 'route' => 'admin.catalog.products.edit', + 'icon' => 'icon pencil-lg-icon', + 'condition' => function () { + return true; + }, + ]); + } +} diff --git a/packages/Webkul/Admin/src/Resources/lang/ar/app.php b/packages/Webkul/Admin/src/Resources/lang/ar/app.php index 8dc4bf5da..405074c21 100644 --- a/packages/Webkul/Admin/src/Resources/lang/ar/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/ar/app.php @@ -699,6 +699,7 @@ return [ 'description' => 'الوصف', 'parent-category' => 'الفئة الأم', 'seo' => 'محرك البحث الأمثل', + 'products' => 'المنتجات', 'slug' => 'Slug', 'meta_title' => 'عنوان الفوقية', 'meta_description' => 'ميتا الوصف', diff --git a/packages/Webkul/Admin/src/Resources/lang/de/app.php b/packages/Webkul/Admin/src/Resources/lang/de/app.php index f8adb393c..be9ac9641 100755 --- a/packages/Webkul/Admin/src/Resources/lang/de/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/de/app.php @@ -691,6 +691,7 @@ return [ 'description' => 'Beschreibung', 'parent-category' => 'Übergeordnete Kategorie', 'seo' => 'Suchmaschinen-Optimierung', + 'products' => 'Produkte', 'slug' => 'Slug', 'meta_title' => 'Meta Titel', 'meta_description' => 'Meta-Beschreibung', diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 80a75c180..3a4f30ff8 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -709,6 +709,7 @@ return [ 'description' => 'Description', 'parent-category' => 'Parent Category', 'seo' => 'Search Engine Optimization', + 'products' => 'Products', 'slug' => 'Slug', 'meta_title' => 'Meta Title', 'meta_description' => 'Meta Description', diff --git a/packages/Webkul/Admin/src/Resources/lang/es/app.php b/packages/Webkul/Admin/src/Resources/lang/es/app.php index 0df325045..7fa570d1e 100644 --- a/packages/Webkul/Admin/src/Resources/lang/es/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/es/app.php @@ -710,6 +710,7 @@ return [ 'description' => 'Descripción', 'parent-category' => 'Categoría padre', 'seo' => 'SEO', + 'products' => 'Productos', 'slug' => 'Slug', 'meta_title' => 'Meta Title', 'meta_description' => 'Meta Description', diff --git a/packages/Webkul/Admin/src/Resources/lang/fa/app.php b/packages/Webkul/Admin/src/Resources/lang/fa/app.php index 016d7ad80..d89ffd85e 100644 --- a/packages/Webkul/Admin/src/Resources/lang/fa/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/fa/app.php @@ -687,6 +687,7 @@ return [ 'description' => 'توضیحات', 'parent-category' => 'دسته بندی پدر', 'seo' => 'بهینه سازی موتور جستجو', + 'products' => 'محصولات', 'slug' => 'نامک', 'meta_title' => 'عنوان متا', 'meta_description' => 'توضیحات متا', diff --git a/packages/Webkul/Admin/src/Resources/lang/fr/app.php b/packages/Webkul/Admin/src/Resources/lang/fr/app.php index 3cb446329..0d2f261cf 100644 --- a/packages/Webkul/Admin/src/Resources/lang/fr/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/fr/app.php @@ -711,6 +711,7 @@ return [ 'description' => 'La description', 'parent-category' => 'Catégorie Parentale', 'seo' => 'optimisation du moteur de recherche', + 'products' => 'Des produits', 'slug' => 'Limace', 'meta_title' => 'Titre du méta', 'meta_description' => 'Meta Description', diff --git a/packages/Webkul/Admin/src/Resources/lang/hi_IN/app.php b/packages/Webkul/Admin/src/Resources/lang/hi_IN/app.php index 24b83a581..8971e7899 100644 --- a/packages/Webkul/Admin/src/Resources/lang/hi_IN/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/hi_IN/app.php @@ -709,6 +709,7 @@ return [ 'description' => 'विवरण', 'parent-category' => 'अभिभावक श्रेणी', 'seo' => 'खोज इंजिन अनुकूलन', + 'products' => 'उत्पाद', 'slug' => 'स्लग', 'meta_title' => 'मेटा शीर्षक', 'meta_description' => 'मेटा विवरण', diff --git a/packages/Webkul/Admin/src/Resources/lang/it/app.php b/packages/Webkul/Admin/src/Resources/lang/it/app.php index c07c0055c..1d7722143 100644 --- a/packages/Webkul/Admin/src/Resources/lang/it/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/it/app.php @@ -690,6 +690,7 @@ return [ 'parent-category' => 'Categoria Padre', 'seo' => 'Search Engine Optimization', 'slug' => 'Slug', + 'products' => 'Prodotti', 'meta_title' => 'Meta Title', 'meta_description' => 'Meta Description', 'meta_keywords' => 'Meta Keywords', diff --git a/packages/Webkul/Admin/src/Resources/lang/nl/app.php b/packages/Webkul/Admin/src/Resources/lang/nl/app.php index 9156bcfea..f1cf3d989 100644 --- a/packages/Webkul/Admin/src/Resources/lang/nl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/nl/app.php @@ -686,6 +686,7 @@ return [ 'description' => 'Beschrijving', 'parent-category' => 'Bovenliggende categorie', 'seo' => 'zoek machine optimalisatie', + 'products' => 'Producten', 'slug' => 'Slug', 'meta_title' => 'Metatitel', 'meta_description' => 'Meta omschrijving', diff --git a/packages/Webkul/Admin/src/Resources/lang/pl/app.php b/packages/Webkul/Admin/src/Resources/lang/pl/app.php index 3a222d922..274b4ef51 100644 --- a/packages/Webkul/Admin/src/Resources/lang/pl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pl/app.php @@ -686,6 +686,7 @@ return [ 'description' => 'Opis', 'parent-category' => 'Kategoria nadrzędna', 'seo' => 'Optymalizacja SEO strony dla wyszukiwarek', + 'products' => 'Produkty', 'slug' => 'Wzór', 'meta_title' => 'Meta tutuł', 'meta_description' => 'Meta opis', diff --git a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php index 53786106b..14613e60a 100755 --- a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php @@ -685,6 +685,7 @@ return [ 'description' => 'Descrição', 'parent-category' => 'Categoria Pai', 'seo' => 'Search Engine Optimization', + 'products' => 'Produtos', 'slug' => 'Slug', 'meta_title' => 'Meta Título', 'meta_description' => 'Meta Descrição', diff --git a/packages/Webkul/Admin/src/Resources/lang/tr/app.php b/packages/Webkul/Admin/src/Resources/lang/tr/app.php index f76d56f3b..8cea1ff67 100644 --- a/packages/Webkul/Admin/src/Resources/lang/tr/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/tr/app.php @@ -692,6 +692,7 @@ return [ 'description' => 'Açıklama', 'parent-category' => 'Üst Kategori', 'seo' => 'Arama Motoru Optimizasyonu', + 'products' => 'Ürünler', 'slug' => 'URL', 'meta_title' => 'Meta Başlığı', 'meta_description' => 'Meta Açıklaması', diff --git a/packages/Webkul/Admin/src/Resources/lang/zh_CN/app.php b/packages/Webkul/Admin/src/Resources/lang/zh_CN/app.php index f5d4b3917..35d5a7212 100644 --- a/packages/Webkul/Admin/src/Resources/lang/zh_CN/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/zh_CN/app.php @@ -694,6 +694,7 @@ return [ 'description' => '描述', 'parent-category' => '父分类', 'seo' => '搜索引擎优化', + 'products' => '产品列表', 'slug' => 'Slug', 'meta_title' => 'Meta标题', 'meta_description' => 'Meta描述', diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/categories/create.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/categories/create.blade.php index 99d08558e..9d1ec6051 100755 --- a/packages/Webkul/Admin/src/Resources/views/catalog/categories/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/catalog/categories/create.blade.php @@ -152,7 +152,7 @@ {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.seo.before') !!} - +
{!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.seo.controls.before') !!} diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/categories/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/categories/edit.blade.php index 4b941474c..e08e8e97f 100755 --- a/packages/Webkul/Admin/src/Resources/views/catalog/categories/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/catalog/categories/edit.blade.php @@ -216,6 +216,16 @@
+ +
+ {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.products.controls.before', ['category' => $category]) !!} + + + + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.products.controls.before', ['category' => $category]) !!} +
+
+ {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.seo.after', ['category' => $category]) !!} diff --git a/packages/Webkul/Admin/src/Resources/views/customers/reviews/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/reviews/edit.blade.php index f45dec9be..983360c36 100755 --- a/packages/Webkul/Admin/src/Resources/views/customers/reviews/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/customers/reviews/edit.blade.php @@ -31,7 +31,7 @@ - +
diff --git a/packages/Webkul/Admin/src/Resources/views/settings/channels/create.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/channels/create.blade.php index 267a98cd7..3dda26ab8 100755 --- a/packages/Webkul/Admin/src/Resources/views/settings/channels/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/settings/channels/create.blade.php @@ -31,7 +31,7 @@ {!! view_render_event('bagisto.admin.settings.channel.create.before') !!} {{-- general --}} - +
@@ -141,7 +141,7 @@ {{-- design --}} - +
diff --git a/packages/Webkul/Admin/src/Resources/views/settings/inventory_sources/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/inventory_sources/edit.blade.php index 07ebd9fa5..39731c7c7 100755 --- a/packages/Webkul/Admin/src/Resources/views/settings/inventory_sources/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/settings/inventory_sources/edit.blade.php @@ -111,7 +111,7 @@
- +
@include ('admin::customers.country-state', ['countryCode' => old('country') ?? $inventorySource->country, 'stateCode' => old('state') ?? $inventorySource->state]) diff --git a/packages/Webkul/Admin/src/Routes/catalog-routes.php b/packages/Webkul/Admin/src/Routes/catalog-routes.php index 4f791076a..bf0cdb2cf 100644 --- a/packages/Webkul/Admin/src/Routes/catalog-routes.php +++ b/packages/Webkul/Admin/src/Routes/catalog-routes.php @@ -96,6 +96,8 @@ Route::group(['middleware' => ['web', 'admin', 'admin_locale'], 'prefix' => conf 'redirect' => 'admin.catalog.categories.index', ])->name('admin.catalog.categories.update'); + Route::get('/categories/products/{id}', [CategoryController::class, 'products'])->name('admin.catalog.categories.products'); + Route::post('/categories/delete/{id}', [CategoryController::class, 'destroy'])->name('admin.catalog.categories.delete'); Route::post('categories/massdelete', [CategoryController::class, 'massDestroy'])->defaults('_config', [ diff --git a/packages/Webkul/Category/src/Http/Controllers/CategoryController.php b/packages/Webkul/Category/src/Http/Controllers/CategoryController.php index 0c1b68f84..83d444f21 100755 --- a/packages/Webkul/Category/src/Http/Controllers/CategoryController.php +++ b/packages/Webkul/Category/src/Http/Controllers/CategoryController.php @@ -3,6 +3,7 @@ namespace Webkul\Category\Http\Controllers; use Webkul\Admin\DataGrids\CategoryDataGrid; +use Webkul\Admin\DataGrids\CategoryProductDataGrid; use Webkul\Attribute\Repositories\AttributeRepository; use Webkul\Category\Http\Requests\CategoryRequest; use Webkul\Category\Repositories\CategoryRepository; @@ -109,6 +110,19 @@ class CategoryController extends Controller return view($this->_config['view'], compact('category', 'categories', 'attributes')); } + /** + * Show the products of specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function products($id) + { + if (request()->ajax()) { + return app(CategoryProductDataGrid::class)->toJson(); + } + } + /** * Update the specified resource in storage. *