src/Controller/EventController.php line 29

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\{JsonResponseRequestResponse};
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use App\Utils\Ticketing;
  7. use App\Utils\Functions;
  8. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  9. /**
  10.  * @Route("/{_locale}", requirements={"_locale": "en|es"})
  11.  */
  12. class EventController extends AbstractController
  13. {
  14.     private $ticketing;
  15.     private $functions;
  16.     public function __construct(Ticketing $ticketingFunctions $functions)
  17.     {
  18.         $this->ticketing $ticketing;
  19.         $this->functions $functions;
  20.     }
  21.     /**
  22.      * @Route("/events", name="events")
  23.      */
  24.     public function events(Request $request): Response
  25.     {
  26.         // General function to set discount ref/affId
  27.         $this->functions->setDiscount($request);
  28.         $events $this->ticketing->curl("events?dateNext=true&orderBy=eventDate&order=DESC&limit=24""normal", [], "GET");
  29.         if(empty($events)){
  30.             $this->addFlash(
  31.                 'notice',
  32.                 'No se han encontrado eventos!'
  33.             );
  34.             return $this->redirectToRoute('home');
  35.         }
  36.         $userId $this->functions->getUserLogged();
  37.         return $this->render('events/events.html.twig', [
  38.             "events" => $events["events"],
  39.             "userId" => $userId
  40.         ]);
  41.     }
  42.     /**
  43.      * @Route("/events/search", name="events_search")
  44.      */
  45.     public function eventsSearch(Request $request): Response
  46.     {
  47.         // General function to set discount ref/affId
  48.         $this->functions->setDiscount($request);
  49.         $search urlencode($request->get('text'));
  50.         $events $this->ticketing->curl("events?orderBy=eventDate&order=ASC&limit=24&name=".$search"normal", [], "GET");
  51.         if(!$events || $events["code"]!="200"){
  52.             $this->addFlash(
  53.                 'notice',
  54.                 'No se han encontrado eventos!'
  55.             );
  56.             return $this->redirectToRoute('home');
  57.         }
  58.         return $this->render('events/events-search.html.twig', [
  59.             "events" => $events["events"]
  60.         ]);
  61.     }
  62.     /**
  63.      * @Route("/event/check-code", name="event_check_code")
  64.      */    
  65.     public function checkEventCode(Request $request): Response
  66.     {
  67.         $eventId $request->get('event');
  68.         $code $request->get('code');
  69.         $accessKeysCode $this->ticketing->curl("access-keys/code?event=" $eventId ."&code=" $code"normal", [], "GET");
  70.         if ($accessKeysCode['code'] == 200) {
  71.             $session $request->getSession();
  72.             $session->set('eventAccessCode'$accessKeysCode['name']);
  73.         }
  74.         $url $this->generateUrl('event-tickets', ["event" => $eventId]);
  75.         return new JsonResponse([
  76.             'status' => true,
  77.             'data' => $accessKeysCode,
  78.             'url' => $url
  79.         ], $accessKeysCode['code']);
  80.     }
  81.     /**
  82.      * @Route("/event-tickets", name="event-tickets")
  83.      */
  84.     public function eventTickets(Request $request): Response
  85.     {
  86.         // General function to set discount ref/affId
  87.         $this->functions->setDiscount($request);
  88.         $filters array_filter($request->query->all());
  89.         $session $request->getSession();
  90.         $eventId $request->get("event");
  91.         $event $this->ticketing->curl("events/" $eventId"normal", [], "GET");
  92.         if (!$event || $event["code"] != "200" || !$event["enabled"]) {
  93.             if (!empty($event['attributes']['sale_date'])) {
  94.                 // Popup event disabled personalization
  95.                 $sale_date strip_tags($event['attributes']['sale_date']);
  96.                 $this->addFlash(
  97.                     'notice',
  98.                     $sale_date
  99.                 );
  100.             } else {
  101.                 $this->addFlash(
  102.                     'notice',
  103.                     'No se puede acceder al evento'
  104.                 );
  105.             }
  106.             return $this->redirectToRoute('home');
  107.         }
  108.         $params = [
  109.             'filters' => $filters,
  110.             'format' => 1,
  111.             'event' => $event,
  112.             'anonymousPurchase' => $event['anonymousPurchase'],
  113.             'ticketsTypes' => null
  114.         ];
  115.         // return $this->render('partials/popup/tickets-no-yet-availables.html.twig');
  116.         $userType $session->get('userType');
  117.         if (empty($userType)) {
  118.             if ($session->has('eventAccessCode')) {
  119.                 $accessKeys $this->ticketing->curl("access-keys/code?event=" $eventId "&code=" $session->get('eventAccessCode'), "normal", [], "GET");
  120.                 if ($accessKeys['code'] != 200) {
  121.                     $session->remove('eventAccessCode');
  122.                 } else {
  123.                     $params['ticketsTypes'] = $accessKeys['ticketsTypes'];
  124.                 }
  125.             } else {
  126.                 $accessKeys $this->ticketing->curl("access-keys?count=true&event=" $eventId"normal", [], "GET");
  127.                 if ($accessKeys["code"] == 200 && $accessKeys['quantity'] > 0) {
  128.                     return $this->render('partials/popup/tickets-availables-with-code.html.twig', [
  129.                         'event' => $eventId
  130.                     ]);
  131.                 }
  132.             }
  133.         }
  134.         // Check if event has packs
  135.         $packs $this->ticketing->curl("packs?onSale=true&orderBy=price&groupBy=price&event=" $event['id'], "normal", [], "GET");
  136.         $hasPack false;
  137.         if (!empty($packs['packs']))
  138.             $hasPack true;
  139.         $params['hasPack'] = $hasPack;
  140.         return $this->render('events/event-tickets.html.twig'$params);
  141.     }
  142.     /**
  143.      * @Route("/event-tickets-seats", name="event-tickets-seats")
  144.      */
  145.     public function eventTicketSeats(Request $request): Response
  146.     {
  147.         $userId $this->functions->getUserLogged();
  148.         if (!$userId) {
  149.             $this->addFlash(
  150.                 'notice',
  151.                 'Debe iniciar sesión como usuario'
  152.             );
  153.             return $this->redirectToRoute('home');
  154.         }
  155.         // General function to set discount ref/affId
  156.         $this->functions->setDiscount($request);
  157.         $filters array_filter($request->query->all());
  158.         if (!$request->get("event")) {
  159.             if (!empty($event['attributes']['sale_date'])) {
  160.                 // Popup event disabled personalization
  161.                 $sale_date strip_tags($event['attributes']['sale_date']);
  162.                 $this->addFlash(
  163.                     'notice',
  164.                     $sale_date
  165.                 );
  166.             } else {
  167.                 $this->addFlash(
  168.                     'notice',
  169.                     'No se puede acceder al evento'
  170.                 );
  171.             }
  172.             return $this->redirectToRoute('home');
  173.         }
  174.         $eventId $request->get("event");        
  175.         // Max 6 tickets per event
  176.         $tickets $this->ticketing->curl("users/count-event-tickets?userId=".$userId."&eventId=".$eventId"normal", [], "GET");
  177.         $sents $this->ticketing->curl("tickets/activity?origin=" $userId "&limit=1&enabled=true&type=transfer&event=" $eventId"normal", [], "GET");
  178.         $sales $this->ticketing->curl("tickets/activity?origin=" $userId "&limit=1&enabled=true&type=sale&event=" $eventId"normal", [], "GET");
  179.         $total_user_tickets $tickets['total'] + $sents['total'] + $sales['total'];
  180.         $tickets_total $total_user_tickets $request->get('quantity');
  181.         if ($tickets_total 6) {
  182.             $this->addFlash(
  183.                 'notice',
  184.                 'Se puede comprar un máximo de 6 tickets por evento'
  185.             );
  186.             return $this->redirectToRoute('home');
  187.         }
  188.         $event $this->ticketing->curl("events/get-one?eventId=" $eventId"normal", array(), "GET");        
  189.         if (!$event || $event["code"] != "200" || !$event["enabled"]) {
  190.             if (!empty($event['attributes']['sale_date'])) {
  191.                 // Popup event disabled personalization
  192.                 $sale_date strip_tags($event['attributes']['sale_date']);
  193.                 $this->addFlash(
  194.                     'notice',
  195.                     $sale_date
  196.                 );
  197.             } else {
  198.                 $this->addFlash(
  199.                     'notice',
  200.                     'No se puede acceder al evento'
  201.                 );
  202.             }
  203.             return $this->redirectToRoute('home');
  204.         }
  205.         if ($request->get("format")) {
  206.             $format $request->get("format");
  207.         } else {
  208.             $format 1;
  209.         };
  210.         if (!$request->get("order") || $request->get("order") == 1) {
  211.             if (!$request->get("format") || $request->get("format") == "1") {
  212.                 $limit 4;
  213.             } else {
  214.                 $limit 100;
  215.             }
  216.         } else {
  217.             $limit 100;
  218.         }
  219.         $configs = array("limit" => $limit"small" => 1"group" => 1"type" => 2);
  220.         foreach ($configs as $key => $config) {
  221.             $request->request->set($key$config);
  222.             $filters[$key] = $config;
  223.         }
  224.         return $this->render('events/event-tickets-seats.html.twig', [
  225.             'filters' => $filters,
  226.             'format' => $format,
  227.             'event' => $event
  228.         ]);
  229.     }
  230. }