src/Controller/MainController.php line 161
<?phpnamespace App\Controller;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Knp\Component\Pager\PaginatorInterface;use Symfony\Component\HttpFoundation\Request;use App\Repository\BusinessInformationRepository;use App\Repository\BannerRepository;use App\Repository\LogoPARepository;use App\Repository\BlogRepository;use App\Repository\BusinessCategoriesRepository;use App\Repository\BusinessCategoryGroupRepository;use App\Repository\CategoryBannerVRepository;use App\Entity\Company;use App\Repository\CompanyRepository;//use App\Repository\CategoryBannerVRepository;use App\Form\CompanyType;use Doctrine\Persistence\ManagerRegistry as PersistenceManagerRegistry;//use Doctrine\ORM\EntityManagerInterface;use Doctrine\ORM\EntityManagerInterface;use App\Service\SeoBusinessGenerator;class MainController extends AbstractController{#[Route('/', name: 'app_main')]public function index(Request $request, BusinessInformationRepository $repository, BlogRepository $blog_repository, LogoPARepository $logo_repository, BannerRepository $banner_repository, PaginatorInterface $paginator): Response{// Récupération des statistiques dynamiques$totalBusinesses = $repository->countAllBusinesses();$totalWilayas = $repository->countDistinctWilayas();// 🌟 Récupération du chiffre exact depuis le fichier .env$googleClicks = $_ENV['MARKETING_GOOGLE_CLICKS'] ?? 18133;//show banner$banner= $banner_repository->findBy( ['active' => true]);//client a la une$business=$paginator->paginate($repository->findBy(['alaune' => true]),$request->query->getInt('page', 1),20);//Logo Page d'Accueil$logo= $logo_repository->findBy( ['active' => true]);//Blog Page d'Accueil$blog= $blog_repository->findBy( ['active' => true]);return $this->render('main/index.html.twig',['total_businesses' => $totalBusinesses,'total_wilayas' => $totalWilayas,'google_clicks' => $googleClicks,"business"=>$business,"banners"=>$banner,"logos"=>$logo,"blogs"=>$blog,]);}// Fonction ajouter entreprise#[Route('/ajouter', name: 'ajouter')]public function ajouter(Request $request, PersistenceManagerRegistry $doctrine) :Response{$em = $doctrine->getManager();$company=new Company();//$email=$company->getEmail();$form = $this->createForm(CompanyType::class, $company);$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()){$em->persist($company);$em->flush();// send mail$this->addFlash('success', 'Ajout avec succes');return $this->redirectToRoute('ajouter');}return $this->render('main/ajouter_entreprise.html.twig',['company'=>$company,'form'=>$form->createView()]);}//SHOW CUSTMER DETAIL#[Route('/c/{id}-{slug}', name: 'customer.show')]public function show($id, $slug,Request $request, BusinessInformationRepository $repository, SeoBusinessGenerator $seo) :Response{$business = $repository->find($id);// dd($business);$seoContent = $seo->generateSeoContent($business);return $this->render('main/showcustomerdetail.html.twig',['business' => $business ,'seoContent' => $seoContent,]);//dd($seoContent);}//Recherche par secteur d'activité// Recherche par secteur d'activité#[Route('/s/{id}-{slug}', name: 'customer.secteur')]public function SecteurActivity(PaginatorInterface $paginator,Request $request,$id,$slug,BusinessCategoriesRepository $businesscat,BusinessCategoryGroupRepository $secteur,CategoryBannerVRepository $banner_repository): Response {$sec = $secteur->find($id);$banner = $banner_repository->find($id);$group_id = $id;// 1. Récupérer toutes les rubriques liées à ce secteur pour la grille interactive// On les trie par nom de A à Z$rubriques = $businesscat->findBy(['group_id' => $group_id],['business_category_name' => 'ASC'] // Ajustez 'nom' selon le nom réel de votre colonne dans l'entité BusinessCategories);// 2. Votre pagination actuelle (Liste des clients du secteur)$business = $paginator->paginate($businesscat->findBy(['group_id' => $group_id],['statut' => 'DESC']),$request->query->getInt('page', 1),45);// 3. Envoi des variables au template existantreturn $this->render('main/showcustomersecteur.html.twig', ["business" => $business,"banner" => $banner,"secteur" => $sec,"rubriques" => $rubriques, // Nouvelle variable passée à Twig]);}// Liste client de la rubriques#[Route('/detail/{id}-{slug}', name: 'customer.detail.rubrique') ]public function BusinessDetailRubrique(PaginatorInterface $paginator, Request $request, $id, $slug, BusinessInformationRepository $repository, BusinessCategoriesRepository $repository2, CategoryBannerVRepository $banner_v ) :Response{//$sec_id=$idsec;$id_sec = $request->query->get('idsec'); // idsec Récupère la valeur après le '?'// dd($id_sec); // Ne sera plus null// dd($sec_id);$category=$id;$category = (string)$id;$category_name=$slug;//show seo$seo= $repository2->findBy( ['id' => $id]);$banner_rub= $banner_v->findBy( ['businessCategoryGroup' => $id_sec]);//dd($banner_rub);// $article=$seo;//$banner=$bv;// dd($seo);// echo $category;// $business = $this->repository->findCategory($category);// $repository = $this->getDoctrine()->getRepository(BusinessInformation::class);/* $business=$paginator->paginate($repository->findBy(['categories' => $category] ),$request->query->getInt('page', 1),9);*/$business=$paginator->paginate($repository->findCategory($category),$request->query->getInt('page', 1),45);// dump($business);return $this->render('main/showcustomers.html.twig',["business"=>$business,"category_name" =>$category_name,"article" =>$seo,"bannerv"=>$banner_rub] );// return new Response( '<html><body>Lucky number: '.$category.'</body></html>' );}//Static Routes#[Route('/qui-sommes-nous', name: 'app_about')]public function about(): Response{return $this->render('main/about.html.twig');}#[Route('/nos-offres', name: 'app_nos_offres')]public function offre(): Response{return $this->render('main/offre.html.twig');}#[Route('/appel-offres', name: 'app_appel_offres')]public function appel(): Response{return $this->render('main/appel_offre.html.twig');}#[Route('/tout-secteur', name: 'app_secteur')]public function secteur(): Response{return $this->render('main/secteurs.html.twig');}#[Route('/blogs', name: 'app_blogs')]public function blog(BlogRepository $blog_repository): Response{$blog=$blog_repository->findAll();return $this->render('main/blogs.html.twig',["blogs"=>$blog]);}}