mirror of
https://github.com/Xevion/banner.git
synced 2025-12-10 08:06:35 -06:00
Add proper meeting type handling with place/time stringification fns
This commit is contained in:
@@ -93,6 +93,7 @@ func SearchCommandHandler(session *discordgo.Session, interaction *discordgo.Int
|
|||||||
professorLink := fmt.Sprintf("[%s](https://google.com)", displayName)
|
professorLink := fmt.Sprintf("[%s](https://google.com)", displayName)
|
||||||
|
|
||||||
identifierText := fmt.Sprintf("%s %s (CRN %s)\n%s", categoryLink, classLink, course.CourseReferenceNumber, professorLink)
|
identifierText := fmt.Sprintf("%s %s (CRN %s)\n%s", categoryLink, classLink, course.CourseReferenceNumber, professorLink)
|
||||||
|
meetings := course.MeetingsFaculty[0]
|
||||||
|
|
||||||
fields = append(fields, &discordgo.MessageEmbedField{
|
fields = append(fields, &discordgo.MessageEmbedField{
|
||||||
Name: "Identifier",
|
Name: "Identifier",
|
||||||
@@ -104,7 +105,7 @@ func SearchCommandHandler(session *discordgo.Session, interaction *discordgo.Int
|
|||||||
Inline: true,
|
Inline: true,
|
||||||
}, &discordgo.MessageEmbedField{
|
}, &discordgo.MessageEmbedField{
|
||||||
Name: "Meeting Time",
|
Name: "Meeting Time",
|
||||||
Value: "MWF 11AM-12:15PM",
|
Value: meetings.String(),
|
||||||
Inline: true,
|
Inline: true,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|||||||
44
types.go
44
types.go
@@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -55,6 +56,49 @@ type MeetingTimeResponse struct {
|
|||||||
Term string `json:"term"`
|
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 {
|
func (m *MeetingTimeResponse) Days() map[time.Weekday]bool {
|
||||||
days := map[time.Weekday]bool{}
|
days := map[time.Weekday]bool{}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user