src/Controller/AppController.php line 318

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.         return $this->render('app/pages/software-tome.html.twig', ['articlesTome' => $articleTome]);
  74.     }
  75.     /**
  76.      * @Route("/software/lore", name="software-lore", options={"sitemap": true, "priority": 1, "changefreq": "yearly"})
  77.      */
  78.     public function SoftwareLoreAction(Request $requestEntityManagerInterface $em)
  79.     {
  80.         $articleRepo $em->getRepository(Article::class);
  81.         $articleLore $articleRepo->getArticleBy(CategoryArticle::CAT['lore']);
  82.         return $this->render('app/pages/software-lore.html.twig', [
  83.             'articlesLore' => $articleLore,
  84.         ]);
  85.     }
  86.     /**
  87.      * @Route("/", name="tunnel", host="get.amsel-suite.com", options={"sitemap": true, "priority": 1, "changefreq": "yearly"})
  88.      */
  89.     public function tunnelAction(Request $request)
  90.     {
  91.         return $this->redirect("https://www.amsel-suite.com/");
  92.         return $this->render('app/pages/tunnel.html.twig');
  93.     }
  94.     /**
  95.      * @Route("/legal", name="legal",  options={"sitemap": true, "priority": 1, "changefreq": "yearly"})
  96.      */
  97.     public function legalAction(Request $request)
  98.     {
  99.         return $this->render('app/legal/legal.html.twig');
  100.     }
  101.     /**
  102.      * @Route("/rgpd", name="rgpd",  options={"sitemap": true, "priority": 1, "changefreq": "yearly"})
  103.      */
  104.     public function rgpdAction(Request $request)
  105.     {
  106.         return $this->render('app/legal/rgpd.html.twig');
  107.     }
  108.     /**
  109.      * @Route("/cookies", name="cookies",  options={"sitemap": true, "priority": 1, "changefreq": "yearly"})
  110.      */
  111.     public function cookiesAction(Request $request)
  112.     {
  113.         return $this->render('app/legal/cookies.html.twig');
  114.     }
  115.     /**
  116.      * @Route("/sitemap", name="sitemap",  options={"sitemap": true, "priority": 1, "changefreq": "daily"})
  117.      */
  118.     public function sitemapAction(Request $requestSitemap $sitemapService)
  119.     {
  120.         /** @var Router $router */
  121.         $router $this->container->get('router');
  122.         $collection $router->getRouteCollection();
  123.         $allRoutes $collection->all();
  124.         $urls = [];
  125.         /** @var \Symfony\Component\Routing\Route $route */
  126.         foreach ($allRoutes as $routeName => $route) {
  127.             if ($route->getOption('sitemap') == true) {
  128.                 $formatedRoute $sitemapService->generate($routeName$route$request->getLocale());
  129.                 if (count($formatedRoute) > 0) {
  130.                     if (array_key_exists('loc'$formatedRoute)) {
  131.                         $urls[] = $formatedRoute;
  132.                     } else {
  133.                         foreach ($formatedRoute as $formRoute) {
  134.                             $urls[] = $formRoute;
  135.                         }
  136.                     }
  137.                 }
  138.             }
  139.         }
  140.         return $this->render('app/pages/sitemap.html.twig', ['urls' => $urls]);
  141.     }
  142.     /**
  143.      * @Route("/sitemap.{_format}", requirements={"_locale" = "en|fr", "_format" = "xml"}, name="sitemap_xml")
  144.      */
  145.     public function sitemapXmlAction(Request $requestSitemap $sitemapService)
  146.     {
  147.         /** @var Router $router */
  148.         $router $this->container->get('router');
  149.         $collection $router->getRouteCollection();
  150.         $allRoutes $collection->all();
  151.         $urls = [];
  152.         /** @var \Symfony\Component\Routing\Route $route */
  153.         foreach ($allRoutes as $routeName => $route) {
  154.             if ($route->getOption('sitemap') == true) {
  155.                 $formatedRoute $sitemapService->generate($routeName$route$request->getLocale());
  156.                 if (count($formatedRoute) > 0) {
  157.                     if (array_key_exists('loc'$formatedRoute)) {
  158.                         $urls[] = $formatedRoute;
  159.                     } else {
  160.                         foreach ($formatedRoute as $formRoute) {
  161.                             $urls[] = $formRoute;
  162.                         }
  163.                     }
  164.                 }
  165.             }
  166.         }
  167.         return $this->render('app/pages/sitemap.xml.twig', ['urls' => $urls]);
  168.     }
  169.     /**
  170.      * @Route("/extension/{key}.json", name="extension_json",  options={"sitemap": false})
  171.      */
  172.     public function extensionJsonAction(Request $request$keyEntityManagerInterface $em)
  173.     {
  174.         $data = [];
  175.         if ($key == md5($request->getSchemeAndHttpHost())) {
  176.             $data["status"] = "OK";
  177.             $data["refresh"] = "1000";
  178.             $data["read"] = $this->generateUrl('notifications_readed', [], UrlGeneratorInterface::ABSOLUTE_URL);
  179.             $extension $em->getRepository('App:Extension')->find(1);
  180.             if (!$extension) {
  181.                 $extension = new Extension();
  182.             }
  183.             $total 0;
  184.             if (in_array("order"$extension->getAlert())) {
  185.                 $orders $em->getRepository('App:EcommerceOrder')->findBy(array('notificationReadedAt' => null));
  186.                 $data["data"]["orders"]["count"] = count($orders);
  187.                 if (count($orders) <= 0) {
  188.                     $data["data"]["orders"]["text"] = "Vous n'avez pas de nouvelles commandes";
  189.                 } elseif (count($orders) == 1) {
  190.                     $data["data"]["orders"]["text"] = "Vous avez 1 nouvelle commande";
  191.                 } else {
  192.                     $data["data"]["orders"]["text"] = "Vous avez " count($orders) . " nouvelles commandes";
  193.                 }
  194.                 $data["data"]["orders"]["url"] = $this->generateUrl('admin_order_index', [], UrlGeneratorInterface::ABSOLUTE_URL);
  195.                 $data["data"]["orders"]["icon"] = "money-bill-alt";
  196.                 $total += count($orders);
  197.             }
  198.             if (in_array("contact"$extension->getAlert())) {
  199.                 $contacts $em->getRepository('App:Contact')->findBy(array('notificationReadedAt' => null));
  200.                 $data["data"]["contacts"]["count"] = count($contacts);
  201.                 if (count($contacts) <= 0) {
  202.                     $data["data"]["contacts"]["text"] = "Vous n'avez pas de nouvelles demandes de contact";
  203.                 } elseif (count($contacts) == 1) {
  204.                     $data["data"]["contacts"]["text"] = "Vous avez 1 nouvelle demande de contact";
  205.                 } else {
  206.                     $data["data"]["contacts"]["text"] = "Vous avez " count($contacts) . " nouvelles demandes de contact";
  207.                 }
  208.                 $data["data"]["contacts"]["url"] = $this->generateUrl('admin_contact_index', [], UrlGeneratorInterface::ABSOLUTE_URL);
  209.                 $data["data"]["contacts"]["icon"] = "envelope";
  210.                 $total += count($contacts);
  211.             }
  212.             $data["total"] = $total;
  213.             $data["host"] = $request->getHost();
  214.             $data["color"] = $this->getParameter("color");
  215.         } else {
  216.             $data["status"] = "KO";
  217.         }
  218.         $response = new JsonResponse($data);
  219.         $response->headers->set("Access-Control-Allow-Origin""*");
  220.         return $response;
  221.     }
  222.     /**
  223.      * @Route("/notifications/readed", name="notifications_readed",  options={"sitemap": false})
  224.      */
  225.     public function notificationsReadedAction(Request $requestEntityManagerInterface $em)
  226.     {
  227.         $orders $em->getRepository('App:EcommerceOrder')->findBy(array('notificationReadedAt' => null));
  228.         foreach ($orders as $order) {
  229.             $order->setNotificationReadedAt(new \DateTime());
  230.             $em->persist($order);
  231.         }
  232.         $contacts $em->getRepository('App:Contact')->findBy(array('notificationReadedAt' => null));
  233.         foreach ($contacts as $contact) {
  234.             $contact->setNotificationReadedAt(new \DateTime());
  235.             $em->persist($contact);
  236.         }
  237.         $em->flush();
  238.         $response = new JsonResponse(["status" => "OK"]);
  239.         $response->headers->set("Access-Control-Allow-Origin""*");
  240.         return $response;
  241.     }
  242.     /**
  243.      * @Route("/editor/page", name="admin_editor_page")
  244.      */
  245.     public function editorPageAction(Request $request)
  246.     {
  247.         return $this->render('admin/editor/page.html.twig');
  248.     }
  249.     /**
  250.      * @Route("/editor/template", name="admin_editor_template")
  251.      */
  252.     public function editorTemplateAction(Request $request)
  253.     {
  254.         return $this->render('admin/editor/newsletter.html.twig', [
  255.             'url' => $this->generateUrl('homepage', [], UrlGeneratorInterface::ABSOLUTE_URL),
  256.             'unsubscribe' => $this->generateUrl('homepage', [], UrlGeneratorInterface::ABSOLUTE_URL)
  257.         ]);
  258.     }
  259.     /**
  260.      * @Route("/profile/validate-email/{token}", methods={"GET"}, name="validate_mail",  options={"sitemap": false})
  261.      */
  262.     public function validateEmailAction(Request $requestEntityManagerInterface $emUserRepository $userRepository$token)
  263.     {
  264.         $user $userRepository->findOneBy(['mailToken' => $token]);
  265.         if ($user instanceof User) {
  266.             $user->setMailValid(true);
  267.             $em->persist($user);
  268.             $em->flush();
  269.         }
  270.         return $this->redirectToRoute('fos_user_profile_show');
  271.     }
  272.     /**
  273.      * @Route("/design-system", name="design-system",  options={"sitemap": false, "priority": 1, "changefreq": "yearly"})
  274.      */
  275.     public function designSystemAction(Request $request)
  276.     {
  277.         return $this->render('app/design-system.html.twig');
  278.     }
  279.     /**
  280.      * @Route("/preorder/{id}", name="preorder",  options={"sitemap": true, "priority": 1, "changefreq": "yearly"})
  281.      */
  282.     public function preorderAction(Request $request$id)
  283.     {
  284.         $request->getSession()->set('processOrder'true);
  285.         return $this->redirectToRoute('add_to_cart', ['id' => $id]);
  286.     }
  287.     public function renderCart(Request $requestOrder $orderServiceCartRepository $cartRepository)
  288.     {
  289.         $orderService->updateCart($request);
  290.         /** @var Cart $cart */
  291.         $cart $cartRepository->findOneBy(array(
  292.             "session" => User::getSessionId($request),
  293.             "ordered" => false
  294.         ));
  295.         if ($cart instanceof Cart) {
  296.             $cartProducts $cart->getCartProducts();
  297.         } else {
  298.             $cartProducts null;
  299.         }
  300.         return $this->render('app/_inc/_cart.html.twig', ['cartProducts' => $cartProducts]);
  301.     }
  302.     /**
  303.      * @Route("/disable-popup", name="disable_popup",  options={"sitemap": false, "priority": 1, "changefreq": "yearly"})
  304.      */
  305.     public function disablePopupAction(Request $request)
  306.     {
  307.         $session $request->getSession();
  308.         $session->set('disablePopup'1);
  309.         return new JsonResponse(array('result' => 'OK'));
  310.     }
  311. }