public async Task <NpvChartModel> GetNpvResultAsync(NpvModel model) { var result = new NpvChartModel(); await Task.Run(() => { if (!model.CalculationID.HasValue) { var calculationModel = InsertCalculation(model); InsertCashFlows(calculationModel.CalculationID, model.CommaDelimetedCashFlows); } var cashFlows = model.CommaDelimetedCashFlows.Split(',').Select(Double.Parse).ToList(); cashFlows.Insert(0, model.InitialInvestment); var discountRate = model.LowerBoundDiscountRate; while (discountRate <= model.UpperBoundDiscountRate) { result.Labels.Add($"{discountRate}%"); result.Values.Add(CaculateNpv(cashFlows, discountRate)); discountRate = Math.Round(discountRate + model.DiscountRateIncrement, 2); } ; }); return(result); }
public async Task <NpvChartModel> GetNpvByIDAsync(int id) { var result = new NpvChartModel(); await Task.Run(() => { var nvpModel = GetCalculationByID(id); var cashFlows = nvpModel.ListOfCashFlows; cashFlows.Insert(0, nvpModel.InitialInvestment); var discountRate = nvpModel.LowerBoundDiscountRate; while (discountRate <= nvpModel.UpperBoundDiscountRate) { result.Labels.Add($"{discountRate}%"); result.Values.Add(CaculateNpv(cashFlows, discountRate)); discountRate = Math.Round(discountRate + nvpModel.DiscountRateIncrement, 2); } ; }); return(result); }