public static IServiceCollection ConfigureForWebAPI(this IServiceCollection services, IConfiguration configuration)
        {
            InstallConfiguration installConfiguration = new InstallConfiguration
            {
                DatabaseConnectionString = configuration.GetConnectionString("Database"),
                ServiceProfiles          = new[] { ServiceAttribute.DefaultProfile, ServiceProfiles.WebAPI }
            };

            return(services.ConfigureForAll(installConfiguration));
        }
        private static void InstallHavitEntityFramework(IServiceCollection services, InstallConfiguration configuration)
        {
            DbContextOptions options = configuration.UseInMemoryDb
                                ? new DbContextOptionsBuilder <VolejbalDbContext>().UseInMemoryDatabase(nameof(VolejbalDbContext)).Options
                                : new DbContextOptionsBuilder <VolejbalDbContext>().UseSqlServer(configuration.DatabaseConnectionString, c => c.MaxBatchSize(30)).Options;

            services.WithEntityPatternsInstaller()
            .AddEntityPatterns()
            //.AddLocalizationServices<Language>()
            .AddDbContext <VolejbalDbContext>(options)
            .AddDataLayer(typeof(KandaEu.Volejbal.DataLayer.Properties.AssemblyInfo).Assembly);
        }
        public static IServiceCollection ConfigureForTests(this IServiceCollection services, bool useInMemoryDb = true)
        {
            string environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

            if (string.IsNullOrEmpty(environment))
            {
                environment = "Development";
            }

            IConfigurationRoot configuration = new ConfigurationBuilder()
                                               .SetBasePath(Directory.GetCurrentDirectory())
                                               .AddJsonFile("appsettings.json")
                                               .AddJsonFile($"appsettings.{environment}.json", true)
                                               .Build();

            InstallConfiguration installConfiguration = new InstallConfiguration
            {
                DatabaseConnectionString = configuration.GetConnectionString("Database"),
                ServiceProfiles          = new[] { ServiceAttribute.DefaultProfile }
            };

            return(services.ConfigureForAll(installConfiguration));
        }
 private static void InstallByServiceAttribute(IServiceCollection services, InstallConfiguration configuration)
 {
     services.AddByServiceAttribute(typeof(KandaEu.Volejbal.DataLayer.Properties.AssemblyInfo).Assembly, configuration.ServiceProfiles);
     services.AddByServiceAttribute(typeof(KandaEu.Volejbal.Services.Properties.AssemblyInfo).Assembly, configuration.ServiceProfiles);
     services.AddByServiceAttribute(typeof(KandaEu.Volejbal.Facades.Properties.AssemblyInfo).Assembly, configuration.ServiceProfiles);
 }
        private static IServiceCollection ConfigureForAll(this IServiceCollection services, InstallConfiguration installConfiguration)
        {
            InstallHavitEntityFramework(services, installConfiguration);
            InstallHavitServices(services);
            InstallByServiceAttribute(services, installConfiguration);

            return(services);
        }