/**
  * Determine if $reference satisfies this Criteria.
  *
  * @param RentRecoveryPlusReference $reference
  * @return bool
  */
 public function isSatisfiedBy(RentRecoveryPlusReference $reference)
 {
     $recommendationStatus = $reference->getDecisionDetails()->getRecommendation()->getStatus();
     if (RecommendationStatuses::ACCEPTABLE_WITH_GUARANTOR != $recommendationStatus && RecommendationStatuses::ACCEPTABLE_WITH_GUARANTOR_WITH_CONDITION != $recommendationStatus) {
         $this->setNotSatisfiedText(sprintf('Reference %s is not acceptable with a suitable guarantor', $reference->getParent()->getReferenceNumber()))->setIsSatisfied(false);
         return false;
     }
     return true;
 }
 /**
  * Determine if $reference satisfies this Criteria.
  *
  * @param RentRecoveryPlusReference $reference
  * @return bool
  */
 public function isSatisfiedBy(RentRecoveryPlusReference $reference)
 {
     $creditScore = $reference->getDecisionDetails()->getCreditReference()->getScore();
     if (CreditScoreCriteriaLimits::MINIMUM_INSIGHT_CREDIT_SCORE > $creditScore) {
         $this->setNotSatisfiedText(sprintf('Credit score criteria is not met. Reference %s credit score is %d', $reference->getParent()->getReferenceNumber(), $creditScore))->setIsSatisfied(false);
         return false;
     }
     return true;
 }
 /**
  * Create the relevant criteria group.
  *
  * @param RentRecoveryPlusReference $reference
  * @return DefaultGuarantorCheckCriteriaGroup|DefaultNoGuarantorCheckCriteriaGroup
  */
 protected function createCriteria(RentRecoveryPlusReference $reference)
 {
     // Only need guarantor checks if tenant is not acceptable
     $decisionOutcome = $reference->getDecisionDetails()->getRecommendation()->getStatus();
     $needsGuarantorCheck = RecommendationStatuses::ACCEPTABLE != $decisionOutcome && RecommendationStatuses::ACCEPTABLE_WITH_CONDITION != $decisionOutcome;
     if ($needsGuarantorCheck) {
         return new DefaultGuarantorCheckCriteriaGroup(new StatusCriteria(), new SuitableGuarantorCriteria(), new GuarantorOutcomeCriteria($this->rrpGuarantorReferenceCreator));
     } else {
         return new DefaultNoGuarantorCheckCriteriaGroup(new StatusCriteria());
     }
 }