/**
  * Lists all races and payment amounts for a specific club.
  *
  * @Route("/event/{event}/billing/{club}", name="billing_show")
  * @Method("GET")
  */
 public function showAction(Event $event, Club $club)
 {
     $em = $this->getDoctrine()->getManager();
     /** @var RaceRepository $raceRepo */
     $raceRepo = $em->getRepository('AppBundle:Race');
     // $paid = $repo->findBy(array('event' => $event->getId(), 'club' => $club->getId()));
     $races = $raceRepo->getAllRacesThatHaveRegistrations($event->getId());
     $billingPositions = array();
     $total = 0.0;
     /** @var Race $race */
     foreach ($races as $race) {
         $price = $race->getPricePerStarter();
         /** @var RaceSection $section */
         foreach ($race->getSections() as $section) {
             /** @var Registration $registration */
             foreach ($section->getRegistrations() as $registration) {
                 /** @var Club $myClub */
                 $myClub = $registration->getTeam()->getClub();
                 if ($club->getId() == $myClub->getId()) {
                     // TODO handle de-registered and those from other races
                     if (array_key_exists($race->getId(), $billingPositions)) {
                         $billingPositions[$race->getId()]['teams'] += 1;
                         $billingPositions[$race->getId()]['amount'] += $price;
                     } else {
                         $billingPositions[$race->getId()] = array('teams' => 1, 'amount' => $price, 'race' => $race);
                     }
                     $total += $price;
                 }
             }
         }
     }
     return $this->render('billing/show.html.twig', array('club' => $club, 'event' => $event, 'positions' => $billingPositions, 'rr' => $raceRepo, 'total' => $total));
 }
Example #2
0
 public function getNewlyAddedSongs($pingedat, Event $event)
 {
     $newsongs = [];
     $queryBuilder = $this->createQueryBuilder('s')->where('s.event = :event AND s.createdAt >= :time')->setParameters(['event' => $event->getId(), 'time' => $pingedat]);
     $query = $queryBuilder->getQuery();
     $newsongs = $query->getResult();
     return $newsongs;
 }
 /**
  * @param DbEvent $dbEvent
  * @return DomainEvent
  * @throws \CoreDomain\Exception\DomainRuleException
  */
 public static function fromDbEvent(DbEvent $dbEvent)
 {
     $domainEvent = new DomainEvent(new UUId($dbEvent->getId()), new String($dbEvent->getTitle()));
     $dateWithTimeRange = DomainDateWithTimeRangeFactory::fromDateWithTimeRangeEmbeddable($dbEvent->getDateWithTimeRange());
     if ($dateWithTimeRange) {
         $domainEvent->schedule($dateWithTimeRange);
     }
     return $domainEvent;
 }
 /**
  * Check if the total paid is equal to the total of open payments
  *
  * @param Event $event The event to inspect.
  * @param Club $club The club for that the check should be done.
  * @return bool <tt>true</tt> if everything was paid
  */
 public function hasPaidEverything(Event $event, Club $club)
 {
     // search for all billings
     $billings = $this->findBy(array('event' => $event->getId(), 'club' => $club->getId()));
     $totalPaid = 0.0;
     /** @var Billing $billing */
     foreach ($billings as $billing) {
         $totalPaid += $billing->getEuro() + $billing->getCent() / 100.0;
     }
     $toPay = $this->getTotalToPay($event, $club);
     return 0 <= $toPay - $totalPaid;
 }
Example #5
0
 /**
  * Lists all Race entities.
  *
  * @Route("/event/{event}/races/{onlyThoseThatCanBeStarted}", name="race_index")
  * @Method("GET")
  */
 public function indexAction(Event $event, $onlyThoseThatCanBeStarted = false)
 {
     $em = $this->getDoctrine()->getManager();
     /** @var RaceRepository $repo */
     $repo = $em->getRepository('AppBundle:Race');
     if ($onlyThoseThatCanBeStarted) {
         $races = $repo->getAllRacesThatHaveRegistrations($event->getId());
     } else {
         $races = $event->getRaces();
     }
     return $this->render('race/index.html.twig', array('races' => $races, 'event' => $event, 'rr' => $repo, 'filtered' => $onlyThoseThatCanBeStarted));
 }
 /**
  * Finds and displays a Event entity.
  *
  * @Route("/{id}", name="event_show")
  * @Method({"GET", "POST"})
  */
 public function showAction(Event $event, Request $request)
 {
     $email = new Email();
     $form = $this->createFormBuilder($email)->add('email', TextType::class)->add('submit', SubmitType::class, array('label' => 'Add attendee'))->getForm();
     $form->handleRequest($request);
     if ($form->isSubmitted()) {
         $data = $form->getData()->getEmail();
         $user = $usr = $this->get('security.context')->getToken()->getUser()->getUsername();
         $message = \Swift_Message::newInstance()->setSubject('New invitation form ' . $user)->setFrom(array('*****@*****.**' => 'Anonymous Gift'))->setTo($data)->setBody($this->renderView('event/email.html.twig', array('event' => $event)), 'text/html');
         $this->get('mailer')->send($message);
         $this->get('session')->getFlashBag()->add('info', 'invitation to "' . $data . '" has been sent');
         return $this->redirectToRoute('event_show', array('id' => $event->getId()), 301);
     }
     return $this->render('event/show.html.twig', array('event' => $event, 'form' => $form->createView()));
 }
 /**
  * Test an empty Genre entity
  */
 public function testEmptyUser()
 {
     $event = new Event();
     $this->assertNull($event->getId());
     $this->assertNull($event->getName());
     $this->assertNull($event->getDescription());
     $this->assertNull($event->getCountry());
     $this->assertNull($event->getCity());
     $this->assertNull($event->getAddress());
     $this->assertNull($event->getBeginAt());
     $this->assertNull($event->getEndAt());
     $this->assertNull($event->getSlug());
     $this->assertNull($event->getCreatedBy());
     $this->assertNull($event->getUpdatedBy());
 }
Example #8
0
 /**
  * Creates a new Event entity.
  *
  * @Route("/events/inscription/{id}/new", name="inscription_event_create")
  * @Method("POST")
  * @Template("AppBundle:Events:newInscription.html.twig")
  * @param Event $event
  * @param Request $request
  * @return array|\Symfony\Component\HttpFoundation\RedirectResponse
  */
 public function createAction(Event $event, Request $request)
 {
     if ($event->getOpen()) {
         $inscription = new Inscription();
         $form = $this->createForm(new InscriptionType(), $inscription, array('action' => $this->generateUrl('inscription_event_create', array('id' => $event->getId())), 'method' => 'POST'));
         $form->add('submit', 'submit', array('label' => 'S\'inscrire'));
         $form->handleRequest($request);
         if ($form->isValid()) {
             $inscription->setEvent($event);
             $em = $this->getDoctrine()->getManager();
             $em->persist($inscription);
             $em->flush();
             return $this->redirect($this->generateUrl('inscription_event', array('id' => $event->getId())));
         }
         return array('inscription' => $inscription, 'form' => $form->createView());
     }
 }
Example #9
0
 /**
  * Show overview of all startable races to start multiple at once.
  *
  * @Route("/event/{event}/start", name="race_start_all")
  * @Method("GET")
  * @Security("has_role('ROLE_REFEREE')")
  */
 public function showAllAction(Request $request, Event $event)
 {
     $em = $this->getDoctrine()->getManager();
     /** @var RaceRepository $repo */
     $repo = $em->getRepository('AppBundle:Race');
     $allRaces = $repo->getAllRacesThatHaveRegistrations($event->getId());
     $races = array();
     /** @var Race $race */
     foreach ($allRaces as $race) {
         if (!$repo->isFinished($race)) {
             $races[] = $race;
         }
     }
     if (0 == count($races)) {
         $this->addFlash('error', 'Keine startbaren Rennen gefunden!');
         $this->redirect($request->headers->get('referer'));
     }
     return $this->render('race/startAll.html.twig', array('races' => $races, 'event' => $event, 'rr' => $repo));
 }
Example #10
0
 public function getLastNumberForEvent(Event $event)
 {
     $em = $this->getEntityManager();
     $qb = $em->createQueryBuilder();
     $qb->select('MAX(r.numberInEvent) maxNum')->from('AppBundle:Race', 'r')->orderBy('r.numberInEvent', 'DESC')->where($qb->expr()->eq('r.event', '?1'))->setParameter(1, $event->getId());
     return (int) $qb->getQuery()->getSingleScalarResult();
 }
 /**
  * {@inheritDoc}
  */
 public function getId()
 {
     if ($this->__isInitialized__ === false) {
         return (int) parent::getId();
     }
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getId', []);
     return parent::getId();
 }
Example #12
0
 /**
  * starts the timing for multiple race sections
  *
  * @Route("/api/timing/start/event/{event}", name="timing_start_all")
  * @Method("POST")
  */
 public function startMultipleRaceSectionsAction(Request $request, Event $event)
 {
     $timeWithFractionSeconds = $this->getTimeWithFractionSeconds();
     $sectionIDs = $request->get('sections');
     if (is_null($sectionIDs)) {
         $this->addFlash('error', "Keine Abteilung ausgewählt zum starten!");
     } else {
         $em = $this->getDoctrine()->getManager();
         $sectionRepo = $em->getRepository('AppBundle:RaceSection');
         foreach ($sectionIDs as $sID) {
             $section = $sectionRepo->find($sID);
             $this->markAsStarted($section, $sID, $em, $timeWithFractionSeconds);
         }
         $em->flush();
     }
     return $this->redirectToRoute('race_index', array('event' => $event->getId()));
 }
Example #13
0
 /**
  * Creates a form to delete a Event entity.
  *
  * @param Event $event The Event entity
  *
  * @return \Symfony\Component\Form\Form The form
  */
 private function createDeleteForm(Event $event)
 {
     return $this->createFormBuilder()->setAction($this->generateUrl('event_delete', array('id' => $event->getId())))->setMethod('DELETE')->getForm();
 }
 /**
  * Creates a new Event entity.
  *
  * @Route("/event/{event}/race/{race}/new", name="registration_new")
  * @Method({"GET", "POST"})
  * @Security("has_role('ROLE_REGISTRATION')")
  */
 public function newAction(Request $request, Event $event, Race $race)
 {
     $em = $this->getDoctrine()->getManager();
     $registration = new Registration();
     /** @var QueryBuilder $qb */
     $qb = $em->createQueryBuilder();
     $now = (new \DateTime('now'))->format('Y');
     $minYear = $now - $race->getAgeMax();
     $maxYear = $now - $race->getAgeMin();
     if (Competitor::GENDER_BOTH == $race->getGender()) {
         // mixed
         $whereGender = $qb->expr()->neq('p.gender', ':gender');
     } else {
         $whereGender = $qb->expr()->eq('p.gender', ':gender');
     }
     $whereYear = $qb->expr()->between('p.yearOfBirth', $minYear, $maxYear);
     $whereSameRace = $qb->expr()->orX();
     $whereSameRace->add($qb->expr()->neq('s.race', ':raceId'));
     $whereSameRace->add($qb->expr()->isNull('s.race'));
     $where = $qb->expr()->andX();
     $where->add($whereYear);
     $where->add($whereGender);
     $where->add($whereSameRace);
     $query = $qb->select('t')->from('AppBundle:Team', 't')->leftJoin('t.registrations', 'r')->leftJoin('r.section', 's')->join('t.members', 'tp')->join('tp.membership', 'membership')->join('membership.person', 'p')->where($where)->setParameter('gender', $race->getGender())->setParameter(':raceId', $race->getId())->addOrderBy('t.id', 'ASC')->getQuery();
     $teamResult = $query->getResult();
     $alreadyRegistered = array();
     foreach ($race->getSections() as $s) {
         /** @var RaceSection $s */
         foreach ($s->getRegistrations() as $r) {
             /** @var Registration $r */
             $alreadyRegistered[] = $r->getTeam();
         }
     }
     // filter by number of members and show only those with the correct team size
     $teams = array();
     /** @var Team $t */
     foreach ($teamResult as $t) {
         if ($t->getMembers()->count() == $race->getTeamsize()) {
             if (!in_array($t, $alreadyRegistered)) {
                 $teams[] = $t;
             }
         }
     }
     if (0 == count($teams)) {
         $this->addFlash('error', 'Keine passenden Teams gefunden, die noch hinzugefügt werden könnten!');
         return $this->redirectToRoute('race_show', array('event' => $event->getId(), 'race' => $race->getId()));
     }
     $form = $this->createForm('AppBundle\\Form\\RegistrationType', $registration, array('teams' => $teams));
     $form->handleRequest($request);
     if ($form->isSubmitted() && $form->isValid()) {
         if (is_null($registration->getTeam())) {
             $this->addFlash('error', 'Kein Team angegeben!');
             return $this->redirectToRoute('race_show', array('event' => $event->getId(), 'race' => $race->getId()));
         }
         if (is_null($registration->getSection())) {
             if ($race->getSections()->count() > 0) {
                 $registration->setSection($race->getSections()->last());
             } else {
                 $raceRepo = $em->getRepository('AppBundle:Race');
                 $section = $raceRepo->createSection($race, 1);
                 $registration->setSection($section);
             }
         }
         if (is_null($registration->getLane())) {
             // find highest existing lane
             $highestLane = 0;
             /** @var Registration $r */
             foreach ($registration->getSection()->getRegistrations() as $r) {
                 if ($r->getLane() > $highestLane) {
                     $highestLane = $r->getLane();
                 }
             }
             $registration->setLane(1 + $highestLane);
         }
         $em->persist($registration);
         $em->flush();
         $this->addFlash('notice', 'Neue Meldung wurde angelegt!');
         return $this->redirectToRoute('race_show', array('event' => $event->getId(), 'race' => $race->getId()));
     }
     return $this->render('registration/new.html.twig', array('race' => $race, 'form' => $form->createView()));
 }