diff --git a/Interfaz/consultar_asientos.php b/Interfaz/consultar_asientos.php index 0736c17..bc4309e 100644 --- a/Interfaz/consultar_asientos.php +++ b/Interfaz/consultar_asientos.php @@ -1,8 +1,6 @@ <?php -// Incluir el archivo de conexión require 'conexionbd.php'; -// Obtener el artista y el día desde la solicitud (GET o POST) $artista = $_GET['artista'] ?? ''; $dia = $_GET['dia'] ?? ''; @@ -11,20 +9,12 @@ if (empty($artista) || empty($dia)) { } try { - // Consultar los asientos para el artista y día especificados - $stmt = $conn->prepare("SELECT asiento, estado FROM asientos WHERE artista = :artista AND dia = :dia"); + $stmt = $conn->prepare("SELECT id, asiento, estado, precio FROM asientos WHERE artista = :artista AND dia = :dia"); $stmt->execute([':artista' => $artista, ':dia' => $dia]); $asientos = $stmt->fetchAll(PDO::FETCH_ASSOC); - // Mensaje de depuración - error_log("Consulta realizada: Artista = $artista, Día = $dia"); - - // Devolver los asientos en formato JSON - header('Content-Type: application/json'); echo json_encode(['success' => true, 'asientos' => $asientos]); } catch (PDOException $e) { - // Mensaje de error - error_log("Error al consultar los asientos: " . $e->getMessage()); - die(json_encode(['error' => 'Error al consultar los asientos.'])); + die(json_encode(['error' => 'Error al consultar los asientos: ' . $e->getMessage()])); } ?> \ No newline at end of file diff --git a/Interfaz/vender_asientos.php b/Interfaz/vender_asientos.php index a9b0dc0..9999a54 100644 --- a/Interfaz/vender_asientos.php +++ b/Interfaz/vender_asientos.php @@ -1,37 +1,47 @@ <?php -// Incluir el archivo de conexión a la base de datos require 'conexionbd.php'; -// Obtener los datos de la solicitud (en formato JSON) $data = json_decode(file_get_contents('php://input'), true); - -// Extraer los datos recibidos $artista = $data['artista'] ?? ''; $dia = $data['dia'] ?? ''; $asientos = $data['asientos'] ?? []; -// Validar que los datos estén completos if (empty($artista) || empty($dia) || empty($asientos)) { die(json_encode(['error' => 'Faltan parámetros (artista, dia, asientos).'])); } try { - // Preparar la consulta para actualizar el estado de los asientos - $stmt = $conn->prepare("UPDATE asientos SET estado = 'vendido' WHERE artista = :artista AND dia = :dia AND asiento = :asiento"); + // Iniciar una transacción + $conn->beginTransaction(); + + // Registrar la venta y actualizar el estado del asiento + $stmtVenta = $conn->prepare("INSERT INTO ventas (asiento_id, precio) VALUES (:asiento_id, :precio)"); + $stmtAsiento = $conn->prepare("UPDATE asientos SET estado = 'vendido' WHERE id = :id"); - // Actualizar cada asiento en la lista foreach ($asientos as $asiento) { - $stmt->execute([ - ':artista' => $artista, - ':dia' => $dia, - ':asiento' => $asiento - ]); + // Obtener el ID y precio del asiento + $stmt = $conn->prepare("SELECT id, precio FROM asientos WHERE artista = :artista AND dia = :dia AND asiento = :asiento"); + $stmt->execute([':artista' => $artista, ':dia' => $dia, ':asiento' => $asiento]); + $asientoData = $stmt->fetch(PDO::FETCH_ASSOC); + + if ($asientoData) { + // Registrar la venta + $stmtVenta->execute([ + ':asiento_id' => $asientoData['id'], + ':precio' => $asientoData['precio'] + ]); + + // Marcar el asiento como vendido + $stmtAsiento->execute([':id' => $asientoData['id']]); + } } - // Devolver una respuesta de éxito - echo json_encode(['success' => true, 'message' => 'Asientos vendidos actualizados correctamente.']); + // Confirmar la transacción + $conn->commit(); + echo json_encode(['success' => true, 'message' => 'Venta registrada correctamente.']); } catch (PDOException $e) { - // Devolver un mensaje de error en caso de fallo - die(json_encode(['error' => 'Error al actualizar los asientos: ' . $e->getMessage()])); + // Revertir la transacción en caso de error + $conn->rollBack(); + die(json_encode(['error' => 'Error al registrar la venta: ' . $e->getMessage()])); } ?> \ No newline at end of file diff --git a/Interfaz/verificar_e_insertar_asientos.php b/Interfaz/verificar_e_insertar_asientos.php new file mode 100644 index 0000000..4dde4cd --- /dev/null +++ b/Interfaz/verificar_e_insertar_asientos.php @@ -0,0 +1,55 @@ +<?php +require 'conexionbd.php'; + +$data = json_decode(file_get_contents('php://input'), true); +$artista = $data['artista'] ?? ''; +$dias = $data['dias'] ?? []; +$filas = $data['filas'] ?? 0; +$columnas = $data['columnas'] ?? 0; + +if (empty($artista) || empty($dias) || $filas <= 0 || $columnas <= 0) { + die(json_encode(['error' => 'Faltan parámetros (artista, dias, filas, columnas).'])); +} + +try { + // Verificar si ya existen asientos para el artista y los días especificados + $stmt = $conn->prepare("SELECT COUNT(*) AS total FROM asientos WHERE artista = :artista AND dia IN (" . implode(',', $dias) . ")"); + $stmt->execute([':artista' => $artista]); + $resultado = $stmt->fetch(PDO::FETCH_ASSOC); + + if ($resultado['total'] > 0) { + echo json_encode(['message' => 'Los asientos ya existen en la base de datos.']); + exit; + } + + // Insertar los asientos para cada día + $stmt = $conn->prepare("INSERT INTO asientos (artista, dia, asiento, estado, precio) VALUES (:artista, :dia, :asiento, 'disponible', :precio)"); + + foreach ($dias as $dia) { + for ($i = 1; $i <= $filas; $i++) { + for ($j = 0; $j < $columnas; $j++) { + $asiento = $i . chr(65 + $j); // Ej: 1A, 1B, ..., 10L + $precio = obtenerPrecio($i); // Función para calcular el precio según la fila + $stmt->execute([ + ':artista' => $artista, + ':dia' => $dia, + ':asiento' => $asiento, + ':precio' => $precio + ]); + } + } + } + + echo json_encode(['message' => 'Asientos insertados correctamente.']); +} catch (PDOException $e) { + die(json_encode(['error' => 'Error al insertar los asientos: ' . $e->getMessage()])); +} + +// Función para calcular el precio según la fila +function obtenerPrecio($fila) { + if ($fila >= 1 && $fila <= 3) return 4500; + if ($fila >= 4 && $fila <= 7) return 2600; + if ($fila >= 8 && $fila <= 10) return 1300; + return 0; +} +?> \ No newline at end of file