<?php
declare(strict_types=1);

/**
 * 权限管理（层级树，人工编码）
 * 页面: admin/permission/index
 */
class permissionAction extends Action
{
    private function model(): Permission
    {
        return new Permission();
    }

    public function index()
    {
        View::set(['pageTitle' => lg('权限')]);
        View::put();
    }

    /**
     * 整棵权限树，给 dxTreeList 和角色权限分配弹窗共用
     */
    public function tree()
    {
        $this->success($this->model()->tree());
    }

    /**
     * 新增/编辑一个权限节点，请求体: { code?, values: {...} }，有 code 是编辑，没有是新增
     * code 是主键，新增时必须在 values.sys_permission_code 里传
     */
    public function save()
    {
        $values = is_array($this->request['values'] ?? null) ? $this->request['values'] : [];
        $code = $this->request['code'] ?? null;

        if ($code !== null) {
            $this->model()->gridUpdate($code, $values);
        } else {
            $this->model()->gridInsert($values);
        }

        $this->success();
    }

    public function remove()
    {
        $this->model()->gridRemove($this->request['code'] ?? null);
        $this->success();
    }
}
