<?php

namespace App\Policies;

use App\Models\User;
use Spatie\Permission\Models\Role;

class RolePolicy
{
    /**
     * 查看角色列表
     */
    public function viewAny(User $user): bool
    {
        return $user->can('role.view');
    }

    /**
     * 查看角色详情
     */
    public function view(User $user, Role $role): bool
    {
        return $user->can('role.view');
    }

    /**
     * 创建角色
     */
    public function create(User $user): bool
    {
        return $user->can('role.create');
    }

    /**
     * 编辑角色
     */
    public function update(User $user, Role $role): bool
    {
        // super-admin 角色不能被编辑
        if ($role->name === 'super-admin') {
            return false;
        }

        return $user->can('role.update');
    }

    /**
     * 删除角色
     */
    public function delete(User $user, Role $role): bool
    {
        // super-admin 角色不能被删除
        if ($role->name === 'super-admin') {
            return false;
        }

        // 检查是否有关联用户
        if ($role->users()->count() > 0) {
            return false;
        }

        return $user->can('role.delete');
    }

    /**
     * 批量删除角色
     */
    public function deleteAny(User $user): bool
    {
        return $user->can('role.delete');
    }
}
