diff --git a/commands.go b/commands.go index 2ab9893..370bf45 100644 --- a/commands.go +++ b/commands.go @@ -93,6 +93,7 @@ func SearchCommandHandler(session *discordgo.Session, interaction *discordgo.Int professorLink := fmt.Sprintf("[%s](https://google.com)", displayName) identifierText := fmt.Sprintf("%s %s (CRN %s)\n%s", categoryLink, classLink, course.CourseReferenceNumber, professorLink) + meetings := course.MeetingsFaculty[0] fields = append(fields, &discordgo.MessageEmbedField{ Name: "Identifier", @@ -104,7 +105,7 @@ func SearchCommandHandler(session *discordgo.Session, interaction *discordgo.Int Inline: true, }, &discordgo.MessageEmbedField{ Name: "Meeting Time", - Value: "MWF 11AM-12:15PM", + Value: meetings.String(), Inline: true, }, ) diff --git a/types.go b/types.go index 0b2afeb..1f35c1d 100644 --- a/types.go +++ b/types.go @@ -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{}