BOLETC/php/comprar_asiento.php

58 lines
1.9 KiB
PHP

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