From 8f20a12bc531d611bdf0753c9ba63383090206b9 Mon Sep 17 00:00:00 2001 From: Nicolas Caron Date: Wed, 3 May 2023 14:29:43 +0200 Subject: [PATCH 01/14] edit config.yaml to add delete_booking route --- handlers/application/vehicles-management.go | 115 ++++++++++++++++++++ main.go | 5 + renderer/vehicle-management.go | 17 +++ 3 files changed, 137 insertions(+) diff --git a/handlers/application/vehicles-management.go b/handlers/application/vehicles-management.go index d2f4e12..c2c2b78 100644 --- a/handlers/application/vehicles-management.go +++ b/handlers/application/vehicles-management.go @@ -491,3 +491,118 @@ func (h ApplicationHandler) VehiclesFleetMakeUnavailable(w http.ResponseWriter, // fmt.Println(vehicles) // h.Renderer.UnbookingVehicles(w, r, vehicles) // } + func (h *ApplicationHandler) UnbookingVehicle(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + bookingid := vars["bookingid"] + + booking, err := h.services.GetBooking(bookingid) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + if r.Method == "POST" { + r.ParseForm() + + newbooking, _ := fleets.BookingFromStorageType(&booking) + + startdate := r.FormValue("startdate") + if startdate != "" { + newstartdate, _ := time.Parse("2006-01-02", startdate) + newbooking.Startdate = timestamppb.New(newstartdate) + + if newstartdate.Before(newbooking.Unavailablefrom.AsTime()) { + newbooking.Unavailablefrom = timestamppb.New(newstartdate) + } + } + + enddate := r.FormValue("enddate") + if enddate != "" { + newenddate, _ := time.Parse("2006-01-02", enddate) + newbooking.Enddate = timestamppb.New(newenddate) + + if newenddate.After(newbooking.Unavailableto.AsTime()) || newenddate.Equal(newbooking.Unavailableto.AsTime()) { + newbooking.Unavailableto = timestamppb.New(newenddate.Add(24 * time.Hour)) + } + } + + unavailablefrom := r.FormValue("unavailablefrom") + if unavailablefrom != "" { + newunavailablefrom, _ := time.Parse("2006-01-02", unavailablefrom) + newbooking.Unavailablefrom = timestamppb.New(newunavailablefrom) + } + + unavailableto := r.FormValue("unavailableto") + if unavailableto != "" { + newunavailableto, _ := time.Parse("2006-01-02", unavailableto) + newbooking.Unavailableto = timestamppb.New(newunavailableto) + } + + request := &fleets.UpdateBookingRequest{ + Booking: newbooking, + } + + _, err := h.services.GRPC.Fleets.UpdateBooking(context.TODO(), request) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + booking = newbooking.ToStorageType() + } + + beneficiary := mobilityaccountsstorage.Account{} + + if booking.Driver != "" { + beneficiaryrequest := &mobilityaccounts.GetAccountRequest{ + Id: booking.Driver, + } + + beneficiaryresp, err := h.services.GRPC.MobilityAccounts.GetAccount(context.TODO(), beneficiaryrequest) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + beneficiary = beneficiaryresp.Account.ToStorageType() + } + + grouprequest := &groupsmanagement.GetGroupRequest{ + Id: booking.Vehicle.Administrators[0], + } + + groupresp, err := h.services.GRPC.GroupsManagement.GetGroup(context.TODO(), grouprequest) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + alternativerequest := &fleets.GetVehiclesRequest{ + Namespaces: []string{"parcoursmob"}, + Types: []string{booking.Vehicle.Type}, + Administrators: booking.Vehicle.Administrators, + AvailabilityFrom: timestamppb.New(booking.Startdate), + AvailabilityTo: timestamppb.New(booking.Enddate.Add(24 * time.Hour)), + } + + alternativeresp, err := h.services.GRPC.Fleets.GetVehicles(context.TODO(), alternativerequest) + if err != nil { + fmt.Println(err) + } + + alternatives := []any{} + + for _, a := range alternativeresp.Vehicles { + alternatives = append(alternatives, a.ToStorageType()) + } + + documents := h.filestorage.List(filestorage.PREFIX_BOOKINGS + "/" + bookingid) + file_types_map := h.config.GetStringMapString("storage.files.file_types") + + h.Renderer.UnbookingVehicle(w, r, booking, booking.Vehicle, beneficiary, groupresp.Group.ToStorageType(), documents, file_types_map, alternatives) + + } \ No newline at end of file diff --git a/main.go b/main.go index 2420d8f..f986df0 100644 --- a/main.go +++ b/main.go @@ -106,6 +106,9 @@ func main() { application.HandleFunc("/vehicles-management/bookings/", applicationHandler.VehiclesManagementBookingsList) application.HandleFunc("/vehicles-management/bookings/{bookingid}", applicationHandler.VehicleManagementBookingDisplay) application.HandleFunc("/vehicles-management/bookings/{bookingid}/change-vehicle", applicationHandler.VehicleManagementBookingChangeVehicle) + /////////////////////////////////////Remove booking vehicle///////////////////////////////////////// + application.HandleFunc("/vehicles-management/bookings/{bookingid}/delete", applicationHandler.UnbookingVehicle) + //////////////////////////////////////////////////////////////////////////////////////////////////// application.HandleFunc("/vehicles-management/bookings/{bookingid}/documents/{document}", applicationHandler.BookingDocumentDownload) application.HandleFunc("/agenda/", applicationHandler.AgendaHome) application.HandleFunc("/agenda/history", applicationHandler.AgendaHistory) @@ -157,6 +160,8 @@ func main() { application.HandleFunc("/agenda/{eventid}/{subscribeid}/delete", applicationHandler.AgendaDeleteSubscribeEvent) application.HandleFunc("/agenda/{eventid}/history", applicationHandler.AgendaHistoryEvent) ///////////////////////////////////////////////////////////////////////////////////////////////////// + + fmt.Println("-> HTTP server listening on", address) srv := &http.Server{ diff --git a/renderer/vehicle-management.go b/renderer/vehicle-management.go index 35558dd..c653d5c 100644 --- a/renderer/vehicle-management.go +++ b/renderer/vehicle-management.go @@ -78,3 +78,20 @@ func (renderer *Renderer) VehicleManagementBookingDisplay(w http.ResponseWriter, renderer.Render("vehicles search", w, r, files, state) } + +func (renderer *Renderer) UnbookingVehicle(w http.ResponseWriter, r *http.Request, booking any, vehicle any, beneficiary any, group any, documents []filestorage.FileInfo, file_types_map map[string]string, alternative_vehicles []any) { + files := renderer.ThemeConfig.GetStringSlice("views.vehicles_management.delete_booking.files") + state := NewState(r, renderer.ThemeConfig, vehiclesmanagementMenu) + state.ViewState = map[string]any{ + "booking": booking, + "vehicle": vehicle, + "beneficiary": beneficiary, + "group": group, + "documents": documents, + "file_types_map": file_types_map, + "alternative_vehicles": alternative_vehicles, + } + + renderer.Render("vehicles search", w, r, files, state) + +} \ No newline at end of file From 31e5eadc73faa01b7e532d2678a77ee36989e7df Mon Sep 17 00:00:00 2001 From: Nicolas Caron Date: Fri, 5 May 2023 15:14:56 +0200 Subject: [PATCH 02/14] edit handlers and renderer for delete a booking vehicle --- handlers/application/vehicles-management.go | 196 +++++++------------- renderer/vehicle-management.go | 10 +- 2 files changed, 64 insertions(+), 142 deletions(-) diff --git a/handlers/application/vehicles-management.go b/handlers/application/vehicles-management.go index c2c2b78..669a451 100644 --- a/handlers/application/vehicles-management.go +++ b/handlers/application/vehicles-management.go @@ -467,142 +467,70 @@ func (h ApplicationHandler) VehiclesFleetMakeUnavailable(w http.ResponseWriter, http.Redirect(w, r, fmt.Sprintf("/app/vehicles-management/fleet/%s", vehicleid), http.StatusFound) } -// func (h *ApplicationHandler) UnbookingVehicles(w http.ResponseWriter, r *http.Request) { -// request := &fleets.GetVehiclesRequest{ -// Namespaces: []string{"parcoursmob"}, -// } -// resp, err := h.services.GRPC.Fleets.GetVehicles(context.TODO(), request) -// if err != nil { -// fmt.Println(err) -// w.WriteHeader(http.StatusInternalServerError) -// } -// vehicles := []fleetsstorage.Vehicle{} -// fmt.Println(resp.Vehicles[0].Bookings) -// for i, vehicle := range resp.Vehicles { -// if len(resp.Vehicles[i].Bookings) == 0 { -// v := vehicle.ToStorageType() -// vehicles = append(vehicles, v) -// } -// } -// // if len(resp.Vehicle.ToStorageType().Bookings) == 0 { -// // h.Renderer.UnbookingVehicles(w, r, resp.Vehicle.ToStorageType()) -// // } -// // fmt.Println(resp.Vehicle.ToStorageType().Bookings) -// fmt.Println(vehicles) -// h.Renderer.UnbookingVehicles(w, r, vehicles) -// } - func (h *ApplicationHandler) UnbookingVehicle(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - bookingid := vars["bookingid"] - - booking, err := h.services.GetBooking(bookingid) +// func (h *ApplicationHandler) UnbookingVehicles(w http.ResponseWriter, r *http.Request) { +// request := &fleets.GetVehiclesRequest{ +// Namespaces: []string{"parcoursmob"}, +// } +// resp, err := h.services.GRPC.Fleets.GetVehicles(context.TODO(), request) +// if err != nil { +// fmt.Println(err) +// w.WriteHeader(http.StatusInternalServerError) +// } +// vehicles := []fleetsstorage.Vehicle{} +// fmt.Println(resp.Vehicles[0].Bookings) +// for i, vehicle := range resp.Vehicles { +// if len(resp.Vehicles[i].Bookings) == 0 { +// v := vehicle.ToStorageType() +// vehicles = append(vehicles, v) +// } +// } +// // if len(resp.Vehicle.ToStorageType().Bookings) == 0 { +// // h.Renderer.UnbookingVehicles(w, r, resp.Vehicle.ToStorageType()) +// // } +// // fmt.Println(resp.Vehicle.ToStorageType().Bookings) +// fmt.Println(vehicles) +// h.Renderer.UnbookingVehicles(w, r, vehicles) +// } +func (h *ApplicationHandler) UnbookingVehicle(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + bookingid := vars["bookingid"] + request := &fleets.GetBookingRequest{ + Bookingid: bookingid, + } + + resp, err := h.services.GRPC.Fleets.GetBooking(context.TODO(), request) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + if r.Method == "POST" { + + request := &fleets.UpdateBookingRequest{ + Booking: &fleets.Booking{ + Id: resp.Booking.Id, + Vehicleid: resp.Booking.Vehicleid, + Driver: resp.Booking.Driver, + Startdate: resp.Booking.Startdate, + Enddate: resp.Booking.Enddate, + Unavailablefrom: resp.Booking.Unavailablefrom, + Unavailableto: resp.Booking.Unavailableto, + Data: resp.Booking.Data, + Deleted: true, + }, + } + + _, err := h.services.GRPC.Fleets.UpdateBooking(context.TODO(), request) + if err != nil { fmt.Println(err) w.WriteHeader(http.StatusInternalServerError) return } - - if r.Method == "POST" { - r.ParseForm() - - newbooking, _ := fleets.BookingFromStorageType(&booking) - - startdate := r.FormValue("startdate") - if startdate != "" { - newstartdate, _ := time.Parse("2006-01-02", startdate) - newbooking.Startdate = timestamppb.New(newstartdate) - - if newstartdate.Before(newbooking.Unavailablefrom.AsTime()) { - newbooking.Unavailablefrom = timestamppb.New(newstartdate) - } - } - - enddate := r.FormValue("enddate") - if enddate != "" { - newenddate, _ := time.Parse("2006-01-02", enddate) - newbooking.Enddate = timestamppb.New(newenddate) - - if newenddate.After(newbooking.Unavailableto.AsTime()) || newenddate.Equal(newbooking.Unavailableto.AsTime()) { - newbooking.Unavailableto = timestamppb.New(newenddate.Add(24 * time.Hour)) - } - } - - unavailablefrom := r.FormValue("unavailablefrom") - if unavailablefrom != "" { - newunavailablefrom, _ := time.Parse("2006-01-02", unavailablefrom) - newbooking.Unavailablefrom = timestamppb.New(newunavailablefrom) - } - - unavailableto := r.FormValue("unavailableto") - if unavailableto != "" { - newunavailableto, _ := time.Parse("2006-01-02", unavailableto) - newbooking.Unavailableto = timestamppb.New(newunavailableto) - } - - request := &fleets.UpdateBookingRequest{ - Booking: newbooking, - } - - _, err := h.services.GRPC.Fleets.UpdateBooking(context.TODO(), request) - if err != nil { - fmt.Println(err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - booking = newbooking.ToStorageType() - } - - beneficiary := mobilityaccountsstorage.Account{} - - if booking.Driver != "" { - beneficiaryrequest := &mobilityaccounts.GetAccountRequest{ - Id: booking.Driver, - } - - beneficiaryresp, err := h.services.GRPC.MobilityAccounts.GetAccount(context.TODO(), beneficiaryrequest) - if err != nil { - fmt.Println(err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - beneficiary = beneficiaryresp.Account.ToStorageType() - } - - grouprequest := &groupsmanagement.GetGroupRequest{ - Id: booking.Vehicle.Administrators[0], - } - - groupresp, err := h.services.GRPC.GroupsManagement.GetGroup(context.TODO(), grouprequest) - if err != nil { - fmt.Println(err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - alternativerequest := &fleets.GetVehiclesRequest{ - Namespaces: []string{"parcoursmob"}, - Types: []string{booking.Vehicle.Type}, - Administrators: booking.Vehicle.Administrators, - AvailabilityFrom: timestamppb.New(booking.Startdate), - AvailabilityTo: timestamppb.New(booking.Enddate.Add(24 * time.Hour)), - } - - alternativeresp, err := h.services.GRPC.Fleets.GetVehicles(context.TODO(), alternativerequest) - if err != nil { - fmt.Println(err) - } - - alternatives := []any{} - - for _, a := range alternativeresp.Vehicles { - alternatives = append(alternatives, a.ToStorageType()) - } - - documents := h.filestorage.List(filestorage.PREFIX_BOOKINGS + "/" + bookingid) - file_types_map := h.config.GetStringMapString("storage.files.file_types") - - h.Renderer.UnbookingVehicle(w, r, booking, booking.Vehicle, beneficiary, groupresp.Group.ToStorageType(), documents, file_types_map, alternatives) - - } \ No newline at end of file + + http.Redirect(w, r, "/app/vehicles-management/", http.StatusFound) + return + } + h.Renderer.UnbookingVehicle(w, r, bookingid) +} diff --git a/renderer/vehicle-management.go b/renderer/vehicle-management.go index c653d5c..c8052f8 100644 --- a/renderer/vehicle-management.go +++ b/renderer/vehicle-management.go @@ -79,19 +79,13 @@ func (renderer *Renderer) VehicleManagementBookingDisplay(w http.ResponseWriter, renderer.Render("vehicles search", w, r, files, state) } -func (renderer *Renderer) UnbookingVehicle(w http.ResponseWriter, r *http.Request, booking any, vehicle any, beneficiary any, group any, documents []filestorage.FileInfo, file_types_map map[string]string, alternative_vehicles []any) { +func (renderer *Renderer) UnbookingVehicle(w http.ResponseWriter, r *http.Request, booking string) { files := renderer.ThemeConfig.GetStringSlice("views.vehicles_management.delete_booking.files") state := NewState(r, renderer.ThemeConfig, vehiclesmanagementMenu) state.ViewState = map[string]any{ "booking": booking, - "vehicle": vehicle, - "beneficiary": beneficiary, - "group": group, - "documents": documents, - "file_types_map": file_types_map, - "alternative_vehicles": alternative_vehicles, } - renderer.Render("vehicles search", w, r, files, state) + renderer.Render("vehicule unbooking", w, r, files, state) } \ No newline at end of file From bfd14d7f4cc54287668da3f76447fdc20a100863 Mon Sep 17 00:00:00 2001 From: Nicolas Caron Date: Wed, 10 May 2023 09:52:57 +0200 Subject: [PATCH 03/14] edit handlers vehicle-management for unbooking a vehicle --- go.mod | 2 +- handlers/application/vehicles-management.go | 5 +++-- renderer/vehicle-management.go | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index d7682bc..99a2150 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ go 1.18 // replace git.coopgo.io/coopgo-platform/groups-management => ../../coopgo-platform/groups-management/ -// replace git.coopgo.io/coopgo-platform/fleets => ../../coopgo-platform/fleets/ +replace git.coopgo.io/coopgo-platform/fleets => ../../coopgo-platform/fleets/ // replace git.coopgo.io/coopgo-platform/agenda => ../../coopgo-platform/agenda/ diff --git a/handlers/application/vehicles-management.go b/handlers/application/vehicles-management.go index 669a451..2e71e06 100644 --- a/handlers/application/vehicles-management.go +++ b/handlers/application/vehicles-management.go @@ -494,6 +494,7 @@ func (h ApplicationHandler) VehiclesFleetMakeUnavailable(w http.ResponseWriter, func (h *ApplicationHandler) UnbookingVehicle(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) bookingid := vars["bookingid"] + request := &fleets.GetBookingRequest{ Bookingid: bookingid, } @@ -515,7 +516,7 @@ func (h *ApplicationHandler) UnbookingVehicle(w http.ResponseWriter, r *http.Req Startdate: resp.Booking.Startdate, Enddate: resp.Booking.Enddate, Unavailablefrom: resp.Booking.Unavailablefrom, - Unavailableto: resp.Booking.Unavailableto, + Unavailableto: timestamppb.New(time.Now().Add(-48 * time.Hour)), Data: resp.Booking.Data, Deleted: true, }, @@ -532,5 +533,5 @@ func (h *ApplicationHandler) UnbookingVehicle(w http.ResponseWriter, r *http.Req http.Redirect(w, r, "/app/vehicles-management/", http.StatusFound) return } - h.Renderer.UnbookingVehicle(w, r, bookingid) + h.Renderer.UnbookingVehicle(w, r, resp.Booking.ToStorageType()) } diff --git a/renderer/vehicle-management.go b/renderer/vehicle-management.go index c8052f8..77e8dc5 100644 --- a/renderer/vehicle-management.go +++ b/renderer/vehicle-management.go @@ -79,7 +79,7 @@ func (renderer *Renderer) VehicleManagementBookingDisplay(w http.ResponseWriter, renderer.Render("vehicles search", w, r, files, state) } -func (renderer *Renderer) UnbookingVehicle(w http.ResponseWriter, r *http.Request, booking string) { +func (renderer *Renderer) UnbookingVehicle(w http.ResponseWriter, r *http.Request, booking any) { files := renderer.ThemeConfig.GetStringSlice("views.vehicles_management.delete_booking.files") state := NewState(r, renderer.ThemeConfig, vehiclesmanagementMenu) state.ViewState = map[string]any{ From f26d792b8ba64b829d09338a533dc6e259b3b744 Mon Sep 17 00:00:00 2001 From: Nicolas Caron Date: Fri, 12 May 2023 11:05:42 +0200 Subject: [PATCH 04/14] edit vehicles-management handler --- handlers/application/vehicles-management.go | 66 +++++++++++++++++++-- 1 file changed, 62 insertions(+), 4 deletions(-) diff --git a/handlers/application/vehicles-management.go b/handlers/application/vehicles-management.go index 2e71e06..b61f436 100644 --- a/handlers/application/vehicles-management.go +++ b/handlers/application/vehicles-management.go @@ -45,7 +45,9 @@ func (h *ApplicationHandler) VehiclesManagementOverview(w http.ResponseWriter, r vehicleBookings := []fleetsstorage.Booking{} for _, b := range v.Bookings { if b.Status() != fleetsstorage.StatusOld { - bookings = append(bookings, b) + if deleted, ok := b.Data["Deleted"].(bool); !ok && !deleted { + bookings = append(bookings, b) + } } if b.Unavailableto.After(time.Now()) { vehicleBookings = append(vehicleBookings, b) @@ -505,6 +507,63 @@ func (h *ApplicationHandler) UnbookingVehicle(w http.ResponseWriter, r *http.Req w.WriteHeader(http.StatusInternalServerError) return } + now := time.Now() + date := now.Format("2006-01-02") + unavailableto, _ := time.Parse("2006-01-02", date) + + current_group, err := h.currentGroup(r) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + current_user_token, current_user_claims, err := h.currentUser(r) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + booked_by_id := resp.Booking.Data.Fields["booked_by"].GetStructValue().Fields["user"].GetStructValue().Fields["id"].GetStringValue() + booked_by_name := resp.Booking.Data.Fields["booked_by"].GetStructValue().Fields["user"].GetStructValue().Fields["display_name"].GetStringValue() + booked_by_email := resp.Booking.Data.Fields["booked_by"].GetStructValue().Fields["user"].GetStructValue().Fields["email"].GetStringValue() + booked_by_group_id := resp.Booking.Data.Fields["booked_by"].GetStructValue().Fields["group"].GetStructValue().Fields["id"].GetStringValue() + booked_by_group_name := resp.Booking.Data.Fields["booked_by"].GetStructValue().Fields["group"].GetStructValue().Fields["name"].GetStringValue() + + data := map[string]any{ + "booked_by": map[string]any{ + "user": map[string]any{ + "id": booked_by_id, + "display_name": booked_by_name, + "email": booked_by_email, + }, + "group": map[string]any{ + "id": booked_by_group_id, + "name": booked_by_group_name, + }, + }, + "unbooked_by": map[string]any{ + "user": map[string]any{ + "id": current_user_token.Subject, + "display_name": current_user_claims["first_name"].(string) + " " + current_user_claims["last_name"].(string), + "email": current_user_claims["email"], + }, + "group": map[string]any{ + "id": current_group.ID, + "name": current_group.Data["name"], + }, + }, + "Deleted": true, + "motif": r.FormValue("motif"), + } + + datapb, err := structpb.NewStruct(data) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } if r.Method == "POST" { @@ -516,9 +575,8 @@ func (h *ApplicationHandler) UnbookingVehicle(w http.ResponseWriter, r *http.Req Startdate: resp.Booking.Startdate, Enddate: resp.Booking.Enddate, Unavailablefrom: resp.Booking.Unavailablefrom, - Unavailableto: timestamppb.New(time.Now().Add(-48 * time.Hour)), - Data: resp.Booking.Data, - Deleted: true, + Unavailableto: timestamppb.New(unavailableto), + Data: datapb, }, } From 1aeb6d50efa5c1cf952e53f544a8a40e6edc7669 Mon Sep 17 00:00:00 2001 From: soukainna Date: Fri, 12 May 2023 12:59:16 +0200 Subject: [PATCH 05/14] add logic fuction to update vehicles --- handlers/application/vehicles-management.go | 142 ++++++++++++-------- 1 file changed, 83 insertions(+), 59 deletions(-) diff --git a/handlers/application/vehicles-management.go b/handlers/application/vehicles-management.go index 29201ad..2e61335 100644 --- a/handlers/application/vehicles-management.go +++ b/handlers/application/vehicles-management.go @@ -52,14 +52,6 @@ func (h *ApplicationHandler) VehiclesManagementOverview(w http.ResponseWriter, r } } - // vehiicles := []fleetsstorage.Vehicle{} - // for i, vehiicle := range resp.Vehicles { - // if len(resp.Vehicles[i].Bookings) == 0 { - // v := vehiicle.ToStorageType() - // vehiicles = append(vehiicles, v) - // } - // } - //fmt.Println(vehiicles) sort.Sort(sorting.VehiclesByLicencePlate(vehicles)) sort.Sort(sorting.BookingsByStartdate(bookings)) h.Renderer.VehiclesManagementOverview(w, r, vehicles, vehicles_map, bookings) @@ -190,36 +182,10 @@ func (h *ApplicationHandler) VehiclesFleetDisplay(w http.ResponseWriter, r *http w.WriteHeader(http.StatusInternalServerError) return } - // if len(resp.Vehicle.ToStorageType().Bookings) == 0 { - // fmt.Println("lol") - // } - // fmt.Println(resp.Vehicle.ToStorageType().Bookings) + h.Renderer.VehiclesFleetDisplay(w, r, resp.Vehicle.ToStorageType()) } -func (h *ApplicationHandler) VehiclesFleetUpdate(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - vehicleid := vars["vehicleid"] - - if r.Method == "POST" { - w.WriteHeader(http.StatusNotFound) - return - } - - request := &fleets.GetVehicleRequest{ - Vehicleid: vehicleid, - } - - resp, err := h.services.GRPC.Fleets.GetVehicle(context.TODO(), request) - if err != nil { - fmt.Println(err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - h.Renderer.VehiclesFleetUpdate(w, r, resp.Vehicle.ToStorageType()) -} - func filterVehicle(r *http.Request, v *fleets.Vehicle) bool { g := r.Context().Value(identification.GroupKey) if g == nil { @@ -467,27 +433,85 @@ func (h ApplicationHandler) VehiclesFleetMakeUnavailable(w http.ResponseWriter, http.Redirect(w, r, fmt.Sprintf("/app/vehicles-management/fleet/%s", vehicleid), http.StatusFound) } -// func (h *ApplicationHandler) UnbookingVehicles(w http.ResponseWriter, r *http.Request) { -// request := &fleets.GetVehiclesRequest{ -// Namespaces: []string{"parcoursmob"}, -// } -// resp, err := h.services.GRPC.Fleets.GetVehicles(context.TODO(), request) -// if err != nil { -// fmt.Println(err) -// w.WriteHeader(http.StatusInternalServerError) -// } -// vehicles := []fleetsstorage.Vehicle{} -// fmt.Println(resp.Vehicles[0].Bookings) -// for i, vehicle := range resp.Vehicles { -// if len(resp.Vehicles[i].Bookings) == 0 { -// v := vehicle.ToStorageType() -// vehicles = append(vehicles, v) -// } -// } -// // if len(resp.Vehicle.ToStorageType().Bookings) == 0 { -// // h.Renderer.UnbookingVehicles(w, r, resp.Vehicle.ToStorageType()) -// // } -// // fmt.Println(resp.Vehicle.ToStorageType().Bookings) -// fmt.Println(vehicles) -// h.Renderer.UnbookingVehicles(w, r, vehicles) -// } +////////////////////////UpdateVehicle/////////////////////// + +func (h *ApplicationHandler) VehiclesFleetUpdate(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + vehicleID := vars["vehicleid"] + request := &fleets.GetVehicleRequest{ + Vehicleid: vehicleID, + } + + resp, err := h.services.GRPC.Fleets.GetVehicle(context.TODO(), request) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + namespaceV := resp.Vehicle.Namespace + //typeV := resp.Vehicle.Type + administratorsV := resp.Vehicle.Administrators + + if r.Method == "POST" { + fmt.Print(r.FormValue("vehicle_type")) + if err := r.ParseForm(); err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusBadRequest) + return + } + dataMap := map[string]any{} + if v := r.FormValue("name"); v != "" { + dataMap["name"] = v + } + if v := r.FormValue("address"); v != "" { + var address map[string]any + err := json.Unmarshal([]byte(v), &address) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + dataMap["address"] = address + } + if v := r.FormValue("informations"); v != "" { + dataMap["informations"] = v + } + if v := r.FormValue("licence_plate"); v != "" { + dataMap["licence_plate"] = v + } + if v := r.FormValue("automatic"); v != "" { + fmt.Println(v) + dataMap["automatic"] = (v == "on") + } + + data, err := structpb.NewValue(dataMap) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + request := &fleets.UpdateVehicleRequest{ + Vehicle: &fleets.Vehicle{ + Id: vehicleID, + Namespace: namespaceV, + Type: r.FormValue("type"), + Administrators: administratorsV, + Data: data.GetStructValue(), + }, + } + + resp, err := h.services.GRPC.Fleets.UpdateVehicle(context.TODO(), request) + + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + http.Redirect(w, r, fmt.Sprintf("/app/vehicles-management/fleet/%s", resp.Vehicle.Id), http.StatusFound) + return + } + vehicles_types := h.config.GetStringSlice("modules.fleets.vehicle_types") + h.Renderer.VehiclesFleetUpdate(w, r, resp.Vehicle.ToStorageType(), vehicles_types) +} From d5bc764ef3d3b682a272665ed1f5aaa088f583c2 Mon Sep 17 00:00:00 2001 From: soukainna Date: Fri, 12 May 2023 13:00:19 +0200 Subject: [PATCH 06/14] fix err --- go.sum | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/go.sum b/go.sum index ad66265..61996dc 100644 --- a/go.sum +++ b/go.sum @@ -40,6 +40,8 @@ git.coopgo.io/coopgo-platform/agenda v0.0.0-20221017030035-4a26fc791c5b h1:7kLW1 git.coopgo.io/coopgo-platform/agenda v0.0.0-20221017030035-4a26fc791c5b/go.mod h1:wqPvfYmzGF2cfXbs8XE1P2j5UYqZwp/La0llkl7dUkc= git.coopgo.io/coopgo-platform/agenda v0.0.0-20221205162112-5feb1b720ef9 h1:aP/OxSxOUM7D5PcIs+VSU90Pyy+SSUOOM54FZvPmZ8w= git.coopgo.io/coopgo-platform/agenda v0.0.0-20221205162112-5feb1b720ef9/go.mod h1:wqPvfYmzGF2cfXbs8XE1P2j5UYqZwp/La0llkl7dUkc= +git.coopgo.io/coopgo-platform/agenda v0.0.0-20230310121901-ef3add576f86 h1:pSNHhPU8NB35G14QsSyw/XwsTWZo0qGB0U0X0gzqR1s= +git.coopgo.io/coopgo-platform/agenda v0.0.0-20230310121901-ef3add576f86/go.mod h1:7jVyZSz//VW5+jlLeuwc+JJawNUhJZ7Vima+TdVwKfs= git.coopgo.io/coopgo-platform/emailing v0.0.0-20221017030337-c71888d90c15 h1:+ZI4nGE6mqZ6pc7N/BizheEPRXn6Z84Sj7ikwfP2ZcU= git.coopgo.io/coopgo-platform/emailing v0.0.0-20221017030337-c71888d90c15/go.mod h1:rmbqiHVkONcECOoPlsXlxZnD315Tiz2oRnn1M7646Kg= git.coopgo.io/coopgo-platform/fleets v0.0.0-20221101232521-da16c90fc3ba h1:clfkgihzYa3xWKSY/Sn6VUSydOReh7cpuihvYNkWjNk= @@ -48,10 +50,14 @@ git.coopgo.io/coopgo-platform/fleets v0.0.0-20221205162030-cecdcb20e1d5 h1:HL/M6 git.coopgo.io/coopgo-platform/fleets v0.0.0-20221205162030-cecdcb20e1d5/go.mod h1:s9OIFCNcjBAbBzRNHwoCTYV6kAntPG9CpT3GVweGdTY= git.coopgo.io/coopgo-platform/fleets v0.0.0-20221205181518-91991789db9b h1:wvK1V8fFmHgnzVyleEF6Jq0Jcp5cVpPfW7WjMYiTTrE= git.coopgo.io/coopgo-platform/fleets v0.0.0-20221205181518-91991789db9b/go.mod h1:s9OIFCNcjBAbBzRNHwoCTYV6kAntPG9CpT3GVweGdTY= +git.coopgo.io/coopgo-platform/fleets v0.0.0-20230310144446-feb935f8bf4e h1:eHahRTKlC8aBWYCd6LbXNcX8HoQhuZj31OFWrw0EL0U= +git.coopgo.io/coopgo-platform/fleets v0.0.0-20230310144446-feb935f8bf4e/go.mod h1:s9OIFCNcjBAbBzRNHwoCTYV6kAntPG9CpT3GVweGdTY= git.coopgo.io/coopgo-platform/groups-management v0.0.0-20221017025751-671dc9a2c544 h1:rMLP77uIEequVXXZ0X9G1iK2k+xvW/+58ggwxxI6gqY= git.coopgo.io/coopgo-platform/groups-management v0.0.0-20221017025751-671dc9a2c544/go.mod h1:lozSy6qlIIYhvKKXscZzz28HAtS0qBDUTv5nofLRmYA= git.coopgo.io/coopgo-platform/groups-management v0.0.0-20221205161801-9705c8d898f0 h1:CnLKO1kzoGtaqPhDqfOX3WPRFRcJVJZdGzPdBE4X//w= git.coopgo.io/coopgo-platform/groups-management v0.0.0-20221205161801-9705c8d898f0/go.mod h1:lozSy6qlIIYhvKKXscZzz28HAtS0qBDUTv5nofLRmYA= +git.coopgo.io/coopgo-platform/groups-management v0.0.0-20230310123255-5ef94ee0746c h1:bY7PyrAgYY02f5IpDyf1WVfRqvWzivu31K6aEAYbWCw= +git.coopgo.io/coopgo-platform/groups-management v0.0.0-20230310123255-5ef94ee0746c/go.mod h1:lozSy6qlIIYhvKKXscZzz28HAtS0qBDUTv5nofLRmYA= git.coopgo.io/coopgo-platform/mobility-accounts v0.0.0-20220906130339-b9a32e41bffe h1:4OKwfKybR0VsIw2dSM9RtqGWveWPt+JjtiiMIBrg/w0= git.coopgo.io/coopgo-platform/mobility-accounts v0.0.0-20220906130339-b9a32e41bffe/go.mod h1:1typNYtO+PQT6KG77vs/PUv0fO60/nbeSGZL2tt1LLg= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= From 93cab33fb9e7ddee8ac69aabf922212bff376d79 Mon Sep 17 00:00:00 2001 From: soukainna Date: Fri, 19 May 2023 10:19:06 +0200 Subject: [PATCH 07/14] update vehicle --- renderer/vehicle-management.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/renderer/vehicle-management.go b/renderer/vehicle-management.go index 35558dd..217d53c 100644 --- a/renderer/vehicle-management.go +++ b/renderer/vehicle-management.go @@ -53,11 +53,12 @@ func (renderer *Renderer) VehiclesFleetDisplay(w http.ResponseWriter, r *http.Re renderer.Render("fleet display vehicle", w, r, files, state) } -func (renderer *Renderer) VehiclesFleetUpdate(w http.ResponseWriter, r *http.Request, vehicle any) { +func (renderer *Renderer) VehiclesFleetUpdate(w http.ResponseWriter, r *http.Request, vehicle any, vehicle_types []string) { files := renderer.ThemeConfig.GetStringSlice("views.vehicles_management.fleet_update.files") state := NewState(r, renderer.ThemeConfig, vehiclesmanagementMenu) state.ViewState = map[string]any{ - "vehicle": vehicle, + "vehicle": vehicle, + "vehicle_types": vehicle_types, } renderer.Render("fleet display vehicle", w, r, files, state) From 96823f328958f3e549b91f799611bdc0c36400e0 Mon Sep 17 00:00:00 2001 From: soukainna Date: Fri, 19 May 2023 10:19:30 +0200 Subject: [PATCH 08/14] update vehicle --- go.mod | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 357eb5d..6f4ef4a 100644 --- a/go.mod +++ b/go.mod @@ -4,11 +4,11 @@ go 1.18 // replace git.coopgo.io/coopgo-platform/mobility-accounts => ../../coopgo-platform/mobility-accounts/ -replace git.coopgo.io/coopgo-platform/groups-management => ../../coopgo-platform/groups-management/ +// replace git.coopgo.io/coopgo-platform/groups-management => ../../coopgo-platform/groups-management/ // replace git.coopgo.io/coopgo-platform/fleets => ../../coopgo-platform/fleets/ -replace git.coopgo.io/coopgo-platform/agenda => ../../coopgo-platform/agenda/ +// replace git.coopgo.io/coopgo-platform/agenda => ../../coopgo-platform/agenda/ // replace git.coopgo.io/coopgo-platform/emailing => ../../coopgo-platform/emailing/ @@ -30,10 +30,10 @@ require ( ) require ( - git.coopgo.io/coopgo-platform/agenda v0.0.0-20221205162112-5feb1b720ef9 + git.coopgo.io/coopgo-platform/agenda v0.0.0-20230310121901-ef3add576f86 git.coopgo.io/coopgo-platform/emailing v0.0.0-20221017030337-c71888d90c15 - git.coopgo.io/coopgo-platform/fleets v0.0.0-20221205181518-91991789db9b - git.coopgo.io/coopgo-platform/groups-management v0.0.0-20221205161801-9705c8d898f0 + git.coopgo.io/coopgo-platform/fleets v0.0.0-20230310144446-feb935f8bf4e + git.coopgo.io/coopgo-platform/groups-management v0.0.0-20230310123255-5ef94ee0746c git.coopgo.io/coopgo-platform/mobility-accounts v0.0.0-20220906130339-b9a32e41bffe github.com/gorilla/securecookie v1.1.1 github.com/minio/minio-go/v7 v7.0.43 From 3bfd2e1bfe5359aa8c05f3e002e71b4bced45ad8 Mon Sep 17 00:00:00 2001 From: soukainna Date: Fri, 19 May 2023 10:50:15 +0200 Subject: [PATCH 09/14] fix err merge --- handlers/application/vehicles-management.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/handlers/application/vehicles-management.go b/handlers/application/vehicles-management.go index b3c4632..f56c833 100644 --- a/handlers/application/vehicles-management.go +++ b/handlers/application/vehicles-management.go @@ -59,10 +59,7 @@ func (h *ApplicationHandler) VehiclesManagementOverview(w http.ResponseWriter, r } } -<<<<<<< HEAD -======= ->>>>>>> modifyVehicle sort.Sort(sorting.VehiclesByLicencePlate(vehicles)) sort.Sort(sorting.BookingsByStartdate(bookings)) h.Renderer.VehiclesManagementOverview(w, r, vehicles, vehicles_map, bookings) @@ -532,7 +529,7 @@ func (h *ApplicationHandler) UnbookingVehicle(w http.ResponseWriter, r *http.Req }, }, "Deleted": true, - "motif": r.FormValue("motif"), + "motif": r.FormValue("motif"), } datapb, err := structpb.NewStruct(data) @@ -653,4 +650,3 @@ func (h *ApplicationHandler) VehiclesFleetUpdate(w http.ResponseWriter, r *http. vehicles_types := h.config.GetStringSlice("modules.fleets.vehicle_types") h.Renderer.VehiclesFleetUpdate(w, r, resp.Vehicle.ToStorageType(), vehicles_types) } - From 4fe479c1fb963a6b50a8fb519bd9fc1824ab2195 Mon Sep 17 00:00:00 2001 From: Nicolas Caron Date: Thu, 1 Jun 2023 10:59:21 +0200 Subject: [PATCH 10/14] edit exports/fleets --- handlers/exports/fleets.go | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/handlers/exports/fleets.go b/handlers/exports/fleets.go index 381f4e2..d4ac2c0 100644 --- a/handlers/exports/fleets.go +++ b/handlers/exports/fleets.go @@ -45,6 +45,7 @@ func (h *ExportsHandler) Bookings(w http.ResponseWriter, r *http.Request) { } + groups := map[string]groupsstorage.Group{} admingroups, err := h.services.GRPC.GroupsManagement.GetGroups(context.TODO(), &groupsmanagement.GetGroupsRequest{ @@ -106,14 +107,38 @@ func (h *ExportsHandler) Bookings(w http.ResponseWriter, r *http.Request) { bookedby := "" if v, ok := b.Data["booked_by"].(map[string]any); ok { - if v2, ok := v["group"].(map[string]any); ok { - if v3, ok := v2["name"].(string); ok { + if v2, ok := v["user"].(map[string]any); ok { + if v3, ok := v2["display_name"].(string); ok { bookedby = v3 } } } + bookedbygroup := "" + if v4, ok := b.Data["booked_by"].(map[string]any); ok { + if v5, ok := v4["group"].(map[string]any); ok { + if v6, ok := v5["id"].(string); ok { + bookedbygroup = v6 + } + } + } + fmt.Println("\n"+bookedbygroup+"\n") + + // for _, a := range vehicle.Administrators { + // if a == bookedbygroup { + // fmt.Println("\n"+a+"\n") + // } + // } + + // group := "" + + // fmt.Printf("\n"+group+"\n") + + // if bookedbygroup == group { + // continue + // } + beneficiary := beneficiaries_map[b.Driver] adminunavailability := false From ddb08cf6713fdc7c4c82fadec40394fc489a4c62 Mon Sep 17 00:00:00 2001 From: Nicolas Caron Date: Thu, 1 Jun 2023 14:11:03 +0200 Subject: [PATCH 11/14] add export agenda by Salim --- handlers/exports/agenda.go | 165 +++++++++++++++++++++++++------------ main.go | 4 +- 2 files changed, 115 insertions(+), 54 deletions(-) diff --git a/handlers/exports/agenda.go b/handlers/exports/agenda.go index f6de827..67f0ec2 100644 --- a/handlers/exports/agenda.go +++ b/handlers/exports/agenda.go @@ -3,9 +3,6 @@ package exports import ( "context" "fmt" - "net/http" - "sort" - "git.coopgo.io/coopgo-apps/parcoursmob/utils/sorting" agenda "git.coopgo.io/coopgo-platform/agenda/grpcapi" agendastorage "git.coopgo.io/coopgo-platform/agenda/storage" @@ -13,69 +10,129 @@ import ( groupsstorage "git.coopgo.io/coopgo-platform/groups-management/storage" accounts "git.coopgo.io/coopgo-platform/mobility-accounts/grpcapi" accountsstorage "git.coopgo.io/coopgo-platform/mobility-accounts/storage" + "github.com/gorilla/mux" "github.com/xuri/excelize/v2" + "net/http" + "sort" ) -func (h *ExportsHandler) Agenda(w http.ResponseWriter, r *http.Request) { - resp, err := h.services.GRPC.Agenda.GetEvents(context.TODO(), &agenda.GetEventsRequest{ - Namespaces: []string{"parcoursmob_dispositifs"}, - }) +func (h *ExportsHandler) Agenda(filter string) func(w http.ResponseWriter, r *http.Request) { + switch filter { + case "allEvents": + return func(w http.ResponseWriter, r *http.Request) { + resp, err := h.services.GRPC.Agenda.GetEvents(context.TODO(), &agenda.GetEventsRequest{ + Namespaces: []string{"parcoursmob_dispositifs"}, + }) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } - if err != nil { - fmt.Println(err) - w.WriteHeader(http.StatusInternalServerError) - return - } + events := []agendastorage.Event{} - events := []agendastorage.Event{} + groupids := []string{} + beneficiaries_ids := []string{} + for _, e := range resp.Events { + groupids = append(groupids, e.Owners...) + events = append(events, e.ToStorageType()) - groupids := []string{} - beneficiaries_ids := []string{} - for _, e := range resp.Events { - groupids = append(groupids, e.Owners...) - events = append(events, e.ToStorageType()) + for _, subscriptions := range e.Subscriptions { + beneficiaries_ids = append(beneficiaries_ids, subscriptions.Subscriber) + } + } + + sort.Sort(sorting.EventsByStartdate(events)) + + groupsresp, err := h.services.GRPC.GroupsManagement.GetGroupsBatch(context.TODO(), &groupsmanagement.GetGroupsBatchRequest{ + Groupids: groupids, + }) + groups := map[string]groupsstorage.Group{} + + if err == nil { + for _, g := range groupsresp.Groups { + groups[g.Id] = g.ToStorageType() + } + } + + beneficiaries, err := h.services.GRPC.MobilityAccounts.GetAccountsBatch(context.TODO(), &accounts.GetAccountsBatchRequest{ + Accountids: beneficiaries_ids, + }) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + beneficiaries_map := map[string]accountsstorage.Account{} + for _, ben := range beneficiaries.Accounts { + beneficiaries_map[ben.Id] = ben.ToStorageType() + } + + f := h.generateExcel(events, groups, beneficiaries_map) + + h.writeFileResponse(f, w) + } + + case "oneEvent": + return func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + eventId := vars["eventid"] + resp, err := h.services.GRPC.Agenda.GetEvent(context.TODO(), &agenda.GetEventRequest{ + Id: eventId, + }) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + groupids := []string{} + beneficiaries_ids := []string{} + groupids = append(groupids, resp.Event.Owners...) + for _, subscriptions := range resp.Event.Subscriptions { + beneficiaries_ids = append(beneficiaries_ids, subscriptions.Subscriber) + } + groupsresp, err := h.services.GRPC.GroupsManagement.GetGroupsBatch(context.TODO(), &groupsmanagement.GetGroupsBatchRequest{ + Groupids: groupids, + }) + groups := map[string]groupsstorage.Group{} + + if err == nil { + for _, g := range groupsresp.Groups { + groups[g.Id] = g.ToStorageType() + } + } + + beneficiaries, err := h.services.GRPC.MobilityAccounts.GetAccountsBatch(context.TODO(), &accounts.GetAccountsBatchRequest{ + Accountids: beneficiaries_ids, + }) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + beneficiaries_map := map[string]accountsstorage.Account{} + for _, ben := range beneficiaries.Accounts { + beneficiaries_map[ben.Id] = ben.ToStorageType() + } + + f := h.generateExcel([]agendastorage.Event{resp.Event.ToStorageType()}, groups, beneficiaries_map) + h.writeFileResponse(f, w) - for _, subscriptions := range e.Subscriptions { - beneficiaries_ids = append(beneficiaries_ids, subscriptions.Subscriber) } } + return nil +} - sort.Sort(sorting.EventsByStartdate(events)) - - groupsresp, err := h.services.GRPC.GroupsManagement.GetGroupsBatch(context.TODO(), &groupsmanagement.GetGroupsBatchRequest{ - Groupids: groupids, - }) - groups := map[string]groupsstorage.Group{} - - if err == nil { - for _, g := range groupsresp.Groups { - groups[g.Id] = g.ToStorageType() - } - } - - beneficiaries, err := h.services.GRPC.MobilityAccounts.GetAccountsBatch(context.TODO(), &accounts.GetAccountsBatchRequest{ - Accountids: beneficiaries_ids, - }) - if err != nil { - fmt.Println(err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - beneficiaries_map := map[string]accountsstorage.Account{} - for _, ben := range beneficiaries.Accounts { - beneficiaries_map[ben.Id] = ben.ToStorageType() - } - - /////////////// Generate file - +func (h *ExportsHandler) generateExcel(events []agendastorage.Event, groups map[string]groupsstorage.Group, + beneficiaries_map map[string]accountsstorage.Account) *excelize.File { f := excelize.NewFile() defer func() { if err := f.Close(); err != nil { fmt.Println(err) } }() - f.SetCellValue("Sheet1", "A1", "Evénement") f.SetCellValue("Sheet1", "B1", "Date de début") f.SetCellValue("Sheet1", "C1", "Date de fin") @@ -85,8 +142,6 @@ func (h *ExportsHandler) Agenda(w http.ResponseWriter, r *http.Request) { f.SetCellValue("Sheet1", "G1", "Prescipteur") f.SetCellValue("Sheet1", "H1", "Prescipteur Nom") f.SetCellValue("Sheet1", "I1", "Gestionnaire événement") - // f.SetCellValue("Sheet1", "I1", "Prescripteur téléphone") - i := 2 for _, e := range events { if len(e.Owners) == 0 { @@ -128,10 +183,14 @@ func (h *ExportsHandler) Agenda(w http.ResponseWriter, r *http.Request) { } } + return f +} + +func (h *ExportsHandler) writeFileResponse(file *excelize.File, w http.ResponseWriter) { w.Header().Set("Content-Type", "application/octet-stream") w.Header().Set("Content-Disposition", "attachment; filename="+"Workbook.xlsx") w.Header().Set("Content-Transfer-Encoding", "binary") w.Header().Set("Expires", "0") - f.Write(w) + file.Write(w) } diff --git a/main.go b/main.go index 551d89c..a09edee 100644 --- a/main.go +++ b/main.go @@ -166,7 +166,9 @@ func main() { export := r.PathPrefix("/exports").Subrouter() export.HandleFunc("/fleets/bookings", exportsHandler.Bookings) - export.HandleFunc("/agenda/subscriptions", exportsHandler.Agenda) + export.HandleFunc("/fleets/bookings/{groupid}", exportsHandler.Bookings) + export.HandleFunc("/agenda/subscriptions", exportsHandler.Agenda("allEvents")) + export.HandleFunc("/agenda/{eventid}", exportsHandler.Agenda("oneEvent")) export.Use(idp.Middleware) export.Use(idp.GroupsMiddleware) From b717be9b99ccd8867708c017b31b8307eb3f8c1d Mon Sep 17 00:00:00 2001 From: Nicolas Caron Date: Fri, 2 Jun 2023 14:42:55 +0200 Subject: [PATCH 12/14] add filter in export fleets --- handlers/exports/fleets.go | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/handlers/exports/fleets.go b/handlers/exports/fleets.go index d4ac2c0..fb73fdc 100644 --- a/handlers/exports/fleets.go +++ b/handlers/exports/fleets.go @@ -5,12 +5,14 @@ import ( "fmt" "net/http" + "git.coopgo.io/coopgo-apps/parcoursmob/utils/identification" fleets "git.coopgo.io/coopgo-platform/fleets/grpcapi" fleetsstorage "git.coopgo.io/coopgo-platform/fleets/storage" groupsmanagement "git.coopgo.io/coopgo-platform/groups-management/grpcapi" groupsstorage "git.coopgo.io/coopgo-platform/groups-management/storage" accounts "git.coopgo.io/coopgo-platform/mobility-accounts/grpcapi" accountsstorage "git.coopgo.io/coopgo-platform/mobility-accounts/storage" + "git.coopgo.io/coopgo-platform/groups-management/storage" "github.com/xuri/excelize/v2" ) @@ -18,7 +20,6 @@ func (h *ExportsHandler) Bookings(w http.ResponseWriter, r *http.Request) { vehicles := map[string]fleetsstorage.Vehicle{} bookings := []fleetsstorage.Booking{} - reequest := &fleets.GetVehiclesRequest{ Namespaces: []string{"parcoursmob"}, } @@ -123,21 +124,14 @@ func (h *ExportsHandler) Bookings(w http.ResponseWriter, r *http.Request) { } } } - fmt.Println("\n"+bookedbygroup+"\n") - // for _, a := range vehicle.Administrators { - // if a == bookedbygroup { - // fmt.Println("\n"+a+"\n") - // } - // } - - // group := "" - - // fmt.Printf("\n"+group+"\n") - - // if bookedbygroup == group { - // continue - // } + // filter by group + g := r.Context().Value(identification.GroupKey) + group := g.(storage.Group) + + if bookedbygroup != group.ID { + continue + } beneficiary := beneficiaries_map[b.Driver] adminunavailability := false From 18e890ceed745850393fbd286caf30b0c61bc5dd Mon Sep 17 00:00:00 2001 From: Nicolas Caron Date: Fri, 2 Jun 2023 14:43:56 +0200 Subject: [PATCH 13/14] add filter in export fleets --- handlers/exports/fleets.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/handlers/exports/fleets.go b/handlers/exports/fleets.go index fb73fdc..6f69c79 100644 --- a/handlers/exports/fleets.go +++ b/handlers/exports/fleets.go @@ -12,7 +12,6 @@ import ( groupsstorage "git.coopgo.io/coopgo-platform/groups-management/storage" accounts "git.coopgo.io/coopgo-platform/mobility-accounts/grpcapi" accountsstorage "git.coopgo.io/coopgo-platform/mobility-accounts/storage" - "git.coopgo.io/coopgo-platform/groups-management/storage" "github.com/xuri/excelize/v2" ) @@ -127,7 +126,7 @@ func (h *ExportsHandler) Bookings(w http.ResponseWriter, r *http.Request) { // filter by group g := r.Context().Value(identification.GroupKey) - group := g.(storage.Group) + group := g.(groupsstorage.Group) if bookedbygroup != group.ID { continue From 275c8b1999d44e7d9d84d4c192c9f3a1608040c0 Mon Sep 17 00:00:00 2001 From: Nicolas Caron Date: Mon, 7 Aug 2023 10:52:29 +0200 Subject: [PATCH 14/14] comments replace in go.mod --- go.mod | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index e84d259..aa340c1 100644 --- a/go.mod +++ b/go.mod @@ -2,11 +2,11 @@ module git.coopgo.io/coopgo-apps/parcoursmob go 1.18 -replace git.coopgo.io/coopgo-platform/mobility-accounts => ../../coopgo-platform/mobility-accounts/ +// replace git.coopgo.io/coopgo-platform/mobility-accounts => ../../coopgo-platform/mobility-accounts/ // replace git.coopgo.io/coopgo-platform/groups-management => ../../coopgo-platform/groups-management/ -replace git.coopgo.io/coopgo-platform/fleets => ../../coopgo-platform/fleets/ +// replace git.coopgo.io/coopgo-platform/fleets => ../../coopgo-platform/fleets/ // replace git.coopgo.io/coopgo-platform/agenda => ../../coopgo-platform/agenda/