/** * 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)); }
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; }
/** * 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()); }
/** * 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()); } }
/** * 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)); }
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(); }
/** * 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())); }
/** * 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())); }