Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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());
        }