<?php
session_start();

// 1. Verificación de sesión y rol
if (!isset($_SESSION['Inicio']) || $_SESSION['Inicio'] !== "Ok" || !in_array($_SESSION['Rol'], ["Administrativo", "Titular", "Pasante"])) {
    header('Location: ../Login.php?m=5');
    exit;
}

// 2. Determinar la URL del menú y permisos de eliminación
$urlMenuCorrespondiente = "";
$puedeEliminar = false; // Por defecto, nadie puede eliminar

switch ($_SESSION['Rol']) {
    case "Administrativo":
        $urlMenuCorrespondiente = "../MenuAdministrativo.php";
        $puedeEliminar = true; // Solo el admin puede eliminar
        break;
    case "Titular":
        $urlMenuCorrespondiente = "../MenuTitular.php";
        break;
    case "Pasante":
        $urlMenuCorrespondiente = "../MenuPasante.php";
        break;
    default:
        header('Location: ../Login.php?m=6');
        exit;
}

include("../Php/ConexionInb.php");
$errorMessage = '';

// --- MANEJO DE LA PETICIÓN AJAX PARA ELIMINAR ---
if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['action']) && $_GET['action'] === 'delete' && isset($_GET['id'])) {
    if (!$puedeEliminar) {
        header('Content-Type: application/json');
        echo json_encode(['success' => false, 'message' => 'No tiene permisos para realizar esta acción.']);
        exit;
    }

    $idToDelete = $_GET['id'];
    $Con = Conectar();
    $response = ['success' => false, 'message' => 'Error desconocido al procesar la eliminación.'];

    if (!filter_var($idToDelete, FILTER_VALIDATE_INT)) {
         $response['message'] = 'ID de registro no válido.';
    } else {
        $SQL_DELETE = "DELETE FROM sondeo WHERE id = ?";
        $stmt = mysqli_prepare($Con, $SQL_DELETE);

        if ($stmt) {
            mysqli_stmt_bind_param($stmt, "i", $idToDelete);
            mysqli_stmt_execute($stmt);

            if (mysqli_stmt_affected_rows($stmt) > 0) {
                $response['success'] = true;
                $response['message'] = 'El registro de Sondeo se eliminó correctamente.';
            } else {
                 $response['message'] = 'No se encontró el registro o no se pudo eliminar.';
            }
            mysqli_stmt_close($stmt);
        } else {
            $response['message'] = 'Error interno al preparar la eliminación: ' . mysqli_error($Con);
        }
    }

    Cerrar($Con);
    header('Content-Type: application/json');
    echo json_encode($response);
    exit;
}
// --- FIN MANEJO AJAX ---


// --- LÓGICA DE CARGA DE PÁGINA Y BÚSQUEDA ---
$criterioBusqueda = '';
$resultadosHtml = '';
$totalFilas = 0;

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['Nombre'])) {
    $criterioBusqueda = strtoupper(trim($_POST['Nombre']));
}

    // 1. Preparar parámetros para la función centralizada
$columnas = "p.*, b.*"; // p=paciente, b=sondeo
$sqlWhere = "";
$params = array();
$types = "";
$sqlOrder = " ORDER BY p.apellido_paterno_paciente, p.nombre_paciente, b.fecha_evaluacion DESC";

if (!empty($criterioBusqueda)) {
    $sqlWhere = " WHERE (UPPER(p.nombre_paciente) LIKE ? 
                    OR UPPER(p.apellido_paterno_paciente) LIKE ? 
                    OR UPPER(p.apellido_materno_paciente) LIKE ?)";
    $searchTerm = "%" . $criterioBusqueda . "%";
    $params = array($searchTerm, $searchTerm, $searchTerm);
    $types = "sss";
}

// 2. Ejecutar la consulta centralizada (JOIN con sondeo)
$datosParaTabla = consultarPacientes('sondeo', $columnas, $sqlWhere, $params, $types, $sqlOrder, $errorMessage);

       if ($datosParaTabla === false) {
    $resultadosHtml = "<p class='error-message'>" . htmlspecialchars($errorMessage) . "</p>";
} else {
    $totalFilas = count($datosParaTabla);
    if ($totalFilas > 0)  {
                $resultadosHtml .= "<div class='tabla-container'><table><thead>";
                $resultadosHtml .= "<tr>";
                if ($puedeEliminar) {
                    $resultadosHtml .= "<th rowspan='2' class='sticky-col'>Acción</th>";
                }
                $resultadosHtml .= "<th colspan='5'>Datos del Paciente</th>";
                $resultadosHtml .= "<th colspan='7'>Resultados de la Evaluación Sondeo</th>";
                $resultadosHtml .= "</tr><tr>";
                $resultadosHtml .= "<th>Clave Paciente</th><th>Nombre</th><th>A. Paterno</th><th>A. Materno</th><th>F. Nacimiento</th>";
                $resultadosHtml .= "<th>F. Evaluación</th><th>Edad</th><th>Edad Corregida</th><th>Rango Edad</th><th>P. Bruta</th><th class='col-text'>Fonemas Retraso</th><th class='col-text'>Interpretación</th>";
                $resultadosHtml .= "</tr></thead><tbody>";

                foreach ($datosParaTabla as $Fila) {
                    $resultadosHtml .= "<tr data-id='" . htmlspecialchars($Fila['id']) . "'>";
                    if ($puedeEliminar) {
                        $resultadosHtml .= "<td class='sticky-col'><a href='#' class='btn-outline btn-small del-btn' data-id='" . htmlspecialchars($Fila['id']) . "'>Eliminar</a></td>";
                    }
                    $resultadosHtml .= "<td>" . htmlspecialchars($Fila['clave_paciente']) . "</td>";
                    $resultadosHtml .= "<td>" . htmlspecialchars($Fila['nombre_paciente']) . "</td>";
                    $resultadosHtml .= "<td>" . htmlspecialchars($Fila['apellido_paterno_paciente']) . "</td>";
                    $resultadosHtml .= "<td>" . htmlspecialchars($Fila['apellido_materno_paciente']) . "</td>";
                    $resultadosHtml .= "<td>" . htmlspecialchars($Fila['fecha_nacimiento_paciente']) . "</td>";
                    $resultadosHtml .= "<td>" . htmlspecialchars($Fila['fecha_evaluacion']) . "</td>";
                    $resultadosHtml .= "<td>" . htmlspecialchars($Fila['edad']) . "</td>";
                    $resultadosHtml .= "<td>" . htmlspecialchars($Fila['edad_corregida']) . "</td>";
                    $resultadosHtml .= "<td>" . htmlspecialchars($Fila['rango_edad']) . "</td>";
                    $resultadosHtml .= "<td>" . htmlspecialchars($Fila['sond_art_punt_brutosa']) . "</td>";
                    $resultadosHtml .= "<td class='col-text'>" . nl2br(htmlspecialchars($Fila['sond_articul_fonem_con_retras'])) . "</td>";
                    $resultadosHtml .= "<td class='col-text'>" . nl2br(htmlspecialchars($Fila['sond_articu_interpr'])) . "</td>";
                    $resultadosHtml .= "</tr>";
                }
                $resultadosHtml .= "</tbody></table></div>";
            } else {
                if (!empty($criterioBusqueda)) {
                    $resultadosHtml = "<p class='info-message'>No se encontraron registros de Sondeo para pacientes con el criterio '" . htmlspecialchars($criterioBusqueda) . "'.</p>";
                } else {
                     $resultadosHtml = "<p class='info-message'>No hay registros de evaluación de Sondeo en la base de datos.</p>";
                }
            }   
 }
?>
<!DOCTYPE HTML>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&family=Montserrat:wght@700&display=swap" rel="stylesheet">
    <link rel="icon" type="image/png" href="./img/UNAM amarillo.png">
    <link rel="stylesheet" href="../Css/EstilosConsultas.css">
    <title>Eliminar Evaluación Sondeo</title>
    <style>
        .sticky-col { position: -webkit-sticky; position: sticky; left: 0; background-color: #fff; z-index: 1; border-right: 2px solid #ddd; }
        .tabla-container table thead th.sticky-col { z-index: 3; background-color: #f2f2f2; }
        .col-text { min-width: 250px; max-width: 400px; white-space: pre-wrap; }
        .input-box .btn, .input-box .btn2 { margin-top: 26px; }
        @media (max-width: 768px) { .input-box .btn, .input-box .btn2 { margin-top: 0; } }
        .info-message, .error-message { text-align: center; margin: 15px auto; padding: 10px; border-radius: 4px; max-width: 800px; }
        .info-message { color: #31708f; background-color: #d9edf7; border-color: #bce8f1; }
        .error-message { color: #a94442; background-color: #f2dede; border-color: #ebccd1; }
    </style>
</head>
<body>
    <div class="container">
        <h1 class="tittle">Eliminar Registros de Evaluación Sondeo</h1>
        
        <form method="post" action="DSondeo.php">
            <div class="dentro">
                <div class="input-box">
                    <label for="Nombre" class="detalles">Buscar Paciente (Nombre o Apellido):</label>
                    <input type="text" placeholder="Escriba aquí..." name="Nombre" id="Nombre" value="<?php echo htmlspecialchars($criterioBusqueda); ?>">
                </div>
                <div class="input-box">
                    <input type="submit" value="Buscar" class="btn">
                </div>
                 <div class="input-box exit">
                    <a href="<?php echo htmlspecialchars($urlMenuCorrespondiente); ?>" class="btn2">Salir</a>
                </div>
            </div>
        </form>

        <?php echo $resultadosHtml; ?>
    </div>

    <script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            const container = document.querySelector('.container');
            container.addEventListener('click', function(event) {
                const deleteButton = event.target.closest('.del-btn');
                if (deleteButton) {
                    event.preventDefault();
                    const itemId = deleteButton.dataset.id;
                    const rowToRemove = deleteButton.closest('tr');

                    Swal.fire({
                        title: '¿Estás seguro de eliminar este registro?',
                        text: "Esta acción es irreversible y eliminará la evaluación de Sondeo.",
                        icon: 'warning',
                        showCancelButton: true,
                        confirmButtonColor: '#3085d6',
                        cancelButtonColor: '#d33',
                        confirmButtonText: 'Sí, eliminar',
                        cancelButtonText: 'Cancelar'
                    }).then((result) => {
                        if (result.isConfirmed) {
                            Swal.fire({
                                title: 'Eliminando...',
                                text: 'Por favor, espera.',
                                icon: 'info',
                                showConfirmButton: false,
                                allowOutsideClick: false,
                                didOpen: () => { Swal.showLoading(); }
                            });

                            fetch(`DSondeo.php?action=delete&id=${encodeURIComponent(itemId)}`, {
                                method: 'GET',
                            })
                            .then(response => response.json())
                            .then(data => {
                                Swal.close();
                                if (data.success) {
                                    Swal.fire('¡Eliminado!', data.message, 'success');
                                    if (rowToRemove) {
                                        rowToRemove.remove();
                                        const tbody = container.querySelector('.tabla-container tbody');
                                        if (tbody && tbody.children.length === 0) {
                                            const tablaContainer = container.querySelector('.tabla-container');
                                            const searchInput = document.getElementById('Nombre');
                                            if (searchInput && searchInput.value.trim() !== '') {
                                                 tablaContainer.innerHTML = "<p class='info-message'>No hay más registros de Sondeo para este criterio de búsqueda.</p>";
                                            } else {
                                                tablaContainer.innerHTML = "<p class='info-message'>No hay registros de evaluación de Sondeo en la base de datos.</p>";
                                            }
                                        }
                                    }
                                } else {
                                    Swal.fire('Error', data.message, 'error');
                                }
                            })
                            .catch(error => {
                                Swal.close();
                                console.error("Fetch Error:", error);
                                Swal.fire('Error de conexión', 'Ocurrió un error al comunicarse con el servidor.', 'error');
                            });
                        }
                    });
                }
            });
        });
    </script>
</body>
</html>