<?php

namespace App\Admin\Controllers;

use Admin;
use App\Admin\Repositories\ServiceProject;
use App\Models\ServiceCategory; // 添加此行
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;

class ServiceProjectController extends AdminController
{
    /**
     * Make a grid builder.
     *
     * @return Grid
     */
    protected function grid()
    {
        return Grid::make(new ServiceProject(), function (Grid $grid) {
            $grid->column('id')->sortable();
            $grid->column('title');
            $grid->column('sub_title')->editable();
            $grid->column('cover')->image(); // 服务封面 -> 图片
            $grid->column('price')->display(function ($price) {
                return $price . ' 元';
            }); // 服务价格 -> 金额，单位：元
            $grid->column('init_price')->display(function ($init_price) {
                return $init_price . ' 元';
            }); // 原价 -> 金额，单位：元
            $grid->column('material_price')->display(function ($material_price) {
                return $material_price . ' 元';
            }); // 物料费 -> 金额，单位：元
            $grid->column('sale')->display(function ($sale) {
                return $sale . ' 单';
            }); // 销量 -> 数字，单位：单
            $grid->column('time_long')->display(function ($time_long) {
                return $time_long . ' 分';
            }); // 服务时长 -> 数字，单位：分
            $grid->column('com_balance')->display(function ($com_balance) {
                return $com_balance . ' %';
            }); // 分佣比例 -> 数字，单位：%
            $grid->column('is_add')->switch(); // 加钟服务 -> 开关按钮
            $grid->column('is_store')->switch(); // 支持到店 -> 开关按钮
            $grid->column('is_door')->switch(); // 支持上门 -> 开关按钮
            $grid->column('sort')->sortable(); // 排序 -> 数字
            $grid->column('status')->switch();
            $grid->column('category_id')->using(ServiceCategory::pluck('title', 'id')->all());
            $grid->column('created_at');
            $grid->column('updated_at')->sortable();

            $grid->filter(function (Grid\Filter $filter) {
                $filter->equal('id');
                $filter->like('title', '服务名称'); // 根据服务名称(模糊)进行过滤
                $filter->equal('status', '状态')->select([0 => '关闭', 1 => '启用']); // 根据状态进行过滤
                $filter->between('updated_at', '更新时间')->datetime(); // 根据更新时间进行过滤

            });

        });
    }

    /**
     * Make a show builder.
     *
     * @param mixed $id
     *
     * @return Show
     */
    protected function detail($id)
    {
        return Show::make($id, new ServiceProject(), function (Show $show) {
            // $show->field('id');
            $show->field('category_id')->using(ServiceCategory::pluck('title', 'id')->all()); // 所属分类 -> 下拉单选 分类列;

            $show->field('title');
            $show->field('sub_title');
            $show->field('cover')->image(); // 服务封面 -> 图片
            $show->field('price')->as(function ($price) {
                return $price . ' 元';
            }); // 服务价格 -> 金额，单位：元
            $show->field('init_price')->as(function ($init_price) {
                return $init_price . ' 元';
            }); // 原价 -> 金额，单位：元
            $show->field('material_price')->as(function ($material_price) {
                return $material_price . ' 元';
            }); // 物料费 -> 金额，单位：元
            $show->field('sale')->as(function ($sale) {
                return $sale . ' 单';
            }); // 销量 -> 数字，单位：单
            $show->field('time_long')->as(function ($time_long) {
                return $time_long . ' 分';
            }); // 服务时长 -> 数字，单位：分
            $show->field('com_balance')->as(function ($com_balance) {
                return $com_balance . ' %';
            }); // 分佣比例 -> 数字，单位：%
            $show->field('is_add')->using([0 => '关闭', 1 => '启用']); // 加钟服务 -> 开关按钮
            $show->field('is_store')->using([0 => '关闭', 1 => '启用']); // 支持到店 -> 开关按钮
            $show->field('is_door')->using([0 => '关闭', 1 => '启用']);// 支持上门 -> 开关按钮
            $show->field('sort'); // 排序 -> 数字
            $show->field('status')->using([0 => '关闭', 1 => '启用']);
            $show->field('introduce')->unescape(); // 项目介绍 -> 富文本显示
            $show->field('notice')->unescape(); // 下单须知 -> 富文本显示
            $show->field('explain')->unescape(); // 禁忌说明 -> 富文本显示

            // $show->field('creator');
            // $show->field('updator');
            $show->field('created_at');
            $show->field('updated_at');
        });
    }

    /**
     * Make a form builder.
     *
     * @return Form
     */
    protected function form()
    {
        return Form::make(new ServiceProject(), function (Form $form) {
            // $form->column(6, function (Form $form) {
            // $form->display('id');
            $form->select('category_id')->required()->options(ServiceCategory::pluck('title', 'id')); // 所属分类 -> 下拉单选 分类列表
            $form->text('title')->required();
            $form->text('sub_title')->required();
            $form->image('cover')->required()->uniqueName()->autoUpload();
            // ->resize(300, 200)
            // ->saveAs('thumbnails/' . $form->cover->getClientOriginalName());
            // });

            $form->currency('price')->required()->symbol('元'); // 服务价格 -> 金额，单位：元
            $form->currency('init_price')->symbol('元'); // 原价 -> 金额，单位：元
            $form->currency('material_price')->symbol('元'); // 物料费 -> 金额，单位：元
            $form->number('sale'); // 销量 -> 数字，单位：单
            $form->number('time_long'); // 服务时长 -> 数字，单位：分
            $form->number('com_balance'); // 分佣比例 -> 数字，单位：%
            $form->switch('is_add'); // 加钟服务 -> 开关按钮
            $form->switch('is_store'); // 支持到店 -> 开关按钮
            $form->switch('is_door'); // 支持上门 -> 开关按钮
            $form->switch('status'); // 支持上门 -> 开关按钮
            $form->number('sort'); // 排序 -> 数字
            $form->editor('introduce')->required(); // 项目介绍 -> 富文本编辑
            $form->editor('notice'); // 下单须知 -> 富文本编辑
            $form->editor('explain'); // 禁忌说明 -> 富文本编辑

            $form->saving(function (Form $form) {
                if ($form->isCreating()) {
                    $form->creator = Admin::user()->name;
                    $form->created_at = now();
                }
                $form->updater = Admin::user()->name;
                $form->updated_at = now();
            });
        });
    }
}
