<?php

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

return new class extends Migration
{
    /**
     * Agregar campos de año y período a mant_programacion
     * para mejorar filtros en reprogramaciones
     */
    public function up(): void
    {
        Schema::table('mant_programacion', function (Blueprint $table) {
            // Agregar campos de período
            $table->integer('anio')->nullable()->after('prog_id')->comment('Año del mantenimiento');
            $table->integer('mes')->nullable()->after('anio')->comment('Mes del mantenimiento (1-12)');
            $table->string('periodo', 7)->nullable()->after('mes')->comment('Período formato YYYY-MM');

            // Índices para búsqueda rápida
            $table->index('anio');
            $table->index('periodo');
            $table->index(['anio', 'mes']);
        });

        // Actualizar registros existentes con datos de fecha_programada
        DB::statement("
            UPDATE mant_programacion
            SET anio = YEAR(fecha_programada),
                mes = MONTH(fecha_programada),
                periodo = DATE_FORMAT(fecha_programada, '%Y-%m')
            WHERE fecha_programada IS NOT NULL
        ");
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::table('mant_programacion', function (Blueprint $table) {
            $table->dropIndex(['anio']);
            $table->dropIndex(['periodo']);
            $table->dropIndex(['anio', 'mes']);

            $table->dropColumn(['anio', 'mes', 'periodo']);
        });
    }
};
