diff --git a/src/client/components/admin-bookings.tsx b/src/client/components/admin-bookings.tsx index 7482ac4..7a18f9b 100644 --- a/src/client/components/admin-bookings.tsx +++ b/src/client/components/admin-bookings.tsx @@ -3,6 +3,7 @@ import { useMutation, useQuery } from "@tanstack/react-query"; import { queryClient } from "@/client/rpc-client"; export function AdminBookings() { + const [filterMode, setFilterMode] = useState<"upcoming" | "all" | "date">("upcoming"); const [selectedDate, setSelectedDate] = useState(new Date().toISOString().split('T')[0]); const [selectedPhoto, setSelectedPhoto] = useState(""); const [showPhotoModal, setShowPhotoModal] = useState(false); @@ -139,9 +140,23 @@ export function AdminBookings() { return appointmentDate >= today; }; - const filteredBookings = bookings?.filter(booking => - selectedDate ? booking.appointmentDate === selectedDate : true - ).sort((a, b) => { + // Filter bookings based on selected filter mode + const filteredBookings = bookings?.filter(booking => { + if (filterMode === "upcoming") { + // Show all future bookings (not cancelled) + const bookingDate = new Date(booking.appointmentDate); + const today = new Date(); + today.setHours(0, 0, 0, 0); + bookingDate.setHours(0, 0, 0, 0); + return bookingDate >= today && booking.status !== "cancelled"; + } else if (filterMode === "date") { + // Show bookings for specific date + return booking.appointmentDate === selectedDate; + } else { + // Show all bookings + return true; + } + }).sort((a, b) => { if (a.appointmentDate === b.appointmentDate) { return a.appointmentTime.localeCompare(b.appointmentTime); } @@ -218,22 +233,54 @@ export function AdminBookings() { - {/* Date Filter */} + {/* Filter Section */}
-
- - setSelectedDate(e.target.value)} - className="p-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-pink-500 focus:border-pink-500" - /> - +
+
+ + + + +
+ + {filterMode === "date" && ( +
+ + setSelectedDate(e.target.value)} + className="p-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-pink-500 focus:border-pink-500" + /> +
+ )}
@@ -369,8 +416,10 @@ export function AdminBookings() { {!filteredBookings?.length && (
- {selectedDate + {filterMode === "date" ? `Keine Buchungen für ${new Date(selectedDate).toLocaleDateString()} gefunden` + : filterMode === "upcoming" + ? "Keine zukünftigen Buchungen verfügbar." : "Keine Buchungen verfügbar." }