82 lines
2.6 KiB
PHP
82 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Admin\Repositories\OfflineProductCategory as OfflineProductCategoryRepository;
|
|
use App\Exceptions\BizException;
|
|
use App\Models\OfflineOrderItem;
|
|
use Dcat\Admin\Admin;
|
|
use Dcat\Admin\Form;
|
|
use Dcat\Admin\Grid;
|
|
use Dcat\Admin\Grid\Column;
|
|
use Dcat\Admin\Http\Controllers\AdminController;
|
|
|
|
class OfflineProductCategoryController extends AdminController
|
|
{
|
|
public function destroy($id)
|
|
{
|
|
if (OfflineOrderItem::where('product_category_id', $id)->exists()) {
|
|
throw new BizException('商品分类已使用');
|
|
}
|
|
|
|
return $this->form()->destroy($id);
|
|
}
|
|
|
|
protected function grid()
|
|
{
|
|
return Grid::make(new OfflineProductCategoryRepository(), function (Grid $grid) {
|
|
$grid->column('id')->sortable();
|
|
$grid->column('name');
|
|
$grid->column('enabled')->filter(
|
|
Grid\Column\Filter\In::make([
|
|
0 => '否',
|
|
1 => '是',
|
|
])
|
|
)
|
|
->if(function () {
|
|
return Admin::user()->can('dcat.admin.offline_product_categories.edit');
|
|
})
|
|
->then(function (Column $column) {
|
|
$column->switch();
|
|
})
|
|
->else(function (Column $column) {
|
|
$column->bool();
|
|
});
|
|
$grid->column('sort')->sortable();
|
|
$grid->column('created_at');
|
|
|
|
$grid->model()->orderBy('id', 'desc');
|
|
|
|
if (Admin::user()->can('dcat.admin.offline_product_categories.create')) {
|
|
$grid->disableCreateButton(false);
|
|
$grid->enableDialogCreate();
|
|
}
|
|
|
|
$grid->actions(function (Grid\Displayers\Actions $actions) {
|
|
$actions->quickEdit(Admin::user()->can('dcat.admin.offline_product_categories.edit'));
|
|
$actions->delete(Admin::user()->can('dcat.admin.offline_product_categories.destroy'));
|
|
});
|
|
|
|
$grid->filter(function (Grid\Filter $filter) {
|
|
$filter->panel();
|
|
$filter->like('name')->width(3);
|
|
});
|
|
});
|
|
}
|
|
|
|
protected function form()
|
|
{
|
|
return Form::make(new OfflineProductCategoryRepository(), function (Form $form) {
|
|
$form->text('name')
|
|
->rules(['bail', 'required', 'string', 'max:255'])
|
|
->setLabelClass(['asterisk'])
|
|
->attribute('required', true);
|
|
|
|
$form->switch('enabled')
|
|
->default(true);
|
|
|
|
$form->number('sort')->default(0);
|
|
});
|
|
}
|
|
}
|