106 lines
3.6 KiB
PHP
106 lines
3.6 KiB
PHP
<?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();
|
|
?>
|