Add history of operatons to wallets

This commit is contained in:
Arnaud Delcasse
2025-09-25 16:36:35 +02:00
parent 8c0b6f7d5c
commit 20a3b6ed3b
15 changed files with 612 additions and 163 deletions

View File

@@ -58,7 +58,7 @@ type BeneficiariesDisplayState struct {
Beneficiary any
}
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{}, diags []any, solidarityTransportStats any) {
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{}, diags []any, solidarityTransportStats any, walletBalance float64) {
files := renderer.ThemeConfig.GetStringSlice("views.beneficiaries.display.files")
profileFields := renderer.GlobalConfig.Get("modules.beneficiaries.profile_optional_fields")
@@ -74,6 +74,7 @@ func (renderer *Renderer) BeneficiaryDisplay(w http.ResponseWriter, r *http.Requ
"diags": diags,
"solidarity_transport_stats": solidarityTransportStats,
"profile_optional_fields": profileFields,
"wallet_balance": walletBalance,
}
renderer.Render("beneficiaries_display", w, r, files, state)
}

View File

@@ -152,8 +152,23 @@ func Divide[V int | float64](a, b V) V {
return a / b
}
func ShortDuration(d time.Duration) string {
s := d.String()
func ShortDuration(d interface{}) string {
var duration time.Duration
switch v := d.(type) {
case time.Duration:
duration = v
case int:
duration = time.Duration(v) * time.Second
case int64:
duration = time.Duration(v) * time.Second
case float64:
duration = time.Duration(v) * time.Second
default:
return ""
}
s := duration.String()
if strings.HasSuffix(s, "m0s") {
s = s[:len(s)-2]
}

View File

@@ -65,7 +65,22 @@ func (renderer *Renderer) OrganizedCarpoolJourney(w http.ResponseWriter, r *http
"passenger": passenger,
"beneficiaries": beneficiaries,
"journey": journey,
"config": renderer.GlobalConfig,
}
renderer.Render("organized carpool journey", w, r, files, state)
}
func (renderer *Renderer) OrganizedCarpoolBookingDisplay(w http.ResponseWriter, r *http.Request, booking any, driver any, passenger any, driverDepartureAddress, driverArrivalAddress string) {
files := renderer.ThemeConfig.GetStringSlice("views.organized_carpool.booking_display.files")
state := NewState(r, renderer.ThemeConfig, organizedCarpoolMenu)
state.ViewState = map[string]any{
"driver": driver,
"passenger": passenger,
"booking": booking,
"driverDepartureAddress": driverDepartureAddress,
"driverArrivalAddress": driverArrivalAddress,
}
renderer.Render("organized carpool booking display", w, r, files, state)
}

View File

@@ -27,63 +27,75 @@ func (renderer *Renderer) SolidarityTransportOverview(w http.ResponseWriter, r *
func (renderer *Renderer) SolidarityTransportCreateDriver(w http.ResponseWriter, r *http.Request) {
files := renderer.ThemeConfig.GetStringSlice("views.solidarity_transport.driver_create.files")
profileFields := renderer.GlobalConfig.Get("modules.solidarity_transport.drivers.profile_optional_fields")
state := NewState(r, renderer.ThemeConfig, solidarityTransportMenu)
state.ViewState = map[string]any{}
state.ViewState = map[string]any{
"profile_optional_fields": profileFields,
}
renderer.Render("solidarity transport driver creation", w, r, files, state)
}
func (renderer *Renderer) SolidarityTransportUpdateDriver(w http.ResponseWriter, r *http.Request, driver any) {
files := renderer.ThemeConfig.GetStringSlice("views.solidarity_transport.driver_update.files")
profileFields := renderer.GlobalConfig.Get("modules.solidarity_transport.drivers.profile_optional_fields")
state := NewState(r, renderer.ThemeConfig, solidarityTransportMenu)
state.ViewState = map[string]any{
"driver": driver,
"driver": driver,
"profile_optional_fields": profileFields,
}
renderer.Render("solidarity transport driver update", w, r, files, state)
}
func (renderer *Renderer) SolidarityTransportDriverDisplay(w http.ResponseWriter, r *http.Request, driver mobilityaccountsstorage.Account, availabilities any, documents any, bookings any, stats map[string]any) {
func (renderer *Renderer) SolidarityTransportDriverDisplay(w http.ResponseWriter, r *http.Request, driver mobilityaccountsstorage.Account, availabilities any, documents any, bookings any, stats map[string]any, walletBalance float64) {
files := renderer.ThemeConfig.GetStringSlice("views.solidarity_transport.driver_display.files")
profileFields := renderer.GlobalConfig.Get("modules.solidarity_transport.drivers.profile_optional_fields")
state := NewState(r, renderer.ThemeConfig, solidarityTransportMenu)
drivers_file_types := renderer.GlobalConfig.GetStringSlice("modules.solidarity_transport.drivers.documents_types")
file_types_map := renderer.GlobalConfig.GetStringMapString("storage.files.file_types")
state.ViewState = map[string]any{
"driver": driver,
"availabilities": availabilities,
"bookings": bookings,
"documents": documents,
"drivers_file_types": drivers_file_types,
"file_types_map": file_types_map,
"stats": stats,
"driver": driver,
"availabilities": availabilities,
"bookings": bookings,
"documents": documents,
"drivers_file_types": drivers_file_types,
"file_types_map": file_types_map,
"stats": stats,
"profile_optional_fields": profileFields,
"wallet_balance": walletBalance,
}
renderer.Render("solidarity transport driver creation", w, r, files, state)
}
func (renderer *Renderer) SolidarityTransportDriverJourney(w http.ResponseWriter, r *http.Request, driverJourney any, driver any, passenger any, beneficiaries any) {
func (renderer *Renderer) SolidarityTransportDriverJourney(w http.ResponseWriter, r *http.Request, driverJourney any, driver any, passenger any, beneficiaries any, passengerWalletBalance float64) {
files := renderer.ThemeConfig.GetStringSlice("views.solidarity_transport.driver_journey.files")
state := NewState(r, renderer.ThemeConfig, solidarityTransportMenu)
state.ViewState = map[string]any{
"driver": driver,
"passenger": passenger,
"beneficiaries": beneficiaries,
"driver_journey": driverJourney,
"config": renderer.GlobalConfig,
"driver": driver,
"passenger": passenger,
"beneficiaries": beneficiaries,
"driver_journey": driverJourney,
"config": renderer.GlobalConfig,
"passenger_wallet_balance": passengerWalletBalance,
}
renderer.Render("solidarity transport driver creation", w, r, files, state)
}
func (renderer *Renderer) SolidarityTransportBookingDisplay(w http.ResponseWriter, r *http.Request, booking any, driver any, passenger any) {
func (renderer *Renderer) SolidarityTransportBookingDisplay(w http.ResponseWriter, r *http.Request, booking any, driver any, passenger any, passengerWalletBalance float64) {
files := renderer.ThemeConfig.GetStringSlice("views.solidarity_transport.booking_display.files")
state := NewState(r, renderer.ThemeConfig, solidarityTransportMenu)
state.ViewState = map[string]any{
"driver": driver,
"passenger": passenger,
"booking": booking,
"driver": driver,
"passenger": passenger,
"booking": booking,
"passenger_wallet_balance": passengerWalletBalance,
}
renderer.Render("booking display", w, r, files, state)