/** * @param Organisation $organisation * @return Contact[] */ public function findContactsInOrganisation(Organisation $organisation) { $qb = $this->_em->createQueryBuilder(); $qb->select('c'); $qb->from("Contact\\Entity\\Contact", 'c'); $qb->addOrderBy('c.lastName', 'ASC'); //Select the contacts based on their organisations $subSelect = $this->_em->createQueryBuilder(); $subSelect->select('contact'); $subSelect->from('Contact\\Entity\\ContactOrganisation', 'co'); $subSelect->join('co.organisation', 'o'); $subSelect->join('co.contact', 'contact'); $subSelect->where('o.id = ?1'); $qb->setParameter(1, $organisation->getId()); $qb->andWhere($qb->expr()->isNull('c.dateEnd')); $qb->andWhere($qb->expr()->in('c', $subSelect->getDQL())); return $qb->getQuery()->getResult(); }
/** * @param Contact $contact * * @return array */ public function findOrganisationForProfileEditByContact(Contact $contact) { $organisations = []; //Start with your own organisation if (!is_null($contact->getContactOrganisation())) { $organisations[$contact->getContactOrganisation()->getOrganisation()->getId()] = $contact->getContactOrganisation()->getOrganisation(); } foreach ($this->findOrganisationByEmailAddress($contact->getEmail()) as $organisation) { $organisations[$organisation->getId()] = $organisation; } asort($organisations); //Add an empty value $emptyOrganisation = new Entity\Organisation(); $emptyOrganisation->setId(0); $emptyOrganisation->setOrganisation('— None of the above'); $organisations[$emptyOrganisation->getId()] = $emptyOrganisation; return $organisations; }