Implemented functional "Actions réalisées"
- Added events and vehicles inside it - Included dates, characteristics, and names of events/vehicles - Introduced color-coded badges to indicate the status of events/vehicles (ongoing or not)
This commit is contained in:
		
							parent
							
								
									100ffbe05a
								
							
						
					
					
						commit
						4229c13b6b
					
				| 
						 | 
					@ -23,6 +23,7 @@ import (
 | 
				
			||||||
	agenda "git.coopgo.io/coopgo-platform/agenda/grpcapi"
 | 
						agenda "git.coopgo.io/coopgo-platform/agenda/grpcapi"
 | 
				
			||||||
	agendastorage "git.coopgo.io/coopgo-platform/agenda/storage"
 | 
						agendastorage "git.coopgo.io/coopgo-platform/agenda/storage"
 | 
				
			||||||
	fleets "git.coopgo.io/coopgo-platform/fleets/grpcapi"
 | 
						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"
 | 
						groupsmanagement "git.coopgo.io/coopgo-platform/groups-management/grpcapi"
 | 
				
			||||||
	"git.coopgo.io/coopgo-platform/groups-management/storage"
 | 
						"git.coopgo.io/coopgo-platform/groups-management/storage"
 | 
				
			||||||
	mobilityaccounts "git.coopgo.io/coopgo-platform/mobility-accounts/grpcapi"
 | 
						mobilityaccounts "git.coopgo.io/coopgo-platform/mobility-accounts/grpcapi"
 | 
				
			||||||
| 
						 | 
					@ -43,6 +44,67 @@ type BeneficiariesForm struct {
 | 
				
			||||||
	Gender      string     `json:"gender"`
 | 
						Gender      string     `json:"gender"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Event_Beneficiary interface {
 | 
				
			||||||
 | 
						Name() string
 | 
				
			||||||
 | 
						Date() time.Time
 | 
				
			||||||
 | 
						DateEnd() time.Time
 | 
				
			||||||
 | 
						Type() string
 | 
				
			||||||
 | 
						Db() string
 | 
				
			||||||
 | 
						ID() string
 | 
				
			||||||
 | 
						Icons() string
 | 
				
			||||||
 | 
						Status() int
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Event struct {
 | 
				
			||||||
 | 
						IDVal      string
 | 
				
			||||||
 | 
						NameVal    string
 | 
				
			||||||
 | 
						DateVal    time.Time
 | 
				
			||||||
 | 
						DateEndVal time.Time
 | 
				
			||||||
 | 
						TypeVal    string
 | 
				
			||||||
 | 
						DbVal      string
 | 
				
			||||||
 | 
						Deleted    bool
 | 
				
			||||||
 | 
						IconSet    string
 | 
				
			||||||
 | 
						StatusVal  int
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e Event) Name() string {
 | 
				
			||||||
 | 
						return e.NameVal
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e Event) Date() time.Time {
 | 
				
			||||||
 | 
						return e.DateVal
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e Event) DateEnd() time.Time {
 | 
				
			||||||
 | 
						return e.DateEndVal
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e Event) Type() string {
 | 
				
			||||||
 | 
						return e.TypeVal
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e Event) ID() string {
 | 
				
			||||||
 | 
						return e.IDVal
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e Event) Db() string {
 | 
				
			||||||
 | 
						return e.DbVal
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e Event) Icons() string {
 | 
				
			||||||
 | 
						return e.IconSet
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e Event) Status() int {
 | 
				
			||||||
 | 
						return e.StatusVal
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func sortByDate(events []Event_Beneficiary) {
 | 
				
			||||||
 | 
						sort.Slice(events, func(i, j int) bool {
 | 
				
			||||||
 | 
							return events[i].Date().Before(events[j].Date())
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (h *ApplicationHandler) BeneficiariesList(w http.ResponseWriter, r *http.Request) {
 | 
					func (h *ApplicationHandler) BeneficiariesList(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	accounts, err := h.beneficiaries(r)
 | 
						accounts, err := h.beneficiaries(r)
 | 
				
			||||||
| 
						 | 
					@ -161,7 +223,7 @@ func (h *ApplicationHandler) BeneficiaryDisplay(w http.ResponseWriter, r *http.R
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		currentTime := time.Now().Truncate(24 * time.Hour)
 | 
							currentTime := time.Now().Truncate(24 * time.Hour)
 | 
				
			||||||
		if eventresp.Event.Startdate.AsTime().Equal(currentTime) || eventresp.Event.Startdate.AsTime().After(currentTime) {
 | 
							if eventresp.Event.Enddate.AsTime().Equal(currentTime) || eventresp.Event.Enddate.AsTime().After(currentTime) {
 | 
				
			||||||
			events = append(events, eventresp.Event.ToStorageType())
 | 
								events = append(events, eventresp.Event.ToStorageType())
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -178,12 +240,79 @@ func (h *ApplicationHandler) BeneficiaryDisplay(w http.ResponseWriter, r *http.R
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bookings := []any{}
 | 
						bookings := []fleetsstorage.Booking{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, b := range bookingsresp.Bookings {
 | 
						for _, b := range bookingsresp.Bookings {
 | 
				
			||||||
		bookings = append(bookings, b.ToStorageType())
 | 
							bookings = append(bookings, b.ToStorageType())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var events_list []Event_Beneficiary
 | 
				
			||||||
 | 
						var status_event int
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, e := range events {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if e.Startdate.After(time.Now()) {
 | 
				
			||||||
 | 
								status_event = 1
 | 
				
			||||||
 | 
							} else if e.Startdate.Before(time.Now()) && e.Enddate.After(time.Now()) {
 | 
				
			||||||
 | 
								status_event = 2
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								status_event = 3
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							event := Event{
 | 
				
			||||||
 | 
								NameVal:    e.Name,
 | 
				
			||||||
 | 
								DateVal:    e.Startdate,
 | 
				
			||||||
 | 
								DateEndVal: e.Enddate,
 | 
				
			||||||
 | 
								TypeVal:    e.Type,
 | 
				
			||||||
 | 
								IDVal:      e.ID,
 | 
				
			||||||
 | 
								DbVal:      "/app/agenda/",
 | 
				
			||||||
 | 
								IconSet:    "calendar",
 | 
				
			||||||
 | 
								StatusVal:  status_event,
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							events_list = append(events_list, event)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var status_booking int
 | 
				
			||||||
 | 
						for _, b := range bookings {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							currentTime := time.Now().Truncate(24 * time.Hour)
 | 
				
			||||||
 | 
							if b.Enddate.After(currentTime) || b.Enddate.Equal(currentTime) {
 | 
				
			||||||
 | 
								GetVehiculeRequest := &fleets.GetVehicleRequest{
 | 
				
			||||||
 | 
									Vehicleid: b.Vehicleid,
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								GetVehiculeResp, err := h.services.GRPC.Fleets.GetVehicle(context.Background(), GetVehiculeRequest)
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									fmt.Println(err)
 | 
				
			||||||
 | 
									w.WriteHeader(http.StatusInternalServerError)
 | 
				
			||||||
 | 
									return
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if b.Startdate.After(time.Now()) {
 | 
				
			||||||
 | 
									status_booking = 1
 | 
				
			||||||
 | 
								} else if b.Startdate.Before(time.Now()) && b.Enddate.After(time.Now()) {
 | 
				
			||||||
 | 
									status_booking = 2
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									status_booking = 3
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								event := Event{
 | 
				
			||||||
 | 
									NameVal:    GetVehiculeResp.Vehicle.ToStorageType().Data["name"].(string),
 | 
				
			||||||
 | 
									DateVal:    b.Startdate,
 | 
				
			||||||
 | 
									DateEndVal: b.Enddate,
 | 
				
			||||||
 | 
									TypeVal:    "Réservation de véhicule",
 | 
				
			||||||
 | 
									IDVal:      b.ID,
 | 
				
			||||||
 | 
									DbVal:      "/app/vehicles-management/bookings/",
 | 
				
			||||||
 | 
									IconSet:    "vehicle",
 | 
				
			||||||
 | 
									StatusVal:  status_booking,
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								events_list = append(events_list, event)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						sortByDate(events_list)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	groupsrequest := &groupsmanagement.GetGroupsRequest{
 | 
						groupsrequest := &groupsmanagement.GetGroupsRequest{
 | 
				
			||||||
		Namespaces: []string{"parcoursmob_organizations"},
 | 
							Namespaces: []string{"parcoursmob_organizations"},
 | 
				
			||||||
		Member:     beneficiaryID,
 | 
							Member:     beneficiaryID,
 | 
				
			||||||
| 
						 | 
					@ -202,7 +331,7 @@ func (h *ApplicationHandler) BeneficiaryDisplay(w http.ResponseWriter, r *http.R
 | 
				
			||||||
	beneficiaries_file_types := h.config.GetStringSlice("modules.beneficiaries.documents_types")
 | 
						beneficiaries_file_types := h.config.GetStringSlice("modules.beneficiaries.documents_types")
 | 
				
			||||||
	file_types_map := h.config.GetStringMapString("storage.files.file_types")
 | 
						file_types_map := h.config.GetStringMapString("storage.files.file_types")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	h.Renderer.BeneficiaryDisplay(w, r, resp.Account.ToStorageType(), bookings, organizations, beneficiaries_file_types, file_types_map, documents, events)
 | 
						h.Renderer.BeneficiaryDisplay(w, r, resp.Account.ToStorageType(), bookings, organizations, beneficiaries_file_types, file_types_map, documents, events_list)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (h *ApplicationHandler) BeneficiaryUpdate(w http.ResponseWriter, r *http.Request) {
 | 
					func (h *ApplicationHandler) BeneficiaryUpdate(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@ import (
 | 
				
			||||||
	"html/template"
 | 
						"html/template"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	agendastorage "git.coopgo.io/coopgo-platform/agenda/storage"
 | 
						fleetsstorage "git.coopgo.io/coopgo-platform/fleets/storage"
 | 
				
			||||||
	mobilityaccountsstorage "git.coopgo.io/coopgo-platform/mobility-accounts/storage"
 | 
						mobilityaccountsstorage "git.coopgo.io/coopgo-platform/mobility-accounts/storage"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,7 +53,7 @@ type BeneficiariesDisplayState struct {
 | 
				
			||||||
	Beneficiary any
 | 
						Beneficiary any
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (renderer *Renderer) BeneficiaryDisplay(w http.ResponseWriter, r *http.Request, beneficiary any, bookings []any, organizations []any, beneficiaries_file_types []string, file_types_map map[string]string, documents any, event []agendastorage.Event) {
 | 
					func (renderer *Renderer) BeneficiaryDisplay(w http.ResponseWriter, r *http.Request, beneficiary any, bookings []fleetsstorage.Booking, organizations []any, beneficiaries_file_types []string, file_types_map map[string]string, documents any, event interface{}) {
 | 
				
			||||||
	files := renderer.ThemeConfig.GetStringSlice("views.beneficiaries.display.files")
 | 
						files := renderer.ThemeConfig.GetStringSlice("views.beneficiaries.display.files")
 | 
				
			||||||
	state := NewState(r, renderer.ThemeConfig, beneficiariesMenu)
 | 
						state := NewState(r, renderer.ThemeConfig, beneficiariesMenu)
 | 
				
			||||||
	state.ViewState = map[string]any{
 | 
						state.ViewState = map[string]any{
 | 
				
			||||||
| 
						 | 
					@ -65,7 +65,6 @@ func (renderer *Renderer) BeneficiaryDisplay(w http.ResponseWriter, r *http.Requ
 | 
				
			||||||
		"organizations":            organizations,
 | 
							"organizations":            organizations,
 | 
				
			||||||
		"event":                    event,
 | 
							"event":                    event,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	renderer.Render("beneficiaries_display", w, r, files, state)
 | 
						renderer.Render("beneficiaries_display", w, r, files, state)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue