<?php
// ✅ VERSIÓN CON SOPORTE DE IMÁGENES
session_start();

error_reporting(E_ALL);
ini_set('display_errors', 1);

header('Content-Type: application/json');

error_log("=== INICIO obtener_preguntasM5.php (CON IMÁGENES) ===");

try {
    require 'conexion.php';
    
    if ($conn === null) {
        error_log("ERROR: Conexión a base de datos es null");
        echo json_encode(['error' => 'Error de conexión a base de datos']);
        exit;
    }
    
    if (!$conn->ping()) {
        error_log("ERROR: Conexión a base de datos perdida");
        echo json_encode(['error' => 'Conexión a base de datos perdida']);
        exit;
    }

    if (!isset($_SESSION['usuario']) || !isset($_SESSION['tipo_acceso'])) {
        error_log("ERROR: Variables de sesión no configuradas");
        echo json_encode(['error' => 'No autorizado - sesión no válida']);
        exit;
    }

    $tipo_acceso = $_SESSION['tipo_acceso'];
    
    error_log("SESSION usuario: " . $_SESSION['usuario']);
    error_log("SESSION tipo_acceso: " . $tipo_acceso);

    // Obtener todas las materias que correspondan al tipo de acceso
    $sql_materias = "SELECT cod_materia, cant_pregunta FROM Materias WHERE acceso_id = ?";
    $stmt = $conn->prepare($sql_materias);
    
    if (!$stmt) {
        error_log("ERROR preparando consulta de materias: " . $conn->error);
        echo json_encode(['error' => 'Error en preparación de consulta: ' . $conn->error]);
        exit;
    }
    
    $stmt->bind_param("s", $tipo_acceso);
    $stmt->execute();
    $result = $stmt->get_result();

    $preguntas = [];
    $total_materias = 0;

    while ($materia = $result->fetch_assoc()) {
        $materia_id = $materia['cod_materia'];
        $cantidad = (int)$materia['cant_pregunta'];
        $total_materias++;
        
        error_log("Procesando materia: $materia_id, cantidad: $cantidad");

        // ✅ CONSULTA ACTUALIZADA: Incluye campos de imágenes
        $sql_preguntas = "SELECT 
                                p.Id, 
                                p.materia_id, 
                                m.nom_materia AS nombre_materia,
                                p.pregunta,
                                p.imagen_pregunta,
                                p.pregunta_a,
                                p.imagen_pregunta_a,
                                p.pregunta_b,
                                p.imagen_pregunta_b,
                                p.opcion1, 
                                p.opcion2, 
                                p.opcion3, 
                                p.opcion4, 
                                p.opcion5,
                                p.correcta_rpta, 
                                p.detalle_rpta
                        FROM Preguntas p
                        JOIN Materias m ON p.materia_id = m.cod_materia
                        WHERE p.materia_id = ?
                        ORDER BY RAND()
                        LIMIT ?";

        $stmt_p = $conn->prepare($sql_preguntas);
        
        if (!$stmt_p) {
            error_log("ERROR preparando consulta de preguntas: " . $conn->error);
            continue; // Saltar esta materia y continuar con las demás
        }
        
        $stmt_p->bind_param("si", $materia_id, $cantidad);
        $stmt_p->execute();
        $res_p = $stmt_p->get_result();

        $preguntas_materia = 0;
        while ($row = $res_p->fetch_assoc()) {
            // ✅ ESTRUCTURA ACTUALIZADA: Asegurar que NULL se convierta en cadena vacía
            $pregunta_procesada = [
                'Id' => $row['Id'],
                'materia_id' => $row['materia_id'],
                'nombre_materia' => $row['nombre_materia'],
                'pregunta' => $row['pregunta'] ?? '',
                'imagen_pregunta' => $row['imagen_pregunta'] ? trim($row['imagen_pregunta']) : '',
                'pregunta_a' => $row['pregunta_a'] ?? '',
                'imagen_pregunta_a' => $row['imagen_pregunta_a'] ? trim($row['imagen_pregunta_a']) : '',
                'pregunta_b' => $row['pregunta_b'] ?? '',
                'imagen_pregunta_b' => $row['imagen_pregunta_b'] ? trim($row['imagen_pregunta_b']) : '',
                'opcion1' => $row['opcion1'] ?? '',
                'opcion2' => $row['opcion2'] ?? '',
                'opcion3' => $row['opcion3'] ?? '',
                'opcion4' => $row['opcion4'] ?? '',
                'opcion5' => $row['opcion5'] ?? '',
                'correcta_rpta' => $row['correcta_rpta'],
                'detalle_rpta' => $row['detalle_rpta'] ?? ''
            ];
            
            // ✅ LOG PARA DEBUGGING: Mostrar si la pregunta tiene imágenes
            if ($pregunta_procesada['imagen_pregunta']) {
                error_log("Pregunta ID {$row['Id']} tiene imagen principal: {$pregunta_procesada['imagen_pregunta']}");
            }
            if ($pregunta_procesada['imagen_pregunta_a']) {
                error_log("Pregunta ID {$row['Id']} tiene imagen A: {$pregunta_procesada['imagen_pregunta_a']}");
            }
            if ($pregunta_procesada['imagen_pregunta_b']) {
                error_log("Pregunta ID {$row['Id']} tiene imagen B: {$pregunta_procesada['imagen_pregunta_b']}");
            }
            
            $preguntas[] = $pregunta_procesada;
            $preguntas_materia++;
        }
        
        error_log("Materia $materia_id: $preguntas_materia preguntas obtenidas");
        $stmt_p->close();
    }

    // Mezclar preguntas finales
    shuffle($preguntas);
    
    $total_preguntas = count($preguntas);
    error_log("Total materias procesadas: $total_materias");
    error_log("Total preguntas obtenidas: $total_preguntas");
    
    if ($total_preguntas === 0) {
        error_log("ADVERTENCIA: No se encontraron preguntas para tipo_acceso='$tipo_acceso'");
    }

    echo json_encode($preguntas);
    
    error_log("=== FIN EXITOSO obtener_preguntasM5.php ===");
    
} catch (Exception $e) {
    error_log("EXCEPCIÓN en obtener_preguntasM5.php: " . $e->getMessage());
    error_log("Stack trace: " . $e->getTraceAsString());
    echo json_encode(['error' => 'Error interno: ' . $e->getMessage()]);
} catch (Error $e) {
    error_log("ERROR FATAL en obtener_preguntasM5.php: " . $e->getMessage());
    error_log("Stack trace: " . $e->getTraceAsString());
    echo json_encode(['error' => 'Error fatal: ' . $e->getMessage()]);
}

if (isset($conn) && $conn !== null) {
    $conn->close();
}
?>