<?php

namespace App\Admin\Controllers\Company;

use App\Http\Controllers\Controller;
use App\Models\SetmealIncrement;
use Encore\Admin\Auth\Permission;
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;

class SetmealIncrementController extends Controller
{
    use HasResourceActions;

    /**
     * Index interface.
     *
     * @param Content $content
     * @return Content
     */
    public function index(Content $content)
    {
        Permission::check('increment_manager_setcompany');
        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('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->form()->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()
    {
        Permission::check('increment_manager_setcompany');
        $grid = new Grid(new SetmealIncrement);
        $grid->id('id');
        $grid->name('名称');
        $grid->cat('类型')->display(function ($cat) {
            switch ($cat) {
                case 'download_resume':
                    return '简历增值包';
                    break;
                case 'sms':
                    return '短信增值包';
                    break;
                case 'jobs':
                    return '职位增值包';
                    break;
                case 'jobfair_num':
                    return '招聘会场次增值包';
                    break;
                case 'stick':
                    return '职位置顶';
                    break;
                case 'emergency':
                    return '职位紧急';
                    break;
                case 'auto_refresh_jobs':
                    return '职位智能刷新';
                    break;
            }
        });
        $grid->value('服务条数');
        $grid->price('服务价格');
        $grid->sort('排序')->editable();

        $grid->disableFilter();
        if (Admin::user()->can('increment_manager_setcompany_increment_add')) {
            $grid->disableCreateButton(false);
        }

        $grid->actions(function ($actions) {
            if (Admin::user()->can('increment_manager_setcompany_increment_edit')) {
                $actions->disableEdit(false);
            }
            if (Admin::user()->can('increment_manager_setcompany_increment_delete')) {
                $actions->disableDelete(false);
            }
        });
        return $grid;
    }

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

        $show->name('名称');
        $show->cat('名称')->as(function ($cat) {
            switch ($cat) {
                case 'download_resume':
                    return '简历增值包';
                    break;
                case 'sms':
                    return '短信增值包';
                    break;
                case 'jobs':
                    return '职位增值包';
                    break;
                case 'jobfair_num':
                    return '招聘会场次增值包';
                    break;
                case 'stick':
                    return '职位置顶';
                    break;
                case 'emergency':
                    return '职位紧急';
                    break;
                case 'auto_refresh_jobs':
                    return '职位智能刷新';
                    break;
            }
        });
        $show->value('服务条数');
        $show->price('服务价格');
        return $show;
    }

    /**
     * Make a form builder.
     *
     * @return Form
     */
    protected function form()
    {
        Permission::check('increment_manager_setcompany_increment_edit');
        $form = new Form(new SetmealIncrement);
        $form->display('id');
        $form->text('name', '名称');
        $options =[
            'download_resume' => '简历增值包', 'sms' => '短信增值包','jobs'=>'职位增值包','jobfair_num'=>'招聘会场次增值包', 'stick' => '职位置顶', 'emergency' => '职位紧急', 'auto_refresh_jobs' => '职位智能刷新'
        ];
        $form->radio('cat', '类型')->options($options);
        $form->number('value', '服务条数')->min(0)->max(1000);
        $form->number('price', '服务价格')->min(0)->max(1000);
        $form->number('sort', '排序')->min(0);
        return $form;
    }
}