77 lines
1.7 KiB
Go
77 lines
1.7 KiB
Go
package application
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
"sort"
|
|
|
|
"git.coopgo.io/coopgo-apps/parcoursmob/utils/identification"
|
|
agenda "git.coopgo.io/coopgo-platform/agenda/grpcapi"
|
|
agendastorage "git.coopgo.io/coopgo-platform/agenda/storage"
|
|
"git.coopgo.io/coopgo-platform/groups-management/storage"
|
|
mobilityaccounts "git.coopgo.io/coopgo-platform/mobility-accounts/grpcapi"
|
|
)
|
|
|
|
func (h *ApplicationHandler) Dashboard(w http.ResponseWriter, r *http.Request) {
|
|
|
|
g := r.Context().Value(identification.GroupKey)
|
|
if g == nil {
|
|
w.WriteHeader(http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
group := g.(storage.Group)
|
|
|
|
request := &mobilityaccounts.GetAccountsBatchRequest{
|
|
Accountids: group.Members,
|
|
}
|
|
|
|
resp, err := h.services.GRPC.MobilityAccounts.GetAccountsBatch(context.TODO(), request)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
w.WriteHeader(http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
var accounts = []any{}
|
|
|
|
// We only display the 10 last here
|
|
count := len(resp.Accounts)
|
|
min := count - 5
|
|
if min < 0 {
|
|
min = 0
|
|
}
|
|
|
|
for _, account := range resp.Accounts[min:] {
|
|
if filterAccount(r, account) {
|
|
a := account.ToStorageType()
|
|
accounts = append([]any{a}, accounts...)
|
|
}
|
|
}
|
|
|
|
members, err := h.members()
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
w.WriteHeader(http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
count_members := len(members)
|
|
|
|
events := []agendastorage.Event{}
|
|
|
|
eventsresp, err := h.services.GRPC.Agenda.GetEvents(context.TODO(), &agenda.GetEventsRequest{
|
|
Namespaces: []string{"parcoursmob_dispositifs"},
|
|
})
|
|
|
|
for _, e := range eventsresp.Events {
|
|
events = append(events, e.ToStorageType())
|
|
}
|
|
|
|
sort.Sort(EventsByStartdate(events))
|
|
|
|
h.Renderer.Dashboard(w, r, accounts, count, count_members, events)
|
|
|
|
}
|