Merge branch '52-bug-sport-fetcher-wrong' into 'main'

Resolve "bug: Sport fetcher wrong"

Closes #52

See merge request ekresse/htwkalender!44
This commit is contained in:
ekresse
2024-04-07 08:18:14 +00:00

View File

@ -110,7 +110,7 @@ func formatEntriesToEvents(entries []model.SportEntry) []model.Event {
var event = model.Event{
UUID: uuid.NewSHA1(uuid.NameSpaceDNS, []byte(entry.Title+entry.ID+entry.Details.Type)).String(),
Day: toGermanWeekdayString(entry.Details.DateRange.Start.Weekday()),
Day: toGermanWeekdayString(start.Time().Weekday()),
Week: strconv.Itoa(23),
Start: start,
End: end,
@ -129,8 +129,9 @@ func formatEntriesToEvents(entries []model.SportEntry) []model.Event {
return events
}
func getDayInt(weekDay string) int {
func getDayInt(weekDay string) (int, error) {
var weekDayInt int
var err error = nil
switch weekDay {
case "Mo":
weekDayInt = 1
@ -146,8 +147,13 @@ func getDayInt(weekDay string) int {
weekDayInt = 6
case "So":
weekDayInt = 0
default:
{
err = errors.New("no day found")
weekDayInt = -1
}
}
return weekDayInt
return weekDayInt, err
}
func toGermanWeekdayString(weekday time.Weekday) string {
@ -200,11 +206,16 @@ func getWeekEvents(start time.Time, end time.Time, cycle string) ([]time.Time, [
// creating a SportDayStartEnd for each day in the cycle
for _, day := range days {
weekEvents = append(weekEvents, model.SportDayStartEnd{
Start: time.Date(start.Year(), start.Month(), start.Day(), startHour, startMinute, 0, 0, start.Location()),
End: time.Date(end.Year(), end.Month(), end.Day(), endHour, endMinute, 0, 0, end.Location()),
Day: time.Weekday(getDayInt(day)),
})
weekDay, err := getDayInt(day)
if err != nil {
slog.Error("Error while getting day int", err)
} else {
weekEvents = append(weekEvents, model.SportDayStartEnd{
Start: time.Date(start.Year(), start.Month(), start.Day(), startHour, startMinute, 0, 0, start.Location()),
End: time.Date(end.Year(), end.Month(), end.Day(), endHour, endMinute, 0, 0, end.Location()),
Day: time.Weekday(weekDay),
})
}
}
}
@ -216,19 +227,22 @@ func getWeekEvents(start time.Time, end time.Time, cycle string) ([]time.Time, [
days := dayRegExp.FindAllString(cyclePart, 2)
startHour, startMinute, endHour, endMinute := extractStartAndEndTime(cyclePart)
//create a int array with all days from start to end day
var daysBetween []int
for i := getDayInt(days[0]); i <= getDayInt(days[1]); i++ {
daysBetween = append(daysBetween, i)
}
var startI, endI int
var endIErr, startIErr error
startI, startIErr = getDayInt(days[0])
endI, endIErr = getDayInt(days[1])
// creating a SportDayStartEnd for each day in the cycle
for _, day := range daysBetween {
weekEvents = append(weekEvents, model.SportDayStartEnd{
Start: time.Date(start.Year(), start.Month(), start.Day(), startHour, startMinute, 0, 0, start.Location()),
End: time.Date(end.Year(), end.Month(), end.Day(), endHour, endMinute, 0, 0, end.Location()),
Day: time.Weekday(day),
})
if endIErr != nil || startIErr != nil {
slog.Error("Error while getting day int", startIErr, endIErr)
} else {
//create a int array with all days from start to end day
var daysBetween []int
for i := startI; i <= endI; i++ {
daysBetween = append(daysBetween, i)
}
// creating a SportDayStartEnd for each day in the cycle
weekEvents = createEventListFromStartToEndMatchingDay23(daysBetween, start, startHour, startMinute, end, endHour, endMinute)
}
}
@ -239,13 +253,31 @@ func getWeekEvents(start time.Time, end time.Time, cycle string) ([]time.Time, [
days := dayRegExp.FindAllString(cyclePart, -1)
startHour, startMinute, endHour, endMinute := extractStartAndEndTime(cyclePart)
// creating a SportDayStartEnd for each day in the cycle
var dayNumbers []int
for _, day := range days {
weekEvents = append(weekEvents, model.SportDayStartEnd{
Start: time.Date(start.Year(), start.Month(), start.Day(), startHour, startMinute, 0, 0, start.Location()),
End: time.Date(end.Year(), end.Month(), end.Day(), endHour, endMinute, 0, 0, end.Location()),
Day: time.Weekday(getDayInt(day)),
})
dayInt, err := getDayInt(day)
if err != nil {
slog.Error("Error while getting day int", err)
} else {
dayNumbers = append(dayNumbers, dayInt)
}
}
// creating a SportDayStartEnd for each day in the cycle
weekEvents = append(weekEvents, createEventListFromStartToEndMatchingDay23(dayNumbers, start, startHour, startMinute, end, endHour, endMinute)...)
for _, day := range days {
weekDay, err := getDayInt(day)
if err != nil {
slog.Error("Error while getting day int", err)
} else {
weekEvents = append(weekEvents, model.SportDayStartEnd{
Start: time.Date(start.Year(), start.Month(), start.Day(), startHour, startMinute, 0, 0, start.Location()),
End: time.Date(end.Year(), end.Month(), end.Day(), endHour, endMinute, 0, 0, end.Location()),
Day: time.Weekday(weekDay),
})
}
}
}
}
@ -262,6 +294,21 @@ func getWeekEvents(start time.Time, end time.Time, cycle string) ([]time.Time, [
return startDatesList, endDatesList
}
// creating a SportDayStartEnd for each day in the cycle
func createEventListFromStartToEndMatchingDay23(days []int, start time.Time, startHour int, startMinute int, end time.Time, endHour int, endMinute int) []model.SportDayStartEnd {
var weekEvents []model.SportDayStartEnd
for _, day := range days {
weekEvents = append(weekEvents, model.SportDayStartEnd{
Start: time.Date(start.Year(), start.Month(), start.Day(), startHour, startMinute, 0, 0, start.Location()),
End: time.Date(end.Year(), end.Month(), end.Day(), endHour, endMinute, 0, 0, end.Location()),
Day: time.Weekday(day),
})
}
return weekEvents
}
func createEventListFromStartToEndMatchingDay(weekEvent model.SportDayStartEnd) ([]time.Time, []time.Time) {
var startDates []time.Time
var endDates []time.Time