103 lines
3.2 KiB
PHP
103 lines
3.2 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use Dcat\Admin\Form;
|
|
use Dcat\Admin\Grid;
|
|
use Dcat\Admin\Show;
|
|
use Dcat\Admin\Admin;
|
|
use App\Enums\BaseType;
|
|
use App\Models\AgriculturalBase;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Dcat\Admin\Http\Controllers\AdminController;
|
|
|
|
class AgriculturalBaseController extends AdminController
|
|
{
|
|
/**
|
|
* Make a grid builder.
|
|
*
|
|
* @return Grid
|
|
*/
|
|
protected function grid()
|
|
{
|
|
return Grid::make(new AgriculturalBase(), function (Grid $grid) {
|
|
$grid->model()->where('type', BaseType::Base);
|
|
// $grid->column('id')->sortable();
|
|
$grid->column('name');
|
|
$grid->column('person');
|
|
$grid->column('address');
|
|
$grid->column('address_lat');
|
|
$grid->column('address_lng');
|
|
// $grid->column('description');
|
|
// $grid->column('map');
|
|
$grid->column('areas');
|
|
$grid->column('workforce');
|
|
$grid->column('created_at')->sortable();
|
|
|
|
$grid->model()->orderBy('created_at', 'desc');
|
|
|
|
$grid->showCreateButton(! config('admin.permission.enable') || Admin::user()->can('dcat.admin.agricultural_bases.create'));
|
|
$grid->showQuickEditButton(! config('admin.permission.enable') || Admin::user()->can('dcat.admin.agricultural_bases.edit'));
|
|
$grid->showDeleteButton(! config('admin.permission.enable') || Admin::user()->can('dcat.admin.agricultural_bases.destroy'));
|
|
|
|
$grid->filter(function (Grid\Filter $filter) {
|
|
$filter->like('name')->width(3);
|
|
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Make a form builder.
|
|
*
|
|
* @return Form
|
|
*/
|
|
protected function form()
|
|
{
|
|
return Form::make(new AgriculturalBase(), function (Form $form) {
|
|
$model = $form->model();
|
|
|
|
$form->display('id');
|
|
$form->text('name');
|
|
$form->text('person');
|
|
$form->number('areas');
|
|
$form->number('workforce');
|
|
$form->textarea('description');
|
|
$form->amap('position')
|
|
->key(config('amap.js.key'))
|
|
->code(config('amap.js.secret'))
|
|
->address(data_get($model, 'address'))
|
|
->lng(data_get($model, 'address_lng', 105.287612))
|
|
->lat(data_get($model, 'address_lat', 29.339476));
|
|
|
|
$form->hidden('address');
|
|
$form->hidden('address_lng');
|
|
$form->hidden('address_lat');
|
|
|
|
$form->hidden('type')->value(BaseType::Base->value);
|
|
|
|
$form->saving(function($form){
|
|
$position = json_decode($form->position);
|
|
|
|
$form->address = $position->address ?? '';
|
|
$form->address_lng = $position->lng ?? '';
|
|
$form->address_lat = $position->lat ?? '';
|
|
|
|
$form->deleteInput('position');
|
|
});
|
|
|
|
$form->display('created_at');
|
|
$form->display('updated_at');
|
|
});
|
|
}
|
|
|
|
public function destroy($id)
|
|
{
|
|
$agriculturalBasic = AgriculturalBase::findOrFail($id);
|
|
|
|
$agriculturalBasic->crops()->sync([]);
|
|
|
|
return parent::destroy($id);
|
|
}
|
|
}
|