// TODO: move the localhost address to single place and use that so that we don't need to write it to a million places

        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            // add MVC
            services.AddMvc();
            // CORS
            services.AddCors();

            // setup IdentityServer to use the in memory configurations
            services.AddIdentityServer()
            .AddDeveloperSigningCredential()
            .AddInMemoryIdentityResources(IdentityResourcesConfig.GetIdentityResources())
            .AddInMemoryClients(ClientsConfig.GetClients())
            .AddTestUsers(UsersConfig.GetUsers());
        }
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var isDemoMode = Configuration.GetValue <bool>("IsDemoMode");

            var connectionString = Configuration.GetConnectionString("DefaultConnection");

            // var migrationsAssembly = typeof(Startup).GetTypeInfo().Assembly.GetName().Name;

            services.AddTransient <IResourceOwnerPasswordValidator, ResourceOwnerPasswordValidator>()
            .AddTransient <IProfileService, LoginProfileService>()
            .AddTransient <IAuthRepository, AuthRepository>();

            services.AddDbContext <LogInDbContext>(options =>
            {
                if (isDemoMode)
                {
                    options.UseInMemoryDatabase("IdentityServerDb");
                }
                else
                {
                    options.UseSqlServer(connectionString);
                }
            });

            services.AddMvc();



            if (isDemoMode)
            {
                services.AddIdentityServer()
                .AddInMemoryClients(ConfigForDemo.GetClients())
                .AddInMemoryIdentityResources(ConfigForDemo.GetIdentityResources())
                .AddInMemoryApiResources(ConfigForDemo.GetApiResources())
                .AddTestUsers(ConfigForDemo.Get())
                .AddInMemoryPersistedGrants()
                .AddDeveloperSigningCredential();
            }
            else
            {
                services.AddIdentityServer()
                .AddInMemoryIdentityResources(IdentityResourcesConfig.GetIdentityResource())
                .AddInMemoryApiResources(ApisConfig.GetApis())
                .AddInMemoryClients(ClientConfig.GetClients())
                ;
            }
        }