public async Task <IActionResult> SaveLoanSetting([FromBody] LoanSettingEditDto dto) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } LoanSetting setting = DoGetLoanSetting(); if (setting.MinDepositDay != dto.MinDepositDay) { setting.MinDepositDay = dto.MinDepositDay; } if (setting.MinDepositAmount != dto.MinDepositAmount) { setting.MinDepositAmount = dto.MinDepositAmount; } var deletedRates = setting.InterestRates.Where(p => !dto.InterestRates.Any(l => l.ID == p.ID)); var addedRates = dto.InterestRates.Where(p => !setting.InterestRates.Any(l => l.ID == p.ID)); foreach (var r in deletedRates) { setting.InterestRates.Remove(r); } foreach (var r in addedRates) { setting.InterestRates.Add(InterestRate.Create(r.StartExecutionDate, r.Rate, User.Identity.Name)); } await _context.SaveChangesAsync(); return(this.AlpsActionOk(setting)); }
private LoanSetting DoGetLoanSetting() { LoanSetting setting = _context.LoanSettings.Include(p => p.InterestRates).FirstOrDefault(); if (setting == null) { setting = LoanSetting.Create(0, 0); _context.LoanSettings.Add(setting); } _context.SaveChanges(); return(setting); }