src/Controller/ProductsController.php line 142

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Products;
  4. use App\Entity\PropertySearch;
  5. use App\Entity\SearchData;
  6. use App\Entity\SearchHomeData;
  7. use App\Entity\Statistiques;
  8. use App\Form\PropertySearchType;
  9. use App\Form\SearchHomeType;
  10. use App\Form\SearchType;
  11. use App\Repository\ProductsRepository;
  12. use App\Repository\StatistiquesRepository;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Doctrine\ORM\EntityManagerInterface;
  18. use Doctrine\Persistence\ManagerRegistry;
  19. #[Route('/produits'name'app_products_')]
  20. class ProductsController extends AbstractController
  21. {                  
  22.     //////
  23.     #[Route('/home/{page?1}/{nbre?100}'name'index')]
  24.     public function index(ManagerRegistry $mr$page$nbreRequest $request
  25.     ProductsRepository $productsRepositoryStatistiquesRepository $statistiquesRepository): Response
  26.     {
  27.         $searchHomeData = new SearchHomeData();
  28.         $form $this->createForm(SearchHomeType::class, $searchHomeData);
  29.         $allStatistiques $statistiquesRepository->findBy(['page' => 'DETAIL_PRODUCT']);
  30.         $form $form->handleRequest($request);
  31.         if ($form->isSubmitted() && $form->isValid())
  32.         {
  33.             $allProducts $productsRepository->findBySearchHome($searchHomeData, ['id' => 'DESC']);
  34.             if($allProducts 0)
  35.             {
  36.                 return $this->render('products/index.html.twig',[
  37.                     'form' => $form->createView(),
  38.                     'allProducts' => $allProducts,
  39.                     'allStatistiques' => $allStatistiques
  40.                 ]);
  41.             }
  42.         }
  43.         //////////////////////
  44.         $idUserConnect $this->getUser();
  45.         $session $request->getSession(); // Equivalent à session_star()
  46.         $elementVisite =  new Statistiques();
  47.         $pageStat 'ACCUEIL_PRODUCTS';
  48.         /// $idElementStat = $id;
  49.         $nameElementStat 'PAGE_PRODUCTS_INDEX';
  50.         $idUserStat $idUserConnect;
  51.         if(($session != null) and ($idUserConnect != null))
  52.         {
  53.             $visitorIdentityStat 'Email';
  54.             $elementVisite->setPage($pageStat);
  55.             $elementVisite->setElement($nameElementStat);
  56.             /// $elementVisite->setIdElement($idElementStat);
  57.             $elementVisite->setUsers($idUserStat);
  58.             $elementVisite->setVisitorIdentity($visitorIdentityStat);
  59.         }
  60.         else
  61.         {
  62.             if(($session != null) and ($idUserConnect <= 0))
  63.             { 
  64.                 $visitorIdentityStat 'INCONNU';
  65.                 $elementVisite->setPage($pageStat);
  66.                 $elementVisite->setElement($nameElementStat);
  67.                 /// $elementVisite->setIdElement($idElementStat);
  68.                 $elementVisite->setUsers($idUserStat);
  69.                 $elementVisite->setVisitorIdentity($visitorIdentityStat);
  70.             }
  71.         }
  72.         $em $mr->getManager();
  73.         $em->persist($elementVisite);
  74.         $em->flush();
  75.         ///////////////////
  76.         $productsRepo $mr->getRepository(Products::class);
  77.         $nbProducts $productsRepo->count([]);
  78.         $nbrePage ceil($nbProducts $nbre);
  79.         $allProducts $productsRepo->findBy([], ['id' => 'DESC'], $nbre, ($page 1) * $nbre);
  80.         return $this->render('products/index.html.twig', [
  81.             'form' => $form->createView(),
  82.             'allProducts' => $allProducts,
  83.             'isPaginated' => true,
  84.             'nbrePage' => $nbrePage,
  85.             'page' => $page,
  86.             'nbre' => $nbre,
  87.             'allStatistiques' => $allStatistiques
  88.         ]);        
  89.     } 
  90.     #[Route('/similaire/{catego}'name'similars')]
  91.     public function similars($categoManagerRegistry $mrProductsRepository $productsRepository,
  92.     StatistiquesRepository $statistiquesRepositoryRequest $request): Response
  93.     {
  94.         $searchHomeData = new SearchHomeData();
  95.         $catSimilar $catego;
  96.         $form $this->createForm(SearchHomeType::class, $searchHomeData);
  97.         $allStatistiques $statistiquesRepository->findBy(['page' => 'DETAIL_PRODUCT']);
  98.         $form $form->handleRequest($request);
  99.         
  100.         if ($form->isSubmitted() && $form->isValid()) 
  101.         { 
  102.             $productsSimilars $productsRepository->findBySearchHome($searchHomeData, ['city' => 'ASC']);
  103.             if($productsSimilars 0)
  104.             {
  105.                  return $this->render('products/similars.html.twig', [
  106.                      'form' => $form->createView(),
  107.                      'productsSimilars' => $productsSimilars,
  108.                      'catSimilar' => $catSimilar,
  109.                      'allStatistiques' => $allStatistiques
  110.                  ]);
  111.              }    
  112.              
  113.              $this->addFlash('danger''Aucun élement trouvé. Vérifiez l\'orthographe ou Utilisez les synonymes:' $searchHomeData);           
  114.              return $this->render('products/similars.html.twig', [
  115.                  'form' => $form->createView(),
  116.                  'productsSimilars' => $productsSimilars,
  117.                  'allStatistiques' => $allStatistiques
  118.              ]);
  119.          }
  120.         $productsSimilars $mr->getRepository(Products::class)->findBy(['categories' => $catego], ['city' => 'ASC']);
  121.         return $this->render('products/similars.html.twig', [
  122.             'form' => $form->createView(),
  123.             'productsSimilars' => $productsSimilars,
  124.             'catSimilar' => $catSimilar,
  125.             'allStatistiques' => $allStatistiques
  126.         ]);
  127.     }
  128.     #[Route('/{slug}/{id}'name'details')]
  129.     public function details($idManagerRegistry $mrProductsRepository $productsRepository,
  130.      StatistiquesRepository $statistiquesRepositoryRequest $request): Response
  131.     {
  132.         ///////////////////////////
  133.         $idUserConnect $this->getUser();
  134.         $session $request->getSession(); // Equivalent à session_star()
  135.         $elementVisite =  new Statistiques();
  136.         $pageStat 'DETAIL_PRODUCT';
  137.         $idElementStat $id;
  138.         $nameElementStat 'NOM_PRODUCT';
  139.         $idUserStat $idUserConnect;
  140.         if(($session != null) and ($idUserConnect != null))
  141.         {
  142.             $visitorIdentityStat 'Email';
  143.             $elementVisite->setPage($pageStat);
  144.             $elementVisite->setElement($nameElementStat);
  145.             $elementVisite->setIdElement($idElementStat);
  146.             $elementVisite->setUsers($idUserStat);
  147.             $elementVisite->setVisitorIdentity($visitorIdentityStat);
  148.         }
  149.         else
  150.         {
  151.             if(($session != null) and ($idUserConnect <= 0))
  152.             { 
  153.                 $visitorIdentityStat 'INCONNU';
  154.                 $elementVisite->setPage($pageStat);
  155.                 $elementVisite->setElement($nameElementStat);
  156.                 $elementVisite->setIdElement($idElementStat);
  157.                 $elementVisite->setUsers($idUserStat);
  158.                 $elementVisite->setVisitorIdentity($visitorIdentityStat);
  159.             }
  160.         }
  161.         $em $mr->getManager();
  162.         $em->persist($elementVisite);
  163.         $em->flush();
  164.         ///////////////////
  165.         $allStatistiques $statistiquesRepository->findBy(['page' => 'DETAIL_PRODUCT']);
  166.         $productProperties $mr->getRepository(Products::class)->findOneBy(['id' => $id]);
  167.         // return $this->render('products/details.html.twig', compact('product'));
  168.         return $this->render('products/details.html.twig', [
  169.              'productProperties' => $productProperties,
  170.              'allStatistiques' => $allStatistiques             
  171.         ]);
  172.     }
  173. }