diff --git a/index.php b/index.php new file mode 100644 index 0000000..8d6b07f --- /dev/null +++ b/index.php @@ -0,0 +1,141 @@ +<?php +// index.php - Página principal del sistema +session_start(); +require_once 'clases/BaseDatos.php'; +require_once 'clases/Sala.php'; +require_once 'clases/Boleto.php'; +require_once 'clases/Venta.php'; +require_once 'clases/VendedorController.php'; + +// Conexión a base de datos +$db = new BaseDatos('localhost:3306', 'root', '481037', '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 +} + +// Variable para almacenar mensajes de confirmación +$mensaje = ''; + +// Procesar formulario de venta +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['vender'])) { + if (isset($_POST['asientos']) && isset($_POST['nombre_cliente'])) { + $idsBoletos = $_POST['asientos']; + $nombreCliente = $_POST['nombre_cliente']; + + $boletosSeleccionados = $vendedorController->seleccionarBoletos($idsBoletos); + + if (count($boletosSeleccionados) > 0) { + $comprobante = $vendedorController->procesarVenta($boletosSeleccionados, $nombreCliente); + + if ($comprobante) { + // Guardar comprobante en sesión para mostrarlo + $_SESSION['comprobante'] = $comprobante; + // Redireccionar a página de comprobante + header('Location: comprobante.php'); + exit; + } else { + $mensaje = 'Error al procesar la venta. Intente nuevamente.'; + } + } else { + $mensaje = 'No se han seleccionado asientos disponibles.'; + } + } else { + $mensaje = 'Por favor, seleccione al menos un asiento y proporcione el nombre del cliente.'; + } +} + +// Obtener mapa de asientos +$mapaAsientos = $vendedorController->mostrarDisponibilidadAsientos(); +?> + +<!DOCTYPE html> +<html lang="es"> +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Sistema de Venta de Boletos</title> + <link rel="stylesheet" href="css/index.css"> + <style> + + </style> +</head> +<body> + <div class="container"> + <h1>Sistema de Venta de Boletos para Concierto</h1> + + <?php if (!empty($mensaje)): ?> + <div class="mensaje"><?php echo $mensaje; ?></div> + <?php endif; ?> + + <form method="post" id="formularioVenta"> + <div class="sala"> + <h2>Selección de Asientos - Sala Principal</h2> + <div class="escenario">ESCENARIO</div> + + <div class="filas"> + <?php foreach ($mapaAsientos as $numeroFila => $asientosEnFila): ?> + <div class="fila"> + <div class="numero-fila">F<?php echo $numeroFila; ?></div> + <div class="asientos"> + <?php foreach ($asientosEnFila as $numeroAsiento => $estado): ?> + <?php + $idBoleto = (($numeroFila - 1) * count($asientosEnFila)) + $numeroAsiento; + $clase = ($estado === 'disponible') ? 'asiento disponible' : 'asiento vendido'; + $disabled = ($estado === 'disponible') ? '' : 'disabled'; + ?> + <div class="<?php echo $clase; ?>" + data-id="<?php echo $idBoleto; ?>" + <?php echo $disabled; ?>> + <?php echo $numeroAsiento; ?> + </div> + <?php endforeach; ?> + </div> + </div> + <?php endforeach; ?> + </div> + + <div class="leyenda"> + <div class="leyenda-item"> + <div class="leyenda-color" style="background-color: #28a745;"></div> + <span>Disponible</span> + </div> + <div class="leyenda-item"> + <div class="leyenda-color" style="background-color: #007bff;"></div> + <span>Seleccionado</span> + </div> + <div class="leyenda-item"> + <div class="leyenda-color" style="background-color: #dc3545;"></div> + <span>Vendido</span> + </div> + </div> + </div> + + <div class="form-group"> + <label for="nombre_cliente">Nombre del Cliente:</label> + <input type="text" id="nombre_cliente" name="nombre_cliente" required> + </div> + + <div class="resumen" id="resumen"> + <h3>Resumen de Selección</h3> + <p>Asientos seleccionados: <span id="asientosSeleccionados">Ninguno</span></p> + <p>Total: $<span id="totalVenta">0.00</span></p> + <button type="submit" name="vender" class="btn">Confirmar Venta</button> + </div> + + <!-- Campo oculto para almacenar IDs de asientos seleccionados --> + <div id="asientosSeleccionadosInput"></div> + </form> + </div> + + <script src="js/index.js"></script> +</body> +</html> \ No newline at end of file