Add proper meeting type handling with place/time stringification fns

This commit is contained in:
2024-01-18 03:30:02 -06:00
parent ef2364bd20
commit c3359de85b
2 changed files with 46 additions and 1 deletions
+44
View File
@@ -1,6 +1,7 @@
package main
import (
"fmt"
"strconv"
"time"
@@ -55,6 +56,49 @@ type MeetingTimeResponse struct {
Term string `json:"term"`
}
func (m *MeetingTimeResponse) String() string {
switch m.MeetingTime.MeetingType {
case "HB":
return fmt.Sprintf("%s\nHybrid %s", m.TimeString(), m.PlaceString())
case "H2":
return fmt.Sprintf("%s\nHybrid %s", m.TimeString(), m.PlaceString())
case "H1":
return fmt.Sprintf("%s\nHybrid %s", m.TimeString(), m.PlaceString())
case "OS":
return fmt.Sprintf("%s\nOnline Only", m.TimeString())
case "OA":
return "No Time\nOnline Asynchronous"
case "OH":
return fmt.Sprintf("%s\nOnline Partial", m.TimeString())
case "ID":
return "TBA"
case "FF":
return fmt.Sprintf("%s\n%s", m.TimeString(), m.PlaceString())
}
// TODO: Add error log
return "Unknown"
}
func (m *MeetingTimeResponse) TimeString() string {
startTime := m.StartTime()
endTime := m.EndTime()
if startTime == nil || endTime == nil {
return "???"
}
return fmt.Sprintf("%s %s-%s", WeekdaysToString(m.Days()), m.StartTime().String(), m.EndTime().String())
}
func (m *MeetingTimeResponse) PlaceString() string {
if m.MeetingTime.Room == "" {
return "???"
}
return fmt.Sprintf("%s %s", m.MeetingTime.Building, m.MeetingTime.Room)
}
func (m *MeetingTimeResponse) Days() map[time.Weekday]bool {
days := map[time.Weekday]bool{}