<?php
// Incluir la conexión a la base de datos
include("../config/conexion.php");

session_start(); // Iniciar sesión para obtener el usuario autenticado

// Verificar si se ha enviado el idregistro
if (isset($_GET['idregistro'])) {
    $idregistro = htmlspecialchars($_GET['idregistro'], ENT_QUOTES);

    // Verificar si el usuario está autenticado en la sesión
    if (!isset($_SESSION['usuario_id'])) {
        die("Error: Usuario no autenticado.");
    }

    $idusuario = $_SESSION['usuario_id']; // Obtener el usuario autenticado desde la sesión

    // Iniciar transacción
    $conexion->begin_transaction();

    try {
        // Obtener el idusuario desde la base de datos si es necesario
        $sql_user = $conexion->prepare("SELECT idusuario FROM registro_falta WHERE idregistro = ?");
        $sql_user->bind_param("i", $idregistro);
        $sql_user->execute();

        // Usar bind_result en lugar de get_result
        $sql_user->bind_result($usuario_bd);
        $sql_user->fetch();
        $sql_user->close();

        // Si no se encuentra en la sesión, usar el de la base de datos
        if (!$idusuario && isset($usuario_bd)) {
            $idusuario = $usuario_bd;
        }

        // Validar que idusuario no sea NULL antes de continuar
        if (!$idusuario) {
            throw new Exception("Error: No se pudo obtener el ID del usuario.");
        }

        // Preparar la consulta para eliminar el registro
        $sql = $conexion->prepare("DELETE FROM registro_falta WHERE idregistro = ?");

        if ($sql) {
            $sql->bind_param("i", $idregistro);
            if ($sql->execute()) {
                // Insertar en registro_actividad para registrar la eliminación
                $accion = "Eliminación de registro";
                $detalles = "Se eliminó el registro ID " . $idregistro;

                $sql_log = $conexion->prepare("INSERT INTO registro_actividad (idusuario, accion, detalles, fecha) VALUES (?, ?, ?, NOW())");
                if ($sql_log) {
                    $sql_log->bind_param("iss", $idusuario, $accion, $detalles);
                    $sql_log->execute();
                    $sql_log->close();
                }

                // Confirmar transacción
                $conexion->commit();

                // Redirección segura
                if (!headers_sent()) {
                    header("Location:../inicio_registrofalta.php?mensaje=Registro eliminado con éxito");
                    exit();
                } else {
                    echo "<script>window.location.href='inicio_registrofalta.php?mensaje=Registro eliminado con éxito';</script>";
                    exit();
                }
            } else {
                throw new Exception("Error al eliminar el registro: " . $sql->error);
            }
        } else {
            throw new Exception("Error al preparar la consulta: " . $conexion->error);
        }
    } catch (Exception $e) {
        $conexion->rollback(); // Revertir cambios en caso de error
        echo "Transacción fallida: " . $e->getMessage();
    }

    // Cerrar la declaración preparada principal si existe
    if (isset($sql)) {
        $sql->close();
    }
} else {
    echo "ID de registro no especificado.";
}

$conexion->close();
