<?php
require_once __DIR__ . '/../db/conexion.php';

// Configuración de logging
$logFile = __DIR__ . '/cron_vacaciones.log';
$hoy = date('Y-m-d H:i:s');

if (!isset($conn) || !($conn instanceof mysqli)) {
    file_put_contents($logFile, "[{$hoy}] ❌ ERROR: Conexión a BD fallida\n", FILE_APPEND);
    exit;
}

// Consulta optimizada con múltiples validaciones
$sql = "
    INSERT INTO VacationsHist (
        fechaSolicitud,
        `NOMBRE COMPLETO`,
        CURP,
        periodo,
        diasCorresponden,
        diasATomar,
        `FECHA INICIAL`,
        `FECHA FINAL`,
        fechaInicioLabores,
        diasPendientes,
        STATUS
    )
    SELECT
        CURDATE(),
        CONCAT(p.NOMBRES, ' ', p.`APELLIDO PATERNO`, ' ', p.`APELLIDO MATERNO`),
        p.CURP,
        CONCAT(YEAR(p.`FECHA DE INGRESO`), '-', YEAR(p.`FECHA DE INGRESO`) + 1),
        12,
        0,
        p.`FECHA DE INGRESO`,
        p.`FECHA DE INGRESO`,
        p.`FECHA DE INGRESO`,
        12,
        'APROBADOS'
    FROM Plantilla p
    WHERE 
        -- Rango de 1 a 2 años (excluyendo exactamente 2 años)
        p.`FECHA DE INGRESO` BETWEEN 
            DATE_SUB(CURDATE(), INTERVAL 2 YEAR) 
            AND 
            DATE_SUB(CURDATE(), INTERVAL 1 YEAR)
        
        -- Validación adicional de días (precisión)
        AND DATEDIFF(CURDATE(), p.`FECHA DE INGRESO`) BETWEEN 365 AND 729
        
        -- Evitar duplicados
        AND NOT EXISTS (
            SELECT 1 FROM VacationsHist v
            WHERE v.CURP = p.CURP 
            AND v.periodo = CONCAT(YEAR(p.`FECHA DE INGRESO`), '-', YEAR(p.`FECHA DE INGRESO`) + 1)
        )
        
        -- Filtro adicional para empleados activos (si aplica)
        AND p.ESTATUS = 'ACTIVO'";

$resultado = $conn->query($sql);

if ($resultado) {
    $registros = $conn->affected_rows;
    $msg = "[{$hoy}] ✔ ÉXITO: Se insertaron {$registros} registros\n";
} else {
    $msg = "[{$hoy}] ❌ ERROR: " . $conn->error . "\n";
}

file_put_contents($logFile, $msg, FILE_APPEND);
$conn->close();