67 lines
2.1 KiB
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)
|
|
}
|
|
|