src/Controller/WidgetController.php line 120

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Boutique\CategorieProduit;
  4. use App\Entity\Boutique\Produit;
  5. use App\Entity\Boutique\ProduitReducCe;
  6. use App\Entity\Contenu\CategorieActualite;
  7. use App\Entity\Contenu\CategorieCse;
  8. use App\Entity\Contenu\Page;
  9. use App\Entity\Contenu\PageAccueil;
  10. use App\Entity\Formulaire\NewsletterInscription;
  11. use App\Entity\Menu\Menu;
  12. use App\Form\Type\Formulaire\NewsletterInscriptionType;
  13. use App\Manager\Boutique\WebserviceManager;
  14. use App\Manager\Categorie\CategorieManager;
  15. use App\Repository\Categorie\CategorieRepository;
  16. use App\Repository\Formulaire\ConversationRepository;
  17. use App\Repository\Menu\MenuItemRepository;
  18. use App\Repository\Menu\MenuRepository;
  19. use FOS\UserBundle\Model\UserInterface;
  20. use Symfony\Component\HttpKernel\KernelInterface;
  21. use Symfony\Component\Routing\Exception\RouteNotFoundException;
  22. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  23. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  24. use Symfony\Component\HttpFoundation\Request;
  25. use Symfony\Component\HttpFoundation\Response;
  26. use Symfony\Contracts\Translation\TranslatorInterface;
  27. /**
  28.  * Class WidgetController
  29.  * @package App\Controller
  30.  */
  31. class WidgetController extends AbstractController
  32. {
  33.     /**
  34.      * @return Response
  35.      */
  36.     public function toolbar(
  37.         Request $request,
  38.         UrlGeneratorInterface $router,
  39.         ConversationRepository $conversationRepository
  40.     ): Response
  41.     {
  42.         $initialRequest $request->get('initialRequest');
  43.         $lienAdmin null;
  44.         foreach ($initialRequest->attributes->all() as $key => $value) {
  45.             if (
  46.                 $value instanceof Page ||
  47.                 $value instanceof PageAccueil ||
  48.                 $value instanceof CategorieActualite
  49.             ) {
  50.                 $routeName 'admin_app_contenu_'.strtolower($key).'_edit';
  51.             }
  52.             if (
  53.                 $value instanceof CategorieProduit ||
  54.                 $value instanceof Produit
  55.             ) {
  56.                 $routeName 'admin_app_boutique_'.strtolower($key).'_edit';
  57.                 // Check si le produit est un coupon de réduction
  58.                 if (method_exists($value'isCouponReduction') && true === $value->isCouponReduction()) {
  59.                     $routeName 'admin_app_boutique_produit_coupon_reduction_edit';
  60.                 }
  61.             }
  62.             if (isset($routeName) && is_object($value)) {
  63.                 try {
  64.                     $url $router->generate($routeName, ['id' => $value->getId()]);
  65.                 } catch (RouteNotFoundException $e) {
  66.                     $url null;
  67.                 }
  68.                 if (!is_null($url)) {
  69.                     $lienAdmin $this->generateUrl($routeName, ['id' => $value->getId()]);
  70.                 }
  71.             }
  72.         }
  73.         $conversationNonRepondues $conversationRepository->getConversationNonRepondues();
  74.         return $this->render('widget/toolbar/index.html.twig', [
  75.             'initialRequest'            => $initialRequest,
  76.             'lienAdmin'                 => $lienAdmin,
  77.             'conversationNonRepondues'  => $conversationNonRepondues
  78.         ]);
  79.     }
  80.     /**
  81.      * @return Response
  82.      */
  83.     public function header(
  84.         Request $request,
  85.         CategorieRepository $categorieRepository,
  86.         MenuItemRepository $menuItemRepository
  87.     ): Response
  88.     {
  89.         $user $this->getUser();
  90.         if (getenv('APP_SITE_SLUG') != 'prestatime' && (!is_object($user) || !$user instanceof UserInterface)) {
  91.             $menuItems $menuItemRepository->findMenuItems(Menu::MENU_HEADER_GUEST);
  92.         } else {
  93.             $menuItems $menuItemRepository->findMenuItems(Menu::MENU_HEADER);
  94.         }
  95.         if (getenv('APP_SITE_SLUG') == 'prestatime') {
  96.             $categorieParents $categorieRepository->findCategories(
  97.                 'boutique',
  98.                 'produit',
  99.                 null,
  100.                 true,
  101.                 null,
  102.                 ['C.position' => 'ASC']
  103.             );
  104.         }
  105.         return $this->render('widget/header/index.html.twig', [
  106.             'initialRequest'    => $request->get('initialRequest'),
  107.             'menuItems'         => $menuItems,
  108.             'categorieParents'  => (isset($categorieParents)) ? $categorieParents : []
  109.         ]);
  110.     }
  111.     /**
  112.      * @return Response
  113.      */
  114.     public function footer(
  115.         MenuRepository $menuRepository,
  116.         MenuItemRepository $menuItemRepository
  117.     ): Response
  118.     {
  119.         $menuLeft       $menuRepository->findOneById(Menu::MENU_FOOTER_LEFT);
  120.         $menuRight      $menuRepository->findOneById(Menu::MENU_FOOTER_RIGHT);
  121.         $menuLeftItems  $menuItemRepository->findMenuItems(Menu::MENU_FOOTER_LEFT);
  122.         $menuRightItems $menuItemRepository->findMenuItems(Menu::MENU_FOOTER_RIGHT);
  123.         return $this->render('widget/footer/index.html.twig', [
  124.             'menuLeft'          => $menuLeft,
  125.             'menuLeftItems'     => $menuLeftItems,
  126.             'menuRight'         => $menuRight,
  127.             'menuRightItems'    => $menuRightItems,
  128.         ]);
  129.     }
  130.     /**
  131.      * @return Response
  132.      */
  133.     public function reassurance(): Response
  134.     {
  135.         return $this->render('widget/reassurance/index.html.twig', [
  136.         ]);
  137.     }
  138.     /**
  139.      * @return Response
  140.      */
  141.     public function newsletter(Request $request): Response
  142.     {
  143.         $newsletterInscription = new NewsletterInscription();
  144.         $form $this->createForm(NewsletterInscriptionType::class, $newsletterInscription);
  145.         $form->handleRequest($request);
  146.         return $this->render('widget/newsletter/index.html.twig', [
  147.             'form' => $form->createView(),
  148.         ]);
  149.     }
  150.     /**
  151.      * @return Response
  152.      */
  153.     public function recherche(Request $requestCategorieRepository $categorieRepository): Response
  154.     {
  155.         $initialRequest $request->get('initialRequest');
  156.         // Desactivation du moteur sur page ski (pas assez de place + bug css)
  157.         $page $initialRequest->attributes->get('page'null);
  158.         if ($page instanceof Page && $page->getId() == Page::PAGE_SKI) {
  159.             return new Response(null);
  160.         }
  161.         $categorieProduits $categorieRepository->findCategories(
  162.             'boutique',
  163.             'produit',
  164.             null,
  165.             true,
  166.             null,
  167.             ['C.position' => 'ASC']
  168.         );
  169.         $ch curl_init();
  170.         curl_setopt($chCURLOPT_URL'https://www.tamtamice.fr/offre/categories');
  171.         curl_setopt($chCURLOPT_HEADERfalse);
  172.         curl_setopt($chCURLOPT_RETURNTRANSFER1);
  173.         curl_setopt($chCURLOPT_BINARYTRANSFER,1);
  174.         $response curl_exec($ch);
  175.         curl_close($ch);
  176.         $categorieOffres json_decode($responsetrue);
  177.         return $this->render('widget/recherche/index.html.twig', [
  178.             'initialRequest'    => $request->get('initialRequest'),
  179.             'categorieProduits' => $categorieProduits,
  180.             'categorieOffres'   => $categorieOffres,
  181.         ]);
  182.     }
  183.     public function filariane(
  184.         $entity,
  185.         CategorieManager $categorieManager,
  186.         Request $request,
  187.         UrlGeneratorInterface $router,
  188.         TranslatorInterface $translator
  189.     )
  190.     {
  191.         $initialRequest $request->get('initialRequest');
  192.         $filariane = array();
  193.         if ($entity instanceof Page) {
  194.             $filariane[] = array(
  195.                 'lien'  => '',
  196.                 'titre' => $entity->getIntitule(),
  197.             );
  198.         }
  199.         if (
  200.             $entity instanceof CategorieActualite ||
  201.             $entity instanceof CategorieCse ||
  202.             $entity instanceof CategorieProduit
  203.         ) {
  204.             $arborescence $categorieManager->getRecursiveCategorieParent($entity);
  205.             unset($arborescence[0]);
  206.             $page $initialRequest->attributes->get('page'null);
  207.             if ($entity instanceof CategorieActualite) {
  208.                 $routeBase 'actualite';
  209.             }
  210.             if ($entity instanceof CategorieCse) {
  211.                 $routeBase 'cse';
  212.             }
  213.             if ($entity instanceof CategorieProduit) {
  214.                 $routeBase 'produit';
  215.             }
  216.             $filariane[] = array(
  217.                 'lien'  => $router->generate($routeBase.'.liste'),
  218.                 'titre' => $page->getIntitule(),
  219.             );
  220.             if (count($arborescence)) {
  221.                 foreach (array_reverse($arborescence) as $categorie) {
  222.                     $filariane[] = array(
  223.                         'lien'  => $router->generate($routeBase.'.categorie.liste', ['slug' => $categorie->getSlug()]),
  224.                         'titre' => $categorie->getIntitule(),
  225.                     );
  226.                 }
  227.             }
  228.             $filariane[] = array(
  229.                 'lien'  => '',
  230.                 'titre' => $entity->getIntitule(),
  231.             );
  232.         }
  233.         if ($entity instanceof Produit) {
  234.             $arborescence $categorieManager->getRecursiveCategorieParent($entity->getDefaultCategorie());
  235.             if (count($arborescence)) {
  236.                 foreach (array_reverse($arborescence) as $categorie) {
  237.                     $filariane[] = array(
  238.                         'lien'  => $router->generate('produit.categorie.liste', ['slug' => $categorie->getSlug()]),
  239.                         'titre' => $categorie->getIntitule(),
  240.                     );
  241.                 }
  242.             }
  243.             $filariane[] = array(
  244.                 'lien'  => '',
  245.                 'titre' => $entity->getIntitule(),
  246.             );
  247.         }
  248.         if ($entity instanceof UserInterface) {
  249.             $lien '';
  250.             if (false === strpos($initialRequest->get('_route'), 'dashboard')) {
  251.                 $lien $router->generate('fos_user_profile_show');
  252.             }
  253.             $filariane[] = array(
  254.                 'lien'  => $lien,
  255.                 'titre' => $translator->trans('mon_compte'),
  256.             );
  257.             if (false !== strpos($initialRequest->get('_route'), 'commande')) {
  258.                 $filariane[] = array(
  259.                     'lien'  => '',
  260.                     'titre' => $translator->trans('commandes_en_cours'),
  261.                 );
  262.             }
  263.             if (false !== strpos($initialRequest->get('_route'), 'historique')) {
  264.                 $filariane[] = array(
  265.                     'lien'  => '',
  266.                     'titre' => $translator->trans('historique_commandes'),
  267.                 );
  268.             }
  269.             if (false !== strpos($initialRequest->get('_route'), 'profile_edit')) {
  270.                 $filariane[] = array(
  271.                     'lien'  => '',
  272.                     'titre' => $translator->trans('informations_personnelles'),
  273.                 );
  274.             }
  275.             if (false !== strpos($initialRequest->get('_route'), 'adresse')) {
  276.                 $filariane[] = array(
  277.                     'lien'  => '',
  278.                     'titre' => $translator->trans('adresses_livraison'),
  279.                 );
  280.             }
  281.             if (false !== strpos($initialRequest->get('_route'), 'password')) {
  282.                 $filariane[] = array(
  283.                     'lien'  => '',
  284.                     'titre' => $translator->trans('mot_de_passe'),
  285.                 );
  286.             }
  287.         }
  288.         return $this->render('widget/filariane/index.html.twig', [
  289.             'filariane' => $filariane
  290.         ]);
  291.     }
  292. }