<?php
/**
 * Script para generar registros de quincenas desde 2026 hasta 2035
 * Este script debe ejecutarse una sola vez para poblar la tabla Quincenas
 */

require_once __DIR__ . '/../backend/config/database.php';

// Configuración
$anio_inicio = 2026;
$anio_fin = 2035;

try {
    $database = new Database();
    $db = $database->connect();
    
    // Iniciar transacción
    $db->beginTransaction();
    
    $total_insertados = 0;
    
    // Generar quincenas para cada año
    for ($anio = $anio_inicio; $anio <= $anio_fin; $anio++) {
        
        // Generar las 24 quincenas del año (2 por mes)
        for ($mes = 1; $mes <= 12; $mes++) {
            
            // Primera quincena (1-15)
            $fecha_inicio_q1 = sprintf("%d-%02d-01", $anio, $mes);
            $fecha_fin_q1 = sprintf("%d-%02d-15", $anio, $mes);
            $nombre_q1 = sprintf("1-15 %s", obtenerNombreMes($mes));
            
            $query1 = "INSERT INTO Quincenas (nombre, fecha_inicio, fecha_fin, numero_quincena, mes, anio) 
                    VALUES (:nombre, :fecha_inicio, :fecha_fin, :numero_quincena, :mes, :anio)";
            $stmt1 = $db->prepare($query1);
            $stmt1->bindParam(':nombre', $nombre_q1);
            $stmt1->bindParam(':fecha_inicio', $fecha_inicio_q1);
            $stmt1->bindParam(':fecha_fin', $fecha_fin_q1);
            $numero_q1 = 1;
            $stmt1->bindParam(':numero_quincena', $numero_q1);
            $stmt1->bindParam(':mes', $mes);
            $stmt1->bindParam(':anio', $anio);
            $stmt1->execute();
            $total_insertados++;
            
            // Segunda quincena (16-último día del mes)
            $ultimo_dia = date('t', strtotime("$anio-$mes-01")); // Obtiene el último día del mes
            $fecha_inicio_q2 = sprintf("%d-%02d-16", $anio, $mes);
            $fecha_fin_q2 = sprintf("%d-%02d-%s", $anio, $mes, $ultimo_dia);
            $nombre_q2 = sprintf("16-%s %s", $ultimo_dia, obtenerNombreMes($mes));
            
            $query2 = "INSERT INTO Quincenas (nombre, fecha_inicio, fecha_fin, numero_quincena, mes, anio) 
                       VALUES (:nombre, :fecha_inicio, :fecha_fin, :numero_quincena, :mes, :anio)";
            $stmt2 = $db->prepare($query2);
            $stmt2->bindParam(':nombre', $nombre_q2);
            $stmt2->bindParam(':fecha_inicio', $fecha_inicio_q2);
            $stmt2->bindParam(':fecha_fin', $fecha_fin_q2);
            $numero_q2 = 2;
            $stmt2->bindParam(':numero_quincena', $numero_q2);
            $stmt2->bindParam(':mes', $mes);
            $stmt2->bindParam(':anio', $anio);
            $stmt2->execute();
            $total_insertados++;
        }
        
        echo "✓ Año $anio completado (24 quincenas)\n";
    }
    
    // Confirmar transacción
    $db->commit();
    
    echo "\n===========================================\n";
    echo "✓ Proceso completado exitosamente\n";
    echo "Total de quincenas insertadas: $total_insertados\n";
    echo "Período: $anio_inicio - $anio_fin\n";
    echo "===========================================\n";
    
} catch (Exception $e) {
    // Revertir transacción en caso de error
    if ($db->inTransaction()) {
        $db->rollBack();
    }
    echo "\n✗ Error al generar quincenas: " . $e->getMessage() . "\n";
    exit(1);
}

/**
 * Función auxiliar para obtener el nombre del mes en español
 */
function obtenerNombreMes($mes) {
    $meses = [
        1 => 'Enero',
        2 => 'Febrero',
        3 => 'Marzo',
        4 => 'Abril',
        5 => 'Mayo',
        6 => 'Junio',
        7 => 'Julio',
        8 => 'Agosto',
        9 => 'Septiembre',
        10 => 'Octubre',
        11 => 'Noviembre',
        12 => 'Diciembre'
    ];
    
    return $meses[$mes];
}
