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

// Solo admin puede eliminar solicitudes de vacaciones
if ($_SESSION['tipo_usuario'] != 'admin') {
    crear_notificacion('error', 'No tienes permisos para realizar esta acción');
    exit;
}

$id = filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT);

if (empty($id)) {
    crear_notificacion('error', 'Faltan parámetros');
    exit;
}

// Obtener datos de la solicitud antes de eliminar
$solicitud = consulta(
    "SELECT sv.*, e.nombre FROM solicitudes_vacaciones sv 
     INNER JOIN empleados e ON sv.id_empleado = e.id 
     WHERE sv.id = ?;",
    [$id],
    true
);

if (empty($solicitud)) {
    crear_notificacion('error', 'La solicitud no existe');
    exit;
}

// Si la solicitud estaba aprobada, eliminar también el día inhábil asociado
if ((int)$solicitud[0]['estado'] == 2) {
    $id_empleado = $solicitud[0]['id_empleado'];
    $fecha_inicio = $solicitud[0]['fecha_inicio'];
    $fecha_fin = $solicitud[0]['fecha_fin'];

    $resultado_festivo = consulta(
        "DELETE FROM dias_inhabiles WHERE id_empleado=? AND fecha_entrada=? AND fecha_termina=? AND id_motivo=3;",
        [$id_empleado, $fecha_inicio, $fecha_fin],
        false
    );

    if ($resultado_festivo) {
        crear_log(
            'info',
            'Día inhábil de vacaciones eliminado',
            $pag,
            "Se ha eliminado el día inhábil de vacaciones del empleado ID:$id_empleado ($fecha_inicio - $fecha_fin)"
        );
    } else {
        crear_log(
            'error',
            'Error al eliminar día inhábil de vacaciones',
            $pag,
            "No se pudo eliminar el día inhábil de vacaciones del empleado ID:$id_empleado"
        );
    }
}

// Eliminar la solicitud
$resultado = consulta(
    "DELETE FROM solicitudes_vacaciones WHERE id=?;",
    [$id],
    false
);

if ($resultado) {
    crear_log(
        'info',
        'Solicitud de vacaciones eliminada',
        $pag,
        "Se ha eliminado la solicitud ID:$id del empleado " . $solicitud[0]['nombre']
    );
    crear_notificacion('correcto', 'Solicitud eliminada correctamente');
} else {
    crear_log('error', 'Error al eliminar solicitud de vacaciones', $pag, "No se pudo eliminar la solicitud ID:$id");
    crear_notificacion('error', 'Error al eliminar la solicitud');
}
