<?php
// ✅ Configurar sesión ANTES de session_start() - 3 HORAS EXACTAS
ini_set('session.gc_maxlifetime', 10800);  // 3 horas = 10800 segundos
ini_set('session.cookie_lifetime', 10800);

session_set_cookie_params([
    'lifetime' => 10800,  // 3 horas exactas
    'path' => '/',
    'domain' => '',
    'secure' => false,    // Cambiar a true si usas HTTPS
    'httponly' => true,
    'samesite' => 'Lax'
]);

session_start();

// ✅ Actualizar timestamp de última actividad
$_SESSION['LAST_ACTIVITY'] = time();

if (!isset($_SESSION['usuario']) || !isset($_SESSION['token'])) {
    header("Location: index.html");
    exit;
}

$usuario = $_SESSION['usuario'];
$tokenSesion = $_SESSION['token'];

$host = "localhost";
$user = "ascensof_Admin1";
$password = "3DS0NCH4115H4CK3R+";
$db = "ascensof_BDsimulador";

//$host = "localhost";
//$user = "root";
//$password = "";
//$db = "siapolco_BDsimulador";

$conn = new mysqli($host, $user, $password, $db);
if ($conn->connect_error) {
    die("Error de conexión: " . $conn->connect_error);
}

$stmt = $conn->prepare("SELECT token FROM Usuarios WHERE usuario = ?");
$stmt->bind_param("s", $usuario);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows === 1) {
    $row = $result->fetch_assoc();
    $tokenBD = $row['token'];
    
    if ($tokenBD !== $tokenSesion) {
        session_unset();
        session_destroy();
        header("Location: index.html?expirado=1");
        exit;
    }
} else {
    session_unset();
    session_destroy();
    header("Location: index.html?error=1");
    exit;
}

$conn->close();
?>
<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Simulador SIAPOL</title>
  <script>const nombreUsuario = '<?php echo $_SESSION['usuario'] ?? 'Usuario'; ?>';</script>
  <link rel="stylesheet" href="modeloP5.css" />
</head>
<body>
  <header class="header">
  <h1><span style="color:white;">SIMULADOR</span> <span style="color:#70b3ff;">AscensoFacil</span></h1>
    <h2>Módulo ICM - AEM</h2>
    <div class="usuario-label">
      Usuario: <?php echo htmlspecialchars($_SESSION['nombre']); ?>
    </div>
    <div class="top-bar">
      <div class="materiasl"></div>      
      <div class="element">
        <button id="btn-toggle" class="btn iniciar">Iniciar</button>
        <div class="timer">02:00:00</div>
        
        <button class="btn voz azul">Con voz</button>
        <button class="btn cerrar" onclick="logout()">Cerrar Sesión</button>
      </div>  
    </div>
  </header>

  <!-- MAIN MODERNO -->
  <main class="main-modern">
    <div class="panel-lateral">
      <h3>Preguntas</h3>
      <div id="navegacion-preguntas" class="nav-preguntas"></div>
    </div>
    <div class="panel-central">
      <div class="cabecera-materia">
        <span id="materia-actual">Materia: </span>
      </div>
      <div id="contenedor-pregunta" class="tarjeta-pregunta">
        <p><em>Cargando pregunta...</em></p>
      </div>
    </div>
  </main>

  <script>
    // ✅ KEEP-ALIVE: Mantener sesión activa cada 5 minutos
    let keepAliveInterval = null;

    function iniciarKeepAlive() {
      if (keepAliveInterval) return; // Ya está iniciado
      
      console.log('🔄 Keep-alive iniciado - sesión se mantendrá activa por 3 horas');
      
      // Ejecutar inmediatamente
      mantenerSesionActiva();
      
      // Ejecutar cada 5 minutos (300000 ms)
      keepAliveInterval = setInterval(() => {
        mantenerSesionActiva();
      }, 300000);
    }

    function detenerKeepAlive() {
      if (keepAliveInterval) {
        clearInterval(keepAliveInterval);
        keepAliveInterval = null;
        console.log('⏸️ Keep-alive detenido');
      }
    }

    async function mantenerSesionActiva() {
      try {
        const response = await fetch('keep_session_alive.php', {
          method: 'POST',
          credentials: 'include',
          headers: {
            'Content-Type': 'application/json'
          }
        });
        
        const data = await response.json();
        
        if (response.ok && data.success) {
          console.log('✅ Sesión mantenida activa:', new Date().toLocaleTimeString());
        } else {
          console.warn('⚠️ Sesión no válida, redirigiendo...');
          window.location.href = 'index.html?expirado=1';
        }
      } catch (error) {
        console.error('❌ Error al mantener sesión activa:', error);
      }
    }

    function logout() {
      detenerKeepAlive(); // Detener keep-alive al cerrar sesión
      localStorage.removeItem('usuario');
      window.location.href = 'logout.php';
    }

    document.addEventListener('DOMContentLoaded', () => {
      const isDark = localStorage.getItem('modo') === 'oscuro';
      document.body.classList.toggle('dark-mode', isDark);
      
      // ✅ Iniciar keep-alive automáticamente al cargar la página
      iniciarKeepAlive();
    });

    // ✅ Detener keep-alive al salir de la página
    window.addEventListener('beforeunload', () => {
      detenerKeepAlive();
    });
  </script>

  <script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.min.js"></script>
  <script src="voz.js"></script>
  <script src="generarM5.js"></script>
  <script src="bloquear_inspeccion.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
</body>
</html>