<?php

namespace app\admin\controller\sys_manage;

use app\admin\service\sys_manage\FieldService;
use app\admin\validate\sys_manage\FieldValidate;
use support\Request;

class Field
{
    /**
     * @Desc 字段列表
     * @Author Gorden
     * @Date 2024/2/22 14:49
     *
     * @param Request $request
     * @return \support\Response
     */
    public function fieldList(Request $request)
    {
        $page = $request->get('page', 1);
        $limit = $request->get('limit', 10);
        $keywords = $request->get('keywords', '');

        return FieldService::fieldList($page, $limit, $keywords);
    }

    /**
     * @Desc 字段详情
     * @Author Gorden
     * @Date 2024/2/22 14:54
     *
     * @param $id
     * @return \support\Response
     */
    public function fieldInfo($id)
    {
        return FieldService::fieldInfo($id);
    }

    /**
     * @Desc 新建字段
     * @Author Gorden
     * @Date 2024/2/22 14:32
     *
     * @param Request $request
     * @return \support\Response
     */
    public function addField(Request $request)
    {
        $validate = new FieldValidate();
        if (!$validate->scene('add')->check($request->post())) {
            return json_fail($validate->getError());
        }

        return FieldService::addField($request->post());
    }

    /**
     * @Desc 修改字段
     * @Author Gorden
     * @Date 2024/2/22 14:41
     *
     * @param $id
     * @param Request $request
     * @return \support\Response
     */
    public function updateField($id, Request $request)
    {
        $validate = new FieldValidate();
        if (!$validate->scene('update')->check($request->post())) {
            return json_fail($validate->getError());
        }

        return FieldService::updateField($id, $request->post());
    }

    /**
     * @Desc 修改字段状态
     * @Author Gorden
     * @Date 2024/2/22 15:05
     *
     * @param $id
     * @param Request $request
     * @return \support\Response
     */
    public function updateStatus($id, Request $request)
    {
        $validate = new FieldValidate();
        if (!$validate->scene('update_status')->check($request->post())) {
            return json_fail($validate->getError());
        }

        return FieldService::updateStatus($id, $request->post());
    }

    /**
     * @Desc 删除字段
     * @Author Gorden
     * @Date 2024/2/22 15:08
     *
     * @param $id
     * @return \support\Response
     */
    public function delField($id)
    {
        return FieldService::delField($id);
    }
}