diff --git a/controlador/procesarVenta.php b/controlador/procesarVenta.php new file mode 100644 index 0000000..778355d --- /dev/null +++ b/controlador/procesarVenta.php @@ -0,0 +1,62 @@ +<?php +require_once '../modelo/BaseDatos.php'; +require_once '../modelo/Venta.php'; +require_once '../modelo/Boleto.php'; +require_once '../modelo/Sala.php'; + +error_reporting(E_ALL); +ini_set('display_errors', 1); + +// Configuración de la base de datos +$host = 'localhost'; +$usuario = 'root'; +$password = 'password'; +$nombreBD = 'boletos_db'; +$bd = new BaseDatos($host, $usuario, $password, $nombreBD); + +// Verificar que los datos fueron recibidos correctamente +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $nombreCliente = $_POST['nombre_cliente'] ?? ''; + $asientosSeleccionados = $_POST['asientos'] ?? []; + $idSala = 1; // Asegúrate de que el ID de la sala está definido + + if (empty($nombreCliente) || empty($asientosSeleccionados) || !$idSala) { + echo json_encode(['success' => false, 'message' => 'Datos incompletos']); + exit; + } + + // Cargar la sala desde la base de datos + $sala = $bd->cargarSala($idSala); + if (!$sala) { + echo json_encode(['success' => false, 'message' => 'Sala no encontrada']); + exit; + } + + // Obtener los boletos seleccionados + $boletosDisponibles = $sala->obtenerBoletosPorId($asientosSeleccionados); + if (count($boletosDisponibles) !== count($asientosSeleccionados)) { + echo json_encode(['success' => false, 'message' => 'Uno o más boletos no están disponibles']); + exit; + } + + // Calcular el total de la venta + $total = array_reduce($boletosDisponibles, function($sum, $boleto) { + return $sum + $boleto->getPrecio(); + }, 0); + + // Crear una nueva venta + $venta = new Venta($nombreCliente); + $venta->agregarBoletos($boletosDisponibles); + + // Guardar la venta en la base de datos + if ($bd->guardarVenta($venta)) { + echo json_encode(['success' => true, 'message' => 'Venta realizada con éxito', 'total' => $total]); + } else { + echo json_encode(['success' => false, 'message' => 'Error al registrar la venta']); + } +} else { + echo json_encode(['success' => false, 'message' => 'Método no permitido']); +} + +$bd->cerrarConexion(); +?> \ No newline at end of file