ProyectoTicketFei/controladores/insertar_concierto.php

80 lines
2.6 KiB
PHP

<?php
include 'conexion.php';
header('Content-Type: application/json');
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Leer el JSON enviado
$datos = json_decode(file_get_contents("php://input"), true);
if ($datos === null) {
echo json_encode(['insercionCorrecta' => false, 'error' => 'Error al decodificar JSON']);
exit;
}
// Verificar que los datos requeridos estén presentes
if (!isset($datos['nombre_concierto'], $datos['zonas'])) {
echo json_encode(['insercionCorrecta' => false, 'error' => 'Faltan datos requeridos']);
exit;
}
// Extraer valores
$nombre_concierto = $datos['nombre_concierto'];
$artista = $datos['artista'];
$fecha = $datos['fecha'];
$calle = $datos['calle'];
$colonia = $datos['colonia'];
$numero_direccion = $datos['numero_direccion'];
$codigo_postal = $datos['codigo_postal'];
$estado = $datos['estado'];
$capacidad_total = $datos['capacidad_total'];
$zonas = $datos['zonas'];
$conexionBD->begin_transaction();
try {
// Insertar el concierto
$consulta = "INSERT INTO conciertos (nombre_concierto, artista, fecha, calle, colonia, numero_direccion, codigo_postal, estado, capacidad_total)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = $conexionBD->prepare($consulta);
$stmt->bind_param("ssssssssi", $nombre_concierto, $artista, $fecha, $calle, $colonia, $numero_direccion, $codigo_postal, $estado, $capacidad_total);
$stmt->execute();
$id_concierto = $conexionBD->insert_id;
$stmt->close();
// Insertar zonas y sus asientos
$consulta_zonas = "INSERT INTO zonas (id_concierto, nombre_zona, capacidad, precio) VALUES (?, ?, ?, ?)";
$stmt_zonas = $conexionBD->prepare($consulta_zonas);
$consulta_asientos = "INSERT INTO asientos (id_zona, numero_asiento, estado) VALUES (?, ?, 'disponible')";
$stmt_asientos = $conexionBD->prepare($consulta_asientos);
foreach ($zonas as $zona) {
$stmt_zonas->bind_param("isid", $id_concierto, $zona['nombre_zona'], $zona['capacidad'], $zona['precio']);
$stmt_zonas->execute();
$id_zona = $conexionBD->insert_id;
// Insertar asientos
for ($i = 1; $i <= $zona['capacidad']; $i++) {
$stmt_asientos->bind_param("ii", $id_zona, $i);
$stmt_asientos->execute();
}
}
$stmt_zonas->close();
$stmt_asientos->close();
$conexionBD->commit();
echo json_encode(['insercionCorrecta' => true, 'id_concierto' => $id_concierto]);
} catch (Exception $e) {
$conexionBD->rollback();
echo json_encode(['insercionCorrecta' => false, 'error' => $e->getMessage()]);
}
$conexionBD->close();
?>