using DigitalData.MessagingService.Client; using DigitalData.MessagingService.Domain.Entities; using DigitalData.MessagingService.RabbitMQ; using EnvelopeGenerator.Application.Common.Interfaces.Services.Notification; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EnvelopeGenerator.Infrastructure.Notification; public static class DependencyInjection { public static IServiceCollection AddNotificationInfrastructure(this IServiceCollection services, IConfiguration configuration) { var rMqConfig = configuration.GetSection("RabbitMQ").Get() ?? throw new ArgumentNullException(nameof(RabbitMqConfiguration), "RabbitMQ configuration is missing"); EmailSender.ConnectRabbitMq(config => { config.HostName = rMqConfig.HostName; config.Port = rMqConfig.Port; config.UserName = rMqConfig.UserName; config.Password = rMqConfig.Password; config.VirtualHost = "/"; config.QueueName = "emailprofiler.email.outbox"; config.ExchangeName = "emailprofiler.emails"; config.RoutingKey = "email.outbox"; config.DlqQueueName = "emailprofiler.email.outbox.dlq"; config.DlqExchangeName = "emailprofiler.emails.dlq"; config.DlqRoutingKey = "email.outbox.dlq"; }); services.Configure(configuration.GetSection("NotificationEmailAccount")); services.AddScoped(); return services; } }