21 add reminder booleans, map uuid to module

This commit is contained in:
survellow
2023-11-01 19:14:48 +01:00
parent 4e23903b31
commit 8c563e5366
8 changed files with 160 additions and 38 deletions

View File

@@ -12,7 +12,7 @@ import (
// IcalModel local type for EmitICal function
type IcalModel struct {
Events model.Events
Mapping []model.FeedCollection
Mapping map[string]model.FeedCollection
}
// EmitICal implements the interface for goics
@@ -27,13 +27,22 @@ func (icalModel IcalModel) EmitICal() goics.Componenter {
c.AddProperty("X-WR-TIMEZONE", "Europe/Berlin")
c.AddProperty("X-LIC-LOCATION", "Europe/Berlin")
for _, event := range icalModel.Events {
mapEntry, mappingFound := icalModel.Mapping[event.UUID]
s := goics.NewComponent()
s.SetType("VEVENT")
k, v := goics.FormatDateTime("DTEND;TZID=Europe/Berlin", event.End.Time().Local().In(europeTime))
s.AddProperty(k, v)
k, v = goics.FormatDateTime("DTSTART;TZID=Europe/Berlin", event.Start.Time().Local().In(europeTime))
s.AddProperty(k, v)
s.AddProperty("SUMMARY", replaceNameIfUserDefined(&event, icalModel.Mapping))
if mappingFound {
s.AddProperty("SUMMARY", replaceNameIfUserDefined(&event, mapEntry))
addAlarmIfSpecified(s, event, mapEntry)
} else {
s.AddProperty("SUMMARY", event.Name)
}
s.AddProperty("DESCRIPTION", generateDescription(event))
s.AddProperty("LOCATION", event.Rooms)
c.AddComponent(s)
@@ -41,12 +50,22 @@ func (icalModel IcalModel) EmitICal() goics.Componenter {
return c
}
func replaceNameIfUserDefined(event *model.Event, mapping []model.FeedCollection) string {
for _, mapEntry := range mapping {
if mapEntry.Name == event.Name && !functions.OnlyWhitespace(mapEntry.UserDefinedName) {
return names.ReplaceTemplateSubStrings(mapEntry.UserDefinedName, *event)
}
func addAlarmIfSpecified(s *goics.Component, event model.Event, mapping model.FeedCollection) {
if mapping.Reminder {
a := goics.NewComponent()
a.SetType("VALARM")
a.AddProperty("TRIGGER", "-PT15M")
a.AddProperty("ACTION", "DISPLAY")
a.AddProperty("DESCRIPTION", "Next course: "+replaceNameIfUserDefined(&event, mapping)+" in "+event.Rooms)
s.AddComponent(a)
}
}
func replaceNameIfUserDefined(event *model.Event, mapping model.FeedCollection) string {
if !functions.OnlyWhitespace(mapping.UserDefinedName) {
return names.ReplaceTemplateSubStrings(mapping.UserDefinedName, *event)
}
return event.Name
}