/**
  * Produce a list of organisations for a project (only active).
  *
  * @param Project $project
  * @param bool    $onlyActiveProject
  *
  * @return OrganisationService[]
  */
 public function findOrganisationByProject(Project $project, $onlyActiveProject = true)
 {
     $organisations = [];
     foreach ($project->getAffiliation() as $affiliation) {
         if ($onlyActiveProject && is_null($affiliation->getDateEnd())) {
             //Add the organisation in the key to sort on it
             $organisations[sprintf("%s-%s", $affiliation->getOrganisation()->getOrganisation(), $affiliation->getOrganisation()->getCountry()->getCountry())] = $this->createServiceElement($affiliation->getOrganisation());
         }
     }
     //Sort on the key (ASC)
     ksort($organisations);
     return $organisations;
 }
 /**
  * @param Project $project
  * @param Contact $contact
  * @param int     $which
  *
  * @return null|Affiliation
  */
 public function findAffiliationByProjectAndContactAndWhich(Project $project, Contact $contact, $which = self::WHICH_ONLY_ACTIVE)
 {
     /**
      * If the contact has no contact organisation, return null because we will not have a affiliation
      */
     if (is_null($contact->getContactOrganisation())) {
         return;
     }
     foreach ($project->getAffiliation() as $affiliation) {
         if ($which === self::WHICH_ONLY_ACTIVE && !is_null($affiliation->getDateEnd())) {
             continue;
         }
         if ($which === self::WHICH_ONLY_INACTIVE && is_null($affiliation->getDateEnd())) {
             continue;
         }
         if ($affiliation->getOrganisation()->getId() === $contact->getContactOrganisation()->getOrganisation()->getId()) {
             return $affiliation;
         }
     }
     return;
 }