@@ -61,7 +61,10 @@ public ActionResult Index()
6161 . Include ( c => c . CreatedBy )
6262 . GroupBy ( c => c . OrganisationId ) )
6363 {
64- InvitationViewModel viewModel = new InvitationViewModel ( ) ;
64+ InvitationViewModel viewModel = new InvitationViewModel
65+ {
66+ OrganisationInviteId = orgGrp . First ( ) . OrganisationInviteId
67+ } ;
6568
6669 Organisation organisation = db . Organisations . First ( ba => ba . OrganisationId == orgGrp . Key ) ;
6770 viewModel . OrganisationId = organisation . OrganisationId ;
@@ -119,22 +122,20 @@ public ActionResult Accept(int id)
119122 return NotFound ( "Could not find user" ) ;
120123 }
121124
122- var organisation = db . Organisations . FirstOrDefault ( ba => ba . OrganisationId == id ) ;
125+ var invite = db . OrganisationInvites . FirstOrDefault ( uc => uc . InviteEmail . ToLower ( ) == CurrentUser . Email . ToLower ( ) && uc . AcceptedOn == null && uc . RejectedOn == null && uc . OrganisationInviteId == id ) ;
123126
124- if ( organisation == null )
127+ if ( invite == null )
125128 {
126- return NotFound ( "Organisation not found" ) ;
129+ return NotFound ( "Invite not found" ) ;
127130 }
128131
129- // remove other invitations to other organisations
130- db . OrganisationInvites . RemoveWhere ( uc => uc . InviteEmail . ToLower ( ) == CurrentUser . Email . ToLower ( ) && uc . OrganisationId != id ) ;
132+ var organisation = db . Organisations . FirstOrDefault ( ba => ba . OrganisationId == invite . OrganisationId ) ;
131133
132- db . SaveChanges ( ) ;
134+ if ( organisation == null )
135+ {
136+ return NotFound ( "Organisation not found" ) ;
137+ }
133138
134- var invitationsToAccept = db . OrganisationInvites
135- . Where ( uc => uc . InviteEmail == CurrentUser . Email && uc . OrganisationId == id )
136- . ToList ( ) ;
137-
138139 List < DatabaseConnection > leave = new List < DatabaseConnection > ( ) ;
139140 List < DatabaseConnection > migrate = new List < DatabaseConnection > ( ) ;
140141
@@ -173,11 +174,16 @@ public ActionResult Accept(int id)
173174
174175 CurrentUser . OrganisationId = organisation . OrganisationId ;
175176
176- foreach ( var invite in invitationsToAccept )
177+ invite . AcceptedOn = DateTime . Now ;
178+
179+ // reject other invitations to other organisations
180+ var invitesToReject = db . OrganisationInvites . Where ( uc => uc . InviteEmail . ToLower ( ) == CurrentUser . Email . ToLower ( ) && uc . OrganisationInviteId != invite . OrganisationInviteId ) ;
181+
182+ foreach ( var inviteToReject in invitesToReject )
177183 {
178- invite . AcceptedOn = DateTime . Now ;
184+ inviteToReject . RejectedOn = DateTime . Now ;
179185 }
180-
186+
181187 db . SaveChanges ( ) ;
182188
183189 return RedirectToAction ( "Index" , "Home" ) ;
@@ -190,7 +196,13 @@ public ActionResult Reject(int id)
190196 return NotFound ( "Could not find user" ) ;
191197 }
192198
193- var invite = db . OrganisationInvites . First ( i => i . InviteEmail . ToLower ( ) == CurrentUser . Email . ToLower ( ) && i . OrganisationId == id && i . AcceptedOn == null && i . RejectedOn == null ) ;
199+ var invite = db . OrganisationInvites . FirstOrDefault ( uc => uc . InviteEmail . ToLower ( ) == CurrentUser . Email . ToLower ( ) && uc . AcceptedOn == null && uc . RejectedOn == null && uc . OrganisationInviteId == id ) ;
200+
201+ if ( invite == null )
202+ {
203+ return NotFound ( "Invite not found" ) ;
204+ }
205+
194206 invite . RejectedOn = DateTime . Now ;
195207
196208 db . SaveChanges ( ) ;
0 commit comments