From c079319a3d604802ad086654c5371aea0820bb9f Mon Sep 17 00:00:00 2001 From: jnile Date: Mon, 24 Mar 2025 21:22:50 +0000 Subject: [PATCH] get calendar event uses ownerid for icaluid --- api/calendar_impl.go | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/api/calendar_impl.go b/api/calendar_impl.go index 4dd2b670..556cb7f7 100644 --- a/api/calendar_impl.go +++ b/api/calendar_impl.go @@ -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 @@ -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 { @@ -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)) @@ -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")