<?php

use Illuminate\Database\Migrations\Migration;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;

/**
 * Permiso para borrar registros del log de la API.
 *
 * Solo **Admin**: el log es rastro de auditoría y quien lo borra tapa huellas, así
 * que se queda en el perfil más restringido. Manager y Support conservan
 * `admin.api-logs.index` y siguen viendo el visor, pero no pueden vaciarlo.
 *
 * La migración existe además del seeder porque el seeder solo cubre instalaciones
 * nuevas; sin esto, en las que ya están desplegadas el botón daría 403 a todo el
 * mundo. Y se comprueba que el rol exista antes de asignarlo: en una instalación
 * limpia las migraciones corren ANTES que los seeders, así que aquí los roles
 * todavía pueden no existir — el seeder lo termina. Ver fixes/PRODSECU-202.
 */
return new class extends Migration
{
    public function up(): void
    {
        $perm = Permission::firstOrCreate(
            ['name' => 'admin.api-logs.destroy'],
            ['model' => 'api_logs', 'description' => 'API Logs: Borrar registros', 'guard_name' => 'web']
        );

        $roleAdmin = Role::where('name', 'Admin')->first();

        if ($roleAdmin && !$roleAdmin->hasPermissionTo($perm)) {
            $roleAdmin->givePermissionTo($perm);
        }
    }

    public function down(): void
    {
        Permission::where('name', 'admin.api-logs.destroy')->delete();
    }
};
