//public double CalculateMonthlyPayment(double loan, int lengthYears, int lengthMonths, double rate) public double CalculateMonthlyPayment(MortgageDataIn dataIn) { double monthlyInterestRate = dataIn.AnnualRate / 1200.0; int loanMonthsDuration = (dataIn.DurationYears * 12) + dataIn.DurationMonths; var monthlyPayment = ((dataIn.LoanAmount - dataIn.DownPayment) * monthlyInterestRate) / (1 - Math.Pow(1 + monthlyInterestRate, -1.0 * loanMonthsDuration)); return(Math.Round(monthlyPayment + dataIn.ExtraMonthlyPayment, 2)); }
public ActionResult <MortgageDataOut> PrintResults(MortgageDataIn dataIn) { return(new MortgageDataOut { MonthlyPayment = CalculateMonthlyPayment(dataIn), InputedData = dataIn }); }
public async Task <IActionResult> CalculateMortgageAndAmortization(MortgageDataIn dataIn) { if (ModelState.IsValid) { MortgageAndAmortization result = new MortgageAndAmortization(); var httpContent = new StringContent(JsonConvert.SerializeObject(dataIn), Encoding.UTF8, "application/json"); using (var httpClient = new HttpClient()) { using (var response = await httpClient.PostAsync("https://localhost:44322/printresults", httpContent)) { string apiResponse = await response.Content.ReadAsStringAsync(); result.MortOut = JsonConvert.DeserializeObject <MortgageDataOut>(apiResponse); } var httpContent2 = new StringContent(JsonConvert.SerializeObject(result.MortOut), Encoding.UTF8, "application/json"); using (var response = await httpClient.PostAsync("https://localhost:44322/printamortization", httpContent2)) { string apiResponse = await response.Content.ReadAsStringAsync(); result.AmortOut = JsonConvert.DeserializeObject <List <AmortizationDataOut> >(apiResponse); } } var totalInterest = 0.0; foreach (var item in result.AmortOut) { totalInterest += item.Interest; } result.TotalInterest = totalInterest; if ((dataIn.DownPayment > 0) || (dataIn.ExtraMonthlyPayment > 0)) { dataIn.DownPayment = 0.0; dataIn.ExtraMonthlyPayment = 0.0; MortgageAndAmortization resultWithoutSavings = new MortgageAndAmortization(); var httpContent3 = new StringContent(JsonConvert.SerializeObject(dataIn), Encoding.UTF8, "application/json"); using (var httpClient = new HttpClient()) { using (var response = await httpClient.PostAsync("https://localhost:44322/printresults", httpContent3)) { string apiResponse = await response.Content.ReadAsStringAsync(); resultWithoutSavings.MortOut = JsonConvert.DeserializeObject <MortgageDataOut>(apiResponse); } var httpContent4 = new StringContent(JsonConvert.SerializeObject(resultWithoutSavings.MortOut), Encoding.UTF8, "application/json"); using (var response = await httpClient.PostAsync("https://localhost:44322/printamortization", httpContent4)) { string apiResponse = await response.Content.ReadAsStringAsync(); resultWithoutSavings.AmortOut = JsonConvert.DeserializeObject <List <AmortizationDataOut> >(apiResponse); } } var totalInterestWithoutSavings = 0.0; foreach (var item in resultWithoutSavings.AmortOut) { totalInterestWithoutSavings += item.Interest; } resultWithoutSavings.TotalInterest = totalInterestWithoutSavings; result.TotalSavings = resultWithoutSavings.TotalInterest - result.TotalInterest; result.EarlierMonthsDifference = resultWithoutSavings.AmortOut.Count() - result.AmortOut.Count(); } return(View(result)); } return(View("Index")); }