feat: Añade página principal con mapa de asientos
This commit is contained in:
parent
d49273abbf
commit
6b5a5d25b4
|
@ -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>
|
Loading…
Reference in New Issue