Ejemplo n.º 1
0
        public async Task SendAsync(Message message)
        {
            ILogger logger = _loggerFactory.Create(nameof(Messenger));

            logger.Info("Sending message", message);

            MessageTemplate messageTemplate = _repository
                                              .GetAll(mt => mt.Kind == message.MessageTemplateKind && mt.Culture == message.Culture)
                                              .SingleOrDefault()
                                              ?? throw new AdminException(
                                                        message: $"No available message template with id {message.MessageTemplateKind} in culture {message.Culture}",
                                                        reason: AdminExceptionReason.Messaging
                                                        )
            ;

            string instantiatedBody      = _substitutor.Substitute(messageTemplate, message.Parameters);
            InstantiatedMessage instance = new InstantiatedMessage(
                messageTemplate.Subject,
                instantiatedBody
                );

            await _strategy.TransmitAsync(message.Recipient, instance);

            logger.Info("Message instance successfully sent", instance);
        }
        public Task TransmitAsync(User recipient, InstantiatedMessage instance)
        {
            User redirectedRecipient = new User(
                name: recipient.Name,
                email: _configuration.Email ?? recipient.Email,
                phone: _configuration.Phone ?? recipient.Phone,
                preferredCulture: recipient.PreferredCulture
                );

            return(_proxee.TransmitAsync(redirectedRecipient, instance));
        }