/**
  * Determine if $reference satisfies this Criteria.
  *
  * @param RentRecoveryPlusReference $reference
  * @return bool
  */
 public function isSatisfiedBy(RentRecoveryPlusReference $reference)
 {
     if (ApplicationStatuses::COMPLETE != $reference->getParent()->getStatus()) {
         $this->setNotSatisfiedText(sprintf('Status criteria is not met. Reference %s status is %d', $reference->getParent()->getReferenceNumber(), $reference->getParent()->getStatus()))->setIsSatisfied(false);
         return false;
     }
     return true;
 }
 /**
  * Determine if $reference satisfies this Criteria.
  *
  * @param RentRecoveryPlusReference $reference
  * @return bool
  */
 public function isSatisfiedBy(RentRecoveryPlusReference $reference)
 {
     if (EmploymentStatuses::EMPLOYED != $reference->getParent()->getEmploymentStatus()) {
         $this->setNotSatisfiedText(sprintf('Employment criteria is not met. Reference %s employment status is %d', $reference->getParent()->getReferenceNumber(), $reference->getParent()->getEmploymentStatus()))->setIsSatisfied(false);
         return false;
     }
     return true;
 }
 /**
  * Determine if $reference satisfies this Criteria.
  *
  * @param RentRecoveryPlusReference $reference
  * @return bool
  */
 public function isSatisfiedBy(RentRecoveryPlusReference $reference)
 {
     if ($reference->getParent()->getHasCCJ()) {
         $this->setNotSatisfiedText(sprintf('Adverse credit criteria is not met. Reference %s has adverse credit', $reference->getParent()->getReferenceNumber()))->setIsSatisfied(false);
         return false;
     }
     return true;
 }
 /**
  * Get a guarantor ReferencingApplication from IRIS, attach it to a RentRecoveryPlusReference and return it.
  *
  * @param RentRecoveryPlusReference $tenant
  * @return RentRecoveryPlusReference
  */
 private function createGuarantor(RentRecoveryPlusReference $tenant)
 {
     $guarantorCollection = $this->clientRegistry->getAgentContext()->getReferencingApplicationClient()->getReferencingApplicationGuarantors(array('referencingApplicationUuId' => $tenant->getParent()->getReferencingApplicationUuid()));
     // todo: Grab the first one for now - business will likely want to consider all Guarantors however.
     $guarantor = current($guarantorCollection->getAll());
     $this->rrpGuarantor = new RentRecoveryPlusReference();
     $this->rrpGuarantor->setParent($guarantor)->setDecisionDetails($this->decisionDetailsRetriever->getDecisionDetails($guarantor));
     return $this->rrpGuarantor;
 }
 /**
  * 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;
 }
 /**
  * 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 which strategy to use and create the appropriate criteria group through its factory.
  *
  * @param RentRecoveryPlusReference $reference
  * @return AbstractCriteria
  */
 protected function createCriteriaStrategy(RentRecoveryPlusReference $reference)
 {
     if ($reference->getParent()->getProductId() == ProductIds::INSIGHT) {
         $this->factory = new InsightCriteriaFactory();
     } else {
         $this->factory = new DefaultCriteriaFactory($this->rrpGuarantorReferenceCreator);
     }
     return $this->factory->create($reference);
 }