src/Controller/HomeController.php line 105

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Articles;
  4. use App\Entity\Boutiques;
  5. use App\Entity\Categories;
  6. use App\Repository\ArticlesRepository;
  7. use App\Repository\CategoriesRepository;
  8. use App\Repository\ImmeublesRepository;
  9. use App\Repository\PubImageRepository;
  10. use App\Repository\UserRepository;
  11. use App\Repository\VehiculesRepository;
  12. use App\Repository\ZoneRepository;
  13. use Knp\Component\Pager\PaginatorInterface;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. #[Route('/'name'app_home_')]
  19. class HomeController extends AbstractController
  20. {
  21.     private ArticlesRepository $articlesRepository ;
  22.     private CategoriesRepository $categoriesRepository ;
  23.     private PubImageRepository $pubImageRepository;
  24.     private ZoneRepository $zoneRepository ;
  25.     private  ImmeublesRepository $immeublesRepository ;
  26.     private VehiculesRepository $vehiculesRepository ;
  27.     private UserRepository $userRepository ;
  28.     /**
  29.      * @param ArticlesRepository $articlesRepository
  30.      * @param CategoriesRepository $categoriesRepository
  31.      * @param PubImageRepository $pubImageRepository
  32.      * @param ZoneRepository $zoneRepository
  33.      * @param ImmeublesRepository $immeublesRepository
  34.      * @param VehiculesRepository $vehiculesRepository
  35.      */
  36.     public function __construct(ArticlesRepository $articlesRepositoryCategoriesRepository $categoriesRepository
  37.     PubImageRepository $pubImageRepositoryZoneRepository $zoneRepositoryImmeublesRepository $immeublesRepository,
  38.     VehiculesRepository $vehiculesRepository,  UserRepository $userRepository )
  39.     {
  40.         $this->articlesRepository $articlesRepository;
  41.         $this->categoriesRepository $categoriesRepository;
  42.         $this->pubImageRepository $pubImageRepository;
  43.         $this->zoneRepository $zoneRepository;
  44.         $this->immeublesRepository $immeublesRepository;
  45.         $this->vehiculesRepository$vehiculesRepository;
  46.         $this->userRepository$userRepository;
  47.         
  48.     }
  49.     #[Route('/'name'index')]
  50.     public function indexRequest $requestPaginatorInterface $paginator): Response
  51.     {
  52.         $immeubles $this->immeublesRepository->findBy(["status"=> UtilsFunctions::PUBLICATION_STATUS], ["pubDate"=>"DESC"],2);
  53.         $vehicules $this->vehiculesRepository->findBy(["status"=>UtilsFunctions::PUBLICATION_STATUS], ["pubDate"=>"DESC"],2);
  54.         $varticles $this->articlesRepository->findBy(["status"=>UtilsFunctions::PUBLICATION_STATUS], ["pubDate"=>"DESC"],1); // article vip
  55.      
  56.         $donnees $this->articlesRepository->findBy(["status"=>UtilsFunctions::PUBLICATION_STATUS], ["pubDate"=>"DESC",], 1000);
  57.         $articles $paginator->paginate(
  58.             $donnees,
  59.             $request->query->getInt('page'1),20);
  60.         return $this->render('home/index.html.twig', [
  61.                 'articles' => $articles,
  62.             'immeubles'=>$immeubles,
  63.             'vehicules'=>$vehicules,
  64.             "varticles"=>$varticles
  65.         ]);
  66.     }
  67.     #[Route('boutique/{id}'name'boutique')]
  68.     public function articlesBoutiquesBoutiques $boutiquesRequest $requestPaginatorInterface $paginator):Response
  69.     {
  70.         $users $this->userRepository->findBy(['shop'=>$boutiques]);
  71.         $immeublesnull ;
  72.         $vehiculesnull ;
  73.         $articles=null;
  74.         if(count($users)>0){
  75.             $donnees $this->articlesRepository->findBy(["createdBy"=>$users], ["pubDate"=>"DESC",], 1000);
  76.             $articles $paginator->paginate(
  77.                 $donnees,
  78.                 $request->query->getInt('page'1),20);
  79.             $donneesImeubles $this->immeublesRepository->findBy(['vendeur'=>$users], ["pubDate"=>"DESC",], 1000);
  80.             $immeubles $paginator->paginate(
  81.                 $donneesImeubles,
  82.                 $request->query->getInt('page'1),15);
  83.             $donneesVehicules $this->vehiculesRepository->findBy(['vendeur'=>$users], ["pubDate"=>"DESC",], 1000);
  84.             $vehicules $paginator->paginate(
  85.                 $donneesVehicules,
  86.                 $request->query->getInt('page'1),15);
  87.             }
  88.         
  89.         return $this->render('home/boutique-home.html.twig', [
  90.             'boutique' => $boutiques,
  91.             'articles' => $articles,
  92.             'immeubles'=>$immeubles,
  93.             'vehicules'=>$vehicules,
  94.         ]);
  95.     }
  96.     #[Route('detail/{slug}'name'detail')]
  97.     public function detailArticle(ArticlesRepository $articlesRepositoryArticles $article): Response{
  98.         $articles $this->articlesRepository->findBy(["categorie"=>$article->getCategorie(), "status"=> UtilsFunctions::PUBLICATION_STATUS], ["pubDate"=>"DESC"], 36);
  99.         return $this->render('home/detail.html.twig', [
  100.             'article' => $article,
  101.             'articles'=>$articles
  102.         ]);
  103.     }
  104.     #[Route('search'name'search')]
  105.     public function searchByCategorieRequest $requestPaginatorInterface $paginator): Response
  106.     {
  107.         $donnees=[];
  108.         $searchVar null;
  109.         $searchCategorie null ;
  110.         if($request->isMethod("POST") && ($this->isCsrfTokenValid('search-Token'$request->request->get('token')))) {
  111.            $categs $request->request->get("categorie");
  112.            $search $request->request->get("search");
  113.            $searchVar $search ;
  114.            if(!empty($categs) || $categs 0){
  115.                $categorie $this->categoriesRepository->find($categs);
  116.                $searchCategorie $categorie ;
  117.                if(!empty($categorie)){
  118.                    if($categorie->getCode()==UtilsFunctions::VEHICULE_CODE || $categorie->getParent()?->getCode()==UtilsFunctions::VEHICULE_CODE ){
  119.                        return $this->redirectToRoute('app_vehiculecategorie',['slugCategorie'=>$categorie->getSlug()]);
  120.                    }elseif ($categorie->getCode() == UtilsFunctions::IMMO_CODE || $categorie->getParent()?->getCode()==UtilsFunctions::IMMO_CODE){
  121.                        return $this->redirectToRoute('app_immeublecategorie',['slugCategorie'=>$categorie->getSlug()]);
  122.                    }else{
  123.                        $donnees $this->articlesRepository->findBy(["status"=>UtilsFunctions::PUBLICATION_STATUS"categorie"=>$categorie], ["pubDate"=>"DESC",], 1000);
  124.                        if(!empty($search)){
  125.                            $donnees $this->articlesRepository->searchByCategorieAndsearch($search$categorie);
  126.                        }
  127.                    }
  128.                }
  129.            }else if(!empty($search)){
  130.                $donnees $this->articlesRepository->searchBysearch($search);
  131.            }
  132.         }
  133.         $articles $paginator->paginate(
  134.             $donnees,
  135.             $request->query->getInt('page'1),20);
  136.         return $this->render('home/search.html.twig', [
  137.             'articles' => $articles,
  138.             'searchVar'=>$searchVar,
  139.             'searchCategorie'=>$searchCategorie
  140.         ]);
  141.     }
  142.     #[Route('search/{slug}'name'search_slug_categorie')]
  143.     public function searchBySlugCategorie(  Request $request ,Categories $categoriePaginatorInterface $paginator): Response
  144.     {
  145.         $donnees=[];
  146.         $searchVar null;
  147.         $searchCategorie null ;
  148.                if(!empty($categorie)){
  149.                    if($categorie->getCode()==UtilsFunctions::VEHICULE_CODE || $categorie->getParent()?->getCode()==UtilsFunctions::VEHICULE_CODE ){
  150.                        return $this->redirectToRoute('app_vehiculecategorie',['slugCategorie'=>$categorie->getSlug()]);
  151.                    }elseif ($categorie->getCode() == UtilsFunctions::IMMO_CODE || $categorie->getParent()?->getCode()==UtilsFunctions::IMMO_CODE){
  152.                        return $this->redirectToRoute('app_immeublecategorie',['slugCategorie'=>$categorie->getSlug()]);
  153.                    }else{
  154.                        $donnees $this->articlesRepository->findBy(["status"=>UtilsFunctions::PUBLICATION_STATUS"categorie"=>$categorie], ["pubDate"=>"DESC",], 1000);
  155.                    }
  156.                }
  157.         $articles $paginator->paginate(
  158.             $donnees,
  159.             $request->query->getInt('page'1),20);
  160.         return $this->render('home/search.html.twig', [
  161.             'articles' => $articles,
  162.             'categorie'=>$categorie,
  163.             'searchCategorie'=>$searchCategorie
  164.         ]);
  165.     }
  166. }