public function getNextLaneForSection(RaceSection $raceSection)
 {
     $em = $this->getEntityManager();
     $qb = $em->createQueryBuilder();
     $qb->select('MAX(r.lane) maxNum')->from('AppBundle:Registration', 'r')->where($qb->expr()->eq('r.section', '?1'))->setParameter(1, $raceSection->getId());
     return (int) $qb->getQuery()->getSingleScalarResult() + 1;
 }
示例#2
0
 public function createSection(Race $race, $number, LoggerInterface $logger = null)
 {
     $em = $this->getEntityManager();
     $section = new RaceSection();
     $section->setRace($race)->setNumber($number);
     $em->persist($section);
     if (!is_null($logger)) {
         $logger->info("Create section #{$number} for race {$race->getId()}");
     }
     $em->flush();
     $em->refresh($race);
     $em->refresh($section);
     return $section;
 }
示例#3
0
 /**
  * Check if all participants are cancelled or finished and if so, finish the race
  * @param RaceSection $section
  */
 public function checkIfFinished(RaceSection $section)
 {
     $done = 0;
     /** @var Registration $reg */
     foreach ($section->getValidRegistrations() as $reg) {
         if ($reg->isDone()) {
             $done += 1;
         }
     }
     if ($done == $section->getValidRegistrations()->count()) {
         $section->setStatus(RaceSectionStatus::FINISHED);
         $em = $this->getDoctrine()->getManager();
         $em->persist($section);
         $em->flush();
     }
 }