src/Controller/PageController.php line 397

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Ariane\Cgv;
  4. use App\Entity\Ariane\Contact;
  5. use App\Entity\Ariane\MentionsLegales;
  6. use App\Entity\Hermes\Client;
  7. use App\Entity\Hermes\ClientArticleIndispensable;
  8. use App\Entity\Hermes\GuideDesEncres;
  9. use App\Entity\Hermes\Promotion;
  10. use App\Entity\Hermes\UserCommercial;
  11. use App\Form\ContactType;
  12. use App\Repository\Ariane\CarrouselRepository;
  13. use App\Repository\Ariane\CgvRepository;
  14. use App\Repository\Ariane\ContactObjetRepository;
  15. use App\Repository\Ariane\MentionsLegalesRepository;
  16. use App\Repository\ArticleRepository;
  17. use App\Repository\PromotionRepository;
  18. use App\Repository\UserClientRepository;
  19. use App\Services\GetFiltresServices;
  20. use App\Services\Mail\SendEmailServices;
  21. use App\Services\Trie\TrieServices;
  22. use Doctrine\ORM\EntityManagerInterface;
  23. use Doctrine\Persistence\ManagerRegistry;
  24. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  25. use Symfony\Component\HttpFoundation\JsonResponse;
  26. use Symfony\Component\HttpFoundation\Request;
  27. use Symfony\Component\HttpFoundation\Response;
  28. use Symfony\Component\Mailer\MailerInterface;
  29. use Symfony\Component\Routing\Annotation\Route;
  30. class PageController extends AbstractController
  31. {
  32.     public function __construct(
  33.         private ManagerRegistry $doctrine,
  34.         private ArticleRepository $articleRepository,
  35.         private TrieServices $trieServices,
  36.         private GetFiltresServices $getFiltresServices,
  37.         private UserClientRepository $userClientRepository,
  38.         private CarrouselRepository $carrouselRepository,
  39.         private SendEmailServices $sendEmailServices
  40.     ) {
  41.     }
  42.     #[Route('/client'name'app_accueil_index')]
  43.     public function index(): Response
  44.     {
  45.         $email $this->getUser()->getUserIdentifier();
  46.         $user $this->userClientRepository->findOneBy(['email' => $email]);
  47.         $client $this->doctrine->getRepository(Client::class, 'hermes')->findOneBy(['numero' => $user->getNumero()]);
  48.         $carrousel $this->carrouselRepository->findAll();
  49.         $promotions $this->articleRepository->findByCheckRestrictionVenteFilters($clientnull4);
  50.         $promotions $this->trieServices->sortByIsPrioritaire($promotions);
  51.         $nouveautes $this->articleRepository->findByCheckRestrictionVenteFilters($clientnull1);
  52.         $nouveautes $this->trieServices->sortByIsPrioritaire($nouveautes);
  53.         $guideDesEncres $this->doctrine->getRepository(GuideDesEncres::class, 'hermes')->findAll();
  54.         $indispensables null;
  55.         if (null !== $client) {
  56.             /* @phpstan-ignore-next-line */
  57.             $indispensables $this->doctrine->getRepository(ClientArticleIndispensable::class, 'hermes')->findIndispensables($client->getId());
  58.         }
  59.         $articles $this->articleRepository->findByCheckRestrictionVenteFilters($client);
  60.         return $this->render('page/index.html.twig', [
  61.             'client' => $client,
  62.             'promotions' => $promotions,
  63.             'nouveautes' => $nouveautes,
  64.             'indispensables' => $indispensables,
  65.             'articles' => $articles,
  66.             'guideDesEncres' => array_pop($guideDesEncres),
  67.             'carrousel' => $carrousel[0],
  68.         ]);
  69.     }
  70.     #[Route('/client/promotions'name'app_page_promotions')]
  71.     public function promotions(Request $request): Response
  72.     {
  73.         $email $this->getUser()->getUserIdentifier();
  74.         $user $this->userClientRepository->findOneBy(['email' => $email]);
  75.         $client $this->doctrine->getRepository(Client::class, 'hermes')->findOneBy(['numero' => $user->getNumero()]);
  76.         $articlesSeuls $this->articleRepository->findByCheckRestrictionVenteFilters($clientnull4nullnullnullnull);
  77.         $articlesBoxs $this->articleRepository->findByCheckRestrictionVenteFilters($clientnull8nullnullnullnull);
  78.         $articlesSeuls $this->trieServices->sortByIsPrioritaire($articlesSeuls);
  79.         $articlesBoxs $this->trieServices->sortByIsPrioritaire($articlesBoxs);
  80.         $guideDesEncres $this->doctrine->getRepository(GuideDesEncres::class, 'hermes')->findAll();
  81.         $seulAffiches 4;
  82.         $seulNum 4;
  83.         if (
  84.             (null !== $request->get('voirplus') && 'true' === $request->get('voirplus'))
  85.             && null !== $request->get('affiches')
  86.         ) {
  87.             $seulNum $request->get('newSeulNum');
  88.             $seulAffiches $request->get('newSeulNum') + $request->get('affiches');
  89.         } elseif (
  90.             null !== $request->get('newSeulNum')
  91.             && null === $request->get('voirplus')
  92.         ) {
  93.             $seulNum $request->get('newSeulNum');
  94.             $seulAffiches $seulNum;
  95.         } else {
  96.             $seulNum 4;
  97.         }
  98.         $boxAffiches 4;
  99.         $boxNum 4;
  100.         if (
  101.             (null !== $request->get('voirplus') && 'true' === $request->get('voirplus'))
  102.             && null !== $request->get('affiches')
  103.         ) {
  104.             $boxNum $request->get('newBoxNum');
  105.             $boxAffiches $request->get('newBoxNum') + $request->get('affiches');
  106.         } elseif (
  107.             null !== $request->get('newBoxNum')
  108.             && null === $request->get('voirplus')
  109.         ) {
  110.             $boxNum $request->get('newBoxNum');
  111.             $boxAffiches $boxNum;
  112.         } else {
  113.             $boxNum 4;
  114.         }
  115.         return $this->render('page/promotions.html.twig', [
  116.             'client' => $client,
  117.             'articlesSeuls' => $articlesSeuls,
  118.             'articlesBoxs' => $articlesBoxs,
  119.             'guideDesEncres' => array_pop($guideDesEncres),
  120.             'boxNum' => $boxNum,
  121.             'seulNum' => $seulNum,
  122.             'seulAffiches' => $seulAffiches,
  123.             'boxAffiches' => $boxAffiches,
  124.         ]);
  125.     }
  126.     #[Route('/client/indispensables'name'app_page_indispensables')]
  127.     public function indispensable(Request $request): Response
  128.     {
  129.         $email $this->getUser()->getUserIdentifier();
  130.         $user $this->userClientRepository->findOneBy(['email' => $email]);
  131.         $client $this->doctrine->getRepository(Client::class, 'hermes')->findOneBy(['numero' => $user->getNumero()]);
  132.         $indispensables null;
  133.         if (null !== $client) {
  134.             /* @phpstan-ignore-next-line */
  135.             $indispensables $this->doctrine->getRepository(ClientArticleIndispensable::class, 'hermes')->findIndispensables($client->getId());
  136.         }
  137.         $guideDesEncres $this->doctrine->getRepository(GuideDesEncres::class, 'hermes')->findAll();
  138.         $affiches 4;
  139.         $searchNum 4;
  140.         if (
  141.             (null !== $request->get('voirplus') && true === $request->get('voirplus'))
  142.             && null !== $request->get('affiches')
  143.         ) {
  144.             $searchNum $request->get('newSearchNum');
  145.             $affiches $request->get('newSearchNum') + $request->get('affiches');
  146.         } elseif (
  147.             null !== $request->get('newSearchNum')
  148.             && null === $request->get('voirplus')
  149.         ) {
  150.             $searchNum $request->get('newSearchNum');
  151.             $affiches $searchNum;
  152.         } else {
  153.             $searchNum 4;
  154.         }
  155.         return $this->render('page/indispensables.html.twig', [
  156.             'indispensables' => $indispensables,
  157.             'searchNum' => $searchNum,
  158.             'affiches' => $affiches,
  159.             'guideDesEncres' => array_pop($guideDesEncres),
  160.         ]);
  161.     }
  162.     #[Route('/client/destockage'name'app_page_bons_plans_web')]
  163.     public function bonPlanWeb(Request $request): Response
  164.     {
  165.         $email $this->getUser()->getUserIdentifier();
  166.         $user $this->userClientRepository->findOneBy(['email' => $email]);
  167.         $affiches 4;
  168.         $searchNum 4;
  169.         if (
  170.             (null !== $request->get('voirplus') && 'true' === $request->get('voirplus'))
  171.             && null !== $request->get('affiches')
  172.         ) {
  173.             $searchNum $request->get('newSearchNum');
  174.             $affiches $request->get('newSearchNum') + $request->get('affiches');
  175.         } elseif (
  176.             null !== $request->get('newSearchNum')
  177.             && null === $request->get('voirplus')
  178.         ) {
  179.             $searchNum $request->get('newSearchNum');
  180.             $affiches $searchNum;
  181.         } else {
  182.             $searchNum 4;
  183.         }
  184.         $client $this->doctrine->getRepository(Client::class, 'hermes')->findOneBy(['numero' => $user->getNumero()]);
  185.         $bonsPlansWeb $this->articleRepository->findByCheckRestrictionVenteFilters($clienttruenullnullnullnullnull);
  186.         $guideDesEncres $this->doctrine->getRepository(GuideDesEncres::class, 'hermes')->findAll();
  187.         return $this->render('page/bons_plans_web.html.twig', [
  188.             'client' => $client,
  189.             'bonsPlansWeb' => $bonsPlansWeb,
  190.             'guideDesEncres' => array_pop($guideDesEncres),
  191.             'searchNum' => $searchNum,
  192.             'affiches' => $affiches,
  193.         ]);
  194.     }
  195.     #[Route('/client/recherche'name'app_page_recherche')]
  196.     public function recherche(
  197.         Request $request,
  198.         ArticleRepository $articleRepository,
  199.         PromotionRepository $promotionRepository
  200.     ): Response {
  201.         $allRequest $request->query->all();
  202.         switch ($request->get('categorie')) {
  203.             case 1:
  204.                 $allRequest['categorie'] = 'ENCRE COMPATIBLE';
  205.                 break;
  206.             case 2:
  207.                 $allRequest['categorie'] = 'ACCESSOIRE';
  208.                 break;
  209.             case 3:
  210.                 $allRequest['categorie'] = 'ENCRE OEM';
  211.                 break;
  212.         }
  213.         // Affichage pour les promotions
  214.         $promotions null;
  215.         if (null !== $request->get('search') && '' !== $request->get('search')) {
  216.             $promotions $promotionRepository->findPromotion($request->get('search'));
  217.         }
  218.         if (null !== $promotions && \count($promotions) > 0) {
  219.             return $this->render('page/recherche_promotion.html.twig', [
  220.                 'search' => $request->get('search'),
  221.                 'promotions' => $promotions,
  222.                 'types' => Promotion::$typeList,
  223.             ]);
  224.         }
  225.         $affiches 4;
  226.         $searchNum 4;
  227.         if (
  228.             (null !== $request->get('voirplus') && 'true' === $request->get('voirplus'))
  229.             && null !== $request->get('affiches')
  230.         ) {
  231.             $searchNum $request->get('newSearchNum');
  232.             $affiches $request->get('newSearchNum') + $request->get('affiches');
  233.         } elseif (
  234.             null !== $request->get('newSearchNum')
  235.             && null === $request->get('voirplus')
  236.         ) {
  237.             $searchNum $request->get('newSearchNum');
  238.             $affiches $searchNum;
  239.         } else {
  240.             $searchNum 4;
  241.         }
  242.         $isPageNouveaute false;
  243.         if (\is_array($request->get('statut')) && \in_array('NEW'$request->get('statut'), true)) {
  244.             $isPageNouveaute true;
  245.         }
  246.         $email $this->getUser()->getUserIdentifier();
  247.         $user $this->userClientRepository->findOneBy(['email' => $email]);
  248.         $client $this->doctrine->getRepository(Client::class, 'hermes')->findOneBy(['numero' => $user->getNumero()]);
  249.         if (true === $isPageNouveaute) {
  250.             $articles $articleRepository->findByQueryRestrictionNouveautes($client$allRequest$request->get('sort'), $request->get('prix'));
  251.         } else {
  252.             $articles $articleRepository->findByQueryRestriction($client$allRequest$request->get('sort'), $request->get('prix'));
  253.         }
  254.         $articlesMax \count($articles);
  255.         if (=== \count($articles)) {
  256.             $allRequest['search'] = '';
  257.             $filtres $this->getFiltresServices->getFiltres(
  258.                 $articleRepository->findByQueryRestriction($client$allRequest$request->get('sort'), $request->get('prix'))
  259.             );
  260.         } else {
  261.             $filtres $this->getFiltresServices->getFiltres($articles);
  262.         }
  263.         $articles \array_slice($articles0$affiches);
  264.         $guideDesEncres $this->doctrine->getRepository(GuideDesEncres::class, 'hermes')->findAll();
  265.         $querys $this->getFiltresServices->sortQuerys($allRequest);
  266.         return $this->render('page/recherche.html.twig', [
  267.             'search' => $request->get('search'),
  268.             'searchNum' => $searchNum,
  269.             'affiches' => $affiches,
  270.             'querys' => $querys,
  271.             'articlesMax' => $articlesMax,
  272.             'articles' => $articles,
  273.             'filtres' => $filtres,
  274.             'guideDesEncres' => array_pop($guideDesEncres),
  275.             'client' => $client,
  276.         ]);
  277.     }
  278.     #[Route('/client/recherche/ajax'name'app_page_recherche_ajax')]
  279.     public function rechercheAjax(): JsonResponse
  280.     {
  281.         return new JsonResponse([
  282.             'success' => true,
  283.         ]);
  284.     }
  285.     #[Route('/contact'name'app_page_contact')]
  286.     public function contact(Request $requestEntityManagerInterface $entityManagerContactObjetRepository $contactObjetRepositoryMailerInterface $mailer): Response
  287.     {
  288.         $user null;
  289.         if (null !== $this->getUser()) {
  290.             $email $this->getUser()->getUserIdentifier();
  291.             $user $this->userClientRepository->findOneBy(['email' => $email]);
  292.         }
  293.         $objets $contactObjetRepository->findAll();
  294.         $contact = new Contact();
  295.         $form $this->createForm(ContactType::class, $contact);
  296.         $form->handleRequest($request);
  297.         if ($form->isSubmitted() && $form->isValid()) {
  298.             $commercial null;
  299.             if (null !== $user && $user->getCompte() && $user->getCompte()->isCommercialAccessToMailContact()) {
  300.                 $client $this->doctrine->getRepository(Client::class, 'hermes')->findOneBy(['numero' => $user->getCompte()->getSuperClient()->getNumero()]);
  301.                 $commercial $this->doctrine->getRepository(UserCommercial::class, 'hermes')->find(['id' => $client->getCommercial()]);
  302.             }
  303.             $contact $form->getData();
  304.             $contact->setCreatedAt(new \DateTime());
  305.             $entityManager->persist($contact);
  306.             $entityManager->flush();
  307.             $this->sendEmailServices->sendContactEmail($contact$commercial$user);
  308.             $this->addFlash('success''Votre message a bien été envoyé.');
  309.             $contact = new Contact();
  310.             $form $this->createForm(ContactType::class, $contact);
  311.         }
  312.         return $this->render('page/contact.html.twig', [
  313.             'form' => $form->createView(),
  314.             'objets' => $objets,
  315.         ]);
  316.     }
  317.     #[Route('/mentions-legales'name'app_page_mentions_legales')]
  318.     public function mentionsLegales(MentionsLegalesRepository $mentionsLegalesRepository): Response
  319.     {
  320.         $mentionsLegales $mentionsLegalesRepository->findOneBy(['id' => 1]);
  321.         if (!$mentionsLegales) {
  322.             $mentionsLegales = new MentionsLegales();
  323.             $mentionsLegales->setContenu("Les mentions legales sont momentanément indisponible.
  324.             Merci de contacter directement SRDI pour plus d'informations");
  325.         }
  326.         return $this->render('page/mentions_legales.html.twig', [
  327.             'mentionsLegales' => $mentionsLegales,
  328.         ]);
  329.     }
  330.     #[Route('/cgv'name'app_page_cgv')]
  331.     public function cgv(CgvRepository $cgvRepository): Response
  332.     {
  333.         $cgv $cgvRepository->findOneBy(['id' => 1]);
  334.         if (!$cgv) {
  335.             $cgv = new Cgv();
  336.             $cgv->setContenu("Les conditions générales de vente sont momentanément indisponible.
  337.             Merci de contacter directement SRDI pour plus d'informations");
  338.         }
  339.         return $this->render('page/cgv.html.twig', [
  340.             'cgv' => $cgv,
  341.         ]);
  342.     }
  343. }