<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

include 'conexion.php';

header("Content-Type: application/json");

$data = json_decode(file_get_contents("php://input"), true);
$asientos = $data['asientos'] ?? [];
$concierto_id = $data['concierto_id'] ?? null;

if (empty($asientos) || !$concierto_id) {
    echo json_encode(["error" => "No se recibieron asientos para la compra."]);
    exit;
}

$conn->begin_transaction();

try {
    // Generar un ID de transacción único
    $transaction_id = uniqid("trx_");

    foreach ($asientos as $asiento_id) {
        // **Depuración**
        error_log("Procesando asiento ID: $asiento_id para Concierto ID: $concierto_id");

        // Marcar asiento como vendido
        $sql = "UPDATE asientos SET estado = 'vendido' WHERE id = ?";
        $stmt = $conn->prepare($sql);
        if (!$stmt) {
            throw new Exception("Error en la preparación del UPDATE: " . $conn->error);
        }
        $stmt->bind_param("i", $asiento_id);
        $stmt->execute();

        // Insertar en la tabla de boletos
        $sql_boleto = "INSERT INTO boletos (asiento_id, concierto_id, transaction_id, fecha_venta, precio) 
                       SELECT ?, ?, ?, NOW(), z.precio FROM asientos a 
                       JOIN zonas z ON a.zona_id = z.id WHERE a.id = ?";
        $stmt_boleto = $conn->prepare($sql_boleto);
        if (!$stmt_boleto) {
            throw new Exception("Error en la preparación del INSERT: " . $conn->error);
        }
        $stmt_boleto->bind_param("iisi", $asiento_id, $concierto_id, $transaction_id, $asiento_id);
        $stmt_boleto->execute();
    }

    $conn->commit();
    echo json_encode(["success" => "Compra realizada con éxito", "transaction_id" => $transaction_id]);

} catch (Exception $e) {
    $conn->rollback();
    error_log("Error en la compra: " . $e->getMessage());
    echo json_encode(["error" => "Error en la compra: " . $e->getMessage()]);
}
?>