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(['created_by'=>$users"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.         $baseDir $this->getParameter('kernel.project_dir') . '/public/uploads/articles/';
  112.         $imagePath $baseDir $article->getCode() . '/' $article->getImageprincipale();
  113.         if ($article->getImageprincipale() && file_exists($imagePath)) {
  114.             $imageToUse 'uploads/articles/' $article->getCode() . '/' $article->getImageprincipale();
  115.         } else {
  116.             $imageToUse 'assets/imgs/deals/default.jpg'// fallback
  117.         }
  118.         return $this->render('home/detail.html.twig', [
  119.             'article' => $article,
  120.             'articles'=>$articles,
  121.             'boutique'=>$boutique,
  122.             'imageToUse' => $imageToUse,
  123.         ]);
  124.     }
  125.     #[Route('search'name'search')]
  126.     public function searchByCategorieRequest $requestPaginatorInterface $paginator): Response
  127.     {
  128.         $donnees=[];
  129.         $searchVar null;
  130.         $searchCategorie null ;
  131.         if($request->isMethod("POST") && ($this->isCsrfTokenValid('search-Token'$request->request->get('token')))) {
  132.            $categs $request->request->get("categorie");
  133.            $search $request->request->get("search");
  134.            $searchVar $search ;
  135.            if(!empty($categs) || $categs 0){
  136.                $categorie $this->categoriesRepository->find($categs);
  137.                $searchCategorie $categorie ;
  138.                if(!empty($categorie)){
  139.                    if($categorie->getCode()==UtilsFunctions::VEHICULE_CODE || $categorie->getParent()?->getCode()==UtilsFunctions::VEHICULE_CODE ){
  140.                        return $this->redirectToRoute('app_vehiculecategorie',['slugCategorie'=>$categorie->getSlug()]);
  141.                    }elseif ($categorie->getCode() == UtilsFunctions::IMMO_CODE || $categorie->getParent()?->getCode()==UtilsFunctions::IMMO_CODE){
  142.                        return $this->redirectToRoute('app_immeublecategorie',['slugCategorie'=>$categorie->getSlug()]);
  143.                    }else{
  144.                        $donnees $this->articlesRepository->findBy(["status"=>UtilsFunctions::PUBLICATION_STATUS"categorie"=>$categorie], ["pubDate"=>"DESC",], 1000);
  145.                        if(!empty($search)){
  146.                            $donnees $this->articlesRepository->searchByCategorieAndsearch($search$categorie);
  147.                        }
  148.                    }
  149.                }
  150.            }else if(!empty($search)){
  151.                $donnees $this->articlesRepository->searchBysearch($search);
  152.            }
  153.         }
  154.         $articles $paginator->paginate(
  155.             $donnees,
  156.             $request->query->getInt('page'1),20);
  157.         return $this->render('home/search.html.twig', [
  158.             'articles' => $articles,
  159.             'searchVar'=>$searchVar,
  160.             'searchCategorie'=>$searchCategorie
  161.         ]);
  162.     }
  163.     #[Route('search/{slug}'name'search_slug_categorie')]
  164.     public function searchBySlugCategorie(  Request $request ,Categories $categoriePaginatorInterface $paginator): Response
  165.     {
  166.         $donnees=[];
  167.         $searchVar null;
  168.         $searchCategorie null ;
  169.                if(!empty($categorie)){
  170.                    if($categorie->getCode()==UtilsFunctions::VEHICULE_CODE || $categorie->getParent()?->getCode()==UtilsFunctions::VEHICULE_CODE ){
  171.                        return $this->redirectToRoute('app_vehiculecategorie',['slugCategorie'=>$categorie->getSlug()]);
  172.                    }elseif ($categorie->getCode() == UtilsFunctions::IMMO_CODE || $categorie->getParent()?->getCode()==UtilsFunctions::IMMO_CODE){
  173.                        return $this->redirectToRoute('app_immeublecategorie',['slugCategorie'=>$categorie->getSlug()]);
  174.                    }else{
  175.                        $donnees $this->articlesRepository->findBy(["status"=>UtilsFunctions::PUBLICATION_STATUS"categorie"=>$categorie], ["pubDate"=>"DESC",], 1000);
  176.                    }
  177.                }
  178.         $articles $paginator->paginate(
  179.             $donnees,
  180.             $request->query->getInt('page'1),20);
  181.         return $this->render('home/search.html.twig', [
  182.             'articles' => $articles,
  183.             'categorie'=>$categorie,
  184.             'searchCategorie'=>$searchCategorie
  185.         ]);
  186.     }
  187. }