<?php
session_start();
error_reporting(0); // Cambiar a E_ALL para depurar si es necesario

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

// 2. Permisos y URL del menú
$urlMenuCorrespondiente = "";
$puedeEliminar = false;
switch ($_SESSION['Rol']) {
    case "Administrativo":
        $urlMenuCorrespondiente = "../MenuAdministrativo.php";
        $puedeEliminar = true;
        break;
    case "Titular":
        $urlMenuCorrespondiente = "../MenuTitular.php";
        break;
    case "Pasante":
        $urlMenuCorrespondiente = "../MenuPasante.php";
        break;
    default:
        header("Location: ../login.php?m=6");
        exit;
}

// 3. Lógica de eliminación AJAX
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;
    }
    include_once("../Php/Conexion.php");
    $idToDelete = $_GET['id'];
    $Con = Conectar();
    $response = ['success' => false, 'message' => 'Error desconocido.'];
    if (!$Con) {
        $response['message'] = 'Error de conexión con la base de datos.';
    } elseif (!filter_var($idToDelete, FILTER_VALIDATE_INT)) {
        $response['message'] = 'ID no válido para eliminar.';
    } else {
        $SQL_DELETE = "DELETE FROM celf58 WHERE id = ?";
        $stmt = mysqli_prepare($Con, $SQL_DELETE);
        if ($stmt) {
            mysqli_stmt_bind_param($stmt, "i", $idToDelete);
            if (mysqli_stmt_execute($stmt)) {
                if (mysqli_stmt_affected_rows($stmt) > 0) {
                    $response['success'] = true;
                    $response['message'] = 'El registro CELF 5-8 se ha eliminado correctamente.';
                } else {
                    $response['message'] = 'No se encontró el registro (ID: ' . htmlspecialchars($idToDelete) . ') o ya fue eliminado.';
                }
            } else {
                $response['message'] = 'Error al ejecutar la eliminación.';
            }
            mysqli_stmt_close($stmt);
        } else {
            $response['message'] = 'Error al preparar la eliminación: ' . mysqli_error($Con);
        }
    }
    if ($Con) Cerrar($Con);
    header('Content-Type: application/json');
    echo json_encode($response);
    exit;
}

// 4. Lógica para mostrar la tabla
$criterioBusqueda = '';
$resultadosHtml = '';
$totalFilas = 0;
if (isset($_POST['Nombre'])) {
    $criterioBusqueda = strtoupper(trim($_POST['Nombre']));
}
include("../Php/ConexionInb.php");
$errorMessage = '';

// 1. Preparar parámetros para la función
$columnasSeleccionadas = "p.*, b.*"; 
$sqlWhere = "";
$params = array();
$types = "";
$sqlOrder = " ORDER BY p.apellido_paterno_paciente, p.apellido_materno_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. Llamar a la función centralizada (JOIN con celf58)
$pacientes = consultarPacientes('celf58', $columnasSeleccionadas, $sqlWhere, $params, $types, $sqlOrder, $errorMessage);

    // 3. Procesar resultados y construir la tabla
if ($pacientes === false) {
    // Si la función devolvió error, mostramos el mensaje capturado
    $resultadosHtml = "<p class='error-message'>" . htmlspecialchars($errorMessage) . "</p>";
} else {
    $totalFilas = count($pacientes);
    if ($totalFilas > 0) {
        $resultadosHtml .= "<div class='tabla-container'><table id='tablaResultados'><thead>";
        
        // --- ENCABEZADOS (Fila 1: Grupos) ---
        $resultadosHtml .= "<tr>";
        $resultadosHtml .= "<th rowspan='2' class='sticky-col'>Acción</th>";
        $resultadosHtml .= "<th colspan='5'>Datos del Paciente</th>";
        $resultadosHtml .= "<th colspan='3'>Info Evaluación</th>";
        
        $resultadosHtml .= "<th colspan='4'>Sub-test: Seguir Direcciones</th>";
        $resultadosHtml .= "<th colspan='4'>Sub-test: Recordar Palabras</th>";
        $resultadosHtml .= "<th colspan='4'>Sub-test: Recuerdo de Oraciones</th>";
        $resultadosHtml .= "<th colspan='4'>Sub-test: Formulación de Oraciones</th>";
        
        $resultadosHtml .= "<th colspan='4'>Sub-test: Clases Palabras Receptivas</th>";
        $resultadosHtml .= "<th colspan='4'>Sub-test: Clases Palabras Expresivas</th>";
        $resultadosHtml .= "<th colspan='3'>Sub-test: Clases Palabras Total</th>";
        
        $resultadosHtml .= "<th colspan='4'>Sub-test: Estructura de Oraciones</th>";
        $resultadosHtml .= "<th colspan='4'>Sub-test: Vocabulario Expresivo</th>";
        $resultadosHtml .= "<th colspan='4'>Sub-test: Entendiendo Párrafos</th>";
        
        $resultadosHtml .= "<th colspan='4'>Sub-test: Rep. Números (Directa)</th>";
        $resultadosHtml .= "<th colspan='4'>Sub-test: Rep. Números (Inversa)</th>";
        $resultadosHtml .= "<th colspan='4'>Sub-test: Rep. Números (Total)</th>";
        
        $resultadosHtml .= "<th colspan='4'>Sub-test: Secuencias Familiares</th>";
        $resultadosHtml .= "<th colspan='18'>Índices Principales y Complementarios</th>";
        $resultadosHtml .= "<th colspan='3'>Datos Clínicos</th>";
        $resultadosHtml .= "</tr>";

        // --- ENCABEZADOS (Fila 2: Detalles) ---
        $resultadosHtml .= "<tr>";
        $resultadosHtml .= "<th>Clave Paciente</th><th>Nombre</th><th>A. Paterno</th><th>A. Materno</th><th>F. Nacim.</th>";
        $resultadosHtml .= "<th>Fecha Eval.</th><th>Edad</th><th>Rango Edad</th>";
        // Subtests (Repetitivo por cada uno)
        for($i=0; $i<6; $i++) $resultadosHtml .= "<th>Bruto</th><th>Escalar</th><th>Percentil</th><th class='col-text-limited'>Interp.</th>";
        $resultadosHtml .= "<th>Suma Esc.</th><th>Escalar</th><th>Percentil</th>"; // Clases Palabras Tot
        for($i=0; $i<6; $i++) $resultadosHtml .= "<th>Bruto</th><th>Escalar</th><th>Percentil</th><th class='col-text-limited'>Interp.</th>";
        // Índices
        for($i=0; $i<6; $i++) $resultadosHtml .= "<th>Escalar</th><th>(%)</th><th class='col-text-limited'>(Int)</th>";
        // Clínicos
        $resultadosHtml .= "<th>Terapia?</th><th class='col-text-limited'>Obs. Clínicas</th><th class='col-text-limited'>Otras Obs.</th>";
        $resultadosHtml .= "</tr></thead><tbody>";

        // --- EL BUCLE PRINCIPAL (FOREACH) ---
        foreach ($pacientes as $Fila) {
            $id_val = htmlspecialchars($Fila['id']);
            $resultadosHtml .= "<tr data-id='{$id_val}'>";
            
            // Botón Eliminar
            if ($puedeEliminar) {
                 $resultadosHtml .= "<td class='sticky-col'><a href='#' class='btn-outline btn-small del-btn' data-id='{$id_val}'>Eliminar</a></td>";
            } else {
                 $resultadosHtml .= "<td class='sticky-col'>-</td>";
            }

            // Datos Paciente
            $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>";
            
            // Info Eval
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['fecha_evaluacion']) . "</td>";
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['edad']) . "</td>";
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['rango_edad']) . "</td>";

            // Sub-tests (Mapeo de tus columnas originales)
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['sub_con_sigui_dir_brut']) . "</td><td>" . htmlspecialchars($Fila['sub_con_sigui_dir_esc']) . "</td><td>" . htmlspecialchars($Fila['sub_con_sigui_dir_perce']) . "</td><td class='col-text-limited'>" . htmlspecialchars($Fila['sub_con_sigui_dir_interp']) . "</td>";
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['sub_recor_pala_brut']) . "</td><td>" . htmlspecialchars($Fila['sub_recor_pala_esca']) . "</td><td>" . htmlspecialchars($Fila['sub_recor_pala_percen']) . "</td><td class='col-text-limited'>" . htmlspecialchars($Fila['sub_recor_pala_interp']) . "</td>";
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['sub_recor_orac_brut']) . "</td><td>" . htmlspecialchars($Fila['sub_recor_orac_esca']) . "</td><td>" . htmlspecialchars($Fila['sub_recor_orac_perce']) . "</td><td class='col-text-limited'>" . htmlspecialchars($Fila['sub_recor_orac_interpr']) . "</td>";
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['sub_form_oraci_brut']) . "</td><td>" . htmlspecialchars($Fila['sub_form_oraci_esca']) . "</td><td>" . htmlspecialchars($Fila['sub_form_oraci_percen']) . "</td><td class='col-text-limited'>" . htmlspecialchars($Fila['sub_form_oraci_interpr']) . "</td>";
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['sub_clas_palab_recep']) . "</td><td>" . htmlspecialchars($Fila['sub_clas_palab_esca']) . "</td><td>" . htmlspecialchars($Fila['sub_clas_palab_percent']) . "</td><td class='col-text-limited'>" . htmlspecialchars($Fila['sub_clas_palab_interp']) . "</td>";
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['sub_clas_pala_exprex_brut']) . "</td><td>" . htmlspecialchars($Fila['sub_clas_pala_exprex_esc']) . "</td><td>" . htmlspecialchars($Fila['sub_clas_pala_exprex_percen']) . "</td><td class='col-text-limited'>" . htmlspecialchars($Fila['sub_clas_pala_exprex_interp']) . "</td>";
            
            // Clases Palabras Totales
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['sub_clas_palab_suma_escalares']) . "</td><td>" . htmlspecialchars($Fila['sub_clas_palab_tot_esc']) . "</td><td>" . htmlspecialchars($Fila['sub_clas_palab_tot_percen']) . "</td>";
            
            // Más Sub-tests
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['sub_esctr_orac_brut']) . "</td><td>" . htmlspecialchars($Fila['sub_esctr_orac_esc']) . "</td><td>" . htmlspecialchars($Fila['sub_esctr_orac_percen']) . "</td><td class='col-text-limited'>" . htmlspecialchars($Fila['sub_esctr_orac_interpr']) . "</td>";
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['vocab_expre_brut']) . "</td><td>" . htmlspecialchars($Fila['vocab_expre_esc']) . "</td><td>" . htmlspecialchars($Fila['vocab_expre_percen']) . "</td><td class='col-text-limited'>" . htmlspecialchars($Fila['vocab_expre_interp']) . "</td>";
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['sub_enten_parraf_brut']) . "</td><td>" . htmlspecialchars($Fila['sub_enten_parraf_esca']) . "</td><td>" . htmlspecialchars($Fila['sub_enten_parraf_perce']) . "</td><td class='col-text-limited'>" . htmlspecialchars($Fila['sub_enten_parraf_interp']) . "</td>";
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['sub_rep_num_forw_brut']) . "</td><td>" . htmlspecialchars($Fila['sub_rep_num_forw_esc']) . "</td><td>" . htmlspecialchars($Fila['sub_rep_num_forw_perc']) . "</td><td class='col-text-limited'>" . htmlspecialchars($Fila['sub_rep_num_forw_inter']) . "</td>";
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['sub_rep_num_back_brut']) . "</td><td>" . htmlspecialchars($Fila['sub_rep_num_back_esc']) . "</td><td>" . htmlspecialchars($Fila['sub_rep_num_back_perce']) . "</td><td class='col-text-limited'>" . htmlspecialchars($Fila['sub_rep_num_back_interp']) . "</td>";
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['sub_rep_num_tot_brut']) . "</td><td>" . htmlspecialchars($Fila['sub_rep_num_tot_esc']) . "</td><td>" . htmlspecialchars($Fila['sub_rep_num_tot_perc']) . "</td><td class='col-text-limited'>" . htmlspecialchars($Fila['sub_rep_num_tot_int']) . "</td>";
            $resultadosHtml .= "<td>" . htmlspecialchars($Fila['sub_sec_fam1_brut']) . "</td><td>" . htmlspecialchars($Fila['sub_sec_fam1_esc']) . "</td><td>" . htmlspecialchars($Fila['sub_sec_fam1_percen']) . "</td><td class='col-text-limited'>" . htmlspecialchars($Fila['sub_sec_fam1_interp']) . "</td>";

            // Índices
            $resultadosHtml .= "<td>{$Fila['celf58_stand_lengu_total']}</td><td>{$Fila['celf58_percent_lengua_tota']}</td><td class='col-text-limited'>{$Fila['celf58_leng_tot_interpr']}</td>";
            $resultadosHtml .= "<td>{$Fila['celf58_stand_leng_recep']}</td><td>{$Fila['celf58_percent_leng_recept']}</td><td class='col-text-limited'>{$Fila['celf58_leng_recep_inter']}</td>";
            $resultadosHtml .= "<td>{$Fila['celf58_stand_leng_expres']}</td><td>{$Fila['celf58_percent_leng_expres']}</td><td class='col-text-limited'>{$Fila['celf58_leng_expr_interpre']}</td>";
            $resultadosHtml .= "<td>{$Fila['celf58_stand_contenido']}</td><td>{$Fila['celf58_percent_conteni']}</td><td class='col-text-limited'>{$Fila['celf58_contenido_interpretacion']}</td>";
            $resultadosHtml .= "<td>{$Fila['celf58_stand_estrucct']}</td><td>{$Fila['celf58_percent_estrucc']}</td><td class='col-text-limited'>{$Fila['celf58_estrucct_interpret']}</td>";
            $resultadosHtml .= "<td>{$Fila['celf58_stand_memor_dtraba']}</td><td>{$Fila['celf58_percent_memor_dtrab']}</td><td class='col-text-limited'>{$Fila['celf58_memori_traba_interpre']}</td>";

            // Clínicos
            $referir = ($Fila['dat_clin_refera_ter'] == 1) ? 'Sí' : 'No';
            $resultadosHtml .= "<td>{$referir}</td>";
            $resultadosHtml .= "<td class='col-text-limited'>" . nl2br(htmlspecialchars($Fila['dat_clin_obser_clinic'])) . "</td>";
            $resultadosHtml .= "<td class='col-text-limited'>" . nl2br(htmlspecialchars($Fila['dat_clin_otr_obser'])) . "</td>";

            $resultadosHtml .= "</tr>";
        }
        $resultadosHtml .= "</tbody></table></div>";
    } else {
        $mensaje = !empty($criterioBusqueda) ? "No se encontraron registros para '" . htmlspecialchars($criterioBusqueda) . "'." : "No hay registros en la base de datos.";
        $resultadosHtml = "<p class='info-message'>$mensaje</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="stylesheet" href="../Css/EstilosConsultas.css">
    <title>Eliminar Evaluación CELF 5-8</title>
    <style>
        .sticky-col { position: -webkit-sticky; position: sticky; left: 0; background-color: #fff; z-index: 1; border-right: 2px solid #e1e1e1; }
        .tabla-container table thead th.sticky-col { z-index: 2; }
        .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 { padding: 15px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px; text-align: center; }
        .info-message { color: #31708f; background-color: #d9edf7; border-color: #bce8f1; }
        .error-message { color: #a94442; background-color: #f2dede; border-color: #ebccd1; }
        .col-text-limited { max-width: 250px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .col-text-limited:hover { white-space: normal; overflow: visible; position: relative; z-index: 10; background: #fff; box-shadow: 0 0 5px #ccc; }
    </style>
</head>
<body>
    <div class="container">
        <h1 class="tittle">Eliminar Registros de Evaluación CELF 5-8</h1>
        <form method="post" action="DCELF5-8.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');
                    if (!itemId) {
                        Swal.fire('Error interno', 'No se pudo obtener el ID del registro.', 'error');
                        return;
                    }
                    Swal.fire({
                        title: '¿Estás seguro de eliminar este registro?',
                        text: "Esta acción es irreversible (ID: " + itemId + ").",
                        icon: 'warning',
                        showCancelButton: true,
                        confirmButtonColor: '#d33', cancelButtonColor: '#3085d6',
                        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(`DCELF5-8.php?action=delete&id=${encodeURIComponent(itemId)}`, { method: 'GET' })
                            .then(response => {
                                if (!response.ok) { throw new Error(`Error HTTP! Estado: ${response.status}`); }
                                return response.json().catch(() => { throw new Error("La respuesta del servidor no es un JSON válido."); });
                            })
                            .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');
                                            if (tablaContainer) {
                                                const searchInputVal = document.getElementById('Nombre') ? document.getElementById('Nombre').value.trim() : '';
                                                tablaContainer.innerHTML = `<p class='info-message'>No hay más registros ${searchInputVal !== '' ? 'para este criterio' : 'en la base de datos'}.</p>`;
                                            }
                                        }
                                    }
                                } else {
                                    Swal.fire('Error', data.message || 'No se pudo eliminar el registro.', 'error');
                                }
                            })
                            .catch(error => {
                                Swal.close(); console.error("Fetch Error:", error);
                                Swal.fire('Error de Conexión', 'Ocurrió un error: ' + error.message, 'error');
                            });
                        }
                    });
                }
            });
        });
    </script>
</body>
</html>