lot of new functionalities
This commit is contained in:
66
servers/web/exports/fleets.go
Normal file
66
servers/web/exports/fleets.go
Normal file
@@ -0,0 +1,66 @@
|
||||
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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user