diff --git a/main.go b/main.go index 39a6f6e..27caec6 100644 --- a/main.go +++ b/main.go @@ -311,11 +311,36 @@ func saveApps(apps []App) error { func handleGetReservations(w http.ResponseWriter, r *http.Request) { reservations, err := loadReservations() if err != nil { - http.Error(w, "Failed to load reservations", http.StatusInternalServerError) + http.Error(w, "Nepodařilo se načíst rezervace", http.StatusInternalServerError) return } - // Convert reservations to calendar events + // Get current time + now := time.Now() + + // Filter out expired reservations (ended more than 24 hours ago) + var activeReservations []Reservation + for _, res := range reservations { + // Parse end time + endDateTime, err := time.Parse("2006-01-02 15:04", + fmt.Sprintf("%s %s", res.EndDate, res.EndTime)) + if err != nil { + continue + } // Keep reservation if it ended less than 48 hours ago + if endDateTime.Add(48 * time.Hour).After(now) { + activeReservations = append(activeReservations, res) + } + } + + // If we filtered out any reservations, save the cleaned up list + if len(activeReservations) < len(reservations) { + err = saveReservations(activeReservations) + if err != nil { + log.Printf("Error saving cleaned up reservations: %v", err) + } + } + + // Convert active reservations to calendar events type Event struct { ID string `json:"id"` Title string `json:"title"` @@ -327,16 +352,16 @@ func handleGetReservations(w http.ResponseWriter, r *http.Request) { } var events []Event - for _, res := range reservations { + for _, res := range activeReservations { // Create proper ISO datetime strings - start := fmt.Sprintf("%sT%s:00", res.StartDate, res.StartTime) - end := fmt.Sprintf("%sT%s:00", res.EndDate, res.EndTime) + startDateTime := fmt.Sprintf("%sT%s:00", res.StartDate, res.StartTime) + endDateTime := fmt.Sprintf("%sT%s:00", res.EndDate, res.EndTime) events = append(events, Event{ ID: res.ID, Title: fmt.Sprintf("%s - %s", res.Vehicle, res.DriverName), - Start: start, - End: end, + Start: startDateTime, + End: endDateTime, DriverName: res.DriverName, Vehicle: res.Vehicle, Purpose: res.Purpose, diff --git a/rezervace-aut.html b/rezervace-aut.html index 68afd22..779fb4c 100644 --- a/rezervace-aut.html +++ b/rezervace-aut.html @@ -1199,49 +1199,40 @@ // Filter and sort events const currentAndFutureEvents = events - .filter(event => { - const eventDate = new Date(event.start); - eventDate.setHours(0, 0, 0, 0); - return eventDate >= now; - }) - .sort((a, b) => a.start.getTime() - b.start.getTime()); + .filter(event => event.end >= now) + .sort((a, b) => a.start - b.start); // Update count reservationsCount.textContent = currentAndFutureEvents.length > 0 - ? `Celkem: ${currentAndFutureEvents.length} rezervací` - : ''; + ? `Počet rezervací: ${currentAndFutureEvents.length}` + : 'Žádné aktuální ani budoucí rezervace'; if (currentAndFutureEvents.length === 0) { - reservationsList.innerHTML = '