public MapperService(IFundsInCategoryService fundsInCategoryService) { _fundsInCategoryService = fundsInCategoryService; }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, IFundsInCategoryService catService, ICalculateBudgetFundsService fundsService) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseDatabaseErrorPage(); } else { app.UseExceptionHandler("/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStatusCodePages(); app.UseStaticFiles(); app.UseNodeModules(env); app.UseCookiePolicy(); app.UseAuthentication(); AutoMapper.Mapper.Initialize(cfg => { cfg.CreateMap <BudgetDto, Budget>(); cfg.CreateMap <BudgetDto, Budget>().ReverseMap() .BeforeMap((s, d) => d.UnAllocatedFunds = fundsService.CalculateUnallocateFunds(d.AllocatedFunds, s.AllottedFunds)) .BeforeMap((s, d) => d.AllocatedFunds = fundsService.CalculateAllocatedFunds(d.CategoryGroups)) .BeforeMap((s, d) => d.CategoryGroups = catService.GroupExpensesByCat(s.Bills)); cfg.CreateMap <BudgetForCreateOrEditDto, Budget>(); cfg.CreateMap <BudgetForCreateOrEditDto, Budget>().ReverseMap(); cfg.CreateMap <BudgetCategoryDto, BudgetCategory>(); cfg.CreateMap <BudgetCategoryDto, BudgetCategory>().ReverseMap(); cfg.CreateMap <BudgetCategoryForSelectListDto, BudgetCategory>(); cfg.CreateMap <BudgetCategoryForSelectListDto, BudgetCategory>().ReverseMap(); cfg.CreateMap <BillDto, Bill>() .IncludeBase <ExpenseBaseDto, ExpenseBase>(); cfg.CreateMap <BillDto, Bill>() .IncludeBase <ExpenseBaseDto, ExpenseBase>() .ReverseMap(); cfg.CreateMap <ExpenseBaseDto, ExpenseBase>(); cfg.CreateMap <ExpenseBaseDto, ExpenseBase>().ReverseMap(); cfg.CreateMap <BillForCreateDto, Bill>(); cfg.CreateMap <BillForCreateDto, Bill>().ReverseMap(); }); app.UseMvc(); }