Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 31 additions & 8 deletions api/calendar_impl.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,14 +126,6 @@ func (s Server) GetAPICalendarEvent(w http.ResponseWriter, r *http.Request, para
ctx, cancel := context.WithTimeout(r.Context(), time.Minute)
defer cancel()

// create graph client for the userID in query params.
graph, err := CreateMSFTGraphClient(ctx, s.MSALClient, s.DB, userID)
if err != nil {
logger.Error("failed to create msgraph client", zap.Error(err))
sendError(w, http.StatusBadGateway, "Failed to connect to microsoft graph API")
return
}

// Make call to API route and parse events
// Get old meeting data from microsoft
var msftMeeting graphmodels.Eventable
Expand All @@ -148,6 +140,28 @@ func (s Server) GetAPICalendarEvent(w http.ResponseWriter, r *http.Request, para
},
}

meetingObj, err := s.DB.GetMeetingByMSFTID(ctx, params.MsftID)
if err != nil {
logger.Error("meeting not found in db to find owner of meeting with iCalUID", zap.Error(err))
sendError(w, http.StatusBadGateway, "Meeting not found in db to find owner of meeting")
return
}

// Get owner's user id
ownerObj, err := s.DB.GetUserByEmail(ctx, meetingObj.OwnerEmail)
if err != nil {
logger.Error("failed to get owner obj from db using email: ", zap.Error(err))
sendError(w, http.StatusBadGateway, "owner is not found as a slotify user")
return
}

graph, err := CreateMSFTGraphClient(ctx, s.MSALClient, s.DB, ownerObj.ID)
if err != nil {
logger.Error("failed to create msgraph client with owner id", zap.Error(err))
sendError(w, http.StatusBadGateway, "Failed to connect to microsoft graph API")
return
}

var msftMeetingRes graphmodels.EventCollectionResponseable
msftMeetingRes, err = graph.Me().Events().Get(ctx, &requestConfig)
if err != nil {
Expand All @@ -165,6 +179,14 @@ func (s Server) GetAPICalendarEvent(w http.ResponseWriter, r *http.Request, para
return
}
} else {
// create graph client for the userID in query params.
graph, err := CreateMSFTGraphClient(ctx, s.MSALClient, s.DB, userID)
if err != nil {
logger.Error("failed to create msgraph client", zap.Error(err))
sendError(w, http.StatusBadGateway, "Failed to connect to microsoft graph API")
return
}

msftMeeting, err = graph.Me().Events().ByEventId(params.MsftID).Get(ctx, nil)
if err != nil {
logger.Error("failed to get meeting data from microsoft", zap.Error(err))
Expand All @@ -174,6 +196,7 @@ func (s Server) GetAPICalendarEvent(w http.ResponseWriter, r *http.Request, para
}

var parsedEvents []CalendarEvent
var err error
if parsedEvents, err = parseEventableResp([]graphmodels.Eventable{msftMeeting}); err != nil {
logger.Error("failed to get meeting data from microsoft", zap.Error(err))
sendError(w, http.StatusBadGateway, "Failed to get meeting data from microsoft")
Expand Down