public function findMostInterestingByWeek(Week $week, $limit) { //For now, we define 'most interesting' as 'lasts the longest period of time' $qb = $this->createQueryBuilder('s'); $qb->leftJoin('s.performances', 'p')->where('p.start_date < :end')->andWhere('p.end_date > :start')->andWhere('s.authorised_by is not null')->andWhere('s.entered = true')->setParameter('start', $week->getStartAt())->setParameter('end', $week->getEndAt())->orderBy('p.end_date - p.start_date', 'DESC')->setMaxResults($limit); return $qb->getQuery()->getResult(); }
private function getWeekFromDate(\DateTime $date) { $date = clone $date; $week = new Week(); if ($period = $this->periodRepository->findAt($date)) { $week->setName($period->getShortName()); $week->setShortName(''); } $week->setStartAt(clone $date); $date->modify('+1 week'); $week->setEndAt($date); $week->setShortName(''); return $week; }