diff --git a/src/Project/Controllers/ProjectController.cs b/src/Project/Controllers/ProjectController.cs index aeb220ee8f3d3d3cd888e84b21995c7ce9c08245..f4c2f281bed1e85e45267779869385d678ff83a1 100644 --- a/src/Project/Controllers/ProjectController.cs +++ b/src/Project/Controllers/ProjectController.cs @@ -600,7 +600,7 @@ namespace Coscine.Api.Project.Controllers return Unauthorized($"You are not an owner of the project."); } - var invitations = _invitationModel.GetAllWhere(x => x.Project == projectId && x.Expiration > DateTime.UtcNow) + var invitations = _invitationModel.GetAllWhere(x => x.Project == projectId) .Select(x => new InvitationReturnObject { Id = x.Id, @@ -652,11 +652,22 @@ namespace Coscine.Api.Project.Controllers x.Expiration > DateTime.UtcNow ); - if (invitations != null && invitations.Any()) + if (invitations.Any()) { return BadRequest("This invitee already has a valid invitation to this project."); } + var expiredInvitations = _invitationModel.GetAllWhere( + x => x.Project == sendInvitationObject.Project && + x.InviteeEmail == sendInvitationObject.Email && + x.Expiration <= DateTime.UtcNow + ); + + foreach (var expiredInvitation in expiredInvitations) + { + _invitationModel.Delete(expiredInvitation); + } + var token = _invitationModel.CreateInvitation(sendInvitationObject.Project, user.Id, sendInvitationObject.Role, sendInvitationObject.Email); var body = new JObject