public async Task <Response> ApplyInvite(Guid userId, Guid entityId, InviteEntityType entityType) { var user = await _usersProvider.GetById(userId); switch (entityType) { case InviteEntityType.Company: await AddUserToCompany(entityId, userId, MembershipStatus.Member); break; case InviteEntityType.Team: await AddUserToTeam(entityId, userId, MembershipStatus.Member); break; case InviteEntityType.Project: await AddUserToProject(entityId, userId, MembershipStatus.Member); break; default: throw new ArgumentOutOfRangeException(nameof(entityType), entityType, null); } await _invitesService.RemoveInvite(user.Data.Email, entityId, entityType); return(new Response()); }
private async Task <Response> SendSignUpInvites(Guid userId) { var allInvites = (await _invitesService.GetInvites(authorId: userId)).Data.ToList(); var emailsDistinct = allInvites.Select(x => x.Email).Distinct().ToList(); if (emailsDistinct.Count == 0) { return(new Response()); } foreach (var email in emailsDistinct) { var emailInvites = allInvites .Where(x => string.Equals(x.Email, email, StringComparison.CurrentCultureIgnoreCase)) .OrderByDescending(x => x.EntityType) .ToList(); var mainInvite = emailInvites.FirstOrDefault(); if (mainInvite != null) { await _invitesService.SendInvite(mainInvite.Email, mainInvite.EntityId, mainInvite.EntityType); } emailInvites.Remove(mainInvite); foreach (var secondaryInvite in emailInvites) { await _invitesService.RemoveInvite(secondaryInvite.Email, secondaryInvite.EntityId, secondaryInvite.EntityType); } } return(new Response()); }