<?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()]); } ?>