From 8010d34a3ae3bb66bf7f391cb22720353c2fa390 Mon Sep 17 00:00:00 2001 From: Jaseel P V Date: Wed, 21 Oct 2020 22:26:38 +0530 Subject: [PATCH] Added bulk category delete functionality --- .../Admin/src/DataGrids/CategoryDataGrid.php | 7 +++ packages/Webkul/Admin/src/Http/routes.php | 5 ++ .../Http/Controllers/CategoryController.php | 48 +++++++++---------- 3 files changed, 36 insertions(+), 24 deletions(-) diff --git a/packages/Webkul/Admin/src/DataGrids/CategoryDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CategoryDataGrid.php index 092814009..ecd802a45 100755 --- a/packages/Webkul/Admin/src/DataGrids/CategoryDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/CategoryDataGrid.php @@ -100,5 +100,12 @@ class CategoryDataGrid extends DataGrid 'confirm_text' => trans('ui::app.datagrid.massaction.delete', ['resource' => 'product']), 'icon' => 'icon trash-icon', ]); + + $this->addMassAction([ + 'type' => 'delete', + 'label' => trans('admin::app.datagrid.delete'), + 'action' => route('admin.catalog.categories.massdelete'), + 'method' => 'DELETE', + ]); } } \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php index b0db82981..89da7acdb 100755 --- a/packages/Webkul/Admin/src/Http/routes.php +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -335,6 +335,11 @@ Route::group(['middleware' => ['web']], function () { Route::post('/categories/delete/{id}', 'Webkul\Category\Http\Controllers\CategoryController@destroy')->name('admin.catalog.categories.delete'); + //category massdelete + Route::post('categories/massdelete', 'Webkul\Category\Http\Controllers\CategoryController@massDestroy')->defaults('_config', [ + 'redirect' => 'admin.catalog.categories.index', + ])->name('admin.catalog.categories.massdelete'); + // Catalog Attribute Routes Route::get('/attributes', 'Webkul\Attribute\Http\Controllers\AttributeController@index')->defaults('_config', [ diff --git a/packages/Webkul/Category/src/Http/Controllers/CategoryController.php b/packages/Webkul/Category/src/Http/Controllers/CategoryController.php index 6270e70f0..505c6de35 100755 --- a/packages/Webkul/Category/src/Http/Controllers/CategoryController.php +++ b/packages/Webkul/Category/src/Http/Controllers/CategoryController.php @@ -175,36 +175,36 @@ class CategoryController extends Controller */ public function massDestroy() { - $suppressFlash = false; + $suppressFlash = true; + $categoryIds = explode(',', request()->input('indexes')); - if (request()->isMethod('delete') || request()->isMethod('post')) { - $indexes = explode(',', request()->input('indexes')); + foreach ($categoryIds as $categoryId) { + $category = $this->categoryRepository->find($categoryId); - foreach ($indexes as $key => $value) { - try { - Event::dispatch('catalog.category.delete.before', $value); + if (isset($category)) { + if(strtolower($category->name) == "root") { + $suppressFlash = false; + session()->flash('warning', trans('admin::app.response.delete-category-root', ['name' => 'Category'])); + } else { + try { + $suppressFlash = true; + Event::dispatch('catalog.category.delete.before', $categoryId); - $this->categoryRepository->delete($value); + $this->categoryRepository->delete($categoryId); - Event::dispatch('catalog.category.delete.after', $value); - } catch(\Exception $e) { - $suppressFlash = true; - - continue; + Event::dispatch('catalog.category.delete.after', $categoryId); + + } catch(\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Category'])); + } } } - - if (! $suppressFlash) { - session()->flash('success', trans('admin::app.datagrid.mass-ops.delete-success')); - } else { - session()->flash('info', trans('admin::app.datagrid.mass-ops.partial-action', ['resource' => 'Attribute Family'])); - } - - return redirect()->back(); - } else { - session()->flash('error', trans('admin::app.datagrid.mass-ops.method-error')); - - return redirect()->back(); } + + if (count($categoryIds) != 1 || $suppressFlash == true) { + session()->flash('success', trans('admin::app.datagrid.mass-ops.delete-success', ['resource' => 'Category'])); + } + + return redirect()->route($this->_config['redirect']); } } \ No newline at end of file