Beispiel #1
0
        public async void TestRender_ProvisionerAccessEmails(RazorTemplate <ProvisionerAccessEmailViewModel> template)
        {
            var service = CreateService();
            var model   = new ProvisionerAccessEmailViewModel
            {
                EnrolleeFullName = "NAme",
                TokenUrl         = "www.TEST.com",
                ExpiresInDays    = 3
            };

            var html = await service.RenderTemplateToStringAsync(template, model);

            Assert.NotNull(html);
            Assert.Contains(model.EnrolleeFullName, html);
            Assert.Contains(model.TokenUrl, html);
            Assert.Contains(model.ExpiresInDays.ToString(), html);
        }
Beispiel #2
0
        public async Task SendProvisionerLinkAsync(IEnumerable <string> emails, EnrolmentCertificateAccessToken token, int careSettingCode)
        {
            var enrolleeDto = await _context.Enrollees
                              .Where(e => e.Id == token.EnrolleeId)
                              .Select(e => new
            {
                e.FirstName,
                e.LastName,
                e.Email
            })
                              .SingleAsync();

            var viewModel = new ProvisionerAccessEmailViewModel
            {
                EnrolleeFullName = $"{enrolleeDto.FirstName} {enrolleeDto.LastName}",
                TokenUrl         = token.FrontendUrl,
                ExpiresInDays    = EnrolmentCertificateAccessToken.Lifespan.Days
            };

            var email = await _emailRenderingService.RenderProvisionerLinkEmailAsync(emails, enrolleeDto.Email, (CareSettingType)careSettingCode, viewModel);

            await Send(email);
        }
        public async Task <Email> RenderProvisionerLinkEmailAsync(IEnumerable <string> recipientEmails, string cc, CareSettingType careSetting, ProvisionerAccessEmailViewModel viewModel)
        {
            var template = careSetting switch
            {
                CareSettingType.CommunityPharmacy => RazorTemplates.Emails.CommunityPharmacyManager,
                CareSettingType.HealthAuthority => RazorTemplates.Emails.HealthAuthority,
                CareSettingType.CommunityPractice => RazorTemplates.Emails.CommunityPractice,
                _ => throw new ArgumentException($"Could not recognize CareSetting {careSetting} in {nameof(RenderProvisionerLinkEmailAsync)}")
            };

            return(new Email
                   (
                       from: PrimeEmail,
                       to: recipientEmails,
                       cc: cc,
                       subject: "New Access Request",
                       body: await _razorConverterService.RenderTemplateToStringAsync(template, viewModel)
                   ));
        }