<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    public function up(): void
    {
        Schema::create('tipos_reunion', function (Blueprint $table) {
            $table->increments('id_tipo_reunion');
            $table->string('nombre_tipo', 100)->unique();
            $table->enum('estado', ['activo', 'inactivo'])->default('activo');
            $table->timestamp('fecha_creacion')->useCurrent();
            $table->timestamp('fecha_actualizacion')->nullable()->useCurrent()->useCurrentOnUpdate();

            $table->index('estado', 'idx_tipos_reunion_estado');
        });

        $driver = DB::getDriverName();
        if (in_array($driver, ['mysql', 'mariadb'], true)) {
            DB::statement('ALTER TABLE reuniones MODIFY tipo_reunion VARCHAR(100) NOT NULL');
        }

        DB::table('tipos_reunion')->updateOrInsert(
            ['nombre_tipo' => 'Consejo'],
            ['estado' => 'activo']
        );

        DB::table('tipos_reunion')->updateOrInsert(
            ['nombre_tipo' => 'Directorio'],
            ['estado' => 'activo']
        );
    }

    public function down(): void
    {
        Schema::dropIfExists('tipos_reunion');

        $driver = DB::getDriverName();
        if (in_array($driver, ['mysql', 'mariadb'], true)) {
            DB::statement("ALTER TABLE reuniones MODIFY tipo_reunion ENUM('Consejo','Directorio') NOT NULL");
        }
    }
};
