示例#1
0
        public When_EmailDeliveryStatusService_Is_Called_To_Send_Email_With_Inbox_Full()
        {
            var configuration = new MatchingConfiguration
            {
                MatchingServiceSupportEmailAddress = "*****@*****.**"
            };

            var logger = Substitute.For <ILogger <Application.Services.EmailDeliveryStatusService> >();

            _emailService = Substitute.For <IEmailService>();
            _emailService.GetEmailBodyFromNotifyClientAsync(_notificationId).Returns(
                new EmailDeliveryStatusDto
            {
                Body    = "Body",
                Subject = "Subject",
                EmailDeliveryStatusType = EmailDeliveryStatusType.TemporaryFailure
            });

            _emailService.GetEmailHistoryAsync(_notificationId).Returns(
                new EmailHistoryDto
            {
                NotificationId    = _notificationId,
                OpportunityId     = OpportunityId,
                OpportunityItemId = OpportunityItemId,
                SentTo            = "*****@*****.**",
                Status            = "unknown-failure",
                EmailTemplateId   = 7,
                EmailTemplateName = "ProviderReferralV5",
                CreatedBy         = "CreatedBy"
            });

            var messageQueueService = Substitute.For <IMessageQueueService>();

            _opportunityRepository = Substitute.For <IOpportunityRepository>();
            _opportunityRepository.GetEmailDeliveryStatusForProviderAsync(OpportunityId, "*****@*****.**").Returns(
                new EmailBodyDtoBuilder().AddProviderEmail().Build());

            var emailDeliveryStatusService = new Application.Services.EmailDeliveryStatusService(configuration,
                                                                                                 _emailService,
                                                                                                 _opportunityRepository,
                                                                                                 messageQueueService,
                                                                                                 logger);

            emailDeliveryStatusService.SendEmailDeliveryStatusAsync(_notificationId).GetAwaiter().GetResult();
        }
示例#2
0
        private async Task <EmailBodyDto> GetEmailBodyDto(EmailTemplateName emailTemplateName, EmailHistoryDto emailHistoryDto)
        {
            if (!emailHistoryDto.OpportunityId.HasValue)
            {
                return(null);
            }

            EmailBodyDto emailBodyDto = null;

            switch (emailTemplateName)
            {
            case EmailTemplateName.EmployerFeedback:
            case EmailTemplateName.EmployerFeedbackV2:
            case EmailTemplateName.EmployerReferral:
            case EmailTemplateName.EmployerReferralComplex:
            case EmailTemplateName.EmployerReferralV3:
            case EmailTemplateName.EmployerReferralV4:
            case EmailTemplateName.EmployerReferralV5:
                emailBodyDto = await _opportunityRepository.GetEmailDeliveryStatusForEmployerAsync(
                    emailHistoryDto.OpportunityId.Value,
                    emailHistoryDto.SentTo);

                break;

            case EmailTemplateName.ProviderFeedback:
            case EmailTemplateName.ProviderFeedbackV2:
            case EmailTemplateName.ProviderQuarterlyUpdate:
            case EmailTemplateName.ProviderReferral:
            case EmailTemplateName.ProviderReferralComplex:
            case EmailTemplateName.ProviderReferralV3:
            case EmailTemplateName.ProviderReferralV4:
            case EmailTemplateName.ProviderReferralV5:
                emailBodyDto = await _opportunityRepository.GetEmailDeliveryStatusForProviderAsync(
                    emailHistoryDto.OpportunityId.Value,
                    emailHistoryDto.SentTo);

                break;
            }

            return(emailBodyDto);
        }