public LoanApplicationResult ProcessLoan(LoanApplication application) { // Check loan qualification rules List <ILoanQualificationRule> failingRules = _loanApprovalRules.Where (rule => rule.CheckLoanApprovalRule(application) == false).ToList(); if (failingRules.Count > 0) { LoanApplicationResult result = LoanApplicationResult.CreateDeniedResult(application, failingRules); return(result); } // Determine interest rate double interestRate; double creditScore = application.CreditScore; LoanRate rate = _loanRates.FirstOrDefault(r => creditScore >= r.LowerCreditScore && creditScore <= r.UpperCreditScore); interestRate = rate.InterestRate; if (application.ApplicantType.ToLower() == "premiere") { interestRate = rate.InterestRate - .01; } // Determine monthly payment double monthlyPayment = CalculateLoanPayment(loanAmount: application.LoanAmount, termYears: application.Term.Years, interestRate: interestRate); return(LoanApplicationResult.CreateApprovedResult(application, interestRate, monthlyPayment)); }
public static async Task <LoanRate> GetRateByAge(Elegible value) { using (var client = new HttpClient()) { client.BaseAddress = new Uri(ConfigurationManager.AppSettings["ApiLoanURL"]); HttpResponseMessage response = client.PostAsJsonAsync <Elegible>("RateByAge", value).Result; LoanRate loanRate = JsonConvert.DeserializeObject <LoanRate>(await response.Content.ReadAsStringAsync()); return(loanRate); } }