public async Task <IActionResult> PostNpvTbl([FromBody] NpvTbl npvTbl) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } _context.NpvTbl.Add(npvTbl); await _context.SaveChangesAsync(); return(CreatedAtAction("GetNpvTbl", new { id = npvTbl.Id }, npvTbl)); }
public async Task <IActionResult> CalculateNPV(NPVCalculationInfo input) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (input.CashFlow.Count == 0 || input.InitialValue == 0) { return(BadRequest()); } var cId = DateTime.Now.ToString("yyyyMMddHHmmss"); var cfStr = string.Join(",", input.CashFlow); List <NpvTbl> computedValues = new List <NpvTbl>(); var rates = new List <double>(); double templb = input.LowerBound; while (templb < input.UpperBound) { rates.Add(Math.Round(templb, 2)); templb += input.Increment; if (templb >= input.UpperBound) { rates.Add(Math.Round(input.UpperBound, 2)); } } foreach (var rt in rates) { var compInfo = new NpvTbl(); compInfo.CalculationId = cId; compInfo.ComputedValue = GetNPV(rt, input.InitialValue, input.CashFlow); compInfo.Rate = rt; _context.NpvTbl.Add(compInfo); } var cf = new CashflowTbl(); cf.CalculationId = cId; cf.CashFlow = cfStr; _context.CashflowTbl.Add(cf); await _context.SaveChangesAsync(); return(Ok(cId)); }