/** * 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; }