diff --git a/schools/dalton/provider.go b/schools/dalton/provider.go index eff1ee3..b818f98 100644 --- a/schools/dalton/provider.go +++ b/schools/dalton/provider.go @@ -7,6 +7,7 @@ import ( "strings" "time" + "github.com/MyHomeworkSpace/api-server/calendar/external" "github.com/MyHomeworkSpace/api-server/data" "github.com/MyHomeworkSpace/api-server/schools" ) @@ -109,6 +110,25 @@ func (p *provider) GetData(db *sql.DB, user *data.User, location *time.Location, announcements = append(announcements, resp) } + if school.externalCalendarID != -1 { + // we're actually secretly using a webcal link + externalProvider := external.Provider{ + ExternalCalendarID: school.externalCalendarID, + ExternalCalendarName: "Dalton School Calendar", + } + externalResult, err := externalProvider.GetData(db, user, location, startTime, endTime, dataType) + if err != nil { + return data.ProviderData{}, err + } + + if dataType&data.ProviderDataAnnouncements != 0 { + // fill in our announcements + externalResult.Announcements = announcements + } + + return externalResult, nil + } + // get off blocks for time period offBlocks, err := getOffBlocksStartingBefore(db, endTime.Format("2006-01-02"), announcementGroupsSQL) if err != nil { diff --git a/schools/dalton/school.go b/schools/dalton/school.go index a12dde9..9dd568a 100644 --- a/schools/dalton/school.go +++ b/schools/dalton/school.go @@ -8,9 +8,10 @@ import ( ) type school struct { - importStatus schools.ImportStatus - name string - username string + importStatus schools.ImportStatus + name string + username string + externalCalendarID int } func (s *school) ID() string { @@ -61,6 +62,13 @@ func (s *school) Hydrate(data map[string]interface{}) error { s.importStatus = schools.ImportStatus(data["status"].(float64)) s.name = data["name"].(string) s.username = data["username"].(string) + + s.externalCalendarID = -1 + _, hasExternalCalendar := data["externalCalendarID"] + if hasExternalCalendar { + s.externalCalendarID = int(data["externalCalendarID"].(float64)) + } + return nil }