public void MaturityCompletionDate(Loan loan, double expected) { var rule = new DuchessOfDunderly.LoanRule.MaturityCompletionDate.LoanRule(new Discount.MaturityCompletionDate.Discount()); LoanException result = rule.CalculateLoanException(loan); Assert.Equal(expected, result.Discount); }
public void InterestProfile(Loan loan, double expected) { var rule = new DuchessOfDunderly.LoanRule.InterestProfile.LoanRule(new Discount.InterestProfile.Discount()); LoanException result = rule.CalculateLoanException(loan); Assert.Equal(expected, result.Discount); }
public void CurrentLTV(Loan loan, double expected) { var rule = new DuchessOfDunderly.LoanRule.CurrentLTV.LoanRule(new Discount.CurrentLTV.Discount()); LoanException result = rule.CalculateLoanException(loan); Assert.Equal(expected, result.Discount); }
public override LoanException CalculateLoanException(Loan source) { LoanException result = new LoanException(); if (source.MaturityDate < source.CompletionDate) { result.Trigger(1, exceptionDiscount.CalculateDiscount(source)); } return(result); }
public override LoanException CalculateLoanException(Loan source) { LoanException result = new LoanException(); if (source.CurrentLTV > source.OriginalLTV) { result.Trigger(3, exceptionDiscount.CalculateDiscount(source)); } // result.Trigger(3, CalculateDiscount(source)); return(result); }
public override LoanException CalculateLoanException(Loan source) { LoanException result = new LoanException(); double total_monthly_income = (source.IncomeBorrower1 + source.IncomeBorrower2) / 12; if (source.CMS > total_monthly_income) { result.Trigger(4, exceptionDiscount.CalculateDiscount(source)); } return(result); }
public override LoanException CalculateLoanException(Loan source) { LoanException result = new LoanException(); if (source.CurrentIndex.Equals("FIX", StringComparison.InvariantCultureIgnoreCase) && (source.CurrentMargin.NotEqual(source.CurrentInterestRate))) { result.Trigger(2, exceptionDiscount.CalculateDiscount(source)); } return(result); }
public void CalculateLoanGrades() { foreach (Loan loan in repo.Get()) { LoanGrade grade = new LoanGrade(loan.LoanID); foreach (IExceptionRule rule in rules) { LoanException loanException = rule.CalculateLoanException(loan); if (loanException.Triggered) { grade.AddException(loanException); } } grade.Recalculate(); loan.Grade = grade; grades.Add(grade); } }