mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2026-01-17 03:52:26 +01:00
feat: introduce feed management for individual and professor modules across frontend and backend services.
This commit is contained in:
@@ -18,12 +18,13 @@ package grpc
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/goccy/go-json"
|
||||
"google.golang.org/grpc"
|
||||
pb "htwkalender/common/genproto/modules"
|
||||
"htwkalender/ical/model"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
"github.com/goccy/go-json"
|
||||
"google.golang.org/grpc"
|
||||
)
|
||||
|
||||
func GetFeed(feedId string, conn *grpc.ClientConn) (model.FeedRecord, error) {
|
||||
@@ -65,5 +66,8 @@ func protoToFeed(feed *pb.Feed) (model.FeedRecord, error) {
|
||||
Retrieved: model.ToJSONTime(feed.Retrieved),
|
||||
Modules: modules,
|
||||
Deleted: feed.Deleted,
|
||||
Type: feed.Type,
|
||||
User: feed.User,
|
||||
UserEmail: feed.UserEmail,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@ import (
|
||||
"htwkalender/ical/service/functions"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
commonProf "htwkalender/common/professor"
|
||||
)
|
||||
|
||||
const expirationTime = 5 * time.Minute
|
||||
@@ -59,6 +61,11 @@ func Feed(app model.AppType, token string, userAgent string) (string, string, er
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
// Filter by professor if type is "prof"
|
||||
if feed.Type == "prof" && feed.UserEmail != "" {
|
||||
events = filterEventsByProfessor(events, feed.UserEmail)
|
||||
}
|
||||
|
||||
// Sort events by start date
|
||||
events.Sort()
|
||||
|
||||
@@ -126,3 +133,22 @@ func FeedRoom(app model.AppType, room string, userAgent string) (string, string,
|
||||
|
||||
return icalFeed.Content, etag, nil
|
||||
}
|
||||
|
||||
func filterEventsByProfessor(events model.Events, email string) model.Events {
|
||||
if email == "" {
|
||||
return events
|
||||
}
|
||||
|
||||
firstName, lastName, err := commonProf.ExtractNameFromEmail(email)
|
||||
if err != nil {
|
||||
return events
|
||||
}
|
||||
|
||||
var filteredEvents model.Events
|
||||
for _, event := range events {
|
||||
if commonProf.MatchesProfessor(event.Prof, firstName, lastName) {
|
||||
filteredEvents = append(filteredEvents, event)
|
||||
}
|
||||
}
|
||||
return filteredEvents
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user