Added bulk category delete functionality

This commit is contained in:
Jaseel P V 2020-10-21 22:26:38 +05:30
parent d56dfa725b
commit 8010d34a3a
3 changed files with 36 additions and 24 deletions

View File

@ -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',
]);
}
}

View File

@ -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', [

View File

@ -175,36 +175,36 @@ class CategoryController extends Controller
*/
public function massDestroy()
{
$suppressFlash = false;
if (request()->isMethod('delete') || request()->isMethod('post')) {
$indexes = explode(',', request()->input('indexes'));
foreach ($indexes as $key => $value) {
try {
Event::dispatch('catalog.category.delete.before', $value);
$this->categoryRepository->delete($value);
Event::dispatch('catalog.category.delete.after', $value);
} catch(\Exception $e) {
$suppressFlash = true;
$categoryIds = explode(',', request()->input('indexes'));
continue;
}
}
foreach ($categoryIds as $categoryId) {
$category = $this->categoryRepository->find($categoryId);
if (! $suppressFlash) {
session()->flash('success', trans('admin::app.datagrid.mass-ops.delete-success'));
if (isset($category)) {
if(strtolower($category->name) == "root") {
$suppressFlash = false;
session()->flash('warning', trans('admin::app.response.delete-category-root', ['name' => 'Category']));
} else {
session()->flash('info', trans('admin::app.datagrid.mass-ops.partial-action', ['resource' => 'Attribute Family']));
try {
$suppressFlash = true;
Event::dispatch('catalog.category.delete.before', $categoryId);
$this->categoryRepository->delete($categoryId);
Event::dispatch('catalog.category.delete.after', $categoryId);
} catch(\Exception $e) {
session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Category']));
}
}
}
}
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']);
}
}