public void Configure(IApplicationBuilder app, IWebHostEnvironment env, AppDbContext context) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { // When in production shows Error page to user. app.UseExceptionHandler("/Error"); app.UseStatusCodePagesWithReExecute("/Error/{0}"); app.UseHsts(); } context.Database.Migrate(); var identitySeeder = new AppDbContextSeedData(context); identitySeeder.SeedAdminUser(); app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); }
private static void SeedData(IWebHost host) { using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; try { var userManager = services.GetRequiredService <UserManager <IdentityAppUser> >(); var dbContext = services.GetRequiredService <AppDbContext>(); AppDbContextSeedData.SeedAsync(userManager, dbContext).Wait(); } catch (Exception) { } } }
public ContainerBuilder InitializedDependencies(IConfigurationRoot configuration, ConsumerOptions consumerOptions) { ContainerBuilder builder = new ContainerBuilder(); //"mongodb://*****:*****@localhost" builder.Register(ctx => new MongoDataContext("mongoDatabase", $"mongodb://{consumerOptions.MongoHost}")).As <IMongoDataContext>().InstancePerLifetimeScope(); builder.RegisterGeneric(typeof(MongoRepository <>)).As(typeof(IMongoRepository <>)).InstancePerLifetimeScope(); string[] postgres = consumerOptions.PostgressHost.Split(":"); //0: host, 1: port //Server=localhost; Port=8189; User Id=postgres; Password=; Database=mydb string postgresConnetion = $"Server={postgres[0]}; Port={postgres[1]}; User Id=user; Password=password; Database={consumerOptions.PostgresDbName}"; //register dapper builder.Register(ctx => new NpgsqlConnection(postgresConnetion)).InstancePerLifetimeScope(); builder.RegisterGeneric(typeof(DapperRepository <>)).As(typeof(IDapperRepository <>)).InstancePerLifetimeScope(); //register ef core DbContextOptionsBuilder <AppDbContext> dbContextOptionBuilder = new DbContextOptionsBuilder <AppDbContext>(); dbContextOptionBuilder.UseNpgsql(postgresConnetion); builder.Register(ctx => new AppDbContext(dbContextOptionBuilder.Options)).InstancePerLifetimeScope(); //Initial seed data AppDbContextSeedData.SeedData(dbContextOptionBuilder); builder.RegisterType <HttpClient>().SingleInstance(); builder.RegisterType <HttpService>().As <IHttpService>().SingleInstance(); /* register all Consumers instead of * builder.RegisterType<DataAddedConsumer>(); and etc ... */ builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).Where(t => t.Name.EndsWith("Consumer")).AsImplementedInterfaces().InstancePerLifetimeScope(); builder.RegisterAssemblyTypes(typeof(MongoBusiness).Assembly).Where(t => t.Name.EndsWith("Business")).AsImplementedInterfaces().InstancePerLifetimeScope(); builder.RegisterConsumers(Assembly.GetExecutingAssembly()); //register consumers return(builder); }
private static void SeedData(IWebHost host, Microsoft.Extensions.Logging.ILogger logger) { using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; try { AppDbContextSeedData.SeedAsync(services) .Wait(); var userManager = services.GetRequiredService <UserManager <IdentityAppUser> >(); var dbContext = services.GetRequiredService <IdentityAppDbContext>(); IdentityAppDbContextSeedData.SeedAsync(userManager, dbContext, logger).Wait(); } catch (Exception ex) { logger.LogError(ex, "An error occurred seeding the DB."); } } }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, AppDbContextSeedData seeder) { app.UseIdentity(); Mapper.Initialize(config => { config.CreateMap <TripViewModel, Trip>().ReverseMap(); config.CreateMap <StopViewModel, Stop>().ReverseMap(); }); loggerFactory.AddConsole(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); loggerFactory.AddDebug(LogLevel.Information); } else { loggerFactory.AddDebug(LogLevel.Error); } app.UseMvc(config => { config.MapRoute( name: "Default", template: "{controller}/{action}/{id?}", defaults: new { controller = "App", action = "Index" }); }); //app.UseDefaultFiles(); app.UseStaticFiles(); seeder.EnsureSeedDate().Wait(); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, AppDbContextSeedData seeder) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); Mapper.Initialize(config => { config.CreateMap <RegisterViewModel, AppUser>(); config.CreateMap <ReservationContactViewModel, ReservationContact>(); config.CreateMap <ReservationContact, ReservationContactViewModel>(); config.CreateMap <ReservationContactViewModel, Reservation>(); config.CreateMap <ReservationLogisticsViewModel, Reservation>(); config.CreateMap <ReservationVehicleViewModel, Reservation>(); config.CreateMap <ApiContactViewModel, ReservationContact>(); config.CreateMap <ApiVehicleViewModel, Vehicle>(); config.CreateMap <Reservation, Reservation>(); config.CreateMap <AppUser, ReservationContactViewModel>(); config.CreateMap <ReservationViewModel, Reservation>() .ForMember(dest => dest.PickupLocation, opt => opt.MapFrom(src => src.LogisticsSetup.PickupLocation)) .ForMember(dest => dest.ReturnLocation, opt => opt.MapFrom(src => src.LogisticsSetup.ReturnLocation)) .ForMember(dest => dest.PickupDate, opt => opt.MapFrom(src => src.LogisticsSetup.PickupDate)) .ForMember(dest => dest.ReturnDate, opt => opt.MapFrom(src => src.LogisticsSetup.ReturnDate)) .ForMember(dest => dest.UserLocation, opt => opt.MapFrom(src => src.LogisticsSetup.UserLocation)) .ForMember(dest => dest.VehicleId, opt => opt.MapFrom(src => src.VehicleSetup.VehicleId)); config.CreateMap <Reservation, ReservationViewModel>() .ForMember(dest => dest.LogisticsSetup, opt => opt.MapFrom(src => new ReservationLogisticsViewModel { PickupLocation = src.PickupLocation, ReturnLocation = src.ReturnLocation, PickupDate = src.PickupDate, ReturnDate = src.ReturnDate, UserLocation = src.UserLocation }) ) .ForMember(dest => dest.VehicleSetup, opt => opt.MapFrom(src => new ReservationVehicleViewModel { VehicleId = src.VehicleId, Vehicle = src.Vehicle })) .ForMember(dest => dest.ContactSetup, opt => opt.MapFrom(src => new ReservationContactViewModel { Email = src.ReservationContact.Email, PhoneNumber = src.ReservationContact.PhoneNumber, FirstName = src.ReservationContact.FirstName, LastName = src.ReservationContact.LastName })) ; config.CreateMap <Reservation, ApiReservationViewModel>() .ForMember(dest => dest.Vehicle, opt => opt.MapFrom(src => new ApiVehicleViewModel { MakeYear = src.Vehicle.MakeYear, ModelType = src.Vehicle.ModelType, Name = src.Vehicle.Name, PassengerCapacity = src.Vehicle.PassengerCapacity, PricePerDay = src.Vehicle.PricePerDay, WheelDrive = src.Vehicle.WheelDrive })) .ForMember(dest => dest.ReservationContact, opt => opt.MapFrom(src => new ApiContactViewModel { Email = src.ReservationContact.Email, FirstName = src.ReservationContact.FirstName, LastName = src.ReservationContact.LastName, PhoneNumber = src.ReservationContact.PhoneNumber })); config.CreateMap <ApiReservationViewModel, Reservation>(); }); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseSession(); //app.Use(async (context, next) => //{ // await next(); // if (context.Response.StatusCode == 404 // && !Path.HasExtension(context.Request.Path.Value)) // { // context.Request.Path = "/index.html"; // await next(); // } //}); app.UseStaticFiles(); app.UseIdentity(); app.UseStatusCodePages(); app.UseJwtBearerAuthentication(new JwtBearerOptions() { AutomaticAuthenticate = true, AutomaticChallenge = true, TokenValidationParameters = new TokenValidationParameters() { ValidIssuer = Configuration["Tokens:Issuer"], ValidAudience = Configuration["Tokens:Audience"], ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Tokens:Key"])), ValidateLifetime = true } }); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); // Enable middleware to serve generated Swagger as a JSON endpoint. app.UseSwagger(); // Enable middleware to serve swagger-ui (HTML, JS, CSS etc.), specifying the Swagger JSON endpoint. app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "Car Rental Application API V1"); }); seeder.EnsureSeedData().Wait(); }