<?php

namespace App\Admin\Controllers\Content;

use App\Models\Category;
use App\Models\PolicyProperty;
use App\Models\Treat;
use App\Http\Controllers\Controller;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Facades\Admin;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Encore\Admin\Show;
use Illuminate\Http\Request;


class TreatController extends Controller
{
    use HasResourceActions;

    /**
     * Index interface.
     *
     * @param Content $content
     * @return Content
     */
    public function index(Content $content)
    {
        return $content
            ->header('待遇分类')
            ->description(' ')
            ->body($this->grid());
    }

    /**
     * Show interface.
     *
     * @param mixed $id
     * @param Content $content
     * @return Content
     */
    public function show($id, Content $content)
    {
        return $content
            ->header('待遇分类')
            ->description(' ')
            ->body($this->detail($id));
    }

    /**
     * Edit interface.
     *
     * @param mixed $id
     * @param Content $content
     * @return Content
     */
    public function edit($id, Content $content)
    {

        return $content
            ->header('待遇分类')
            ->description(' ')
            ->body($this->editForm($id)->edit($id));
    }

    /**
     * Create interface.
     *
     * @param Content $content
     * @return Content
     */
    public function create(Content $content)
    {
        return $content
            ->header('待遇分类')
            ->description(' ')
            ->body($this->form());
    }

    /**
     * Make a grid builder.
     *
     * @return Grid
     */
    protected function grid()
    {
        $grid = new Grid(new Treat);
        $grid->id('id');
        $grid->categorys()->demand('面向人才');
        $grid->title('分类名称');
        $grid->intro('简介');
        $grid->policyproperty()->categoryname('政策层级');
        $grid->sort('排序');
        $grid->disableCreateButton(false);
        $grid->actions(function ($actions) {
            $actions->disableEdit(false);
            $actions->disableDelete(false);
        });
        $grid->filter(function ($filter) {
            $filter->like('categorys.demand', '面向人才');
            $filter->like('title', '分类名称');
        });
        return $grid;
    }

    /**
     * Make a show builder.
     *
     * @param mixed $id
     * @return Show
     */
    protected function detail($id)
    {
        $show = new Show(Treat::findOrFail($id));

        $show->id('ID');
        $show->created_at('Created at');
        $show->updated_at('Updated at');

        return $show;
    }

    /**
     * Make a form builder.
     *
     * @return Form
     */
    protected function form()
    {
        $form = new Form(new Treat);
        $form->text('title', '待遇名称')->rules(['required'], ['required'=>'请填写待遇名称'])->setMustMark();
        $policyProperty = PolicyProperty::select()->pluck('categoryname', 'id');
//        $policyProperty[0] ='不限';
        $form->select('property_id', '政策层次')->options($policyProperty)->load('c_id', admin_base_path('/content/policys/treats/category'))->rules("required")->setMustMark();
        $form->select('c_id', '面向人才')->rules(['required'], ['required'=>'请填写面向人才'])->setMustMark();
        $form->text('intro', '待遇简介')->rules(['required'], ['required'=>'请填写待遇简介'])->setMustMark();
        $form->number('sort', '排序')->default(0)->min(0);
        $form->text('content', '待遇内容')->rules(['required'], ['required'=>'请填写待遇内容'])->setMustMark();
        return $form;
    }

    protected function editForm($id)
    {
        $form = new Form(new Treat);
        $treatData = Treat::where('id', $id)->select('property_id')->first()->toArray();

        $form->text('title', '待遇名称')->rules(['required'], ['required'=>'请填写待遇名称'])->setMustMark();
        $policyProperty = PolicyProperty::select()->pluck('categoryname', 'id');
//        $policyProperty[0] ='不限';
        $arr = array(
            '1' => 'RC_category_fj',
            '2' => 'RC_category_qz',
            '7' => '',
            '8' => 'RC_category'
        );
        $form->select('property_id', '政策层次')->options($policyProperty)->load('c_id', admin_base_path('/content/policys/treats/category'))->rules("required")->setMustMark();
        $form->select('c_id', '面向人才')->options(Category::categoryType($arr[$treatData['property_id']]))->rules(['required'], ['required'=>'请填写面向人才'])->setMustMark();
        $form->text('intro', '待遇简介')->rules(['required'], ['required'=>'请填写待遇简介'])->setMustMark();
        $form->number('sort', '排序')->default(0)->min(0);
        $form->text('content', '待遇内容')->rules(['required'], ['required'=>'请填写待遇内容'])->setMustMark();
        return $form;
    }

    public function category(Request $request)
    {
        $q = $request->get('q');
        $arr = array(
            '1' => 'RC_category_fj',
            '2' => 'RC_category_qz',
            '7' => 'RC_category_jj',
            '8' => 'RC_category'
        );
        return Category::where('alias', $arr[$q])->get(['id',"demand as text"]);
    }

    public function update($id)
    {
        return $this->editForm($id)->update($id);
    }
}