@@ -11,6 +11,7 @@ import (
1111
1212 "github.com/SlotifyApp/slotify-backend/database"
1313 "github.com/avast/retry-go"
14+ msgraphsdkgo "github.com/microsoftgraph/msgraph-sdk-go"
1415 graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
1516 "go.uber.org/zap"
1617)
@@ -43,8 +44,17 @@ func (s Server) PostAPIRescheduleCheck(w http.ResponseWriter, r *http.Request) {
4344 return
4445 }
4546
47+ var graphForOwner * msgraphsdkgo.GraphServiceClient
48+ graphForOwner , err = CreateMSFTGraphClient (ctx , s .MSALClient , s .DB , userID )
49+ if err != nil {
50+ logger .Error ("failed to create msgraph client" , zap .Error (err ))
51+ sendError (w , http .StatusBadGateway , "Failed to connect to microsoft graph API" )
52+ return
53+ }
54+
4655 // Get old meeting data from microsoft
47- msftMeeting , err := graph .Me ().Events ().ByEventId (body .OldMeeting .MsftMeetingID ).Get (ctx , nil )
56+ msftMeeting , err := getUsersEvent (ctx , graphForOwner ,
57+ body .OldMeeting .MsftMeetingID )
4858 if err != nil {
4959 logger .Error ("failed to get meeting data from microsoft" , zap .Error (err ))
5060 sendError (w , http .StatusBadGateway , "Failed to get meeting data from microsoft" )
@@ -126,15 +136,22 @@ func (s Server) PostAPIRescheduleRequestReplace(w http.ResponseWriter, r *http.R
126136 var body ReschedulingRequestBodySchema
127137 var err error
128138 if err = json .NewDecoder (r .Body ).Decode (& body ); err != nil {
129- // TODO: Add zap log for body
130139 logger .Error (ErrUnmarshalBody , zap .Error (err ))
131140 sendError (w , http .StatusBadRequest , ErrUnmarshalBody .Error ())
132141 return
133142 }
134143
135- graph , err := CreateMSFTGraphClient (ctx , s .MSALClient , s .DB , userID )
144+ // Check owner exists
145+ ownerObj , err := s .DB .GetUserByEmail (ctx , string (body .OldMeeting .OwnerEmail ))
136146 if err != nil {
137- logger .Error ("failed to create msgraph client" , zap .Error (err ))
147+ logger .Error ("failed to get owner obj from db: " , zap .Error (err ))
148+ sendError (w , http .StatusBadGateway , "owner is not found as a slotify user" )
149+ return
150+ }
151+
152+ graph , err := CreateMSFTGraphClient (ctx , s .MSALClient , s .DB , ownerObj .ID )
153+ if err != nil {
154+ logger .Error ("failed to create msgraph client with owner id" , zap .Error (err ))
138155 sendError (w , http .StatusBadGateway , "Failed to connect to microsoft graph API" )
139156 return
140157 }
@@ -161,7 +178,8 @@ func (s Server) PostAPIRescheduleRequestReplace(w http.ResponseWriter, r *http.R
161178
162179 if errors .Is (err , sql .ErrNoRows ) {
163180 // Meeting info not in db, so create new meeting info
164- meeting , err = processNewMeetingInfo (ctx , graph , s , body .OldMeeting .MsftMeetingID , * logger )
181+ meeting , err = processNewMeetingInfo (ctx , graph , s ,
182+ body .OldMeeting .MsftMeetingID , string (body .OldMeeting .OwnerEmail ))
165183 if err != nil {
166184 logger .Error ("DB Creation Error: " , zap .Error (err ))
167185 sendError (w , http .StatusBadGateway , "Failed to create New Meeting Info" )
@@ -249,12 +267,6 @@ func (s Server) PostAPIRescheduleRequestReplace(w http.ResponseWriter, r *http.R
249267 Created : time .Now (),
250268 }
251269
252- // Get Owner ID
253- ownerObj , err := s .DB .GetUserByEmail (ctx , meeting .OwnerEmail )
254- if err != nil {
255- logger .Error ("Failed to get owner user obj: " , zap .Error (err ))
256- }
257-
258270 err = s .NotificationService .SendNotification (ctx , s .Logger , s .DB , []uint32 {ownerObj .ID }, notifParam )
259271 if err != nil {
260272 logger .Error ("Failed to send notification for reschedule request: " , zap .Error (err ))
@@ -283,7 +295,15 @@ func (s Server) PostAPIRescheduleRequestSingle(w http.ResponseWriter, r *http.Re
283295 return
284296 }
285297
286- graph , err := CreateMSFTGraphClient (ctx , s .MSALClient , s .DB , userID )
298+ // Check owner exists
299+ ownerObj , err := s .DB .GetUserByEmail (ctx , string (body .OwnerEmail ))
300+ if err != nil {
301+ logger .Error ("failed to get owner obj from db: " , zap .Error (err ))
302+ sendError (w , http .StatusBadGateway , "owner is not found as a slotify user" )
303+ return
304+ }
305+
306+ graph , err := CreateMSFTGraphClient (ctx , s .MSALClient , s .DB , ownerObj .ID )
287307 if err != nil {
288308 logger .Error ("failed to create msgraph client" , zap .Error (err ))
289309 sendError (w , http .StatusBadGateway , "Failed to connect to microsoft graph API" )
@@ -314,7 +334,7 @@ func (s Server) PostAPIRescheduleRequestSingle(w http.ResponseWriter, r *http.Re
314334 meeting , err = s .DB .GetMeetingByMSFTID (ctx , body .MsftMeetingID )
315335
316336 if errors .Is (err , sql .ErrNoRows ) {
317- meeting , err = processNewMeetingInfo (ctx , graph , s , body .MsftMeetingID , * logger )
337+ meeting , err = processNewMeetingInfo (ctx , graph , s , body .MsftMeetingID , string ( body . OwnerEmail ) )
318338 if err != nil {
319339 logger .Error ("failed to make new meeting info" , zap .Error (err ))
320340 sendError (w , http .StatusBadGateway , "Failed to make new meeting info" )
@@ -351,12 +371,6 @@ func (s Server) PostAPIRescheduleRequestSingle(w http.ResponseWriter, r *http.Re
351371 Created : time .Now (),
352372 }
353373
354- // Get Owner ID
355- ownerObj , err := s .DB .GetUserByEmail (ctx , meeting .OwnerEmail )
356- if err != nil {
357- logger .Error ("Failed to get owner user obj: " , zap .Error (err ))
358- }
359-
360374 err = s .NotificationService .SendNotification (ctx , s .Logger , s .DB , []uint32 {ownerObj .ID }, notifParam )
361375 if err != nil {
362376 logger .Error ("Failed to send notification for reschedule request: " , zap .Error (err ))
0 commit comments