Esempio n. 1
0
        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}\"");
                }
            }
        }
Esempio n. 2
0
        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);
        }