<?php
require_once("../../functions.php");
$pag = basename($_SERVER['PHP_SELF']);
gen_plantilla(true, $pag, false, false, '', false, false);

// Solo empleados pueden solicitar vacaciones
if ($_SESSION['tipo_usuario'] != 'empleado') {
    crear_notificacion('error', 'No tienes permisos para realizar esta acción');
    exit;
}

$id_empleado = $_SESSION['id_empleado'];
$fecha_inicio = filter_input(INPUT_POST, 'fecha_inicio', FILTER_SANITIZE_SPECIAL_CHARS);
$fecha_fin = filter_input(INPUT_POST, 'fecha_fin', FILTER_SANITIZE_SPECIAL_CHARS);
$motivo = filter_input(INPUT_POST, 'motivo', FILTER_SANITIZE_SPECIAL_CHARS);

// Validaciones
if (empty($fecha_inicio) || empty($fecha_fin)) {
    crear_notificacion('error', 'Las fechas son obligatorias');
    exit;
}

if (strtotime($fecha_fin) < strtotime($fecha_inicio)) {
    crear_notificacion('error', 'La fecha fin debe ser posterior a la fecha inicio');
    exit;
}

if (strtotime($fecha_inicio) < strtotime(date('Y-m-d'))) {
    crear_notificacion('error', 'No puedes solicitar vacaciones para fechas pasadas');
    exit;
}

// Comprobar si ya hay una solicitud pendiente que se solape con las fechas
$solicitudes_existentes = consulta(
    "SELECT * FROM solicitudes_vacaciones 
     WHERE id_empleado = ? 
     AND estado = 1 
     AND ((fecha_inicio <= ? AND fecha_fin >= ?) OR (fecha_inicio <= ? AND fecha_fin >= ?) OR (fecha_inicio >= ? AND fecha_fin <= ?));",
    [$id_empleado, $fecha_inicio, $fecha_inicio, $fecha_fin, $fecha_fin, $fecha_inicio, $fecha_fin],
    true
);

if (!empty($solicitudes_existentes)) {
    crear_notificacion('error', 'Ya tienes una solicitud pendiente que se solapa con estas fechas');
    exit;
}

// Insertar solicitud
$resultado = consulta(
    "INSERT INTO solicitudes_vacaciones (id_empleado, fecha_inicio, fecha_fin, motivo, estado) VALUES (?, ?, ?, ?, 1);",
    [$id_empleado, $fecha_inicio, $fecha_fin, $motivo],
    false
);

if ($resultado) {
    crear_log('info', 'Solicitud de vacaciones', $pag, "El empleado ID:$id_empleado ha solicitado vacaciones del $fecha_inicio al $fecha_fin");
    crear_notificacion('correcto', 'Solicitud enviada correctamente');
} else {
    crear_log('error', 'Error al solicitar vacaciones', $pag, "No se pudo insertar la solicitud para el empleado ID:$id_empleado");
    crear_notificacion('error', 'Error al enviar la solicitud');
}
