<?php // api/asientos.php - API para obtener el mapa de asientos session_start(); require_once '../modelo/BaseDatos.php'; require_once '../modelo/Sala.php'; require_once '../modelo/Boleto.php'; require_once '../modelo/Venta.php'; require_once 'VendedorController.php'; header('Content-Type: application/json'); try { // Conexión a base de datos $db = new BaseDatos('localhost', 'root', 'password', 'boletos_db'); // Inicializar el controlador $vendedorController = new VendedorController($db); // Cargar sala (solo hay una sala con id=1) $sala = $vendedorController->cargarSala(1); // Si no hay sala, podríamos inicializarla para desarrollo if (!$sala) { $sala = new Sala(1, 'Sala Principal'); $sala->inicializarBoletos(10, 15, 50.00); // 10 filas, 15 asientos por fila, $50 cada uno } // Obtener parámetros de fecha $fechaInicio = isset($_GET['fechaInicio']) ? $_GET['fechaInicio'] : null; $fechaFin = isset($_GET['fechaFin']) ? $_GET['fechaFin'] : null; // Obtener mapa de asientos $mapaAsientos = $vendedorController->mostrarDisponibilidadAsientos(); // Filtrar por fecha si se proporcionan las fechas if ($fechaInicio && $fechaFin) { $query = "SELECT b.id, b.fila, b.numero, b.precio, b.estado FROM boletos b JOIN venta_boletos vb ON b.id = vb.id_boleto JOIN ventas v ON vb.id_venta = v.id WHERE DATE(v.fecha) BETWEEN ? AND ?"; $stmt = $db->getConexion()->prepare($query); $stmt->bind_param("ss", $fechaInicio, $fechaFin); $stmt->execute(); $result = $stmt->get_result(); $mapaAsientos = []; while ($fila = $result->fetch_assoc()) { $mapaAsientos[$fila['fila']][$fila['numero']] = $fila['estado']; } } // Preparar respuesta $response = [ 'success' => true, 'mapa' => $mapaAsientos, 'precio' => 50.00 // Agregamos el precio de los boletos a la respuesta ]; echo json_encode($response); } catch (Exception $e) { // Manejar errores y devolver una respuesta JSON $response = [ 'success' => false, 'message' => 'Error al obtener el mapa de asientos: ' . $e->getMessage() ]; echo json_encode($response); }