false, 'message' => 'DNI y tipo de cancha son requeridos']); exit; } $tipoDb = ''; if ($tipo === 'futbol' || $tipo === 'F') { $tipoDb = 'F'; } elseif ($tipo === 'padel' || $tipo === 'P') { $tipoDb = 'P'; } if (empty($tipoDb)) { echo json_encode(['success' => false, 'message' => 'Tipo de cancha inválido']); exit; } $dni = mysqli_real_escape_string($conexion, $dni); $sqlCliente = "SELECT ID_Cliente FROM clientes WHERE DNI = '$dni' LIMIT 1"; $resCliente = mysqli_query($conexion, $sqlCliente); if (!$resCliente) { echo json_encode(['success' => false, 'message' => 'Error al buscar cliente: ' . mysqli_error($conexion)]); exit; } $cliente = mysqli_fetch_assoc($resCliente); if (!$cliente) { echo json_encode([ 'success' => true, 'clienteEncontrado' => false, 'cantidadReservas' => 0, 'cantidadFaltas' => 0, 'umbral' => 0, 'descuentoCanchas' => 0, 'duracionCupon' => 0, 'ultimaFecha' => null, 'aplicarDescuento' => false, 'reservasRestantes' => null ]); exit; } $idCliente = intval($cliente['ID_Cliente']); $sqlCancha = "SELECT Cant_Reservas_Cupon, Descuento_Cupon, Cant_Faltas, Duracion_Cupon FROM canchas WHERE Tipo = '$tipoDb' LIMIT 1"; $resCancha = mysqli_query($conexion, $sqlCancha); if (!$resCancha) { echo json_encode(['success' => false, 'message' => 'Error al obtener datos de la cancha: ' . mysqli_error($conexion)]); exit; } $cancha = mysqli_fetch_assoc($resCancha); if (!$cancha) { echo json_encode(['success' => false, 'message' => 'No se encontró el tipo de cancha']); exit; } $umbral = intval($cancha['Cant_Reservas_Cupon']); $descuentoCanchas = floatval($cancha['Descuento_Cupon']); $duracionCupon = intval($cancha['Duracion_Cupon']); $maxFaltas = intval($cancha['Cant_Faltas']); $sqlCupon = "SELECT ID_Cupon, Cantidad_Reservas, Cantidad_Faltas, Ultima_Fecha FROM cupones WHERE ID_Cliente = $idCliente AND Tipo = '$tipoDb' LIMIT 1"; $resCupon = mysqli_query($conexion, $sqlCupon); if (!$resCupon) { echo json_encode(['success' => false, 'message' => 'Error al buscar cupón: ' . mysqli_error($conexion)]); exit; } $cupon = mysqli_fetch_assoc($resCupon); $cantidadReservas = 0; $cantidadFaltas = 0; $ultimaFecha = null; $vencido = false; if ($cupon) { $cantidadReservas = intval($cupon['Cantidad_Reservas']); $cantidadFaltas = intval($cupon['Cantidad_Faltas']); $ultimaFecha = $cupon['Ultima_Fecha']; if ($duracionCupon > 0 && !empty($ultimaFecha)) { $fechaUltima = new DateTime($ultimaFecha); $fechaUltima->modify("+{$duracionCupon} days"); $fechaActual = new DateTime(); if ($fechaActual > $fechaUltima) { $cantidadReservas = 0; $cantidadFaltas = 0; $ultimaFecha = null; $vencido = true; $sqlResetCupon = "UPDATE cupones SET Cantidad_Reservas = 0, Cantidad_Faltas = 0, Ultima_Fecha = NULL, Descuento = 0 WHERE ID_Cupon = {$cupon['ID_Cupon']}"; mysqli_query($conexion, $sqlResetCupon); } } if ($maxFaltas > 0 && $cantidadFaltas > $maxFaltas) { $cantidadReservas = 0; $cantidadFaltas = 0; $ultimaFecha = null; $sqlResetCupon = "UPDATE cupones SET Cantidad_Reservas = 0, Cantidad_Faltas = 0, Ultima_Fecha = NULL, Descuento = 0 WHERE ID_Cupon = {$cupon['ID_Cupon']}"; mysqli_query($conexion, $sqlResetCupon); } } $aplicarDescuento = false; $reservasRestantes = null; if ($umbral > 0) { if (($cantidadReservas + 1) >= $umbral) { $aplicarDescuento = true; $reservasRestantes = 0; } else { $reservasRestantes = $umbral - $cantidadReservas - 1; } } echo json_encode([ 'success' => true, 'clienteEncontrado' => true, 'cantidadReservas' => $cantidadReservas, 'cantidadFaltas' => $cantidadFaltas, 'umbral' => $umbral, 'descuentoCanchas' => $descuentoCanchas, 'duracionCupon' => $duracionCupon, 'ultimaFecha' => $ultimaFecha, 'aplicarDescuento' => $aplicarDescuento, 'reservasRestantes' => $reservasRestantes, 'vencido' => $vencido ]);