Пример #1
0
 /**
  * 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>');
 }
Пример #2
0
 /**
  * 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>');
 }