<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\PermissionRegistrar;

class RoleSeeder extends Seeder
{
    public function run(): void
    {
        // 🔥 Limpiar cache de permisos para evitar conflictos
        app()[PermissionRegistrar::class]->forgetCachedPermissions();

        /* ================= PERMISOS ================= */
        $permissions = [
            // Ejemplo: CRUD de preguntas
            'ver-preguntas',
            'crear-preguntas',
            'editar-preguntas',
            'eliminar-preguntas',

            // Ejemplo: CRUD de cursos
            'ver-cursos',
            'crear-cursos',
            'editar-cursos',
            'eliminar-cursos',
        ];

        foreach ($permissions as $permission) {
            Permission::firstOrCreate([
                'name' => $permission,
                'guard_name' => 'web',
            ]);
        }

        /* ================= ROLES ================= */
        $roles = [
            'usuario' => [], // rol básico sin permisos
            'administrador' => $permissions, // asigna todos los permisos al administrador
            'superadmin' => $permissions, // opcionalmente igual que administrador
        ];

        foreach ($roles as $roleName => $rolePermissions) {
            $role = Role::firstOrCreate([
                'name' => $roleName,
                'guard_name' => 'web',
            ]);

            // Asignar permisos si los hay
            if (!empty($rolePermissions)) {
                $role->syncPermissions($rolePermissions);
            }
        }
    }
}
