<?php
session_start();

// 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. Determinar la URL del menú correspondiente
$urlMenuCorrespondiente = "";
switch ($_SESSION['Rol']) {
    case "Administrativo": $urlMenuCorrespondiente = "../MenuAdministrativo.php"; break;
    case "Titular": $urlMenuCorrespondiente = "../MenuTitular.php"; break;
    case "Pasante": $urlMenuCorrespondiente = "../MenuPasante.php"; break;
    default: header('Location: ../Login.php?m=6'); exit;
}

// --- Variables de filtros ---
$Nombre = "";
$FechaDesde = "";
$FechaHasta = "";

// --- Variables para resultados ---
$TotalFilas = 0;
$datosParaTabla = [];
$errorMessage = "";
$infoMessage = "";

// --- Lógica de captura de filtros ---
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $Nombre = isset($_POST['Nombre']) ? strtoupper(trim($_POST['Nombre'])) : "";
    $FechaDesde = isset($_POST['FechaDesde']) ? trim($_POST['FechaDesde']) : "";
    $FechaHasta = isset($_POST['FechaHasta']) ? trim($_POST['FechaHasta']) : "";
}

// --- Lógica de conexión y consulta ---
include("../Php/ConexionInb.php");
$errorMessage = "";

// --- LÓGICA REFACTORIZADA ---
// 1. Preparar parámetros base
$columnas = "p.*, b.*"; // b.* traerá todos los campos de la tabla sondeo
$whereClauses = array();
$params_values = array();
$types = "";
$sqlOrder = " ORDER BY p.apellido_paterno_paciente, p.apellido_materno_paciente, p.nombre_paciente, b.fecha_evaluacion DESC";

// 2. Construir filtros dinámicos (Usamos alias 'b' para la tabla sondeo)
if (!empty($Nombre)) {
    $whereClauses[] = "(UPPER(p.nombre_paciente) LIKE ? OR UPPER(p.apellido_paterno_paciente) LIKE ? OR UPPER(p.apellido_materno_paciente) LIKE ?)";
    $searchTerm = "%" . $Nombre . "%";
    $params_values = array_merge($params_values, array($searchTerm, $searchTerm, $searchTerm));
    $types .= "sss";
}
if (!empty($FechaDesde)) {
    $whereClauses[] = "b.fecha_evaluacion >= ?";
    $params_values[] = $FechaDesde;
    $types .= "s";
}
if (!empty($FechaHasta)) {
    $whereClauses[] = "b.fecha_evaluacion <= ?";
    $params_values[] = $FechaHasta;
    $types .= "s";
}

$sqlWhere = !empty($whereClauses) ? " WHERE " . implode(" AND ", $whereClauses) : "";

// 3. Llamar a la función centralizada
$datosParaTabla = consultarPacientes('sondeo', $columnas, $sqlWhere, $params_values, $types, $sqlOrder, $errorMessage);

// 4. Calcular información de resultados para el HTML
if ($datosParaTabla !== false) {
    $TotalFilas = count($datosParaTabla);
    $filtrosAplicados = !empty($Nombre) || !empty($FechaDesde) || !empty($FechaHasta);
    if ($TotalFilas > 0) {
        $infoMessage = $filtrosAplicados ? "Se encontraron $TotalFilas resultado(s) aplicando los filtros." : "Mostrando todos los $TotalFilas registros de Sondeo disponibles.";
    } else {
        $infoMessage = $filtrosAplicados ? "No se encontraron resultados con los filtros aplicados." : "No hay registros de Sondeo para mostrar.";
    }
}
?>
<!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>Consulta Sondeo con Filtros</title>
    <style>
        .form-filters { display: flex; flex-wrap: wrap; gap: 15px; margin-bottom: 20px; padding: 20px; background-color: #f9f9f9; border-radius: 8px; border: 1px solid #ddd; align-items: flex-end; }
        .form-filters .input-box { margin-bottom: 0; flex: 1 1 250px; }
        .form-filters label { display: block; margin-bottom: 5px; font-weight: bold; color: #555; }
        .form-filters input[type="text"], .form-filters input[type="date"] { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; }
        .form-actions { display: flex; justify-content: center; gap: 20px; margin-top: 10px; width: 100%; align-items: center; }
        .form-actions .btn, .form-actions .btn2, .form-actions .btn-outline { width: auto; min-width: 120px; text-align: center; }
        .tabla-container { overflow-x: auto; margin-top: 20px; }
        table { width: 100%; border-collapse: collapse; }
        th, td { padding: 12px; text-align: left; border-bottom: 1px solid #ddd; }
        th { background-color: #f2f2f2; position: sticky; top: 0; z-index: 2;}
        .col-text { min-width: 250px; max-width: 400px; word-wrap: break-word; white-space: pre-wrap; }
        .results-info, .error-message { text-align: center; margin: 15px auto; padding: 10px; border-radius: 4px; max-width: 800px; }
        .results-info { color: #555; background-color: #f0f0f0; border: 1px solid #ddd;}
        .error-message { color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; }
    </style>
</head>
<body>
    <div class="container">
        <h1 class="tittle">Consultar Registros de Sondeo</h1>

        <form method="post" action="RSondeo.php" class="form-filters">
            <div class="input-box">
                <label for="Nombre">Nombre o Apellido:</label>
                <input type="text" placeholder="Escriba aquí..." name="Nombre" id="Nombre" value="<?php echo htmlspecialchars($Nombre); ?>">
            </div>
            <div class="input-box">
                <label for="FechaDesde">Fecha Evaluación Desde:</label>
                <input type="date" name="FechaDesde" id="FechaDesde" value="<?php echo htmlspecialchars($FechaDesde); ?>">
            </div>
            <div class="input-box">
                <label for="FechaHasta">Fecha Evaluación Hasta:</label>
                <input type="date" name="FechaHasta" id="FechaHasta" value="<?php echo htmlspecialchars($FechaHasta); ?>">
            </div>
            <div class="form-actions">
                <input type="submit" value="Buscar" class="btn">
                <a href="RSondeo.php" class="btn2">Limpiar Filtros</a>
                <a href="<?php echo htmlspecialchars($urlMenuCorrespondiente); ?>" class="btn2">Salir</a>
                <?php if ($TotalFilas > 0): ?>
                    <button type="button" id="btnExportarExcel" class="btn btn-outline">Exportar a Excel</button>
                <?php endif; ?>
            </div>
        </form>

        <?php if (!empty($errorMessage)): ?>
            <div class="error-message"><?php echo $errorMessage; ?></div>
        <?php endif; ?>

        <?php if (!empty($infoMessage) && empty($errorMessage)): ?>
            <div class="results-info"><p><?php echo $infoMessage; ?></p></div>
        <?php endif; ?>

        <?php if (empty($errorMessage) && $TotalFilas > 0): ?>
            <div class="tabla-container">
                <table id="tablaResultados">
                    <thead>
                        <tr>
                            <th>Clave Paciente</th>
                            <th>Código</th>
                            <th>Nombre</th>
                            <th>Ap. Paterno</th>
                            <th>Ap. Materno</th>
                            <th>Fec. Nacimiento</th>
                            <th>Fec. 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">Subgrupo Consonánticos</th>
                            <th class="col-text">Subgrupo Diptongos</th>
                            <th class="col-text">Interpretación</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($datosParaTabla as $Fila): ?>
                        <tr>
                            <td><?php echo htmlspecialchars($Fila['clave_paciente']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['codigo_paciente']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['nombre_paciente']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['apellido_paterno_paciente']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['apellido_materno_paciente']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['fecha_nacimiento_paciente']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['fecha_evaluacion']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['edad']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['edad_corregida']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['rango_edad']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sond_art_punt_brutosa']); ?></td>
                            <td class="col-text"><?php echo nl2br(htmlspecialchars($Fila['sond_articul_fonem_con_retras'])); ?></td>
                            <td class="col-text"><?php echo nl2br(htmlspecialchars($Fila['subgrupo_consonanticos'])); ?></td>
                            <td class="col-text"><?php echo nl2br(htmlspecialchars($Fila['subgrupo_diptongos'])); ?></td>
                            <td class="col-text"><?php echo nl2br(htmlspecialchars($Fila['sond_articu_interpr'])); ?></td>

                        </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        <?php endif; ?>
    </div>

    <script>
        const btnExportar = document.getElementById('btnExportarExcel');
        if (btnExportar) {
            btnExportar.addEventListener('click', function() {
                const tabla = document.getElementById('tablaResultados');
                if (!tabla) return;
                
                let csvContent = "data:text/csv;charset=utf-8,\uFEFF";
                const rows = tabla.querySelectorAll("tr");
                
                for (const row of rows) {
                    const rowData = [];
                    const cols = row.querySelectorAll("th, td");
                    for (const col of cols) {
                        let cellText = col.innerText.replace(/\r?\n+|\r/g, " ").trim().replace(/"/g, '""');
                        rowData.push(`"${cellText}"`);
                    }
                    csvContent += rowData.join(",") + "\r\n";
                }

                const encodedUri = encodeURI(csvContent);
                const link = document.createElement("a");
                link.setAttribute("href", encodedUri);
                link.setAttribute("download", "resultados_sondeo_<?php echo date('Ymd_His'); ?>.csv");
                document.body.appendChild(link);
                link.click();
                document.body.removeChild(link);
            });
        }
    </script>
</body>
</html>