getSummit(); $end_date = $event->getEndDate(); $start_date = $event->getStartDate(); return $this->getEntityManager()->createQueryBuilder() ->select("e") ->from(\models\summit\SummitEvent::class, "e") ->join('e.summit', 's', Join::WITH, " s.id = :summit_id") ->where('e.published = 1') ->andWhere('e.start_date < :end_date') ->andWhere('e.end_date > :start_date') ->setParameter('summit_id', $summit->getId()) ->setParameter('start_date', $start_date) ->setParameter('end_date', $end_date)->getQuery()->getResult(); } /** * @param PagingInfo $paging_info * @param Filter|null $filter * @param Order|null $order * @return PagingResponse */ public function getAllByPage(PagingInfo $paging_info, Filter $filter = null, Order $order = null) { $class = count($filter->getFilter('speaker')) > 0? \models\summit\Presentation::class : \models\summit\SummitEvent::class; $query = $this->getEntityManager()->createQueryBuilder() ->select("e") ->from($class, "e"); if(!is_null($filter)){ $filter->apply2Query($query, array ( 'title' => 'e.title:json_string', 'published' => 'e.published', 'start_date' => 'e.start_date:datetime_epoch', 'end_date' => 'e.end_date:datetime_epoch', 'tags' => new DoctrineJoinFilterMapping ( 'e.tags', 't', "t.tag :operator ':value'" ), 'summit_type_id'=> new DoctrineJoinFilterMapping ( 'e.summit_types', 'st', "st.id :operator :value" ), 'location_id'=> new DoctrineJoinFilterMapping ( 'e.location', 'l', "l.id :operator :value" ), 'summit_id'=> new DoctrineJoinFilterMapping ( 'e.summit', 's', "s.id :operator :value" ), 'event_type_id' => new DoctrineJoinFilterMapping ( 'e.type', 'et', "et.id :operator :value" ), 'track_id' => new DoctrineJoinFilterMapping ( 'e.category', 'c', "c.id :operator :value" ), 'speaker' => new DoctrineJoinFilterMapping ( 'e.speakers', 'sp', "concat(sp.first_name, ' ', sp.last_name) :operator ':value'" ), )); } if (!is_null($order)) { $order->apply2Query($query, array ( 'title' => 'e.title', 'id' => 'e.id', 'start_date' => 'e.start_date', 'end_date' => 'e.end_date', 'created' => 'e.created', )); } else { //default order $query = $query->addOrderBy("e.start_date",'ASC'); $query = $query->addOrderBy("e.end_date", 'ASC'); } $query= $query ->setFirstResult($paging_info->getOffset()) ->setMaxResults($paging_info->getPerPage()); $paginator = new Paginator($query, $fetchJoinCollection = true); $total = $paginator->count(); $data = array(); foreach($paginator as $entity) array_push($data, $entity); return new PagingResponse ( $total, $paging_info->getPerPage(), $paging_info->getCurrentPage(), $paging_info->getLastPage($total), $data ); } /** * @param int $event_id */ public function cleanupAttendeesScheduleForEvent($event_id){ $query = "DELETE SummitAttendee_Schedule FROM SummitAttendee_Schedule WHERE SummitEventID = {$event_id};"; $this->_em->getConnection()->executeUpdate($query); } }