<?php

namespace App\Admin\Controllers\Person;

use App\Http\Controllers\Controller;
use App\Models\PersonalServiceStick;
use App\Models\PersonalServiceTag;
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 Encore\Admin\Widgets\Tab;
use Encore\Admin\Widgets\Table;
use Illuminate\Validation\Rule;

class PersonalServiceStickController extends Controller
{
    use HasResourceActions;

    /**
     * Index interface.
     *
     * @param Content $content
     * @return Content
     */
    public function index(Content $content)
    {

        return $content
            ->header('简历置顶')
            ->description(' ')
            ->body($this->grid());
    }
    public function indexs(Content $content, int $type_id, int $tab_id = 0)
    {
        $tab = new Tab();
        if ($type_id=='1') {
            $services = PersonalServiceStick::all();
            $header = '简历置顶';
        } else {
            $services = PersonalServiceTag::all();
            $header = '醒目标签';
        }

        $headers = ['Id', 'Email', 'Name', 'Company'];
        $rows = [
            [1, 'labore21@yahoo.com', 'Ms. Clotilde Gibson', 'Goodwin-Watsica'],
            [2, 'omnis.in@hotmail.com', 'Allie Kuhic', 'Murphy, Koepp and Morar'],
            [3, 'quia65@hotmail.com', 'Prof. Drew Heller', 'Kihn LLC'],
            [4, 'xet@yahoo.com', 'William Koss', 'Becker-Raynor'],
            [5, 'ipsa.aut@gmail.com', 'Ms. Antonietta Kozey Jr.'],
        ];

        $table = new Table($headers, $rows);

        $tab->add('置顶', '置顶')->render();
        $tab->add('醒目标签', $table)->render();

        //return $tab->render();
        //$tab->add('站内信', $this->grid()->setResource('/content/sysmessage/index')->render());
        //$tab->add('弹窗消息', $this->grid()->setResource('/content/explain/index')->render());
        return $content
            ->header($header)
            ->description(' ')
            ->body($tab);

    }


    /**
     * 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 PersonalServiceStick);

        $grid->model()->orderBy('list_order', 'desc');
        $grid->id('ID');
        $grid->days('服务名称')->display(function () {
            return '置顶 '.$this->days.' 天';
        })->width(150);
        $grid->column('类型')->display(function () {
            return '置顶';
        });
        $grid->points('服务价')->display(function () {
            return $this->points.'积分';
        })->width(200);
        $grid->list_order('排序')->width(200);
        $grid->created_at('添加时间');
        $grid->updated_at('更新时间');
        if (Admin::user()->can('person_resume_stick_add')) {
            $grid->disableCreateButton(false);
        }
        $grid->actions(function ($actions) {
            if (Admin::user()->can('person_resume_stick_edit')) {
                $actions->disableEdit(false);
            }
            if (Admin::user()->can('person_resume_stick_delete')) {
                $actions->disableDelete(false);
            }
        });
        $grid->disableFilter();
        return $grid;
    }

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

        $show->id('ID');
        $show->days('置顶时间')->as(function ($days) {
            return $days.'天';
        });
        $show->points('所需积分')->as(function ($points) {
            return $points.'点';
        });
        $show->list_order('排序');
        $show->created_at('添加时间');
        $show->updated_at('更新时间');
        return $show;
    }


    protected function editForm($id)
    {
        $form = new Form(new PersonalServiceStick);

        $form->text('days', '置顶时间')
            ->rules(
                [
                    'required',
                     Rule::unique('personal_service_sticks')->ignore($id),
                ],
                [
                    'required' => '置顶时间不能为空',
                    'unique' => '置顶时间已存在',
                ]
            )
            ->setWidth(2)->setMustMark()
            ->append('天')
            ->attribute(array('maxlength'=>'10','onkeyup'=>'if(event.keyCode !=37 && event.keyCode != 39) value=value.replace(/\D/g,\'\');','onbeforepaste'=>"clipboardData.setData('text',clipboardData.getData('text').replace(/\D/g,''))"));
        $form->text('points', '所需积分')
            ->rules('required', array('required'=>'所需积分不能为空。'))
            ->setWidth(2)->setMustMark()
            ->append('点')
            ->attribute(array('maxlength'=>'10','onkeyup'=>'if(event.keyCode !=37 && event.keyCode != 39) value=value.replace(/\D/g,\'\');','onbeforepaste'=>"clipboardData.setData('text',clipboardData.getData('text').replace(/\D/g,''))"));
        $form->number('list_order', '排序')->default(0)->min(0)
            ->rules('required|numeric', array('required'=>'排序不能为空。','numeric'=>'排序只能填写数字。'))
            ->attribute(array('maxlength'=>'10','onkeyup'=>'if(event.keyCode !=37 && event.keyCode != 39) value=value.replace(/\D/g,\'\');','onbeforepaste'=>"clipboardData.setData('text',clipboardData.getData('text').replace(/\D/g,''))"))
            ->help('(数字越大越靠前)');
        return $form;
    }


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


    /**
     * Make a form builder.
     *
     * @return Form
     */
    protected function form()
    {
        $form = new Form(new PersonalServiceStick);

        $form->text('days', '置顶时间')
            ->rules(
                [
                    'required',
                     Rule::unique('personal_service_sticks')->where(function ($query){
                         $query->where('deleted_at',null);
                     }),
                ],
                [
                    'required' => '置顶时间不能为空',
                    'unique' => '置顶时间已存在',
                ]
            )
             ->setWidth(2)->setMustMark()
             ->append('天')
            ->attribute(array('maxlength'=>'10','onkeyup'=>'if(event.keyCode !=37 && event.keyCode != 39) value=value.replace(/\D/g,\'\');','onbeforepaste'=>"clipboardData.setData('text',clipboardData.getData('text').replace(/\D/g,''))"));
        $form->text('points', '所需积分')
             ->rules('required', array('required'=>'所需积分不能为空。'))
             ->setWidth(2)->setMustMark()
             ->append('点')
             ->attribute(array('maxlength'=>'10','onkeyup'=>'if(event.keyCode !=37 && event.keyCode != 39) value=value.replace(/\D/g,\'\');','onbeforepaste'=>"clipboardData.setData('text',clipboardData.getData('text').replace(/\D/g,''))"));
        $form->number('list_order', '排序')->default(0)->min(0)
             ->rules('required|numeric', array('required'=>'排序不能为空。','numeric'=>'排序只能填写数字。'))
             ->attribute(array('maxlength'=>'10','onkeyup'=>'if(event.keyCode !=37 && event.keyCode != 39) value=value.replace(/\D/g,\'\');','onbeforepaste'=>"clipboardData.setData('text',clipboardData.getData('text').replace(/\D/g,''))"))
             ->help('(数字越大越靠前)');
        return $form;
    }



}