<?php

namespace app\admin\controller;
use app\admin\attr\Permission;
use app\common\model\Admin as AdminModel;
use app\common\util\Result;

#[Permission('admin')]
class Admin extends BaseAuthorized
{
    #[Permission(ignore: true)]
    public function init()
    {
        $roleList = \app\common\model\Role::field("id,name,valid,remark")->order("name asc ,id desc")->select();
        $result = [
            "roleList" => $roleList,
        ];
        return $this->success($result);
    }

    #[Permission('read')]
    public function fullList()
    {
        $list = (new AdminModel)->select();
        return Result::rest($list);
    }

    #[Permission('read')]
    public function list()
    {
        //第1段:校验输入
        $param = request()->param();
        $rules = [];
        $this->autoValid($rules, $param);
        $listRow = input("pageSize", 20);
        $keyword = input("keyword", "");
        //第2段:执行业务
        $res = AdminModel::getList($keyword, $listRow);
        //第3段:格式化输出
        if ($res["code"] != 0) {
            $this->error($res['msg'], $res["code"]);
        }
        return $this->success($res["data"]);
    }

    #[Permission('create')]
    public function add()
    {
        //第1段:校验输入
        $param = request()->param();
        $rules = [
            'name|账号' => 'require',
            'password|密码' => 'require',
            'phone|手机号' => 'require',
            'role_id|角色' => 'require',
            'valid|状态' => 'require',
        ];
        $this->autoValid($rules, $param);
        //第2段:执行业务
        $res = AdminModel::add($param["name"], $param["password"], $param["phone"], $param["role_id"], $param["valid"]);
        //第3段:格式化输出
        if ($res["code"] != 0) {
            $this->error($res['msg'], $res["code"]);
        }
        return $this->success($res["data"], "新增成功");
    }

    #[Permission('update')]
    public function edit()
    {
        //第1段:校验输入
        $param = request()->param();
        $rules = [
            'id|id' => 'require',
            'name|账号' => 'require',
            'phone|手机号' => 'require',
            'role_id|角色' => 'require',
            'valid|状态' => 'require',
        ];
        $this->autoValid($rules, $param);
        //第2段:执行业务
        $res = AdminModel::edit($param["id"], $param["phone"], $param["role_id"], $param["valid"]);
        //第3段:格式化输出
        if ($res["code"] != 0) {
            $this->error($res['msg'], $res["code"]);
        }
        return $this->success($res["data"], "更新成功");
    }

    /**
     * 删除
     */
    #[Permission('delete')]
    public function delete()
    {
        $param = request()->param();
        $rules = [
            'ids|删除项' => 'require',
        ];
        $this->autoValid($rules, $param);
        $res = AdminModel::del($param["ids"]);
        if ($res["code"] != 0) {
            $this->error($res['msg'], $res["code"]);
        }
        return $this->success($res["data"]);
    }

    #[Permission('read')]
    public function detail()
    {
        $param = request()->param();
        $rules = [
            'id|id' => 'require',
        ];
        $this->autoValid($rules, $param);
        $admin = AdminModel::with(['role'])->find($param["id"]);
        if (!$admin) {
            $this->error("记录未找到");
        }
        return $this->success($admin);
    }

    #[Permission('update')]
    public function resetPwd()
    {
        $param = request()->param();
        $rules = [
            'id|id' => 'require',
            'password|密码' => 'require',
        ];
        $this->autoValid($rules, $param);
        $res = AdminModel::resetPwd($param["id"], $param["password"]);
        if ($res["code"] != 0) {
            $this->error($res['msg'], $res["code"]);
        }
        return $this->success($res["data"], "重置成功");
    }

}