diff --git a/services/data-manager/service/fetch/v2/eventParser.go b/services/data-manager/service/fetch/v2/eventParser.go index 3482bd7..8572e3d 100644 --- a/services/data-manager/service/fetch/v2/eventParser.go +++ b/services/data-manager/service/fetch/v2/eventParser.go @@ -28,40 +28,48 @@ import ( func toEvents(tables [][]*html.Node, days []string) []model.Event { var events []model.Event - for table := range tables { - for row := range tables[table] { + for tableIndex, table := range tables { + day := days[tableIndex] - tableData := findTableData(tables[table][row]) - if len(tableData) > 0 { - start, _ := types.ParseDateTime(date.CreateTimeFromHourAndMinuteString(getTextContent(tableData[1]))) - end, _ := types.ParseDateTime(date.CreateTimeFromHourAndMinuteString(getTextContent(tableData[2]))) - - courses := getTextContent(tableData[7]) - name := getTextContent(tableData[3]) - if functions.OnlyWhitespace(name) { - name = "Sonderveranstaltung" - } - - if len(courses) > 0 { - for _, course := range strings.Split(courses, " ") { - events = append(events, model.Event{ - Day: days[table], - Week: getTextContent(tableData[0]), - Start: start, - End: end, - Name: name, - EventType: getTextContent(tableData[4]), - Notes: getTextContent(tableData[5]), - Prof: getTextContent(tableData[6]), - Rooms: getTextContent(tableData[8]), - BookedAt: getTextContent(tableData[10]), - Course: strings.TrimSpace(course), - }) - } - } + for _, row := range table { + tableData := findTableData(row) + if len(tableData) == 0 { + continue } + events = append(events, createEventsFromTableData(tableData, day)...) } - } return events } + +func createEventsFromTableData(tableData []*html.Node, day string) []model.Event { + var events []model.Event + + start, _ := types.ParseDateTime(date.CreateTimeFromHourAndMinuteString(getTextContent(tableData[1]))) + end, _ := types.ParseDateTime(date.CreateTimeFromHourAndMinuteString(getTextContent(tableData[2]))) + name := getTextContent(tableData[3]) + if functions.OnlyWhitespace(name) { + name = "Sonderveranstaltung" + } + + courses := getTextContent(tableData[7]) + if len(courses) > 0 { + for _, course := range strings.Split(courses, " ") { + events = append(events, model.Event{ + Day: day, + Week: getTextContent(tableData[0]), + Start: start, + End: end, + Name: name, + EventType: getTextContent(tableData[4]), + Notes: getTextContent(tableData[5]), + Prof: getTextContent(tableData[6]), + Rooms: getTextContent(tableData[8]), + BookedAt: getTextContent(tableData[10]), + Course: strings.TrimSpace(course), + }) + } + } + + return events +}