src/Controller/MainController.php line 288

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Attractions;
  4. use App\Entity\AttractionTypes;
  5. use App\Entity\AvailableJobs;
  6. use App\Entity\Blog;
  7. use App\Entity\ChildrensComboSlider;
  8. use App\Entity\Countries;
  9. use App\Entity\Event;
  10. use App\Entity\FAQ;
  11. use App\Entity\FoodCourtMenu;
  12. use App\Entity\FoodCourtSlider;
  13. use App\Entity\GameZone;
  14. use App\Entity\GameZoneSlider;
  15. use App\Entity\Heroes;
  16. use App\Entity\IceCream;
  17. use App\Entity\IceCreamVideos;
  18. use App\Entity\IceRink;
  19. use App\Entity\IceRinkSlider;
  20. use App\Entity\JobPositions;
  21. use App\Entity\MainSlider;
  22. use App\Entity\Page;
  23. use App\Entity\Playground;
  24. use App\Entity\ProhibitedCases;
  25. use App\Entity\Rules;
  26. use App\Entity\Shop;
  27. use App\Entity\ShopSlider;
  28. use App\Entity\SocialResponsibility;
  29. use App\Entity\SpecialOffers;
  30. use App\Entity\Tickets;
  31. use App\Entity\VisionMission;
  32. use App\Entity\YourEvents;
  33. use App\Enum\TicketsApiUrlsEnum;
  34. use App\Repository\AttractionsRepository;
  35. use App\Repository\BlogRepository;
  36. use App\Repository\ContactRepository;
  37. use App\Repository\OrderItemRepository;
  38. use App\Repository\ShopRepository;
  39. use App\Repository\TicketsRepository;
  40. use App\Repository\YourEventsRepository;
  41. use App\Service\JobService;
  42. use App\Service\MailerController;
  43. use App\Service\MailerService;
  44. use Doctrine\ORM\EntityManagerInterface;
  45. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  46. use Symfony\Component\HttpFoundation\JsonResponse;
  47. use Symfony\Component\HttpFoundation\Request;
  48. use Symfony\Component\HttpFoundation\Response;
  49. use Symfony\Component\Routing\Annotation\Route;
  50. use Symfony\Contracts\Translation\TranslatorInterface;
  51. class MainController extends AbstractController
  52. {
  53.     private EntityManagerInterface $entityManager;
  54.     private TranslatorInterface $translator;
  55.     public function __construct(EntityManagerInterface $entityManager,TranslatorInterface $translator)
  56.     {
  57.         $this->entityManager $entityManager;
  58.         $this->translator $translator;
  59.     }
  60.     #[Route('{_locale}'name'page_home'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  61.     public function index(): Response
  62.     {
  63.         $attractions $this->entityManager->getRepository(Attractions::class)->findBy(['showInSlider' => 1], [], 5);
  64.         $mainSlider $this->entityManager->getRepository(MainSlider::class)->findBy(
  65.             ['isActive' => 1],
  66.             ['position' => 'ASC']
  67.         );
  68.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'home']);
  69.         $tickets $this->entityManager->getRepository(Tickets::class)->findBy(['showHomePage' => 1,'isActive'=>'1']);
  70.         return $this->render('@web/page/index.html.twig', [
  71.             "attractions" => $attractions,
  72.             "mainSlider" => $mainSlider,
  73.             "tickets" => $tickets,
  74.             "page" => $page,
  75.         ]);
  76.     }
  77. //    #[Route('{_locale}/checkout', name: 'page_checkout', requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  78. //    public function Checkout(): Response
  79. //    {
  80. //
  81. //        return $this->render('@web/page/checkout.html.twig');
  82. //    }
  83.     #[Route('{_locale}/profile'name'page_profile'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  84.     public function userProfile(OrderItemRepository $order_item_repository): Response
  85.     {
  86.         $user $this->getUser();
  87.         if ($user) {
  88.             $tickets $order_item_repository->findByOrder($user);
  89.             $countries $this->entityManager->getRepository(Countries::class)->findby([], ['sortOrder' => 'ASC']);
  90.             $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'profile']);
  91.             return $this->render('@web/page/profile.html.twig', [
  92.                 'user' => $user,
  93.                 'tickets' => $tickets,
  94.                 'countries' => $countries,
  95.                 'page' => $page,
  96.             ]);
  97.         } else {
  98.             return $this->render('login/index.html.twig');
  99.         }
  100.     }
  101.     #[Route('/{_locale}/attractions'name'page_attractions'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  102.     public function attractions(): Response
  103.     {
  104.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'attractions']);
  105.         $attractions $this->entityManager->getRepository(Attractions::class)->findAll();
  106.         $attractionTypes $this->entityManager->getRepository(AttractionTypes::class)->findAll();
  107.         return $this->render('@web/page/attractions.html.twig', [
  108.             "attractions" => $attractions,
  109.             "attractionTypes" => $attractionTypes,
  110.             "page" => $page,
  111.         ]);
  112.     }
  113.     #[Route('/{_locale}/attractions/{slug}'name'page_attractions_view'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  114.     public function attractionsView(AttractionsRepository $attractions_repository$slug): Response
  115.     {
  116.         $attraction $this->entityManager->getRepository(Attractions::class)->findOneBy(["slug" => $slug]);
  117.         $attractions $attractions_repository->getWithoutOne($slug);
  118.         return $this->render(
  119.             '@web/page/attractions-view.html.twig',
  120.             [
  121.                 "attraction" => $attraction,
  122.                 "attractions" => $attractions,
  123.             ]
  124.         );
  125.     }
  126.     #[Route('/{_locale}/rules'name'page_rules'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  127.     public function rules(): Response
  128.     {
  129.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'rules']);
  130.         $rules $this->entityManager->getRepository(Rules::class)->findOneBy(['id' => 1]);
  131.         return $this->render('@web/page/rules.html.twig', [
  132.             'rules' => $rules,
  133.             'page' => $page,
  134.         ]);
  135.     }
  136.     #[Route('/{_locale}/your-events'name'page_your_events'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  137.     public function yourEvents(): Response
  138.     {
  139.         $yourEvents $this->entityManager->getRepository(YourEvents::class)->findAll();
  140.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'your-events']);
  141.         return $this->render('@web/page/your-events.html.twig', [
  142.             'yourEvents' => $yourEvents,
  143.             'page' => $page,
  144.         ]);
  145.     }
  146.     #[Route('/{_locale}/events/{slug}'name'page_events'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  147.     public function events($slug): Response
  148.     {
  149.         $event $this->entityManager->getRepository(Event::class)->findOneBy(["slug" => $slug]);
  150.         return $this->render('@web/page/events.html.twig', [
  151.             'event' => $event,
  152.         ]);
  153.     }
  154.     #[Route('/{_locale}/your-events/{slug}'name'page_your_events_view'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  155.     public function yourEventsView(YourEventsRepository $your_events_repository$slug): Response
  156.     {
  157.         $event $this->entityManager->getRepository(YourEvents::class)->findOneBy(["slug" => $slug]);
  158.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'your-events']);
  159.         $tabContent $your_events_repository->getTabsContent($event);
  160.         return $this->render('@web/page/your-events-view.html.twig', [
  161.             'event' => $event,
  162.             'tabContent' => $tabContent,
  163.             'page' => $page,
  164.         ]);
  165.     }
  166.     #[Route('/{_locale}/about'name'page_about'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  167.     public function about(): Response
  168.     {
  169.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'about']);
  170.         $heroes $this->entityManager->getRepository(Heroes::class)->findAll();
  171.         return $this->render('@web/page/about.html.twig', [
  172.             'heroes' => $heroes,
  173.             'page' => $page,
  174.         ]);
  175.     }
  176.     #[Route('/{_locale}/food-court'name'page_food'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  177.     public function food(): Response
  178.     {
  179.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'food-court']);
  180.         $foodSlider $this->entityManager->getRepository(FoodCourtSlider::class)->findby([],['position'=>"ASC"]);
  181.         $foodCourtMenu $this->entityManager->getRepository(FoodCourtMenu::class)->findBy(['isActive'=>1]);
  182.         $iceCreams $this->entityManager->getRepository(IceCream::class)->findAll();
  183.         $iceCreamVideos $this->entityManager->getRepository(IceCreamVideos::class)->findAll();
  184.         $childrensComboSlider $this->entityManager->getRepository(ChildrensComboSlider::class)->findby(['isActive'=>1],['position'=>'ASC']);
  185.         return $this->render('@web/page/food.html.twig', [
  186.             'foodSlider' => $foodSlider,
  187.             'foodCourtMenu' => $foodCourtMenu,
  188.             'page' => $page,
  189.             'childrensComboSlider' => $childrensComboSlider,
  190.             'iceCreams' => $iceCreams,
  191.             'iceCreamVideos' => $iceCreamVideos,
  192.         ]);
  193.     }
  194.     #[Route('/{_locale}/shop'name'page_shop'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  195.     public function shop(): Response
  196.     {
  197.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'shop']);
  198.         $shopSlider $this->entityManager->getRepository(ShopSlider::class)->findBy([],['position'=>'ASC']);
  199.         $shop $this->entityManager->getRepository(Shop::class)->findBy([],[],8);
  200.         return $this->render('@web/page/shop.html.twig', [
  201.             'shopSlider' => $shopSlider,
  202.             'shop' => $shop,
  203.             'page' => $page,
  204.         ]);
  205.     }
  206.     #[Route('/shop/getProducts'name'app_get_products'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'], methods'POST')]
  207.     public function getProducts(ShopRepository $shop_repository): Response
  208.     {
  209.         $shop $shop_repository->findByFrom(8);
  210.         return new JsonResponse(['success' => true,  'message'=>'''shop' => $shop]);
  211.     }
  212.     #[Route('/{_locale}/social-responsibility'name'page_social_responsibility'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  213.     public function socialResponsibility(): Response
  214.     {
  215.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'social-responsibility']);
  216.         $socialResponsibility $this->entityManager->getRepository(SocialResponsibility::class)->findAll();
  217.         return $this->render('@web/page/social-responsibility.twig', [
  218.             'socialResponsibility' => $socialResponsibility,
  219.             'page' => $page,
  220.         ]);
  221.     }
  222.     #[Route('/{_locale}/vision-mission'name'page_vision_mission'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  223.     public function visionMission(): Response
  224.     {
  225.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'vision-mission']);
  226.         $visionMission $this->entityManager->getRepository(VisionMission::class)->findAll();
  227.         return $this->render('@web/page/vision-mission.html.twig', [
  228.             'visionMission' => $visionMission,
  229.             'page' => $page,
  230.         ]);
  231.     }
  232.     #[Route('/{_locale}/faq'name'page_faq'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  233.     public function faq(): Response
  234.     {
  235.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'faq']);
  236.         $faq $this->entityManager->getRepository(FAQ::class)->findAll();
  237.         return $this->render('@web/page/faq.twig', [
  238.             'faq' => $faq,
  239.             'page' => $page,
  240.         ]);
  241.     }
  242.     #[Route('/{_locale}/contact'name'page_contact'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  243.     public function contact(ContactRepository $contact_repository): Response
  244.     {
  245.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'contact']);
  246.         $contact $contact_repository->getContacts($this->entityManager);
  247.         return $this->render('@web/page/contact.html.twig', [
  248.             'contact' => $contact,
  249.             'page' => $page,
  250.         ]);
  251.     }
  252.     #[Route('/{_locale}/blog'name'page_blog'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  253.     public function blog(): Response
  254.     {
  255.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'blog']);
  256.         $blogs $this->entityManager->getRepository(Blog::class)->findAll();
  257.         return $this->render('@web/page/blog.html.twig', [
  258.             'blogs' => $blogs,
  259.             'page' => $page,
  260.         ]);
  261.     }
  262.     #[Route('/{_locale}/blog/{slug}'name'page_blog_view'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  263.     public function blogView(BlogRepository $blog_repository$slug): Response
  264.     {
  265.         $blog $this->entityManager->getRepository(Blog::class)->findOneBy(["slug" => $slug]);
  266.         $blogs $blog_repository->getWithoutOne($slug);
  267.         return $this->render('@web/page/blog-view.html.twig', [
  268.             'blog' => $blog,
  269.             'blogs' => $blogs,
  270.         ]);
  271.     }
  272.     #[Route('/{_locale}/job'name'page_job'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  273.     public function job(): Response
  274.     {
  275.         $job $this->entityManager->getRepository(JobPositions::class)->findOneBy([], ['id' => 'ASC']);
  276.         $jobs $this->entityManager->getRepository(AvailableJobs::class)->findAll();
  277.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'job']);
  278.         return $this->render('@web/page/job.html.twig', [
  279.             'job' => $job,
  280.             'jobs' => $jobs,
  281.             'page' => $page,
  282.         ]);
  283.     }
  284.     #[Route('/{_locale}/job-application'name'page_job_application'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'],methods'POST')]
  285.     public function jobApplication(Request $requestJobService $job_service,MailerService $mailer_service )
  286.     {
  287.         $documentFile $request->files->get('cv');
  288.         $data =  $request->request->all();
  289.         $jobApplication $job_service->saveJobApplication($documentFile,$data);
  290. //        if ($jobApplication['success']){
  291. //            $from = 'asd';
  292. //            $to = 'info@yerevanpark.am';
  293. //            $subject = 'Աշխատանքի դիմում/հայտ';
  294. //            $html = 'email/jop-application.html.twig';
  295. //            $text= 'test';
  296. //            $mailer_service->sendEmail($from,$to,$subject,$text,$html,$jobApplication);
  297. //        }
  298.         $this->addFlash($jobApplication['success'] ? 'success' 'error'$this->translator->trans($jobApplication['message']));
  299.         return $this->redirectToRoute('page_apply_now');
  300.     }
  301.     #[Route('/{_locale}/job-view/{slug}'name'page_job_view'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  302.     public function jobView($slug): Response
  303.     {
  304.         $job $this->entityManager->getRepository(AvailableJobs::class)->findOneBy(["slug" => $slug]);
  305.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'job']);
  306.         return $this->render('@web/page/job-view.html.twig', [
  307.             'job' => $job,
  308.             'page' => $page,
  309.         ]);
  310.     }
  311.     #[Route('/{_locale}/apply-now'name'page_apply_now'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  312.     public function applyNow(): Response
  313.     {
  314.         return $this->render('@web/page/apply-now.html.twig');
  315.     }
  316.     #[Route('/{_locale}/special-offers/{slug}'name'page_special_offers'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  317.     public function specialOffers($slug): Response
  318.     {
  319.         $specialOffers $this->entityManager->getRepository(SpecialOffers::class)->findOneBy(["slug" => $slug]);
  320.         return $this->render('@web/page/special-offers.html.twig', [
  321.             'specialOffers' => $specialOffers,
  322.         ]);
  323.     }
  324.     #[Route('{_locale}/tickets'name'page_tickets'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  325.     public function Tickets(): Response
  326.     {
  327.         $tickets $this->entityManager->getRepository(Tickets::class)->findBy(['isActive'=>'1']);
  328.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'tickets']);
  329.         $user $this->getUser();
  330.         $countries $this->entityManager->getRepository(Countries::class)->findby([], ['sortOrder' => 'ASC']);
  331.         return $this->render('@web/page/tickets.html.twig', [
  332.             'tickets' => $tickets,
  333.             'page' => $page,
  334.             'user' => $user,
  335.             'countries' => $countries,
  336.         ]);
  337.     }
  338.     #[Route('{_locale}/ticket/{id}'name'page_ticket'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  339.     public function Ticket($idTicketsRepository $tickets_repository): Response
  340.     {
  341.         $ticket $this->entityManager->getRepository(Tickets::class)->find($id);
  342.         $tickets $tickets_repository->getWithoutOne($id);
  343.         $user $this->getUser();
  344.         $countries $this->entityManager->getRepository(Countries::class)->findby([], ['sortOrder' => 'ASC']);
  345.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'tickets']);
  346.         $weekday =  (int)date('w');
  347.         if ($weekday === or $weekday === 6){
  348.             $this->addFlash('error'$this->translator->trans("evening_ticket_error"));
  349.         }
  350.         return $this->render('@web/page/ticket.html.twig', [
  351.             'ticket' => $ticket,
  352.             'tickets' => $tickets,
  353.             'user' => $user,
  354.             'countries' => $countries,
  355.             'page' => $page,
  356.             'isCharity' => $ticket->getTicketTypeId() === TicketsApiUrlsEnum::CHARITY_TICKET_ID,
  357.         ]);
  358.     }
  359.     #[Route('{_locale}/playground'name'page_playground'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  360.     public function Playground(): Response
  361.     {
  362.         $playground $this->entityManager->getRepository(Playground::class)->find(1);
  363.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'tickets']);
  364.         $prohibitedCases $this->entityManager->getRepository(ProhibitedCases::class)->findAll();
  365.         return $this->render('@web/page/playground.html.twig', [
  366.             'playground' => $playground,
  367.             'page' => $page,
  368.             'prohibitedCases' => $prohibitedCases,
  369.         ]);
  370.     }
  371.     #[Route('{_locale}/game-zone'name'page_game_zone'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  372.     public function GameZone(): Response
  373.     {
  374.         $gameZone $this->entityManager->getRepository(GameZone::class)->find(1);
  375.         $gameZoneSlider $this->entityManager->getRepository(GameZoneSlider::class)->findBY(['isActive'=>1],['position'=>'ASC']);
  376.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'game-zone']);
  377.         return $this->render('@web/page/game-zone.html.twig', [
  378.             'gameZone' => $gameZone,
  379.             'gameZoneSlider' => $gameZoneSlider,
  380.             'page' => $page,
  381.         ]);
  382.     }
  383.     #[Route('{_locale}/ice-rink'name'page_ice_rink'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  384.     public function IceRink(): Response
  385.     {
  386.         $iceRink $this->entityManager->getRepository(IceRink::class)->find(1);
  387.         $iceRinkSlider $this->entityManager->getRepository(IceRinkSlider::class)->findAll();
  388.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'ice-rink']);
  389.         return $this->render('@web/page/ice-rink.html.twig', [
  390.             'iceRink' => $iceRink,
  391.             'iceRinkSlider' => $iceRinkSlider,
  392.             'page' => $page,
  393.         ]);
  394.     }
  395.     #[Route('/get-tickets'name'get_all_tickets'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'],methods'POST')]
  396.     public function getTickets(Request $request,TicketsRepository $tickets_repository)
  397.     {
  398.        $res $tickets_repository->getAllTicketsFromAPI();
  399.        $this->addFlash($res['success'] ? 'sonata_flash_success' 'sonata_flash_error'$res['message']);
  400.        return $this->redirect($request->headers->get('referer') ?? $this->generateUrl('fallback_route'));
  401.     }
  402.     #[Route('/{_locale}/privacy-policy'name'page_privacy_policy'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  403.     public function privacyPolicy(): Response
  404.     {
  405.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'privacy-policy']);
  406.         return $this->render('@web/page/privacy-policy.html.twig', [
  407.             'page' => $page,
  408.         ]);
  409.     }
  410.     #[Route('/{_locale}/therms'name'page_therms'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'hy'])]
  411.     public function therms(): Response
  412.     {
  413.         $page $this->entityManager->getRepository(Page::class)->findOneBy(["slug" => 'therms']);
  414.         return $this->render('@web/page/therms.html.twig', [
  415.             'page' => $page,
  416.         ]);
  417.     }
  418. }