public async Task <List <ProviderUser> > InviteUserAsync(Guid providerId, Guid invitingUserId,
                                                                 ProviderUserInvite invite)
        {
            var provider = await _providerRepository.GetByIdAsync(providerId);

            if (provider == null || invite?.Emails == null || !invite.Emails.Any())
            {
                throw new NotFoundException();
            }

            var providerUsers = new List <ProviderUser>();

            foreach (var email in invite.Emails)
            {
                // Make sure user is not already invited
                var existingProviderUserCount =
                    await _providerUserRepository.GetCountByProviderAsync(providerId, email, false);

                if (existingProviderUserCount > 0)
                {
                    continue;
                }

                var providerUser = new ProviderUser
                {
                    ProviderId   = providerId,
                    UserId       = null,
                    Email        = email.ToLowerInvariant(),
                    Key          = null,
                    Type         = invite.Type,
                    Status       = ProviderUserStatusType.Invited,
                    CreationDate = DateTime.UtcNow,
                    RevisionDate = DateTime.UtcNow,
                };

                if (invite.Permissions != null)
                {
                    providerUser.Permissions = JsonSerializer.Serialize(invite.Permissions, new JsonSerializerOptions
                    {
                        PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
                    });
                }

                await _providerUserRepository.CreateAsync(providerUser);

                await SendInviteAsync(providerUser, provider);

                providerUsers.Add(providerUser);
            }

            await _eventService.LogProviderUsersEventAsync(providerUsers.Select(pu => (pu, EventType.ProviderUser_Invited, null as DateTime?)));

            return(providerUsers);
        }
Esempio n. 2
0
 public Task <List <ProviderUser> > InviteUserAsync(Guid providerId, Guid invitingUserId, ProviderUserInvite providerUserInvite) => throw new NotImplementedException();
Esempio n. 3
0
 public Task <List <Tuple <ProviderUser, string> > > ResendInvitesAsync(ProviderUserInvite <Guid> invite) => throw new NotImplementedException();
Esempio n. 4
0
 public Task <List <ProviderUser> > InviteUserAsync(ProviderUserInvite <string> invite) => throw new NotImplementedException();