feat: Añade página principal con mapa de asientos

This commit is contained in:
Christian Julian Jimenez 2025-03-02 15:28:55 -06:00
parent d49273abbf
commit 6b5a5d25b4
1 changed files with 141 additions and 0 deletions

141
index.php Normal file
View File

@ -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>