Proyecto_venta_boletos/Proyecto/controlador/venta.php

71 lines
2.0 KiB
PHP

<?php
// api/venta.php - API para procesar ventas
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');
// Verificar método de solicitud
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
echo json_encode(['success' => false, 'mensaje' => 'Método no permitido']);
exit;
}
// Obtener datos JSON del cuerpo de la solicitud
$data = json_decode(file_get_contents('php://input'), true);
if (!$data || !isset($data['asientos']) || !isset($data['nombre_cliente'])) {
echo json_encode(['success' => false, 'mensaje' => 'Datos incompletos']);
exit;
}
// Extraer datos
$idsBoletos = $data['asientos'];
$nombreCliente = $data['nombre_cliente'];
// Validar que haya asientos seleccionados
if (empty($idsBoletos)) {
echo json_encode(['success' => false, 'mensaje' => 'No se han seleccionado asientos']);
exit;
}
// Conexión a base de datos
$db = new BaseDatos('localhost:3306', 'root', 'password', 'boletos_db');
// Inicializar el controlador
$vendedorController = new VendedorController($db);
// Cargar la sala (agregando esta línea)
$vendedorController->cargarSala(1); // O el ID de sala correspondiente
// Seleccionar boletos
$boletosSeleccionados = $vendedorController->seleccionarBoletos($idsBoletos);
if (count($boletosSeleccionados) == 0) {
echo json_encode(['success' => false, 'mensaje' => 'No se han seleccionado asientos disponibles']);
exit;
}
// Procesar venta
$comprobante = $vendedorController->procesarVenta($boletosSeleccionados, $nombreCliente);
if (!$comprobante) {
echo json_encode(['success' => false, 'mensaje' => 'Error al procesar la venta. Intente nuevamente']);
exit;
}
// Guardar comprobante en sesión
$_SESSION['comprobante'] = $comprobante;
// Respuesta exitosa
echo json_encode([
'success' => true,
'mensaje' => 'Venta procesada con éxito',
'redirect' => '../vista/comprobante.html',
'comprobante' => $comprobante
]);