<?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)) {
        // Guardar comprobante en sesión
        $_SESSION['comprobante'] = $venta->generarComprobante();
        echo json_encode(['success' => true, 'message' => 'Venta realizada con éxito', 'redirect' => '../vista/comprobante.html']);
    } 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();
?>