<?php

namespace app\admin\controller\sys_manage;

use app\admin\service\sys_manage\RoleService;
use app\admin\validate\sys_manage\RoleValidate;
use support\Request;

class RoleController
{
    /**
     * @Desc 角色列表
     * @Author Gorden
     * @Date 2024/2/20 16:30
     *
     * @param Request $request
     * @return \support\Response
     */
    public function roleList(Request $request)
    {
        return RoleService::roleList($request);
    }

    /**
     * @Desc 角色详情
     * @Author Gorden
     * @Date 2024/2/20 16:36
     *
     * @param $id
     * @return \support\Response
     */
    public function roleInfo($id)
    {
        return RoleService::roleInfo($id);
    }

    public function save()
    {

    }

    /**
     * @Desc 添加角色
     * @Author Gorden
     * @Date 2024/2/20 15:38
     *
     * @param Request $request
     * @return \support\Response|null
     */
    public function addRole(Request $request)
    {
        $validate = new RoleValidate();
        if (!$validate->scene('add')->check($request->post())) {
            return json_fail($validate->getError());
        }

        return RoleService::insertRole($request->post());
    }

    /**
     * @Desc 修改角色
     * @Author Gorden
     * @Date 2024/2/20 16:07
     *
     * @param $id
     * @param Request $request
     * @return \support\Response
     */
    public function updateRole($id, Request $request)
    {
        $validate = new RoleValidate();
        if (!$validate->scene('update')->check($request->post())) {
            return json_fail($validate->getError());
        }

        return RoleService::updateRole(intval($id), $request->post());
    }

    /**
     * @Desc 删除角色
     * @Author Gorden
     * @Date 2024/2/20 16:40
     *
     * @param $id
     * @return \support\Response
     */
    public function delRole(Request $request)
    {
        return RoleService::delRole($request->post());
    }

    /**
     * @Desc 修改角色状态
     * @Author Gorden
     * @Date 2024/2/20 16:50
     *
     * @param $id
     * @param Request $request
     * @return \support\Response
     */
    public function updateStatus($id, Request $request)
    {
        $validate = new RoleValidate();
        if (!$validate->scene('update_status')->check(['role_status' => $request->post('role_status')])) {
            return json_fail($validate->getError());
        }

        return RoleService::updateStatus(intval($id), $request->post('role_status'));
    }
}