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