parcoursmob/servers/web/exports/fleets.go

67 lines
2.1 KiB
Go

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)
}