<?php
require_once 'includes/validar_sesion.php'; // Tu guardián de sesiones
require_once 'config/conexion.php';

// Obtener 20 preguntas aleatorias
$stmt = $pdo->query("SELECT DISTINCT p.* FROM preguntas p INNER JOIN alternativas a ON p.id = a.pregunta_id ORDER BY RAND() LIMIT 2");
$preguntas = $stmt->fetchAll();
$total_preguntas = count($preguntas);
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Examen Rápido | Sistema de Repaso</title>
    <!-- Bootstrap 5 CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        body { background-color: #f4f6f9; }
        .pregunta-card { border-top: 4px solid #0d6efd; } /* Borde azul para el examen aleatorio */
        .img-senal { max-height: 150px; object-fit: contain; border-radius: 5px; }
        .form-check-label { cursor: pointer; width: 100%; }
        .form-check { border: 1px solid transparent; transition: all 0.2s; }
        .form-check:hover { background-color: #f8f9fa; border-color: #dee2e6; border-radius: 5px; }
        /* Ocultar todos los pasos por defecto, el JS mostrará el activo */
        .paso-pregunta { display: none; }
    </style>
</head>
<body>

<!-- Barra de Navegación -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark mb-4 shadow-sm">
    <div class="container d-flex justify-content-between align-items-center">
        <a class="navbar-brand text-danger fs-6" href="dashboard.php">❌ Cancelar Examen</a>
        <span class="text-info fw-bold small" id="texto-progreso">Cargando...</span>
    </div>
</nav>

<div class="container pb-5">
    <div class="row justify-content-center">
        <div class="col-lg-6 col-md-8">
            
            <form action="evaluar.php" method="POST" id="form-examen">
                <?php foreach ($preguntas as $index => $pregunta): ?>
                    <!-- Contenedor del paso a paso -->
                    <div class="paso-pregunta" id="paso-<?= $index ?>">
                        <div class="card shadow-sm mb-4 pregunta-card">
                            <div class="card-body">
                                <h5 class="card-title fw-bold mb-3">
                                    <?= ($index + 1) ?>. <?= htmlspecialchars($pregunta['texto_pregunta']) ?>
                                </h5>
                                
                                <?php if (!empty($pregunta['imagen_url'])): ?>
                                    <div class="my-3 text-center">
                                        <img src="<?= htmlspecialchars($pregunta['imagen_url']) ?>" alt="Señal" class="img-senal border p-1 shadow-sm">
                                    </div>
                                <?php endif; ?>
                                
                                <div class="mt-4">
                                    <?php
                                    $stmtAlt = $pdo->prepare("SELECT * FROM alternativas WHERE pregunta_id = ? ORDER BY letra ASC");
                                    $stmtAlt->execute([$pregunta['id']]);
                                    $alternativas = $stmtAlt->fetchAll();
                                    ?>
                                    
                                    <?php foreach ($alternativas as $alt): ?>
                                        <div class="form-check p-3 mb-2 bg-white shadow-sm rounded">
                                            <!-- Eliminamos el 'required' del HTML para que el JS haga la validación por pasos -->
                                            <input class="form-check-input ms-1" type="radio" name="respuestas[<?= $pregunta['id'] ?>]" id="alt_<?= $alt['id'] ?>" value="<?= $alt['letra'] ?>">
                                            <label class="form-check-label ps-2 fs-6" for="alt_<?= $alt['id'] ?>">
                                                <strong><?= strtoupper($alt['letra']) ?>)</strong> <?= htmlspecialchars($alt['texto']) ?>
                                            </label>
                                        </div>
                                    <?php endforeach; ?>
                                </div>
                            </div>
                        </div>
                    </div>
                <?php endforeach; ?>
                
                <!-- Controles de Navegación -->
                <div class="d-flex justify-content-between mt-3">
                    <button type="button" class="btn btn-secondary" id="btn-anterior">⬅ Anterior</button>
                    <button type="button" class="btn btn-primary fw-bold px-4 shadow" id="btn-siguiente">Siguiente ➡</button>
                    <button type="submit" class="btn btn-success fw-bold px-4 shadow" id="btn-terminar">Terminar Examen</button>
                </div>
                
                <!-- Alerta si intenta avanzar sin responder -->
                <div class="alert alert-danger mt-3 d-none shadow-sm" id="alerta-error">
                    Por favor, selecciona una alternativa para continuar.
                </div>
            </form>

        </div>
    </div>
</div>

<!-- Lógica JavaScript para el paginado de tarjetas -->
<script>
    document.addEventListener("DOMContentLoaded", function() {
        let pasoActual = 0;
        const totalPasos = <?= $total_preguntas ?>;
        const pasos = document.querySelectorAll('.paso-pregunta');
        const btnAnterior = document.getElementById('btn-anterior');
        const btnSiguiente = document.getElementById('btn-siguiente');
        const btnTerminar = document.getElementById('btn-terminar');
        const textoProgreso = document.getElementById('texto-progreso');
        const alertaError = document.getElementById('alerta-error');

        function mostrarPaso(indice) {
            // Ocultamos la alerta de error al cambiar de paso
            alertaError.classList.add('d-none');
            
            // Iteramos sobre todos los divs y solo mostramos el activo
            pasos.forEach((paso, i) => {
                paso.style.display = (i === indice) ? 'block' : 'none';
            });

            // Lógica para mostrar/ocultar botones
            btnAnterior.style.display = (indice === 0) ? 'none' : 'inline-block';
            
            if (indice === totalPasos - 1) {
                btnSiguiente.style.display = 'none';
                btnTerminar.style.display = 'inline-block';
            } else {
                btnSiguiente.style.display = 'inline-block';
                btnTerminar.style.display = 'none';
            }

            // Actualizamos la información en el navbar
            textoProgreso.innerText = `Pregunta ${indice + 1} de ${totalPasos}`;
            
            // Hacemos scroll suave al tope de la página
            window.scrollTo({ top: 0, behavior: 'smooth' });
        }

        // Verifica si el usuario seleccionó una opción en la tarjeta actual
        function validarPasoActual() {
            const paso = pasos[pasoActual];
            const estaMarcado = paso.querySelector('input[type="radio"]:checked');
            
            if (!estaMarcado) {
                alertaError.classList.remove('d-none');
                return false;
            }
            return true;
        }

        // Acción: Botón Siguiente
        btnSiguiente.addEventListener('click', function() {
            if (validarPasoActual()) {
                pasoActual++;
                mostrarPaso(pasoActual);
            }
        });

        // Acción: Botón Anterior
        btnAnterior.addEventListener('click', function() {
            pasoActual--;
            mostrarPaso(pasoActual);
        });

        // Prevención en el Submit Final
        document.getElementById('form-examen').addEventListener('submit', function(e) {
            if (!validarPasoActual()) {
                e.preventDefault(); // Cancela el envío si no respondió la última pregunta
            }
        });

        // Iniciar la vista en la primera tarjeta
        mostrarPaso(pasoActual);
    });
</script>

</body>
</html>