using System.Reflection; using ApplicationLayer.InfrastructureServicesInterfaces; using ApplicationLayer.Services.Applicants.NeededServices; using ApplicationLayer.Services.AuthServices.NeededServices; using ApplicationLayer.Services.VisaApplications.NeededServices; using Infrastructure.Common; using Infrastructure.Database; using Infrastructure.Database.Applicants.Repositories; using Infrastructure.Database.Generic; using Infrastructure.Database.Users.Repositories; using Infrastructure.Database.VisaApplications.Repositories; using Infrastructure.EntityToExcelTemplateWriter; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; namespace Infrastructure; /// Provides methods to add services to DI-container public static class DependencyInjection { /// Add services needed for Infrastructure layer public static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfigurationManager configurationManager) { services.AddDbContext(opts => opts.UseNpgsql(configurationManager.GetConnectionString("connectionString"))); services.AddScoped(serviceProvider => serviceProvider.GetRequiredService()); services.AddScoped(serviceProvider => serviceProvider.GetRequiredService()); services.AddScoped(serviceProvider => serviceProvider.GetRequiredService()); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddSingleton(); services.AddSingleton(); services.AddHttpContextAccessor(); services.AddScoped(); services.AddAutoMapper(Assembly.GetExecutingAssembly()); return services; } }