public NpvResultModel Npv(NpvDataModel model) { if (model.InitialInvestment != 0) { model.CashFlows.Insert(0, -model.InitialInvestment); model.InitialInvestment = 0; } var npv = model.CashFlows.Select((c, n) => c / Math.Pow(1 + (model.DiscountRate / 100), n)).Sum(); return(new NpvResultModel { DiscountRate = model.DiscountRate, NetPresentValue = Math.Round(npv, 2) }); }
public void Npv() { // Arrange var helper = new ComputeService(); var model = new NpvDataModel() { InitialInvestment = 150000, CashFlows = new List <double> { 50000, 25000 }, DiscountRate = 1.2 }; // Act var result = helper.Npv(model); // Assert Assert.IsTrue(result is NpvResultModel); Assert.AreEqual(1.2, result.DiscountRate); Assert.AreEqual(-76182.26, result.NetPresentValue); }
public IHttpActionResult Post([FromBody] NpvDataModel model) { return(Ok(_computeSevice.Npv(model))); }