package exports import ( "net/http" "git.coopgo.io/coopgo-apps/parcoursmob/core/utils/identification" groupsstorage "git.coopgo.io/coopgo-platform/groups-management/storage" "github.com/rs/zerolog/log" ) func (h *Handler) AllFleetBookings(w http.ResponseWriter, r *http.Request) { // Extract filter parameters from query status := r.URL.Query().Get("status") dateStart := r.URL.Query().Get("date_start") dateEnd := r.URL.Query().Get("date_end") // Get bookings using the admin stats function (all bookings across all groups) result, err := h.applicationHandler.GetBookingsStats(status, dateStart, dateEnd) if err != nil { log.Error().Err(err).Msg("Failed to get all vehicle bookings for export") w.WriteHeader(http.StatusInternalServerError) return } // Convert vehicles map to the format expected by VehicleBookings renderer vehiclesMap := make(map[string]interface{}) for k, v := range result.Vehicles { vehiclesMap[k] = v } // Convert beneficiaries map to the format expected by VehicleBookings renderer driversMap := make(map[string]interface{}) for k, v := range result.BeneficiariesMap { driversMap[k] = v } // Render to Excel h.renderer.XLSX.VehicleBookingsAdmin(w, result.Bookings, vehiclesMap, driversMap, result.Groups) } func (h *Handler) FleetBookingsInGroup(w http.ResponseWriter, r *http.Request) { // Get current group from context (set by middleware) g := r.Context().Value(identification.GroupKey) if g == nil { log.Error().Msg("No group found in context") w.WriteHeader(http.StatusUnauthorized) return } group := g.(groupsstorage.Group) // Extract filter parameters from query status := r.URL.Query().Get("status") dateStart := r.URL.Query().Get("date_start") dateEnd := r.URL.Query().Get("date_end") result, err := h.applicationHandler.GetVehiclesManagementBookingsList(r.Context(), group.ID, status, dateStart, dateEnd) if err != nil { log.Error().Err(err).Msg("Failed to get vehicle bookings for export") w.WriteHeader(http.StatusInternalServerError) return } // Render to Excel h.renderer.XLSX.VehicleBookings(w, result.Bookings, result.VehiclesMap, result.DriversMap) }