1ra Versión
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
require_once 'conexion.php';
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$fecha = isset($_GET['fecha']) ? $_GET['fecha'] : '';
|
||||
$horario_inicio = isset($_GET['horario']) ? $_GET['horario'] : '';
|
||||
$duracion = isset($_GET['duracion']) ? $_GET['duracion'] : 60;
|
||||
$tipo = isset($_GET['tipo']) ? $_GET['tipo'] : '';
|
||||
|
||||
if (empty($fecha) || empty($horario_inicio) || empty($tipo)) {
|
||||
echo json_encode([
|
||||
'success' => false,
|
||||
'message' => 'Parámetros incompletos'
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
try {
|
||||
// Obtener la cantidad total de canchas del tipo especificado
|
||||
$t = mysqli_real_escape_string($conexion, $tipo);
|
||||
$sqlCanchas = "SELECT Cant_Canchas as cantidad_canchas, Duracion as duracion_cancha
|
||||
FROM canchas
|
||||
WHERE Tipo = '$t'";
|
||||
|
||||
$resCanchas = mysqli_query($conexion, $sqlCanchas);
|
||||
|
||||
if (!$resCanchas) {
|
||||
throw new Exception("Error al obtener información de canchas: " . mysqli_error($conexion));
|
||||
}
|
||||
|
||||
$cancha = mysqli_fetch_assoc($resCanchas);
|
||||
$cantidadCanchas = $cancha['cantidad_canchas'];
|
||||
$duracionCancha = $cancha['duracion_cancha'];
|
||||
|
||||
// Convertir horario
|
||||
$horaInicioArr = explode(':', $horario_inicio);
|
||||
$horaInicioMin = intval($horaInicioArr[0]) * 60 + intval($horaInicioArr[1]);
|
||||
$horaFinMin = $horaInicioMin + intval($duracion);
|
||||
|
||||
$horaInicio = $horario_inicio . ':00';
|
||||
$horaFin = sprintf("%02d:%02d", intval($horaFinMin / 60), intval($horaFinMin % 60)) . ':00';
|
||||
|
||||
// Obtener las canchas reservadas para este horario
|
||||
$f = mysqli_real_escape_string($conexion, $fecha);
|
||||
$sqlReservadasPorNumero = "SELECT r.Numero as numero_cancha
|
||||
FROM reservas r
|
||||
INNER JOIN canchas c ON r.ID_Cancha = c.ID_Cancha
|
||||
WHERE c.Tipo = '$t'
|
||||
AND DATE(r.Fecha_Hora) = '$f'
|
||||
AND r.Estado != 2
|
||||
AND (
|
||||
(TIME(r.Fecha_Hora) < '$horaFin' AND ADDTIME(TIME(r.Fecha_Hora), SEC_TO_TIME($duracionCancha * 60)) > '$horaInicio')
|
||||
)
|
||||
GROUP BY r.Numero";
|
||||
|
||||
$resReservadasPorNumero = mysqli_query($conexion, $sqlReservadasPorNumero);
|
||||
|
||||
if (!$resReservadasPorNumero) {
|
||||
throw new Exception("Error al obtener canchas reservadas: " . mysqli_error($conexion));
|
||||
}
|
||||
|
||||
$canchasReservadas = [];
|
||||
while ($row = mysqli_fetch_assoc($resReservadasPorNumero)) {
|
||||
$canchasReservadas[] = intval($row['numero_cancha']);
|
||||
}
|
||||
|
||||
// Construir lista de todas las canchas con su disponibilidad
|
||||
$canchas = [];
|
||||
for ($i = 1; $i <= $cantidadCanchas; $i++) {
|
||||
$canchas[] = [
|
||||
'numero' => $i,
|
||||
'disponible' => !in_array($i, $canchasReservadas)
|
||||
];
|
||||
}
|
||||
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'cantidad_total' => $cantidadCanchas,
|
||||
'canchas' => $canchas,
|
||||
'tipo' => $tipo
|
||||
]);
|
||||
|
||||
} catch (Exception $e) {
|
||||
echo json_encode([
|
||||
'success' => false,
|
||||
'message' => $e->getMessage()
|
||||
]);
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user