src/Controller/AppController.php line 332

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Article;
  4. use App\Entity\Category;
  5. use App\Entity\CategoryArticle;
  6. use App\Entity\Extension;
  7. use App\Entity\Cgv;
  8. use App\Entity\InfoLine;
  9. use App\Entity\Legal;
  10. use App\Entity\Product;
  11. use App\Entity\Promote;
  12. use App\Entity\Question;
  13. use App\Entity\Rgpd;
  14. use App\Entity\Slider;
  15. use App\Repository\CartRepository;
  16. use App\Repository\InfoLineRepository;
  17. use App\Repository\PromoteRepository;
  18. use App\Repository\SliderRepository;
  19. use App\Repository\ProductRepository;
  20. use App\Entity\Cart;
  21. use App\Repository\UserRepository;
  22. use App\Service\Order;
  23. use App\Service\Sitemap;
  24. use Doctrine\ORM\EntityManagerInterface;
  25. use Symfony\Component\Routing\Annotation\Route;
  26. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  27. use Symfony\Component\HttpFoundation\JsonResponse;
  28. use Symfony\Component\HttpFoundation\Request;
  29. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  30. use Symfony\Component\Routing\Router;
  31. use App\Entity\User;
  32. use Symfony\Component\VarDumper\VarDumper;
  33. class AppController extends AbstractController
  34. {
  35.     /**
  36.      * @Route("/", name="homepage", options={"sitemap": true, "priority": 1, "changefreq": "yearly"})
  37.      */
  38.     public function indexAction(Request $requestEntityManagerInterface $em)
  39.     {
  40.         $request->getSession()->set('processOrder'false);
  41.         $articleRepo $em->getRepository(Article::class);
  42.         $articles $articleRepo->getArticlesList();
  43.         $articlesTome $articleRepo->getArticleBy(CategoryArticle::CAT['tome'], null3);
  44.         $articlesLore $articleRepo->getArticleBy(CategoryArticle::CAT['lore'], null3);
  45.         return $this->render('app/pages/index.html.twig', [
  46.             'articles' => $articles,
  47.             'articlesTome' => $articlesTome,
  48.             'articlesLore' => $articlesLore,
  49.         ]);
  50.     }
  51.     /**
  52.      * @Route("/faq", name="faq", options={"sitemap": true, "priority": 1, "changefreq": "yearly"})
  53.      */
  54.     public function FAQAction(Request $requestEntityManagerInterface $em)
  55.     {
  56.         $questions $em->getRepository(Question::class)->findBy([], ["sort" => "asc"]);
  57.         return $this->render('app/pages/faq.html.twig', ["questions" => $questions]);
  58.     }
  59.     /**
  60.      * @Route("/about", name="about", options={"sitemap": true, "priority": 1, "changefreq": "yearly"})
  61.      */
  62.     public function AboutAction(Request $request)
  63.     {
  64.         return $this->render('app/pages/about.html.twig');
  65.     }
  66.     /**
  67.      * @Route("/software/tome", name="software-tome", options={"sitemap": true, "priority": 1, "changefreq": "yearly"})
  68.      */
  69.     public function SoftwareTomeAction(Request $requestEntityManagerInterface $em)
  70.     {
  71.         $articleRepo $em->getRepository(Article::class);
  72.         $articleTome $articleRepo->getArticleBy(CategoryArticle::CAT['tome']);
  73.         $packProduct $em->getRepository(Product::class)->find(1);
  74.         return $this->render('app/pages/software-tome.html.twig', [
  75.             'articlesTome' => $articleTome,
  76.             'packProduct' => $packProduct
  77.         ]);
  78.     }
  79.     /**
  80.      * @Route("/software/lore", name="software-lore", options={"sitemap": true, "priority": 1, "changefreq": "yearly"})
  81.      */
  82.     public function SoftwareLoreAction(Request $requestEntityManagerInterface $em)
  83.     {
  84.         $articleRepo $em->getRepository(Article::class);
  85.         $articleLore $articleRepo->getArticleBy(CategoryArticle::CAT['lore']);
  86.         $packProduct $em->getRepository(Product::class)->find(1);
  87.         return $this->render('app/pages/software-lore.html.twig', [
  88.             'articlesLore' => $articleLore,
  89.             'packProduct' => $packProduct,
  90.         ]);
  91.     }
  92.     /**
  93.      * @Route("/", name="tunnel", host="get.amsel-suite.com", options={"sitemap": true, "priority": 1, "changefreq": "yearly"})
  94.      */
  95.     public function tunnelAction(Request $request)
  96.     {
  97.         return $this->redirect("https://www.amsel-suite.com/");
  98.         return $this->render('app/pages/tunnel.html.twig');
  99.     }
  100.     /**
  101.      * @Route("/legal", name="legal",  options={"sitemap": true, "priority": 1, "changefreq": "yearly"})
  102.      */
  103.     public function legalAction(Request $request)
  104.     {
  105.         return $this->render('app/legal/legal.html.twig');
  106.     }
  107.     /**
  108.      * @Route("/rgpd", name="rgpd",  options={"sitemap": true, "priority": 1, "changefreq": "yearly"})
  109.      */
  110.     public function rgpdAction(Request $request)
  111.     {
  112.         return $this->render('app/legal/rgpd.html.twig');
  113.     }
  114.     /**
  115.      * @Route("/cookies", name="cookies",  options={"sitemap": true, "priority": 1, "changefreq": "yearly"})
  116.      */
  117.     public function cookiesAction(Request $request)
  118.     {
  119.         return $this->render('app/legal/cookies.html.twig');
  120.     }
  121.     /**
  122.      * @Route("/sitemap", name="sitemap",  options={"sitemap": true, "priority": 1, "changefreq": "daily"})
  123.      */
  124.     public function sitemapAction(Request $requestSitemap $sitemapService)
  125.     {
  126.         /** @var Router $router */
  127.         $router $this->container->get('router');
  128.         $collection $router->getRouteCollection();
  129.         $allRoutes $collection->all();
  130.         $urls = [];
  131.         /** @var \Symfony\Component\Routing\Route $route */
  132.         foreach ($allRoutes as $routeName => $route) {
  133.             if ($route->getOption('sitemap') == true) {
  134.                 $formatedRoute $sitemapService->generate($routeName$route$request->getLocale());
  135.                 if (count($formatedRoute) > 0) {
  136.                     if (array_key_exists('loc'$formatedRoute)) {
  137.                         $urls[] = $formatedRoute;
  138.                     } else {
  139.                         foreach ($formatedRoute as $formRoute) {
  140.                             $urls[] = $formRoute;
  141.                         }
  142.                     }
  143.                 }
  144.             }
  145.         }
  146.         return $this->render('app/pages/sitemap.html.twig', ['urls' => $urls]);
  147.     }
  148.     /**
  149.      * @Route("/sitemap.{_format}", requirements={"_locale" = "en|fr", "_format" = "xml"}, name="sitemap_xml")
  150.      */
  151.     public function sitemapXmlAction(Request $requestSitemap $sitemapService)
  152.     {
  153.         /** @var Router $router */
  154.         $router $this->container->get('router');
  155.         $collection $router->getRouteCollection();
  156.         $allRoutes $collection->all();
  157.         $urls = [];
  158.         /** @var \Symfony\Component\Routing\Route $route */
  159.         foreach ($allRoutes as $routeName => $route) {
  160.             if ($route->getOption('sitemap') == true) {
  161.                 $formatedRoute $sitemapService->generate($routeName$route$request->getLocale());
  162.                 if (count($formatedRoute) > 0) {
  163.                     if (array_key_exists('loc'$formatedRoute)) {
  164.                         $urls[] = $formatedRoute;
  165.                     } else {
  166.                         foreach ($formatedRoute as $formRoute) {
  167.                             $urls[] = $formRoute;
  168.                         }
  169.                     }
  170.                 }
  171.             }
  172.         }
  173.         return $this->render('app/pages/sitemap.xml.twig', ['urls' => $urls]);
  174.     }
  175.     /**
  176.      * @Route("/extension/{key}.json", name="extension_json",  options={"sitemap": false})
  177.      */
  178.     public function extensionJsonAction(Request $request$keyEntityManagerInterface $em)
  179.     {
  180.         $data = [];
  181.         if ($key == md5($request->getSchemeAndHttpHost())) {
  182.             $data["status"] = "OK";
  183.             $data["refresh"] = "1000";
  184.             $data["read"] = $this->generateUrl('notifications_readed', [], UrlGeneratorInterface::ABSOLUTE_URL);
  185.             $extension $em->getRepository('App:Extension')->find(1);
  186.             if (!$extension) {
  187.                 $extension = new Extension();
  188.             }
  189.             $total 0;
  190.             if (in_array("order"$extension->getAlert())) {
  191.                 $orders $em->getRepository('App:EcommerceOrder')->findBy(array('notificationReadedAt' => null));
  192.                 $data["data"]["orders"]["count"] = count($orders);
  193.                 if (count($orders) <= 0) {
  194.                     $data["data"]["orders"]["text"] = "Vous n'avez pas de nouvelles commandes";
  195.                 } elseif (count($orders) == 1) {
  196.                     $data["data"]["orders"]["text"] = "Vous avez 1 nouvelle commande";
  197.                 } else {
  198.                     $data["data"]["orders"]["text"] = "Vous avez " count($orders) . " nouvelles commandes";
  199.                 }
  200.                 $data["data"]["orders"]["url"] = $this->generateUrl('admin_order_index', [], UrlGeneratorInterface::ABSOLUTE_URL);
  201.                 $data["data"]["orders"]["icon"] = "money-bill-alt";
  202.                 $total += count($orders);
  203.             }
  204.             if (in_array("contact"$extension->getAlert())) {
  205.                 $contacts $em->getRepository('App:Contact')->findBy(array('notificationReadedAt' => null));
  206.                 $data["data"]["contacts"]["count"] = count($contacts);
  207.                 if (count($contacts) <= 0) {
  208.                     $data["data"]["contacts"]["text"] = "Vous n'avez pas de nouvelles demandes de contact";
  209.                 } elseif (count($contacts) == 1) {
  210.                     $data["data"]["contacts"]["text"] = "Vous avez 1 nouvelle demande de contact";
  211.                 } else {
  212.                     $data["data"]["contacts"]["text"] = "Vous avez " count($contacts) . " nouvelles demandes de contact";
  213.                 }
  214.                 $data["data"]["contacts"]["url"] = $this->generateUrl('admin_contact_index', [], UrlGeneratorInterface::ABSOLUTE_URL);
  215.                 $data["data"]["contacts"]["icon"] = "envelope";
  216.                 $total += count($contacts);
  217.             }
  218.             $data["total"] = $total;
  219.             $data["host"] = $request->getHost();
  220.             $data["color"] = $this->getParameter("color");
  221.         } else {
  222.             $data["status"] = "KO";
  223.         }
  224.         $response = new JsonResponse($data);
  225.         $response->headers->set("Access-Control-Allow-Origin""*");
  226.         return $response;
  227.     }
  228.     /**
  229.      * @Route("/notifications/readed", name="notifications_readed",  options={"sitemap": false})
  230.      */
  231.     public function notificationsReadedAction(Request $requestEntityManagerInterface $em)
  232.     {
  233.         $orders $em->getRepository('App:EcommerceOrder')->findBy(array('notificationReadedAt' => null));
  234.         foreach ($orders as $order) {
  235.             $order->setNotificationReadedAt(new \DateTime());
  236.             $em->persist($order);
  237.         }
  238.         $contacts $em->getRepository('App:Contact')->findBy(array('notificationReadedAt' => null));
  239.         foreach ($contacts as $contact) {
  240.             $contact->setNotificationReadedAt(new \DateTime());
  241.             $em->persist($contact);
  242.         }
  243.         $em->flush();
  244.         $response = new JsonResponse(["status" => "OK"]);
  245.         $response->headers->set("Access-Control-Allow-Origin""*");
  246.         return $response;
  247.     }
  248.     /**
  249.      * @Route("/editor/page", name="admin_editor_page")
  250.      */
  251.     public function editorPageAction(Request $request)
  252.     {
  253.         return $this->render('admin/editor/page.html.twig');
  254.     }
  255.     /**
  256.      * @Route("/editor/template", name="admin_editor_template")
  257.      */
  258.     public function editorTemplateAction(Request $request)
  259.     {
  260.         return $this->render('admin/editor/newsletter.html.twig', [
  261.             'url' => $this->generateUrl('homepage', [], UrlGeneratorInterface::ABSOLUTE_URL),
  262.             'unsubscribe' => $this->generateUrl('homepage', [], UrlGeneratorInterface::ABSOLUTE_URL)
  263.         ]);
  264.     }
  265.     /**
  266.      * @Route("/profile/validate-email/{token}", methods={"GET"}, name="validate_mail",  options={"sitemap": false})
  267.      */
  268.     public function validateEmailAction(Request $requestEntityManagerInterface $emUserRepository $userRepository$token)
  269.     {
  270.         $user $userRepository->findOneBy(['mailToken' => $token]);
  271.         if ($user instanceof User) {
  272.             $user->setMailValid(true);
  273.             $em->persist($user);
  274.             $em->flush();
  275.         }
  276.         return $this->redirectToRoute('fos_user_profile_show');
  277.     }
  278.     /**
  279.      * @Route("/design-system", name="design-system",  options={"sitemap": false, "priority": 1, "changefreq": "yearly"})
  280.      */
  281.     public function designSystemAction(Request $request)
  282.     {
  283.         return $this->render('app/design-system.html.twig');
  284.     }
  285.     /**
  286.      * @Route("/preorder/", name="preorderIndex",  options={"sitemap": false, "priority": 1, "changefreq": "yearly"})
  287.      */
  288.     public function preorderIndexAction()
  289.     {
  290.         return $this->redirectToRoute('shop');
  291.     }
  292.     /**
  293.      * @Route("/preorder/{id}", name="preorder",  options={"sitemap": false, "priority": 1, "changefreq": "yearly"})
  294.      */
  295.     public function preorderAction(Request $request$id)
  296.     {
  297.         $request->getSession()->set('processOrder'true);
  298.         return $this->redirectToRoute('add_to_cart', ['id' => $id]);
  299.     }
  300.     public function renderCart(Request $requestOrder $orderServiceCartRepository $cartRepository)
  301.     {
  302.         $orderService->updateCart($request);
  303.         /** @var Cart $cart */
  304.         $cart $cartRepository->findOneBy(array(
  305.             "session" => User::getSessionId($request),
  306.             "ordered" => false
  307.         ));
  308.         if ($cart instanceof Cart) {
  309.             $cartProducts $cart->getCartProducts();
  310.         } else {
  311.             $cartProducts null;
  312.         }
  313.         return $this->render('app/_inc/_cart.html.twig', ['cartProducts' => $cartProducts]);
  314.     }
  315.     /**
  316.      * @Route("/disable-popup", name="disable_popup",  options={"sitemap": false, "priority": 1, "changefreq": "yearly"})
  317.      */
  318.     public function disablePopupAction(Request $request)
  319.     {
  320.         $session $request->getSession();
  321.         $session->set('disablePopup'1);
  322.         return new JsonResponse(array('result' => 'OK'));
  323.     }
  324. }