Skip to content

Commit ed462ba

Browse files
authored
reschedule accept uses icaluid (#35)
1 parent 29849fe commit ed462ba

1 file changed

Lines changed: 34 additions & 13 deletions

File tree

api/rescheduling_impl.go

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/avast/retry-go"
1414
msgraphsdkgo "github.com/microsoftgraph/msgraph-sdk-go"
1515
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
16+
"github.com/microsoftgraph/msgraph-sdk-go/users"
1617
"go.uber.org/zap"
1718
)
1819

@@ -642,6 +643,33 @@ func (s Server) PatchAPIRescheduleRequestRequestIDAccept(w http.ResponseWriter,
642643
return
643644
}
644645

646+
queryFilter := "iCalUId eq '" + req.MsftMeetingID + "'"
647+
648+
// Get old meeting data from microsoft
649+
requestConfig := users.ItemEventsRequestBuilderGetRequestConfiguration{
650+
QueryParameters: &users.ItemEventsRequestBuilderGetQueryParameters{
651+
Filter: &queryFilter,
652+
},
653+
}
654+
655+
var msftMeetingRes graphmodels.EventCollectionResponseable
656+
msftMeetingRes, err = graph.Me().Events().Get(ctx, &requestConfig)
657+
if err != nil {
658+
logger.Error("failed to get meeting data from microsoft", zap.Error(err))
659+
sendError(w, http.StatusBadGateway, "Failed to get meeting data from microsoft")
660+
return
661+
}
662+
663+
var msftMeeting graphmodels.Eventable
664+
if msftMeetingRes != nil && msftMeetingRes.GetValue() != nil &&
665+
len(msftMeetingRes.GetValue()) > 0 {
666+
msftMeeting = msftMeetingRes.GetValue()[0]
667+
} else {
668+
logger.Error("failed to get meeting data from microsoft", zap.Error(err))
669+
sendError(w, http.StatusBadGateway, "Failed to get meeting data from microsoft")
670+
return
671+
}
672+
645673
// Update time of calendar event in microsoft
646674
requestBody := graphmodels.NewEvent()
647675

@@ -660,7 +688,7 @@ func (s Server) PatchAPIRescheduleRequestRequestIDAccept(w http.ResponseWriter,
660688
requestBody.SetEnd(end)
661689

662690
// Make the microsoft API call
663-
_, err = graph.Me().Events().ByEventId(req.MsftMeetingID).Patch(ctx, requestBody, nil)
691+
_, err = graph.Me().Events().ByEventId(*msftMeeting.GetId()).Patch(ctx, requestBody, nil)
664692
if err != nil {
665693
logger.Error("failed to update event in microsoft", zap.Error(err))
666694
sendError(w, http.StatusBadGateway, "Failed to update event in microsoft")
@@ -708,13 +736,8 @@ func (s Server) PatchAPIRescheduleRequestRequestIDAccept(w http.ResponseWriter,
708736

709737
// Notify all attendees
710738

711-
meetingData, err := graph.Me().Events().ByEventId(req.MsftMeetingID).Get(ctx, nil)
712-
if err != nil {
713-
logger.Error("failed to get meeting data from microsoft", zap.Error(err))
714-
}
715-
716739
var attendees []Attendee
717-
if attendees, err = parseMSFTAttendees(meetingData); err != nil {
740+
if attendees, err = parseMSFTAttendees(msftMeeting); err != nil {
718741
logger.Error("failed to parse msft attendees", zap.Error(err))
719742
sendError(w, http.StatusBadRequest, "failed to parse the msft attendees received")
720743
return
@@ -754,12 +777,10 @@ func (s Server) PostAPIRescheduleRequestRequestIDComplete(w http.ResponseWriter,
754777

755778
s.PostAPICalendarMe(w, r)
756779

757-
if r.Response.StatusCode == http.StatusOK {
758-
// Delete request as event has been created for it
759-
err := s.DB.DeleteRequest(ctx, parRequestID)
760-
if err != nil {
761-
logger.Error("failed to delete request after creating new event", zap.Error(err))
762-
}
780+
// Delete request as event has been created for it
781+
err := s.DB.DeleteRequest(ctx, parRequestID)
782+
if err != nil {
783+
logger.Error("failed to delete request after creating new event", zap.Error(err))
763784
}
764785
}
765786

0 commit comments

Comments
 (0)