<?php header("Content-Type: application/json"); error_reporting(E_ALL); ini_set('display_errors', 1); require_once "conexion-bd.php"; if ($_SERVER['REQUEST_METHOD'] !== 'POST') { echo json_encode(["mensaje" => "Método no permitido."]); exit(); } $evento_id = intval($_POST['evento_id']); $asientos = json_decode($_POST['asientos'], true); $cantidad = intval($_POST['cantidad']); if (empty($asientos)) { echo json_encode(["mensaje" => "Debes seleccionar al menos un asiento."]); exit(); } $sql_evento = "SELECT c.precio, c.lugar_id, l.capacidad FROM conciertos c JOIN lugares l ON c.lugar_id = l.id WHERE c.id = ?"; $stmt_evento = $conn->prepare($sql_evento); $stmt_evento->bind_param("i", $evento_id); $stmt_evento->execute(); $result_evento = $stmt_evento->get_result(); $evento = $result_evento->fetch_assoc(); if (!$evento) { echo json_encode(["mensaje" => "Error: No se encontró el evento."]); exit(); } $precio_unitario = $evento['precio']; $lugar_id = $evento['lugar_id']; $capacidad = $evento['capacidad']; if (count($asientos) > $capacidad) { echo json_encode(["mensaje" => "Error: Estás intentando comprar más boletos de los permitidos."]); exit(); } $total = count($asientos) * $precio_unitario; // 🔹 Insertar la compra en la tabla `ventas` $sql = "INSERT INTO ventas (evento_id, cantidad, total) VALUES (?, ?, ?)"; $stmt = $conn->prepare($sql); $stmt->bind_param("iid", $evento_id, $cantidad, $total); if ($stmt->execute()) { $id_compra = $conn->insert_id; // 🔹 Actualizar el estado de los asientos y obtener su ID $sql_asiento_update = "UPDATE asientos SET estado = 'vendido' WHERE numero_asiento = ? AND lugar_id = ?"; $stmt_asiento_update = $conn->prepare($sql_asiento_update); $sql_obtener_asiento_id = "SELECT id FROM asientos WHERE numero_asiento = ? AND lugar_id = ?"; $stmt_asiento_id = $conn->prepare($sql_obtener_asiento_id); // 🔹 Insertar registro en ventas_asientos con precio real $sql_ventas_asientos = "INSERT INTO ventas_asientos (venta_id, asiento_id, precio) VALUES (?, ?, ?)"; $stmt_ventas_asientos = $conn->prepare($sql_ventas_asientos); foreach ($asientos as $asiento) { $asientoSeleccionado = trim($asiento); // Actualizar estado del asiento $stmt_asiento_update->bind_param("si", $asientoSeleccionado, $lugar_id); if (!$stmt_asiento_update->execute()) { echo json_encode(["mensaje" => "Error actualizando asiento: " . $stmt_asiento_update->error]); exit(); } // Obtener ID del asiento $stmt_asiento_id->bind_param("si", $asientoSeleccionado, $lugar_id); $stmt_asiento_id->execute(); $result_asiento = $stmt_asiento_id->get_result(); $asiento_data = $result_asiento->fetch_assoc(); if (!$asiento_data) { echo json_encode(["mensaje" => "Error: asiento no encontrado."]); exit(); } $asiento_id = $asiento_data['id']; // Insertar en ventas_asientos con precio real del evento $stmt_ventas_asientos->bind_param("iid", $id_compra, $asiento_id, $precio_unitario); if (!$stmt_ventas_asientos->execute()) { echo json_encode(["mensaje" => "Error al insertar venta_asiento: " . $stmt_ventas_asientos->error]); exit(); } } echo json_encode(["mensaje" => "Compra realizada exitosamente.", "id_compra" => $id_compra]); } else { echo json_encode(["mensaje" => "Error al procesar la compra: " . $conn->error]); } $stmt->close(); $conn->close(); ?>