示例#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
 /**
  * @param \Doctrine\Common\Persistence\ObjectManager $manager
  */
 public function load(ObjectManager $manager)
 {
     /**
      * @var \Application\Bundle\UserBundle\Entity\User $userDefault
      * @var \Application\Bundle\UserBundle\Entity\User $userDefault2
      * @var \Application\Bundle\UserBundle\Entity\User $userDefault3
      * @var \Application\Bundle\UserBundle\Entity\User $userAdmin
      */
     $userDefault = $manager->merge($this->getReference('user-default'));
     $userDefault2 = $manager->merge($this->getReference('user-default2'));
     $userDefault3 = $manager->merge($this->getReference('user-default3'));
     $userAdmin = $manager->merge($this->getReference('user-admin'));
     $eventZfDay = $this->getReference('event-zfday');
     $eventPHPDay = $this->getReference('event-phpday');
     $eventNotActive = $this->getReference('event-not-active');
     // Ticket 1
     $ticket = new Ticket();
     $ticket->setEvent($manager->merge($eventZfDay));
     $ticket->setAmountWithoutDiscount($eventZfDay->getCost());
     $ticket->setAmount($eventZfDay->getCost());
     $ticket->setUser($userDefault);
     $ticket->setPayment($manager->merge($this->getReference('payment')));
     $manager->persist($ticket);
     $this->addReference('ticket-1', $ticket);
     // Ticket 2
     $ticket = new Ticket();
     $ticket->setEvent($manager->merge($eventPHPDay));
     $ticket->setUser($userDefault);
     $ticket->setAmountWithoutDiscount($eventPHPDay->getCost());
     $ticket->setAmount($eventPHPDay->getCost());
     $ticket->setPayment($manager->merge($this->getReference('pending')));
     $manager->persist($ticket);
     $this->addReference('ticket-2', $ticket);
     // Ticket 3
     $ticket = new Ticket();
     $ticket->setEvent($manager->merge($eventNotActive));
     $ticket->setUser($userAdmin);
     $ticket->setAmountWithoutDiscount($eventNotActive->getCost());
     $ticket->setAmount($eventNotActive->getCost());
     $manager->persist($ticket);
     $this->addReference('ticket-3', $ticket);
     // Ticket 4: not used without payment
     $ticket = new Ticket();
     $ticket->setEvent($manager->merge($eventPHPDay));
     $ticket->setUser($userDefault2);
     $ticket->setAmountWithoutDiscount($eventPHPDay->getCost());
     $ticket->setAmount($eventPHPDay->getCost());
     $ticket->setCreatedAt(new \DateTime('2012-12-12 00:00:00'));
     $ticket->setUsed(false);
     $manager->persist($ticket);
     // Ticket 5: not used with paid payment
     $ticket = new Ticket();
     $ticket->setEvent($manager->merge($eventPHPDay));
     $ticket->setUser($userDefault2);
     $ticket->setAmountWithoutDiscount($eventPHPDay->getCost());
     $ticket->setAmount($eventPHPDay->getCost());
     $ticket->setCreatedAt(new \DateTime('2012-12-12 00:00:00'));
     $ticket->setUsed(false);
     $ticket->setPayment($manager->merge($this->getReference('payment2')));
     $manager->persist($ticket);
     // Ticket 6: used with pending payment
     $ticket = new Ticket();
     $ticket->setEvent($manager->merge($eventPHPDay));
     $ticket->setUser($userDefault2);
     $ticket->setAmountWithoutDiscount($eventPHPDay->getCost());
     $ticket->setAmount($eventPHPDay->getCost());
     $ticket->setCreatedAt(new \DateTime('2012-12-12 00:00:00'));
     $ticket->setUsed(true);
     $ticket->setPayment($manager->merge($this->getReference('pending2')));
     $manager->persist($ticket);
     // Ticket 7: used with paid payment
     $ticket = new Ticket();
     $ticket->setEvent($manager->merge($eventPHPDay));
     $ticket->setUser($userDefault2);
     $ticket->setAmountWithoutDiscount($eventPHPDay->getCost());
     $ticket->setAmount($eventPHPDay->getCost());
     $ticket->setCreatedAt(new \DateTime('2012-12-12 00:00:00'));
     $ticket->setUsed(true);
     $ticket->setPayment($manager->merge($this->getReference('payment2')));
     $manager->persist($ticket);
     // Ticket 8: not used without payment
     $ticket = new Ticket();
     $ticket->setEvent($manager->merge($eventZfDay));
     $ticket->setUser($userDefault3);
     $ticket->setAmountWithoutDiscount($eventZfDay->getCost());
     $ticket->setAmount($eventZfDay->getCost());
     $ticket->setCreatedAt(new \DateTime('2012-12-12 00:00:00'));
     $ticket->setUsed(false);
     $manager->persist($ticket);
     for ($i = 1; $i <= 100; $i++) {
         $ticket = new Ticket();
         $ticket->setEvent($manager->merge($eventZfDay));
         $ticket->setAmountWithoutDiscount($eventZfDay->getCost());
         $ticket->setAmount($eventZfDay->getCost());
         $ticket->setUser($manager->merge($this->getReference('user-default-' . $i)));
         $ticket->setPayment($manager->merge($this->getReference('payment')));
         $manager->persist($ticket);
         $this->addReference('ticket-' . ($i + 3), $ticket);
     }
     $manager->flush();
 }
示例#3
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>');
 }