<?php
declare(strict_types=1);

/**
 * 角色与系统用户：三栏页面（角色 / 用户 / 用户角色对照，勾选即生效）
 * 页面: admin/roleAdmin/index
 */
class roleAdminAction extends Action
{
    public function index()
    {
        View::set([
            'pageTitle' => lg('角色与系统用户'),
            'roles'     => (new Role())->listAll('admin'),
            'users'     => (new Users())->listAll(),
        ]);
        View::put();
    }

    /**
     * 某用户当前拥有的角色ID列表，请求体: { adminId }
     */
    public function rolesOfAdmin()
    {
        $adminId = (int) ($this->request['adminId'] ?? 0);
        $this->success((new Role())->roleIdsOfAdmin($adminId));
    }

    /**
     * 某角色当前拥有的用户ID列表，请求体: { roleId }
     */
    public function adminsOfRole()
    {
        $roleId = (int) ($this->request['roleId'] ?? 0);
        $this->success((new Role())->adminIdsOfRole($roleId));
    }

    /**
     * 全量替换某用户的角色绑定（勾选即生效，前端传完整角色ID数组），请求体: { adminId, roleIds: [] }
     */
    public function bind()
    {
        $adminId = (int) ($this->request['adminId'] ?? 0);
        $roleIds = array_map('intval', (array) ($this->request['roleIds'] ?? []));

        if ($adminId <= 0) {
            $this->error(1, lg('参数不完整'));
        }

        (new Role())->bindToAdmin($adminId, $roleIds);
        $this->success();
    }
}
