/** * Check that QR-code is valid, and register ticket * * @param Ticket $ticket Ticket * @param string $hash Hash * * @return Response * * @Route("/ticket/{ticket}/check/{hash}", name="event_ticket_registration") */ public function registrationAction(Ticket $ticket, $hash) { //bag fix test ticket.feature:27 // сверяем хеш билета и хеш из урла if ($ticket->getHash() != $hash) { return new Response('<h1 style="color:red">Невалидный хеш для билета №' . $ticket->getId() . '</h1>', 403); } //bag fix test ticket.feature:33 // любопытных пользователей перенаправляем на страницу события if (!$this->get('security.authorization_checker')->isGranted('ROLE_VOLUNTEER')) { return $this->redirect($this->generateUrl('event_show', array('event_slug' => $ticket->getEvent()->getSlug()))); } // проверяем существует ли оплата if ($ticket->getPayment() instanceof Payment) { // проверяем оплачен ли билет if ($ticket->getPayment()->isPaid()) { // проверяем или билет ещё не отмечен как использованный if ($ticket->isUsed()) { $timeNow = new \DateTime(); $timeDiff = $timeNow->diff($ticket->getUpdatedAt()); return new Response('<h1 style="color:orange">Билет №' . $ticket->getId() . ' был использован ' . $timeDiff->format('%i мин. назад') . '</h1>', 409); } } else { return new Response('<h1 style="color:orange">Билет №' . $ticket->getId() . ' не оплачен' . '</h1>'); } } else { return new Response('<h1 style="color:orange">Билет №' . $ticket->getId() . ' оплата не существует' . '</h1>'); } // отмечаем билет как использованный $em = $this->getDoctrine()->getManager(); $ticket->setUsed(true); $em->flush(); return new Response('<h1 style="color:green">Все ок. Билет №' . $ticket->getId() . ' отмечаем как использованный</h1>'); }
/** * Check that QR-code is valid, and register ticket * * @param Ticket $ticket Ticket * @param string $hash Hash * * @return Response * * @Route("/ticket/{ticket}/check/{hash}", name="event_ticket_check") */ public function checkAction(Ticket $ticket, $hash) { // @todo ця вся (майже вся) логіка чудно виноситься в вьюшку // проверяем хеш if ($ticket->getHash() != $hash) { // не совпадает хеш билета и хеш в урле return new Response('<h1 style="color:red">Невалидный хеш для билета №' . $ticket->getId() . '</h1>', 403); } if (!$this->get('security.context')->isGranted('ROLE_VOLUNTEER')) { return $this->redirect($this->generateUrl('event_show', array('event_slug' => $ticket->getEvent()->getSlug()))); } // проверяем существует ли оплата if ($ticket->getPayment() instanceof Payment) { // проверяем оплачен ли билет if ($ticket->getPayment()->isPaid()) { // проверяем или билет ещё не отмечен как использованный if ($ticket->isUsed()) { $timeNow = new \DateTime(); $timeDiff = $timeNow->diff($ticket->getUpdatedAt()); return new Response('<h1 style="color:orange">Билет №' . $ticket->getId() . ' был использован ' . $timeDiff->format('%i мин. назад') . '</h1>', 409); } } else { return new Response('<h1 style="color:orange">Билет №' . $ticket->getId() . ' не оплачен' . '</h1>'); } } else { return new Response('<h1 style="color:orange">Билет №' . $ticket->getId() . ' оплата не существует' . '</h1>'); } $em = $this->getDoctrine()->getManager(); // отмечаем билет как использованный $ticket->setUsed(true); $em->flush(); return new Response('<h1 style="color:green">Все ок. Билет №' . $ticket->getId() . ' отмечаем как использованный</h1>'); }