<?php

namespace Database\Seeders;

use App\Models\Role;
use App\Models\User;
use Illuminate\Database\Seeder;

class SuperAdminSeeder extends Seeder
{
    /** Credenciales en código para desarrollo — cambia antes de producción. */
    private const ADMIN_EMAIL = 'superadmin@regiticket.local';

    private const ADMIN_NAME = 'Super Admin';

    /** Contraseña en texto plano; el modelo la guarda hasheada (cast hashed). */
    private const ADMIN_PASSWORD = 'Regiticket!Admin1';

    /**
     * Crea o actualiza el usuario super administrador (rol super_admin).
     * Ejecutar: php artisan db:seed --class=SuperAdminSeeder
     */
    public function run(): void
    {
        $roleId = Role::query()->where('slug', Role::SLUG_SUPER_ADMIN)->value('id');

        if ($roleId === null) {
            $this->command?->error('No existe el rol super_admin. Ejecuta las migraciones antes.');

            return;
        }

        User::updateOrCreate(
            ['email' => self::ADMIN_EMAIL],
            [
                'name' => self::ADMIN_NAME,
                'password' => self::ADMIN_PASSWORD,
                'role_id' => $roleId,
                'email_verified_at' => now(),
            ]
        );

        $this->command?->info('Super admin sincronizado en BD: '.self::ADMIN_EMAIL.' (contraseña en SuperAdminSeeder::ADMIN_PASSWORD)');
    }
}
