Exemplo n.º 1
0
        public async Task SendInvitationMessageAsync(CarReservationConfirmationMailTemplate carReservationConfirmationMailTemplate)
        {
            var emailMessage = MailHelper.CreateSingleTemplateEmail(
                new EmailAddress(_mailDeliveryServiceConfiguration.FromEmail),
                new EmailAddress(carReservationConfirmationMailTemplate.CustomerEmail),
                _mailDeliveryServiceConfiguration.CarReservationConfirmationTemplateId,
                new
            {
                customerName = carReservationConfirmationMailTemplate.CustomerName,
                carBrand     = carReservationConfirmationMailTemplate.CarBrand,
                carModel     = carReservationConfirmationMailTemplate.CarModel,
                carImageUrl  = carReservationConfirmationMailTemplate.CarImageUrl,
                fromDate     = carReservationConfirmationMailTemplate.FromDate,
                toDate       = carReservationConfirmationMailTemplate.ToDate
            });

            var response = await _sendGridClient.SendEmailAsync(emailMessage);

            if (response.StatusCode != HttpStatusCode.Accepted)
            {
                var responseContent = await response.Body.ReadAsStringAsync();

                _logger.LogError($"SendGrid service returned status code {response.StatusCode} with response: {responseContent}");
            }
        }
        public async Task HandleNewCarReservationMessageAsync(string carReservationIntegrationMessageAsString)
        {
            var carReservationIntegrationMessage = JsonSerializer.Deserialize <CarReservationIntegrationMessage>(carReservationIntegrationMessageAsString);

            if (!string.IsNullOrEmpty(carReservationIntegrationMessage.CustomerId))
            {
                var customer = await _msGraphSdkClientService.GetUserAsync(carReservationIntegrationMessage.CustomerId);

                if (customer != null)
                {
                    var carFromReservation = await _carRepository.GetAsync(carReservationIntegrationMessage.CarId);

                    if (carFromReservation != null)
                    {
                        var carReservationConfirmationMailTemplate = new CarReservationConfirmationMailTemplate
                        {
                            CustomerName  = $"{customer.FirstName} {customer.LastName}",
                            CustomerEmail = customer.Email,
                            CarBrand      = carFromReservation.Brand,
                            CarModel      = carFromReservation.Model,
                            CarImageUrl   = carFromReservation.ImageUrl,
                            FromDate      = carReservationIntegrationMessage.RentFrom.ToString("dd/MM/yyyy"),
                            ToDate        = carReservationIntegrationMessage.RentTo.ToString("dd/MM/yyyy")
                        };

                        await _mailDeliveryService.SendInvitationMessageAsync(carReservationConfirmationMailTemplate);
                    }
                }
            }

            else
            {
                _logger.LogError($"Customer ID value in the queue message cannot be empty. Row content: {carReservationIntegrationMessageAsString}");
            }
        }