Example #1
0
 /**
  * Find participants based on the given criteria.
  *
  * @param Meeting    $meeting
  * @param Parameters $search
  *
  * @return Registration[]
  */
 public function findOrganisationByMeetingAndDescriptionSearch(Meeting $meeting, Parameters $search)
 {
     $queryBuilder = $this->_em->createQueryBuilder();
     $queryBuilder->select('o', 'partial l.{id}', 'partial ct.{id,extension}');
     $queryBuilder->distinct('o.id');
     $queryBuilder->from('Organisation\\Entity\\Organisation', 'o');
     $queryBuilder->join('o.contactOrganisation', 'co');
     $queryBuilder->leftJoin('o.description', 'd');
     $queryBuilder->leftJoin('o.logo', 'l');
     $queryBuilder->join('l.contentType', 'ct');
     /*
      * The search can be refined on country and type, include the results here
      */
     if ($search->get('country') && $search->get('country') !== '0') {
         $queryBuilder->join('o.country', 'country');
         $queryBuilder->andWhere('country.id = ?7');
         $queryBuilder->setParameter(7, $search->get('country'));
     }
     /*
      * The search can be refined on country and type, include the results here
      */
     if ($search->get('organisationType')) {
         $queryBuilder->join('o.type', 'type');
         $queryBuilder->andWhere($queryBuilder->expr()->in('type.id', $search->get('organisationType')));
     }
     $queryBuilder->andWhere($queryBuilder->expr()->orX($queryBuilder->expr()->like('d.description', '?4'), $queryBuilder->expr()->like('o.organisation', '?4')));
     /*
      * Limit the results to the registered users
      */
     $subSelect = $this->_em->createQueryBuilder();
     $subSelect->select('c');
     $subSelect->from('Event\\Entity\\Registration', 'r');
     $subSelect->join('r.contact', 'c');
     $subSelect->where('r.meeting = ?1');
     $subSelect->andWhere($subSelect->expr()->isNull('r.dateEnd'));
     $subSelect->andWhere('r.hideInList = ?2');
     $subSelect->andWhere('r.overbooked = ?3');
     $queryBuilder->andWhere($queryBuilder->expr()->in('co.contact', $subSelect->getDQL()));
     $queryBuilder->setParameter(1, $meeting->getId());
     $queryBuilder->setParameter(2, Registration::NOT_HIDE_IN_LIST);
     $queryBuilder->setParameter(3, Registration::NOT_OVERBOOKED);
     $queryBuilder->setParameter(4, '%' . $search->get('search') . '%');
     $queryBuilder->addOrderBy('o.organisation', 'ASC');
     return $queryBuilder->getQuery()->useQueryCache(true)->getResult(AbstractQuery::HYDRATE_ARRAY);
 }
 /**
  * {@inheritDoc}
  */
 public function getId()
 {
     if ($this->__isInitialized__ === false) {
         return (int) parent::getId();
     }
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getId', array());
     return parent::getId();
 }
Example #3
0
 /**
  * @param Meeting $meeting
  *
  * @return array
  */
 public function findCountriesByMeeting(Meeting $meeting)
 {
     $query = $this->_em->createQueryBuilder();
     $query->distinct('country.id');
     $query->select('country.id');
     $query->addSelect('country.country');
     $query->from('Event\\Entity\\Registration', 'r');
     $query->where('r.meeting = ?1');
     $query->setParameter(1, $meeting->getId());
     $query->andWhere($query->expr()->isNull('r.dateEnd'));
     $query->andWhere('r.hideInList = ?2');
     $query->andWhere('r.overbooked = ?3');
     $query->setParameter(2, Registration::NOT_HIDE_IN_LIST);
     $query->setParameter(3, Registration::NOT_OVERBOOKED);
     $query->join('r.contact', 'c');
     $query->join('c.contactOrganisation', 'co');
     $query->join('co.organisation', 'o');
     $query->join('o.country', 'country');
     return $query->getQuery()->useQueryCache(true)->getResult();
 }