static InvestmentBasis GetInvestmentBasis(InvestmentBasis basis = null) { basis = basis ?? new InvestmentBasis(); if (!basis.InitialInvestment.HasValue) { Console.WriteLine("Please input your initial investment amount:"); var val = GetUserInputValue(); basis.InitialInvestment = val; } if (!basis.MonthlyContributions.HasValue) { Console.WriteLine("Please input your expected monthly contributions:"); var val = GetUserInputValue(); basis.MonthlyContributions = val; } if (!basis.Years.HasValue) { Console.WriteLine("Please input the number of years you plan to invest: (1 or more)"); var val = GetUserInputValue(); if (val == 0) { GetInvestmentBasis(basis); } basis.Years = (int)val; } return(basis); }
static InvestmentReturn CalculateReturn(InvestmentBasis basis, double annualpr, int yearsToInvest) { var result = new InvestmentReturn { Total = basis.InitialInvestment.Value, TotalWithoutGrowth = basis.InitialInvestment.Value + (basis.MonthlyContributions.Value * (12 * yearsToInvest)), MonthlyPercentageRate = annualpr / 12d }; for (int i = 0; i < 12 * yearsToInvest; i++) { var newMonthlyTotal = result.Total + basis.MonthlyContributions.Value; var monthlyGrowth = newMonthlyTotal * result.MonthlyPercentageRate; result.Total = newMonthlyTotal + monthlyGrowth; result.Growth += monthlyGrowth; } return(result); }