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)); }