ProyectoTicketFei/controladores/obtener_reporte.php

69 lines
2.1 KiB
PHP

<?php
include 'conexion.php'; // Conexión existente
// Verificar si se proporciona una fecha en la solicitud
$fecha = isset($_GET['fecha']) ? $_GET['fecha'] : date("Y-m-d");
// Consulta para verificar si existen ventas en la fecha seleccionada
$sql_verificar = "SELECT COUNT(*) AS total FROM ventas WHERE DATE(fecha_venta) = ?";
$stmt_verificar = $conexionBD->prepare($sql_verificar);
$stmt_verificar->bind_param("s", $fecha);
$stmt_verificar->execute();
$result_verificar = $stmt_verificar->get_result();
$row_verificar = $result_verificar->fetch_assoc();
$stmt_verificar->close();
// Si no hay ventas, devolver un mensaje vacío
if ($row_verificar['total'] == 0) {
echo json_encode([]);
exit;
}
// Consulta principal para obtener ventas por concierto
$sql = "SELECT c.nombre_concierto, v.fecha_venta, COUNT(v.id_venta) AS boletos_vendidos, SUM(b.precio) AS total_ganado, v.id_concierto
FROM ventas v
JOIN boletos b ON v.id_boleto = b.id_boleto
JOIN conciertos c ON v.id_concierto = c.id_concierto
WHERE DATE(v.fecha_venta) = ?
GROUP BY c.nombre_concierto, v.fecha_venta, v.id_concierto";
$stmt = $conexionBD->prepare($sql);
$stmt->bind_param("s", $fecha);
$stmt->execute();
$result = $stmt->get_result();
$data = [];
while ($row = $result->fetch_assoc()) {
$id_concierto = $row['id_concierto'];
// Consulta para obtener los boletos vendidos por zona
$sql_zonas = "SELECT z.nombre_zona, COUNT(b.id_boleto) AS boletos_vendidos
FROM boletos b
JOIN zonas z ON b.id_zona = z.id_zona
WHERE b.id_concierto = ?
GROUP BY z.nombre_zona";
$stmt_zonas = $conexionBD->prepare($sql_zonas);
$stmt_zonas->bind_param("i", $id_concierto);
$stmt_zonas->execute();
$result_zonas = $stmt_zonas->get_result();
$zonas = [];
while ($zona = $result_zonas->fetch_assoc()) {
$zonas[] = $zona;
}
$row['zonas'] = $zonas;
$data[] = $row;
}
// Cerrar consultas
$stmt->close();
$stmt_zonas->close();
// Enviar la respuesta en formato JSON
echo json_encode($data);
exit;
?>