Exemplo n.º 1
0
        public async Task <IActionResult> InviteToRegistrantPortal(string registrantId, InviteRequest request)
        {
            var inviteRequest = new InviteRegistrantCommand
            {
                RegistrantId     = registrantId,
                Email            = request.Email,
                RequestingUserId = currentUserId
            };
            var inviteId = await messagingClient.Send(inviteRequest);

            return(Ok(inviteId));
        }
Exemplo n.º 2
0
        public async Task <string> Handle(InviteRegistrantCommand cmd)
        {
            var contact = (await contactRepository.QueryContact(new RegistrantQuery {
                ContactId = cmd.RegistrantId
            })).Items.SingleOrDefault();

            if (contact == null)
            {
                throw new NotFoundException($"registrant not found", cmd.RegistrantId);
            }
            if (contact.Authenticated)
            {
                throw new BusinessLogicException($"registrant {cmd.RegistrantId} is already authenticated");
            }

            var inviteId = (await contactRepository.ManageContactInvite(new CreateNewContactEmailInvite
            {
                ContactId = cmd.RegistrantId,
                Email = cmd.Email,
                InviteDate = DateTime.UtcNow,
                RequestingUserId = cmd.RequestingUserId
            })).InviteId;

            var invite            = (await contactRepository.QueryContactInvite(new ContactEmailInviteQuery {
                InviteId = inviteId
            })).Items.Single();
            var dp                = dataProtectionProvider.CreateProtector(nameof(InviteRegistrantCommand)).ToTimeLimitedDataProtector();
            var encryptedInviteId = dp.Protect(inviteId, invite.ExpiryDate);

            await SendEmailNotification(
                SubmissionTemplateType.InviteProfile,
                email : cmd.Email,
                name : $"{contact.LastName}, {contact.FirstName}",
                tokens : new[]
            {
                KeyValuePair.Create("inviteExpiryDate", invite.ExpiryDate.ToShortDateString()),
                KeyValuePair.Create("inviteUrl", $"{configuration.GetValue<string>("REGISTRANTS_PORTAL_BASE_URL")}/verified-registration?inviteId={WebUtility.UrlEncode(encryptedInviteId)}")
            });

            return(inviteId);
        }