<?php

namespace Database\Seeders;

use App\Models\Category;
use App\Models\Venue;
use Illuminate\Database\Seeder;

/**
 * Datos mínimos de catálogo para desarrollo y tests que crean eventos (FK a `venues` y `categories`).
 *
 * No sustituye un CMS de contenidos: en producción conviene sembrar sedes/categorías reales por región.
 */
// TODO(regiticket): Mover slugs/nombres a `config/regiticket.php` o traducciones si el panel es multi-idioma.
class DemoCatalogSeeder extends Seeder
{
    /**
     * Idempotente: usa `firstOrCreate` por `slug` para no duplicar al re-ejecutar seeders.
     */
    public function run(): void
    {
        Category::query()->firstOrCreate(
            ['slug' => 'general'],
            ['name' => 'General', 'description' => null, 'parent_id' => null]
        );
        Category::query()->firstOrCreate(
            ['slug' => 'carrera'],
            ['name' => 'Carrera', 'description' => null, 'parent_id' => null]
        );
        Category::query()->firstOrCreate(
            ['slug' => 'musica'],
            ['name' => 'Música', 'description' => null, 'parent_id' => null]
        );
        Category::query()->firstOrCreate(
            ['slug' => 'corporativo'],
            ['name' => 'Corporativo', 'description' => null, 'parent_id' => null]
        );
        Category::query()->firstOrCreate(
            ['slug' => 'festival'],
            ['name' => 'Festival', 'description' => null, 'parent_id' => null]
        );

        Venue::query()->firstOrCreate(
            ['slug' => 'sede-principal'],
            [
                'name' => 'Sede principal',
                'timezone' => 'America/Mexico_City',
                'country' => 'MX',
            ]
        );

        Venue::query()->firstOrCreate(
            ['slug' => 'en-linea'],
            [
                'name' => 'Evento en línea',
                'timezone' => 'America/Mexico_City',
                'country' => 'MX',
            ]
        );
    }
}
