public bool ProcessALoan(int loanID) { var loanToCheck = _dal.loans.Where(x => x.LoanID == loanID).FirstOrDefault(); ICreditCheckerRule rule = null; rule = CheckCreditRuleCreator.Create(loanToCheck, _dal); CreditChecker checker = rule.SelectAppropriateCheckingAgency(loanToCheck); ICreditCheckerService service = null; service = CreditCheckerServiceCreator.Create(checker.CheckerID); var creditScore = service.GetCreditCheckScore(loanToCheck.UserID); if (creditScore > 50) { //Accept loanToCheck.LoanStatus = 2; loanToCheck.LoanApprovedByEngine = true; } else { //Reject loanToCheck.LoanStatus = -1; loanToCheck.LoanApprovedByEngine = false; } loanToCheck.LoanApprovedRejectedByEngineDate = DateTime.Now; loanToCheck.CreditChecker = checker.CheckerID; loanToCheck.CreditScore = creditScore; //Need to sendalert return(true); }
static public ICreditCheckerRule Create(Loan loan, IDALLoanAPound dal) { ICreditCheckerRule creditCheckerRule = null; if (loan.LoanAmount > 50000) { creditCheckerRule = new TestCreditCheckerRule1(dal); } else { creditCheckerRule = new TestCreditCheckerRule2(dal); } return(creditCheckerRule); }