src/Controller/HomeController.php line 76

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