Пример #1
0
        public async Task SendEmailBookToInterestedUsers(Book book)
        {
            int MAX_DESTINATIONS = int.Parse(_configuration["AWSSQSSettings:MaxDestinationsPerMessage"]);

            var vm = new
            {
                Book           = book,
                ServerSettings = _serverSettings,
                name           = "{name}"// recebe {name} pois e o padrao que o servico Consumer reconhece para substituicao para o nome do usuario para o qual ira enviar o email
            };

            var html = await _emailTemplate.GenerateHtmlFromTemplateAsync(NewBookNotifyTemplate, vm);

            var message = new AWSSQSMessageNewBookNotifyRequest
            {
                Subject  = $"Chegou um livro de {book.Category.Name}",
                BodyHTML = html
            };


            var interestedUsers = _userService.GetBySolicitedBookCategory(book.CategoryId);


            int maxMessages = interestedUsers.Count() % MAX_DESTINATIONS == 0 ? interestedUsers.Count() / MAX_DESTINATIONS : interestedUsers.Count() / MAX_DESTINATIONS + 1;

            for (int i = 1; i <= maxMessages; i++)
            {
                var destinations = interestedUsers.Skip((i - 1) * MAX_DESTINATIONS).Take(MAX_DESTINATIONS).Select(u => new DestinationRequest {
                    Name = u.Name, Email = u.Email
                });
                message.Destinations = destinations.ToList();

                await _AWSSQSService.SendNewBookNotifyToAWSSQSAsync(message);
            }
        }
Пример #2
0
        public async Task SendNewBookNotifyToAWSSQSAsync(AWSSQSMessageNewBookNotifyRequest message)
        {
            if (_AWSSQSSettings.IsActive)
            {
                var request = new SendMessageRequest
                {
                    DelaySeconds = (int)TimeSpan.FromSeconds(5).TotalSeconds,
                    MessageBody  = System.Text.Json.JsonSerializer.Serialize(message),
                    QueueUrl     = _AWSSQSSettings.QueueUrl
                };

                await _amazonSQSClient.SendMessageAsync(request);
            }
        }