示例#1
0
        //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));
        }
示例#2
0
 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"));
        }