Пример #1
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app,
                              IHostingEnvironment env,
                              IConfiguration configuration,
                              ILogger <Startup> logger,
                              ClaimContext claimcontext,
                              IGST gST,
                              ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(configuration.GetSection("Logging"));
            loggerFactory.AddDebug();
            loggerFactory.AddSerilog();
            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel
                         .Information()
                         .WriteTo.RollingFile("Log - {Date}.txt", LogEventLevel.Information)
                         .CreateLogger();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                //Global error handling for Exception
                app.UseExceptionHandler(appBuilder =>
                {
                    appBuilder.Run(async context =>
                    {
                        context.Response.StatusCode = 500;
                        await context.Response.WriteAsync("An Unexpected fault happened.  Try again later." +
                                                          "If issue persists, contac Administrator");
                    });
                });
            }

            //Set appbuilder to serve request incase for static file
            app.UseFileServer();

            //AutoMapper
            AutoMapper.Mapper.Initialize(cfg =>
            {
                cfg.CreateMap <Expenses, ClaimsDto>()
                .ForMember(dest => dest.costCenter, opt => opt.MapFrom(src => src.CostCenterId))
                .ForMember(dest => dest.date, opt => opt.MapFrom(src => src.TransactionDate))
                .ForMember(dest => dest.total, opt => opt.MapFrom(src => src.TotalAmount))
                .ForMember(dest => dest.gstCalculated, opt => opt.MapFrom(src => gST.CalculateGST(src.TotalAmount)));

                cfg.CreateMap <ClaimsDto, Expenses>()
                .ForMember(dest => dest.CostCenterId, opt => opt.MapFrom(src => src.costCenter))
                .ForMember(dest => dest.TransactionDate, opt => opt.MapFrom(src => src.date))
                .ForMember(dest => dest.CreatedAt, opt => opt.MapFrom(src => DateTime.Now))
                .ForMember(dest => dest.TotalAmount, opt => opt.MapFrom(src => src.total))
                .ForMember(dest => dest.CostCenter, opt => opt.Ignore());
            });

            //Set middleware of MVC
            //app.UseMvcWithDefaultRoute();
            if (!claimcontext.Expenses.Any())
            {
                claimcontext.EnsureSeedDataForClaim();
            }

            //Convention Base Route
            app.UseMvc();

            app.Run(async(context) =>
            {
                var greeting = configuration["Greeting"];
                await context.Response.WriteAsync(greeting);
            });
        }