Files
parcoursmob/services/agenda.go
Arnaud Delcasse dd30d7959b
Some checks failed
Build and Push Docker Image / build_and_push (push) Failing after 1m24s
Add ICS calendars (global and organizations)
2024-11-21 00:54:52 +01:00

66 lines
1.4 KiB
Go
Executable File

package services
import (
"context"
"fmt"
"time"
agenda "git.coopgo.io/coopgo-platform/agenda/grpcapi"
"git.coopgo.io/coopgo-platform/agenda/storage"
"google.golang.org/grpc"
"google.golang.org/protobuf/types/known/timestamppb"
)
type AgendaService struct {
agenda.AgendaClient
}
func NewAgendaService(dial string) (*AgendaService, error) {
conn, err := grpc.Dial(dial, grpc.WithInsecure())
client := agenda.NewAgendaClient(conn)
if err != nil {
return nil, err
}
return &AgendaService{
AgendaClient: client,
}, nil
}
func (s *ServicesHandler) GetAgendaEvents() ([]AgendaEvent, error) {
resp, err := s.GRPC.Agenda.GetEvents(context.TODO(), &agenda.GetEventsRequest{
Namespaces: []string{"parcoursmob_dispositifs"},
Mindate: timestamppb.New(time.Now().Add(-24 * time.Hour)),
})
if err != nil {
return nil, err
}
groups, err := s.GetGroupsMap()
if err != nil {
return nil, fmt.Errorf("error in groups request : %w", err)
}
events := []AgendaEvent{}
for _, e := range resp.Events {
newEvent := AgendaEvent{
Event: e.ToStorageType(),
}
for _, o := range e.Owners {
newEvent.OwnersGroups = append(newEvent.OwnersGroups, GroupsManagementGroup{Group: groups[o]})
}
events = append(events, newEvent)
}
return events, nil
}
// Enriched types
type AgendaEvent struct {
OwnersGroups []GroupsManagementGroup
storage.Event
}