src/Controller/HomeController.php line 76
<?phpnamespace App\Controller;use App\Entity\Articles;use App\Entity\Boutiques;use App\Entity\Categories;use App\Repository\ArticlesRepository;use App\Repository\CategoriesRepository;use App\Repository\ImmeublesRepository;use App\Repository\PubImageRepository;use App\Repository\ServicesRepository;use App\Repository\UserRepository;use App\Repository\VehiculesRepository;use App\Repository\ZoneRepository;use Knp\Component\Pager\PaginatorInterface;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;#[Route('/', name: 'app_home_')]class HomeController extends AbstractController{private ArticlesRepository $articlesRepository ;private CategoriesRepository $categoriesRepository ;private PubImageRepository $pubImageRepository;private ZoneRepository $zoneRepository ;private ImmeublesRepository $immeublesRepository ;private VehiculesRepository $vehiculesRepository ;private UserRepository $userRepository ;private ServicesRepository $servicesRepository;/*** @param ArticlesRepository $articlesRepository* @param CategoriesRepository $categoriesRepository* @param PubImageRepository $pubImageRepository* @param ZoneRepository $zoneRepository* @param ImmeublesRepository $immeublesRepository* @param VehiculesRepository $vehiculesRepository* @param UserRepository $userRepository* @param ServicesRepository $servicesRepository*/public function __construct(ArticlesRepository $articlesRepository, CategoriesRepository $categoriesRepository,PubImageRepository $pubImageRepository, ZoneRepository $zoneRepository, ImmeublesRepository $immeublesRepository,VehiculesRepository $vehiculesRepository, UserRepository $userRepository, ServicesRepository $servicesRepository){$this->articlesRepository = $articlesRepository;$this->categoriesRepository = $categoriesRepository;$this->pubImageRepository = $pubImageRepository;$this->zoneRepository = $zoneRepository;$this->immeublesRepository = $immeublesRepository;$this->vehiculesRepository= $vehiculesRepository;$this->userRepository= $userRepository;$this->servicesRepository = $servicesRepository;}#[Route('/', name: 'index')]public function index( Request $request, PaginatorInterface $paginator): Response{$immeubles = $this->immeublesRepository->findBy(["status"=> UtilsFunctions::PUBLICATION_STATUS], ["pubDate"=>"DESC"],2);$vehicules = $this->vehiculesRepository->findBy(["status"=>UtilsFunctions::PUBLICATION_STATUS], ["pubDate"=>"DESC"],2);$varticles = $this->articlesRepository->findBy(["status"=>UtilsFunctions::PUBLICATION_STATUS], ["pubDate"=>"DESC"],1); // article vip$donnees = $this->articlesRepository->findBy(["status"=>UtilsFunctions::PUBLICATION_STATUS], ["pubDate"=>"DESC",], 1000);$articles = $paginator->paginate($donnees,$request->query->getInt('page', 1),20);return $this->render('home/index.html.twig', ['articles' => $articles,'immeubles'=>$immeubles,'vehicules'=>$vehicules,"varticles"=>$varticles]);}#[Route('boutique/{id}', name: 'boutique')]public function articlesBoutiques( Boutiques $boutiques, Request $request, PaginatorInterface $paginator):Response{$users = $this->userRepository->findBy(['shop'=>$boutiques]);$immeubles= null ;$vehicules= null ;$articles=null;$services = null;if(count($users)>0){$donnees = $this->articlesRepository->findBy(["createdBy"=>$users], ["pubDate"=>"DESC",], 1000);$articles = $paginator->paginate($donnees,$request->query->getInt('page', 1),10);$donneesImeubles = $this->immeublesRepository->findBy(['vendeur'=>$users], ["pubDate"=>"DESC",], 1000);$immeubles = $paginator->paginate($donneesImeubles,$request->query->getInt('page', 1),10);$donneesVehicules = $this->vehiculesRepository->findBy(['vendeur'=>$users], ["pubDate"=>"DESC",], 1000);$vehicules = $paginator->paginate($donneesVehicules,$request->query->getInt('page', 1),10);$donneesServices = $this->servicesRepository->findBy(['created_by'=>$users, "status"=> UtilsFunctions::PUBLICATION_STATUS], ["pub_at"=>"DESC"],1000);$services = $paginator->paginate($donneesServices,$request->query->getInt('page', 1),10);}return $this->render('home/boutique-home.html.twig', ['boutique' => $boutiques,'articles' => $articles,'immeubles'=>$immeubles,'vehicules'=>$vehicules,'services'=>$services,]);}#[Route('detail/{slug}', name: 'detail')]public function detailArticle(ArticlesRepository $articlesRepository, Articles $article): Response{$articles = $this->articlesRepository->findBy(["categorie"=>$article->getCategorie(), "status"=> UtilsFunctions::PUBLICATION_STATUS], ["pubDate"=>"DESC"], 36);$boutique = $article->getCreatedBy()->getShop();$baseDir = $this->getParameter('kernel.project_dir') . '/public/uploads/articles/';$imagePath = $baseDir . $article->getCode() . '/' . $article->getImageprincipale();if ($article->getImageprincipale() && file_exists($imagePath)) {$imageToUse = 'uploads/articles/' . $article->getCode() . '/' . $article->getImageprincipale();} else {$imageToUse = 'assets/imgs/deals/default.jpg'; // fallback}return $this->render('home/detail.html.twig', ['article' => $article,'articles'=>$articles,'boutique'=>$boutique,'imageToUse' => $imageToUse,]);}#[Route('search', name: 'search')]public function searchByCategorie( Request $request, PaginatorInterface $paginator): Response{$donnees=[];$searchVar = null;$searchCategorie = null ;if($request->isMethod("POST") && ($this->isCsrfTokenValid('search-Token', $request->request->get('token')))) {$categs = $request->request->get("categorie");$search = $request->request->get("search");$searchVar = $search ;if(!empty($categs) || $categs > 0){$categorie = $this->categoriesRepository->find($categs);$searchCategorie = $categorie ;if(!empty($categorie)){if($categorie->getCode()==UtilsFunctions::VEHICULE_CODE || $categorie->getParent()?->getCode()==UtilsFunctions::VEHICULE_CODE ){return $this->redirectToRoute('app_vehiculecategorie',['slugCategorie'=>$categorie->getSlug()]);}elseif ($categorie->getCode() == UtilsFunctions::IMMO_CODE || $categorie->getParent()?->getCode()==UtilsFunctions::IMMO_CODE){return $this->redirectToRoute('app_immeublecategorie',['slugCategorie'=>$categorie->getSlug()]);}else{$donnees = $this->articlesRepository->findBy(["status"=>UtilsFunctions::PUBLICATION_STATUS, "categorie"=>$categorie], ["pubDate"=>"DESC",], 1000);if(!empty($search)){$donnees = $this->articlesRepository->searchByCategorieAndsearch($search, $categorie);}}}}else if(!empty($search)){$donnees = $this->articlesRepository->searchBysearch($search);}}$articles = $paginator->paginate($donnees,$request->query->getInt('page', 1),20);return $this->render('home/search.html.twig', ['articles' => $articles,'searchVar'=>$searchVar,'searchCategorie'=>$searchCategorie]);}#[Route('search/{slug}', name: 'search_slug_categorie')]public function searchBySlugCategorie( Request $request ,Categories $categorie, PaginatorInterface $paginator): Response{$donnees=[];$searchVar = null;$searchCategorie = null ;if(!empty($categorie)){if($categorie->getCode()==UtilsFunctions::VEHICULE_CODE || $categorie->getParent()?->getCode()==UtilsFunctions::VEHICULE_CODE ){return $this->redirectToRoute('app_vehiculecategorie',['slugCategorie'=>$categorie->getSlug()]);}elseif ($categorie->getCode() == UtilsFunctions::IMMO_CODE || $categorie->getParent()?->getCode()==UtilsFunctions::IMMO_CODE){return $this->redirectToRoute('app_immeublecategorie',['slugCategorie'=>$categorie->getSlug()]);}else{$donnees = $this->articlesRepository->findBy(["status"=>UtilsFunctions::PUBLICATION_STATUS, "categorie"=>$categorie], ["pubDate"=>"DESC",], 1000);}}$articles = $paginator->paginate($donnees,$request->query->getInt('page', 1),20);return $this->render('home/search.html.twig', ['articles' => $articles,'categorie'=>$categorie,'searchCategorie'=>$searchCategorie]);}}