public async Task AsyncExecute() { var subscribers = _subscribersRepository.GetAll(i => i.IsSubscribed); foreach (var subscriber in subscribers) { var eventsToSend = GetEventsToSend(subscriber); if (eventsToSend == null || !eventsToSend.Any()) { continue; } var email = _emailGenerator.Generate(subscriber, eventsToSend); var emailMongoEntity = new EmailMongoEntity { Recipient = subscriber.Email, EventIds = eventsToSend.Select(i => i.Id.ToString("N")).ToList() }; var isSent = await AsyncSendEmail(email, subscriber.Email, emailMongoEntity); if (isSent) { _logger.Info($"The email with subject: \"{email.Subject}\" has been sent to {subscriber.Email}"); } else { _logger.Error($"Unsuccessful sending of an email with subject: \"{email.Subject}\""); } } }
private async Task <bool> AsyncSendEmail(IEmail email, string recipient, EmailMongoEntity emailMongoEntity) { _emailService.SetDataSource(email); var isSent = await _emailService.SendEmail(recipient); if (isSent) { _emailsRepository.Create(emailMongoEntity); } return(isSent); }