From 73d99e7ad7625de69108b0aa6173ff5fa796c0ac Mon Sep 17 00:00:00 2001 From: Arnaud Delcasse Date: Wed, 8 Oct 2025 21:33:54 +0200 Subject: [PATCH] Add history for solidarity transport and organized carpool --- config.yaml | 3 + .../beneficiary-organized-carpool.html | 73 +++++++++++ .../beneficiary-solidarity-transport.html | 77 +++++++++++- web/layouts/beneficiaries/display.html | 7 ++ .../_partials/driver_history.html | 61 ++++++++++ .../_partials/driver_wallet.html | 113 ++++++++++++++++++ .../organized_carpool/booking_display.html | 8 ++ .../organized_carpool/driver_display.html | 18 ++- .../_partials/driver_history.html | 68 ++++++++++- .../solidarity_transport/driver_display.html | 6 +- .../solidarity_transport/driver_journey.html | 2 +- web/public/css/main.css | 37 ++++++ 12 files changed, 459 insertions(+), 14 deletions(-) create mode 100644 web/layouts/beneficiaries/_partials/beneficiary-organized-carpool.html create mode 100644 web/layouts/organized_carpool/_partials/driver_history.html create mode 100644 web/layouts/organized_carpool/_partials/driver_wallet.html diff --git a/config.yaml b/config.yaml index 6dd13f3..0289ca5 100644 --- a/config.yaml +++ b/config.yaml @@ -99,6 +99,7 @@ views: - web/layouts/beneficiaries/_partials/beneficiary-organizations.html - web/layouts/beneficiaries/_partials/beneficiary-wallet.html - web/layouts/beneficiaries/_partials/beneficiary-solidarity-transport.html + - web/layouts/beneficiaries/_partials/beneficiary-organized-carpool.html - web/layouts/beneficiaries/display.html update: files: @@ -345,6 +346,8 @@ views: - web/layouts/_partials/address_autocomplete.html - web/layouts/organized_carpool/_partials/driver_availabilities.html - web/layouts/organized_carpool/_partials/driver_documents.html + - web/layouts/organized_carpool/_partials/driver_wallet.html + - web/layouts/organized_carpool/_partials/driver_history.html - web/layouts/organized_carpool/driver_display.html journey: files: diff --git a/web/layouts/beneficiaries/_partials/beneficiary-organized-carpool.html b/web/layouts/beneficiaries/_partials/beneficiary-organized-carpool.html new file mode 100644 index 0000000..37a1ff5 --- /dev/null +++ b/web/layouts/beneficiaries/_partials/beneficiary-organized-carpool.html @@ -0,0 +1,73 @@ +{{define "beneficiary_organized_carpool"}} +
+ {{if .ViewState.organized_carpool_stats}} +
+

Trajets réalisés : {{ .ViewState.organized_carpool_stats.count }}

+

Kilomètres réalisés : {{ .ViewState.organized_carpool_stats.km}} km

+
+ {{end}} + + + + {{if .ViewState.organized_carpool_bookings}} +
+

Historique des covoiturages solidaires

+ + + + + + + + + + + + + {{range .ViewState.organized_carpool_bookings}} + {{if or (eq .Status.String "CONFIRMED") (eq .Status.String "WAITING_DRIVER_CONFIRMATION")}} + + + + + + + + + {{end}} + {{end}} + +
DateConducteurDépartArrivéeStatut
+ {{timeFormat .PassengerPickupDate.AsTime "02/01/2006 15:04"}} + + {{if .Driver}} + + {{ (index $.ViewState.organized_carpool_drivers_map .Driver.Id).Data.first_name }} + {{ (index $.ViewState.organized_carpool_drivers_map .Driver.Id).Data.last_name }} + + {{end}} + + {{.PassengerPickupAddress}} + + {{.PassengerDropAddress}} + + {{if eq .Status.String "CONFIRMED"}} + Confirmé + {{else if eq .Status.String "WAITING_DRIVER_CONFIRMATION"}} + Attente confirmation + {{end}} + + Voir +
+
+ {{else}} +
+

Aucun covoiturage solidaire enregistré

+
+ {{end}} +
+{{end}} diff --git a/web/layouts/beneficiaries/_partials/beneficiary-solidarity-transport.html b/web/layouts/beneficiaries/_partials/beneficiary-solidarity-transport.html index 3dca1ca..c932e4e 100644 --- a/web/layouts/beneficiaries/_partials/beneficiary-solidarity-transport.html +++ b/web/layouts/beneficiaries/_partials/beneficiary-solidarity-transport.html @@ -1,10 +1,75 @@ {{define "beneficiary_solidarity_transport"}} -
-

Trajets réalisés : {{ .ViewState.solidarity_transport_stats.count }}

-

Kilomètres réalisés : {{ .ViewState.solidarity_transport_stats.km}} km

+
+ {{if .ViewState.solidarity_transport_stats}} +
+

Trajets réalisés : {{ .ViewState.solidarity_transport_stats.count }}

+

Kilomètres réalisés : {{ .ViewState.solidarity_transport_stats.km}} km

+
+ {{end}} - - - + + + {{if .ViewState.solidarity_transport_bookings}} +
+

Historique des transports solidaires

+ + + + + + + + + + + + + {{range .ViewState.solidarity_transport_bookings}} + {{if or (eq .Status "VALIDATED") (eq .Status "WAITING_CONFIRMATION")}} + + + + + + + + + {{end}} + {{end}} + +
DateConducteurDépartArrivéeStatut
+ {{if .Journey}} + {{timeFormat .Journey.PassengerPickupDate "02/01/2006 15:04"}} + {{end}} + + {{if .DriverId}} + + {{ (index $.ViewState.solidarity_transport_drivers_map .DriverId).Data.first_name }} + {{ (index $.ViewState.solidarity_transport_drivers_map .DriverId).Data.last_name }} + + {{end}} + + {{if .Journey}}{{if .Journey.PassengerPickup}}{{.Journey.PassengerPickup.Properties.label}}{{end}}{{end}} + + {{if .Journey}}{{if .Journey.PassengerDrop}}{{.Journey.PassengerDrop.Properties.label}}{{end}}{{end}} + + {{if eq .Status "VALIDATED"}} + Validé + {{else if eq .Status "WAITING_CONFIRMATION"}} + Attente confirmation + {{end}} + + Voir +
+
+ {{else}} +
+

Aucun transport solidaire enregistré

+
+ {{end}}
{{end}} diff --git a/web/layouts/beneficiaries/display.html b/web/layouts/beneficiaries/display.html index 186bd35..d47130e 100644 --- a/web/layouts/beneficiaries/display.html +++ b/web/layouts/beneficiaries/display.html @@ -189,6 +189,12 @@ Transport solidaire {{end}} + {{if moduleAvailable "organized_carpool"}} + + Covoiturage solidaire + {{end}} {{template "beneficiary_notes" .}}
{{template "beneficiary_wallet" .}}
{{if moduleAvailable "solidarity_transport"}}
{{template "beneficiary_solidarity_transport" .}}
{{end}} + {{if moduleAvailable "organized_carpool"}}
{{template "beneficiary_organized_carpool" .}}
{{end}}
{{template "beneficiary_organizations" .}}
diff --git a/web/layouts/organized_carpool/_partials/driver_history.html b/web/layouts/organized_carpool/_partials/driver_history.html new file mode 100644 index 0000000..2da9f98 --- /dev/null +++ b/web/layouts/organized_carpool/_partials/driver_history.html @@ -0,0 +1,61 @@ +{{define "organized_carpool_driver_history"}} +
+ {{if .ViewState.stats}} +
+

Covoiturages réalisés : {{ .ViewState.stats.bookings.confirmed }}

+

Kilomètres parcourus : {{ .ViewState.stats.bookings.km }} km

+
+ {{end}} + + {{if .ViewState.bookings}} +
+

Historique des covoiturages

+ + + + + + + + + + + + {{range .ViewState.bookings}} + {{if eq .Status.String "CONFIRMED"}} + + + + + + + + {{end}} + {{end}} + +
DatePassagerDépartArrivéeActions
+ {{if .PassengerPickupDate}} + {{timeFormat .PassengerPickupDate.AsTime "02/01/2006 15:04"}} + {{end}} + + {{if .Passenger}} + + {{ (index $.ViewState.beneficiaries_map .Passenger.Id).Data.first_name }} + {{ (index $.ViewState.beneficiaries_map .Passenger.Id).Data.last_name }} + + {{end}} + + {{.PassengerPickupAddress}} + + {{.PassengerDropAddress}} + + Voir +
+
+ {{else}} +
+

Aucun covoiturage enregistré

+
+ {{end}} +
+{{end}} diff --git a/web/layouts/organized_carpool/_partials/driver_wallet.html b/web/layouts/organized_carpool/_partials/driver_wallet.html new file mode 100644 index 0000000..b48e626 --- /dev/null +++ b/web/layouts/organized_carpool/_partials/driver_wallet.html @@ -0,0 +1,113 @@ +{{define "organized_carpool_driver_wallet"}} +
+
+

Solde : {{ printf "%.2f" .ViewState.wallet_balance }} €

+ + +
+ + + {{if .ViewState.driver.Data.wallet_history}} +
+

Historique des opérations

+ + + + + + + + + + + + + + + + + + + + {{range $index, $operation := .ViewState.driver.Data.wallet_history}} + + + + + + + + {{end}} + +
DateCréditDébitMoyen de paiementDescription
+ Solde initial + + {{if .ViewState.driver.Data.wallet}}{{ printf "%.2f" .ViewState.driver.Data.wallet }} €{{else}}0.00 €{{end}} + + - + + - + + - +
+ {{if $operation.timestamp}}{{timeFormat $operation.timestamp "02/01/2006 15:04"}}{{end}} + + {{if $operation.amount}} + {{if or (eq $operation.operation_type "credit") (not $operation.operation_type)}} + {{ printf "%.2f" $operation.amount }} € + {{end}} + {{end}} + + {{if eq $operation.operation_type "debit"}} + {{ printf "%.2f" $operation.amount }} € + {{end}} + + {{$operation.payment_method}} + + {{$operation.description}} +
+
+ {{else}} +
+

Aucune opération enregistrée

+
+ {{end}} + +
+{{end}} diff --git a/web/layouts/organized_carpool/booking_display.html b/web/layouts/organized_carpool/booking_display.html index f3e1cff..3921510 100644 --- a/web/layouts/organized_carpool/booking_display.html +++ b/web/layouts/organized_carpool/booking_display.html @@ -134,6 +134,14 @@ {{ timeFormat .ViewState.booking.PassengerPickupDate.AsTime "02/01/2006 15:04" }} + {{if .ViewState.booking.Distance}} +
+
Distance
+
+ {{ .ViewState.booking.Distance }} km +
+
+ {{end}}
Prix (passager)
diff --git a/web/layouts/organized_carpool/driver_display.html b/web/layouts/organized_carpool/driver_display.html index c8f72a3..a8d5e88 100644 --- a/web/layouts/organized_carpool/driver_display.html +++ b/web/layouts/organized_carpool/driver_display.html @@ -97,7 +97,7 @@
Dispositifs --> + + + +
{{template "driver_files" .}}
+
{{template "organized_carpool_driver_wallet" .}}
+
{{template "organized_carpool_driver_history" .}}
diff --git a/web/layouts/solidarity_transport/_partials/driver_history.html b/web/layouts/solidarity_transport/_partials/driver_history.html index 9cb7c1b..59afb8c 100644 --- a/web/layouts/solidarity_transport/_partials/driver_history.html +++ b/web/layouts/solidarity_transport/_partials/driver_history.html @@ -1,7 +1,69 @@ {{define "driver_history"}} -
-

Trajets réalisés : {{ .ViewState.stats.bookings.count }}

-

Kilomètres réalisés : {{ .ViewState.stats.bookings.km}} km

+
+ {{if .ViewState.stats}} +
+

Trajets réalisés : {{ .ViewState.stats.bookings.count }}

+

Kilomètres réalisés : {{ .ViewState.stats.bookings.km}} km

+
+ {{end}} + {{if .ViewState.bookings}} +
+

Historique des transports solidaires

+ + + + + + + + + + + + + {{range .ViewState.bookings}} + {{if or (eq .Status "VALIDATED") (eq .Status "WAITING_CONFIRMATION")}} + + + + + + + + + {{end}} + {{end}} + +
DatePassagerDépartArrivéeStatut
+ {{if .Journey}} + {{timeFormat .Journey.PassengerPickupDate "02/01/2006 15:04"}} + {{end}} + + {{if .PassengerId}} + + {{ (index $.ViewState.beneficiaries_map .PassengerId).Data.first_name }} + {{ (index $.ViewState.beneficiaries_map .PassengerId).Data.last_name }} + + {{end}} + + {{if .Journey}}{{if .Journey.PassengerPickup}}{{.Journey.PassengerPickup.Properties.label}}{{end}}{{end}} + + {{if .Journey}}{{if .Journey.PassengerDrop}}{{.Journey.PassengerDrop.Properties.label}}{{end}}{{end}} + + {{if eq .Status "VALIDATED"}} + Validé + {{else if eq .Status "WAITING_CONFIRMATION"}} + Attente confirmation + {{end}} + + Voir +
+
+ {{else}} +
+

Aucun transport solidaire enregistré

+
+ {{end}}
{{end}} diff --git a/web/layouts/solidarity_transport/driver_display.html b/web/layouts/solidarity_transport/driver_display.html index 0a45959..b00ea0d 100644 --- a/web/layouts/solidarity_transport/driver_display.html +++ b/web/layouts/solidarity_transport/driver_display.html @@ -148,7 +148,7 @@
Compte mobilité - +
diff --git a/web/layouts/solidarity_transport/driver_journey.html b/web/layouts/solidarity_transport/driver_journey.html index f53ceb4..50b8a67 100644 --- a/web/layouts/solidarity_transport/driver_journey.html +++ b/web/layouts/solidarity_transport/driver_journey.html @@ -31,7 +31,7 @@
{{if .ViewState.passenger}} {{if lt .ViewState.passenger_wallet_balance .ViewState.pricing_result.passenger.Amount}} -

Le solde du compte mobilité est insuffisant.

+

Le solde du compte mobilité est insuffisant. Créditer le compte

{{end}}
{{if not .ViewState.driver_journey.Noreturn}} diff --git a/web/public/css/main.css b/web/public/css/main.css index e1f28fd..0240514 100644 --- a/web/public/css/main.css +++ b/web/public/css/main.css @@ -6,9 +6,13 @@ "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --color-red-100: oklch(0.936 0.032 17.717); --color-red-500: oklch(0.637 0.237 25.331); --color-red-600: oklch(0.577 0.245 27.325); + --color-red-800: oklch(0.444 0.177 26.899); --color-red-900: oklch(0.396 0.141 25.723); + --color-yellow-100: oklch(0.973 0.071 103.193); + --color-yellow-800: oklch(0.476 0.114 61.907); --color-green-100: oklch(0.962 0.044 156.743); --color-green-600: oklch(0.627 0.194 149.214); --color-green-800: oklch(0.448 0.119 151.328); @@ -472,6 +476,9 @@ .mx-auto { margin-inline: auto; } + .-my-1 { + margin-block: calc(var(--spacing) * -1); + } .-my-1\.5 { margin-block: calc(var(--spacing) * -1.5); } @@ -520,6 +527,9 @@ .mt-10 { margin-top: calc(var(--spacing) * 10); } + .-mr-1 { + margin-right: calc(var(--spacing) * -1); + } .-mr-1\.5 { margin-right: calc(var(--spacing) * -1.5); } @@ -550,6 +560,9 @@ .mb-4 { margin-bottom: calc(var(--spacing) * 4); } + .mb-6 { + margin-bottom: calc(var(--spacing) * 6); + } .mb-10 { margin-bottom: calc(var(--spacing) * 10); } @@ -728,9 +741,15 @@ .min-h-screen { min-height: 100vh; } + .w-0 { + width: calc(var(--spacing) * 0); + } .w-0\.5 { width: calc(var(--spacing) * 0.5); } + .w-1 { + width: calc(var(--spacing) * 1); + } .w-1\/2 { width: calc(1/2 * 100%); } @@ -1744,6 +1763,9 @@ .bg-indigo-600 { background-color: var(--color-indigo-600); } + .bg-red-100 { + background-color: var(--color-red-100); + } .bg-red-500 { background-color: var(--color-red-500); } @@ -1756,6 +1778,9 @@ .bg-white { background-color: var(--color-white); } + .bg-yellow-100 { + background-color: var(--color-yellow-100); + } .-bg-conic { --tw-gradient-position: in oklab; background-image: conic-gradient(var(--tw-gradient-stops)); @@ -1967,6 +1992,9 @@ .px-6 { padding-inline: calc(var(--spacing) * 6); } + .py-0 { + padding-block: calc(var(--spacing) * 0); + } .py-0\.5 { padding-block: calc(var(--spacing) * 0.5); } @@ -2003,6 +2031,9 @@ .py-12 { padding-block: calc(var(--spacing) * 12); } + .pt-1 { + padding-top: calc(var(--spacing) * 1); + } .pt-1\.5 { padding-top: calc(var(--spacing) * 1.5); } @@ -2302,9 +2333,15 @@ .text-red-600 { color: var(--color-red-600); } + .text-red-800 { + color: var(--color-red-800); + } .text-white { color: var(--color-white); } + .text-yellow-800 { + color: var(--color-yellow-800); + } .capitalize { text-transform: capitalize; }