public function testGetOrderTotalAmount()
 {
     $order = new TicketsOrder();
     $ticket = new Ticket();
     $ticket->setPrice(20);
     $order->addTicket($ticket);
     $ticket = new Ticket();
     $ticket->setPrice(25);
     $order->addTicket($ticket);
     $ticket = new Ticket();
     $ticket->setPrice(36);
     $order->addTicket($ticket);
     $ticketsOrderRepository = $this->getMockBuilder(TicketsOrderRepository::class)->disableOriginalConstructor()->setMethods(array('findOneBy'))->getMock();
     $ticketsOrderRepository->expects($this->at(0))->method('findOneBy')->will($this->returnValue(null));
     $ticketsOrderRepository->expects($this->at(1))->method('findOneBy')->will($this->returnValue($order));
     $this->entityManager->expects($this->any())->method('getRepository')->will($this->returnValue($ticketsOrderRepository));
     try {
         $amount = $this->paymentOrderInformation->getOrderTotalAmount(1, 'AAAAA');
         $this->fail('a null order must throw an exception');
     } catch (HttpException $e) {
         $this->assertEquals('400', $e->getStatusCode());
     }
     $amount = $this->paymentOrderInformation->getOrderTotalAmount(1, 'AAAAA');
     $this->assertEquals(81, $amount);
 }
 /**
  * Test an empty Ticket entity
  */
 public function testEmptyTicket()
 {
     $ticket = new Ticket();
     $this->assertNull($ticket->getId());
     $this->assertNull($ticket->getEvent());
     $this->assertNull($ticket->getPrice());
     $this->assertNull($ticket->getLinkToBuyTicket());
 }
 /**
  * Load data fixtures with the passed EntityManager
  *
  * @param ObjectManager $manager
  */
 public function load(ObjectManager $manager)
 {
     $orders = array(array('ref' => 'AAAA', 'visitDate' => new \DateTime('2015-11-13'), 'visitDuration' => 'JOURNEE', 'validate' => false, 'tickets' => array(array('name' => 'Normal', 'longDescription' => 'De 12 ans à 59 ans', 'shortDescription' => '12 à 59 ans', 'price' => 16.0, 'details' => array(array('number' => 1, 'ageMin' => 12, 'ageMax' => 59, 'visitor' => array('lastName' => 'DUPONT', 'firstName' => 'Alain', 'country' => 'France', 'birthdate' => new \DateTime('1970-02-17'))))))));
     foreach ($orders as $order) {
         $ticketsOrder = new TicketsOrder();
         $ticketsOrder->setRef($order['ref']);
         $ticketsOrder->setVisitDate($order['visitDate']);
         $ticketsOrder->setVisitDuration($order['visitDuration']);
         $ticketsOrder->setValidate($order['validate']);
         foreach ($order['tickets'] as $orderedTicket) {
             $ticket = new Ticket();
             $ticket->setName($orderedTicket['name']);
             $ticket->setLongDescription($orderedTicket['longDescription']);
             $ticket->setShortDescription($orderedTicket['shortDescription']);
             $ticket->setPrice($orderedTicket['price']);
             foreach ($orderedTicket['details'] as $detail) {
                 $ticketDetail = new TicketDetail();
                 $ticketDetail->setNumber($detail['number']);
                 $ticketDetail->setAgeMin($detail['ageMin']);
                 $ticketDetail->setAgeMax($detail['ageMax']);
                 $visitor = new Visitor();
                 $visitor->setLastName($detail['visitor']['lastName']);
                 $visitor->setFirstName($detail['visitor']['firstName']);
                 $visitor->setCountry($detail['visitor']['country']);
                 $visitor->setBirthdate($detail['visitor']['birthdate']);
                 $ticketDetail->setVisitor($visitor);
                 $ticket->addTicketDetail($ticketDetail);
             }
             $ticketsOrder->addTicket($ticket);
         }
         $manager->persist($ticketsOrder);
     }
     $manager->flush();
 }
 /**
  * Load data fixtures with the passed EntityManager
  *
  * @param ObjectManager $manager
  */
 public function load(ObjectManager $manager)
 {
     $orders = array(array('ref' => 'AD5BF6C12356981F', 'visitDate' => new \DateTime('2015-11-13'), 'visitDuration' => 'JOURNEE', 'validate' => false, 'tickets' => array(array('name' => 'Normal', 'longDescription' => 'De 12 ans à 59 ans', 'shortDescription' => '12 à 59 ans', 'price' => 16.0, 'details' => array(array('number' => 1, 'ageMin' => 12, 'ageMax' => 59, 'visitor' => array('lastName' => 'DUPONT', 'firstName' => 'Alain', 'country' => 'France', 'birthdate' => new \DateTime('1970-02-17'))))), array('name' => 'Réduit', 'longDescription' => 'A partir de 12 ans', 'shortDescription' => 'Plus de 12 ans', 'price' => 10.0, 'details' => array(array('number' => 1, 'ageMin' => 12, 'ageMax' => 999, 'visitor' => array('lastName' => 'DUPONT', 'firstName' => 'Hélène', 'country' => 'Belgique', 'birthdate' => new \DateTime('1967-11-12'))))))), array('ref' => 'DFE3A25C43123B2A', 'visitDate' => new \DateTime('2015-11-14'), 'visitDuration' => 'DEMI_JOURNEE', 'validate' => false, 'tickets' => array(array('name' => 'Famille', 'longDescription' => 'Famille (2 adultes et 2 enfants de même nom de famille', 'shortDescription' => 'Famille: 2adu./2enf.', 'price' => 35.0, 'details' => array(array('number' => 1, 'ageMin' => 12, 'ageMax' => 999, 'visitor' => array('lastName' => 'FRANCE', 'firstName' => 'Lucien', 'country' => 'France', 'birthdate' => new \DateTime('1953-06-11'))), array('number' => 1, 'ageMin' => 12, 'ageMax' => 999, 'visitor' => array('lastName' => 'FRANCE', 'firstName' => 'Lucie', 'country' => 'France', 'birthdate' => new \DateTime('1959-11-06'))), array('number' => 3, 'ageMin' => 4, 'ageMax' => 11, 'visitor' => array('lastName' => 'FRANCE', 'firstName' => 'Paul', 'country' => 'France', 'birthdate' => new \DateTime('2004-02-06'))), array('number' => 3, 'ageMin' => 4, 'ageMax' => 11, 'visitor' => array('lastName' => 'FRANCE', 'firstName' => 'Claire', 'country' => 'France', 'birthdate' => new \DateTime('2007-05-15'))))))), array('ref' => 'EAABC456A234B6FA', 'visitDate' => new \DateTime('2016-01-02'), 'visitDuration' => 'JOURNEE', 'validate' => true, 'tickets' => array(array('name' => 'Sénior', 'longDescription' => 'A partir de 60 ans', 'shortDescription' => 'Plus de 60 ans', 'price' => 12.0, 'details' => array(array('number' => 1, 'ageMin' => 60, 'ageMax' => 999, 'visitor' => array('lastName' => 'MICHOU', 'firstName' => 'Michelle', 'country' => 'France', 'birthdate' => new \DateTime('1953-02-14'))))))));
     foreach ($orders as $order) {
         $ticketsOrder = new TicketsOrder();
         $ticketsOrder->setRef($order['ref']);
         $ticketsOrder->setVisitDate($order['visitDate']);
         $ticketsOrder->setVisitDuration($order['visitDuration']);
         $ticketsOrder->setValidate($order['validate']);
         foreach ($order['tickets'] as $orderedTicket) {
             $ticket = new Ticket();
             $ticket->setName($orderedTicket['name']);
             $ticket->setLongDescription($orderedTicket['longDescription']);
             $ticket->setShortDescription($orderedTicket['shortDescription']);
             $ticket->setPrice($orderedTicket['price']);
             foreach ($orderedTicket['details'] as $detail) {
                 $ticketDetail = new TicketDetail();
                 $ticketDetail->setNumber($detail['number']);
                 $ticketDetail->setAgeMin($detail['ageMin']);
                 $ticketDetail->setAgeMax($detail['ageMax']);
                 $visitor = new Visitor();
                 $visitor->setLastName($detail['visitor']['lastName']);
                 $visitor->setFirstName($detail['visitor']['firstName']);
                 $visitor->setCountry($detail['visitor']['country']);
                 $visitor->setBirthdate($detail['visitor']['birthdate']);
                 $ticketDetail->setVisitor($visitor);
                 $ticket->addTicketDetail($ticketDetail);
             }
             $ticketsOrder->addTicket($ticket);
         }
         $manager->persist($ticketsOrder);
     }
     $manager->flush();
 }
 /**
  * @param string          $attribute
  * @param Ticket $object
  * @param null            $user
  *
  * @return bool
  */
 protected function isGranted($attribute, $object, $user = null)
 {
     if (!$user instanceof UserInterface) {
         return false;
     }
     if ($attribute === 'REGISTRATION_OPEN') {
         if ($object->isPublic() === false) {
             return false;
         }
         $now = new \DateTime('today');
         if ($now < $object->getStartDate() || $now > $object->getEndDate()) {
             return false;
         }
         return true;
     }
     $convention = $object->getConvention();
     $seats = $this->repository->countSeats($convention, $user);
     if ($object->isReduced()) {
         if ($seats < $convention->getReducedSeats()) {
             return true;
         }
     } else {
         if ($seats < $convention->getSeats()) {
             return true;
         }
     }
     return false;
 }
 /**
  * {@inheritdoc}
  */
 public function load(ObjectManager $manager)
 {
     $em = $this->container->get('doctrine')->getEntityManager('default');
     $userManager = $this->container->get('fos_user.user_manager');
     $date = new \DateTime();
     // Get projections and clients from database
     $projections = $em->getRepository('AppBundle:Projection')->findAll();
     //Get price categories
     $priceCategories = $em->getRepository('AppBundle:PriceCategory')->findAll();
     //Get users
     $users = array();
     foreach ($this->userEmails as $email) {
         $users[] = $userManager->findUserByEmail('*****@*****.**');
     }
     // Add tickets into database
     for ($i = 0; $i < 10000; $i++) {
         $ticket = new Ticket();
         $projection = $projections[array_rand($projections)];
         $priceCategory = $priceCategories[array_rand($priceCategories)];
         $freeSeats = $em->getRepository('AppBundle:Seat')->findFreeSeats($projection->getId());
         $seat = $freeSeats[array_rand($freeSeats)];
         // Set attributes to ticket
         if (rand(0, 1) == 1) {
             $ticket->setUser($users[array_rand($users)]);
         }
         $ticket->setProjection($projection);
         $ticket->setSeat($seat);
         $ticket->setPriceCategory($priceCategory);
         $ticket->setTicketPrice($priceCategory->getCategoryPrice());
         $date->setTimestamp(randomTimestamp('2015/10/01', $projection->getDate()->format('Y-m-d')));
         $ticket->setBookingDate($date);
         $date->setTimestamp(randomTimestamp($date->format('Y-m-d'), $projection->getDate()->format('Y-m-d')));
         if (rand(0, 1) == 1 || !$ticket->getBookingDate()) {
             $ticket->setPaymentDate($date);
         }
         $manager->persist($ticket);
     }
     $manager->flush();
 }
 private function controlPostTicket(Ticket $ticket)
 {
     $this->assertEquals('Famille', $ticket->getName());
     $this->assertEquals('Famille: 2adu./2enf.', $ticket->getShortDescription());
     $this->assertEquals(35, $ticket->getPrice());
     $ticketDetails = $ticket->getTicketDetails();
     $this->assertEquals(4, count($ticketDetails));
     $firstTicketDetail = $ticketDetails->first();
     $this->assertEquals(1, $firstTicketDetail->getNumber());
     $this->assertEquals(12, $firstTicketDetail->getAgeMin());
     $this->assertEquals(999, $firstTicketDetail->getAgeMax());
     $lastTicketDetail = $ticketDetails->last();
     $this->assertEquals(4, $lastTicketDetail->getNumber());
     $this->assertEquals(4, $lastTicketDetail->getAgeMin());
     $this->assertEquals(11, $lastTicketDetail->getAgeMax());
 }
 /**
  * Add ticket
  *
  * @param \AppBundle\Entity\Ticket $ticket
  *
  * @return TicketsOrder
  */
 public function addTicket(\AppBundle\Entity\Ticket $ticket)
 {
     $this->tickets[] = $ticket;
     $ticket->setTicketsOrder($this);
     return $this;
 }
 private function getOrder()
 {
     $order = new TicketsOrder();
     $order->setRef('AD5BF6C12356981F');
     $order->setVisitDate(new \DateTime('2015-11-13'));
     $order->setVisitDuration('JOURNEE');
     $order->setMail('*****@*****.**');
     $order->setValidate(false);
     $ticket = new Ticket();
     $ticket->setName('Normal');
     $ticket->setLongDescription('De 12 ans à 59 ans');
     $ticket->setShortDescription('12 à 59 ans');
     $ticket->setPrice(16.0);
     $detail = new TicketDetail();
     $detail->setAgeMin(12);
     $detail->setAgeMax(59);
     $visitor = new Visitor();
     $visitor->setFirstName('Alain');
     $visitor->setLastName('DUPONT');
     $visitor->setCountry('Belgique');
     $visitor->setBirthdate(new \DateTime('1970-02-17'));
     $detail->setVisitor($visitor);
     $ticket->addTicketDetail($detail);
     $order->addTicket($ticket);
     $ticket = new Ticket();
     $ticket->setName('Famille');
     $ticket->setLongDescription('Famille (2 adultes et 2 enfants de même nom de famille');
     $ticket->setShortDescription('Famille: 2adu./2enf.');
     $ticket->setPrice(35.0);
     $detail = new TicketDetail();
     $detail->setAgeMin(12);
     $detail->setAgeMax(999);
     $visitor = new Visitor();
     $visitor->setFirstName('Lucien');
     $visitor->setLastName('FRANCE');
     $visitor->setCountry('France');
     $visitor->setBirthdate(new \DateTime('1953-06-11'));
     $detail->setVisitor($visitor);
     $ticket->addTicketDetail($detail);
     $detail = new TicketDetail();
     $detail->setAgeMin(12);
     $detail->setAgeMax(999);
     $visitor = new Visitor();
     $visitor->setFirstName('Lucie');
     $visitor->setLastName('FRANCE');
     $visitor->setCountry('France');
     $visitor->setBirthdate(new \DateTime('1959-11-06'));
     $detail->setVisitor($visitor);
     $ticket->addTicketDetail($detail);
     $detail = new TicketDetail();
     $detail->setAgeMin(4);
     $detail->setAgeMax(11);
     $visitor = new Visitor();
     $visitor->setFirstName('Paul');
     $visitor->setLastName('FRANCE');
     $visitor->setCountry('France');
     $visitor->setBirthdate(new \DateTime('2004-02-06'));
     $detail->setVisitor($visitor);
     $ticket->addTicketDetail($detail);
     $detail = new TicketDetail();
     $detail->setAgeMin(4);
     $detail->setAgeMax(11);
     $visitor = new Visitor();
     $visitor->setFirstName('Claire');
     $visitor->setLastName('FRANCE');
     $visitor->setCountry('France');
     $visitor->setBirthdate(new \DateTime('2007-05-15'));
     $detail->setVisitor($visitor);
     $ticket->addTicketDetail($detail);
     $order->addTicket($ticket);
     return $order;
 }
 /**
  * @param $ticketType
  * @return Ticket
  */
 private function createTicket($ticketType)
 {
     $ticket = new Ticket();
     $ticket->setName($ticketType->getName());
     $ticket->setLongDescription($ticketType->getLongDescription());
     $ticket->setShortDescription($ticketType->getShortDescription());
     $ticket->setPrice($ticketType->getPrice());
     foreach ($ticketType->getTicketTypeDetails() as $ticketTypeDetail) {
         $ticketDetail = new TicketDetail();
         $ticketDetail->setNumber($ticketTypeDetail->getNumber());
         $ticketDetail->setAgeMin($ticketTypeDetail->getAgeMin());
         $ticketDetail->setAgeMax($ticketTypeDetail->getAgeMax());
         $ticket->addTicketDetail($ticketDetail);
     }
     return $ticket;
 }