using DigitalData.Core.Client; using EnvelopeGenerator.Application.Common.Configurations; using EnvelopeGenerator.Application.Common.Interfaces.Services; using EnvelopeGenerator.Application.Services; using EnvelopeGenerator.Application.ThirdPartyModules.Queries; using MediatR; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Options; using QRCoder; using System.Reflection; using GdPicture14; namespace EnvelopeGenerator.Application; /// /// Extensions method for dependency injection /// public static class DependencyInjection { /// /// Adds all required services for envelope generator application /// /// /// /// [Obsolete("Use MediatR")] public static IServiceCollection AddEnvelopeGeneratorServices(this IServiceCollection services, IConfiguration config) { //Inject CRUD Service and repositoriesad services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); //Auto mapping profiles services.AddAutoMapper(Assembly.GetExecutingAssembly()); services.AddAutoMapper(typeof(DigitalData.UserManager.Application.DIExtensions)); services.Configure(config.GetSection(nameof(DispatcherParams))); services.Configure(config.GetSection(nameof(MailParams))); services.Configure(config.GetSection(nameof(AuthenticatorParams))); services.Configure(config.GetSection(nameof(TotpSmsParams))); services.Configure(config.GetSection(nameof(PDFBurnerParams))); services.AddOptions() .Configure((GdPictureParams opt, IServiceProvider sp) => { var licenseKey = "GDPICTURE"; using var scope = sp.CreateScope(); var mediator = scope.ServiceProvider.GetRequiredService(); opt.License = config["GdPictureLicenseKey"] ?? mediator.ReadThirdPartyModuleLicenseAsync(licenseKey).GetAwaiter().GetResult() ?? throw new InvalidOperationException($"License record not found for key: {licenseKey}"); }); services.AddSingleton(provider => { var license = provider.GetRequiredService>().Value.License; var licenseManager = new LicenseManager(); licenseManager.RegisterKEY(license); return licenseManager; }); services.AddHttpClientService(config.GetSection(nameof(GtxMessagingParams))); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.AddMediatR(cfg => { cfg.RegisterServicesFromAssembly(Assembly.GetExecutingAssembly()); }); // Add memory cache services.AddMemoryCache(); // Register mail services services.AddScoped(); return services; } }