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

View File

@@ -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,
},
)

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{}