示例#1
0
        public async Task SendEmailDeliveryStatusNotification(
            [QueueTrigger(QueueName.EmailDeliveryStatusQueue, Connection = "BlobStorageConnectionString")]
            SendEmailDeliveryStatus emailDeliveryStatusData,
            ExecutionContext context,
            ILogger logger)
        {
            if (!_matchingConfiguration.SendEmailEnabled)
            {
                return;
            }

            var stopwatch = Stopwatch.StartNew();

            try
            {
                await _emailDeliveryStatusService.SendEmailDeliveryStatusAsync(emailDeliveryStatusData.NotificationId);
            }
            catch (Exception e)
            {
                var errorMessage =
                    $"Error sending failed email notification for Notification Id: {emailDeliveryStatusData.NotificationId}. Internal Error Message {e}";

                logger.LogError(errorMessage);

                await _functionLogRepository.CreateAsync(new FunctionLog
                {
                    ErrorMessage = errorMessage,
                    FunctionName = context.FunctionName,
                    RowNumber    = -1
                });
            }

            stopwatch.Stop();

            logger.LogInformation($"Function {context.FunctionName} sent email\n" +
                                  $"\tTime taken: {stopwatch.ElapsedMilliseconds: #,###}ms");
        }
        public When_SendEmailDeliveryStatusNotification_Function_Queue_Trigger_Fires()
        {
            var matchingConfiguration = new MatchingConfiguration
            {
                SendEmailEnabled = true
            };

            _emailDeliveryStatusService = Substitute.For <IEmailDeliveryStatusService>();

            _functionLogRepository = Substitute.For <IRepository <FunctionLog> >();

            var data = new SendEmailDeliveryStatus
            {
                NotificationId = _notificationId
            };

            var emailDeliveryStatusFunctions = new Functions.EmailDeliveryStatus(matchingConfiguration, _emailDeliveryStatusService, _functionLogRepository);

            emailDeliveryStatusFunctions.SendEmailDeliveryStatusNotification(
                data,
                new ExecutionContext(),
                new NullLogger <Functions.ReferralEmails>()
                ).GetAwaiter().GetResult();
        }
 public async Task PushEmailDeliveryStatusMessageAsync(SendEmailDeliveryStatus emailDeliveryStatus)
 {
     await PushMessageAsync(JsonConvert.SerializeObject(emailDeliveryStatus),
                            QueueName.EmailDeliveryStatusQueue);
 }