diff --git a/apps/frontend/src/features/booking/booking-provider.tsx b/apps/frontend/src/features/booking/booking-provider.tsx index 1b34655..c2422e3 100644 --- a/apps/frontend/src/features/booking/booking-provider.tsx +++ b/apps/frontend/src/features/booking/booking-provider.tsx @@ -147,6 +147,9 @@ function buildSegmentsForCourt( const segments: BookingTimelineSegment[] = []; const slotDuration = court.slotDurationMinutes; + const nowMinutes = timeToMinutes(getNowTime()); + const isToday = isTodayIso(selectedDate); + const availabilityRanges = court.availability .filter((range) => range.dayOfWeek === dayOfWeek) .map((range) => ({ @@ -181,6 +184,9 @@ function buildSegmentsForCourt( slotStart += slotDuration ) { const slotEnd = slotStart + slotDuration; + + if (isToday && slotEnd <= nowMinutes) continue; + const isBooked = courtBookings.some((booking) => overlapsBooking(slotStart, slotEnd, booking) ); diff --git a/apps/frontend/src/features/booking/components/booking-create-dialog.tsx b/apps/frontend/src/features/booking/components/booking-create-dialog.tsx index e1ce1b8..32280d9 100644 --- a/apps/frontend/src/features/booking/components/booking-create-dialog.tsx +++ b/apps/frontend/src/features/booking/components/booking-create-dialog.tsx @@ -26,6 +26,8 @@ import { useBooking } from '../booking-provider'; import { fromIsoDateLocal, getDayOfWeek, + getNowTime, + isTodayIso, minutesToTime, timeToMinutes, toIsoDateLocal, @@ -128,6 +130,9 @@ export function BookingCreateDialog() { minute += selectedCourt.slotDurationMinutes ) { const slotEnd = minute + selectedCourt.slotDurationMinutes; + + if (isTodayIso(date) && minute <= timeToMinutes(getNowTime())) continue; + const isBooked = courtBookings.some((booking) => { const bookingStart = timeToMinutes(booking.startTime); const bookingEnd = timeToMinutes(booking.endTime);