EtablissementController.php 4,64 ko
Newer Older
use App\Repository\CommentaireRepository;
use App\Repository\EtablissementRepository;
Glody Kutumbakana's avatar
Glody Kutumbakana a validé
use Doctrine\ORM\Tools\Pagination\Paginator;
Glody Kutumbakana's avatar
Glody Kutumbakana a validé
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
Glody Kutumbakana's avatar
Glody Kutumbakana a validé
use Knp\Component\Pager\PaginatorInterface;

final class EtablissementController extends AbstractController
{
    #[Route('/etablissements', name: 'app_etablissements')]
Glody Kutumbakana's avatar
Glody Kutumbakana a validé
    // public function index(EtablissementRepository $etablissementRepository): Response
    // {
    //     $etablissements = $etablissementRepository->findAll();

    //     return $this->render('etablissement/index.html.twig', [
    //         'etablissements' => $etablissements,
    //         'filtre' => 'Tous les établissements'
    //     ]);
    // }

    public function index(Request $request, PaginatorInterface $paginator, EtablissementRepository $etablissementRepository): Response
        $queryBuilder = $etablissementRepository->queryFindOrderedByName();
Glody Kutumbakana's avatar
Glody Kutumbakana a validé
        
        $pagination = $paginator->paginate(
            $queryBuilder,
            $request->query->getInt('page', 1),
            10
        );
        return $this->render('etablissement/index.html.twig', [
Glody Kutumbakana's avatar
Glody Kutumbakana a validé
            'pagination' => $pagination,
            'filtre' => 'Tous les établissements'
    #[Route('/etablissements/departement/{code_departement}', name: 'app_departement')]
    public function departement(Request $request, PaginatorInterface $paginator, EtablissementRepository $etablissementRepository): Response
        $code_departement = $request->get('code_departement');
        $departement = $etablissementRepository->findDepartementByCode($code_departement);
        $queryBuilder = $etablissementRepository->queryFindOrderedByCategorie(['code_departement' => $code_departement]);
        
        $pagination = $paginator->paginate(
            $queryBuilder,
            $request->query->getInt('page', 1),
            10
        );
        return $this->render('etablissement/liste.html.twig', [
            'pagination' => $pagination,
            'filtre' => "Département : $departement "
    #[Route('/etablissements/academie/{code_academie}', name: 'app_academie')]
    public function academie(EtablissementRepository $etablissementRepository, string $code_academie): Response
        $etablissements = $etablissementRepository->findBy(['code_academie' => $code_academie], ['nom' => 'ASC']);
        $academie = $etablissements[array_key_first($etablissements)] -> getAcademie();
        return $this->render('etablissement/liste.html.twig', [
            'etablissements' => $etablissements,
    #[Route('/etablissements/region/{code_region}', name: 'app_region')]
    public function region(Request $request, PaginatorInterface $paginator, EtablissementRepository $etablissementRepository): Response
        $code_region = $request->get('code_region');
        $region = $etablissementRepository->findRegionByCode($code_region);
        $queryBuilder = $etablissementRepository->queryFindOrderedByCategorie(['code_region' => $code_region]);
        
        $pagination = $paginator->paginate(
            $queryBuilder,
            $request->query->getInt('page', 1),
            10
        );
        return $this->render('etablissement/liste.html.twig', [
            'pagination' => $pagination,
            'filtre' => "Département : $region "
    #[Route('/etablissements/commune/{code_commune}', name: 'app_commune')]
    public function commune(EtablissementRepository $etablissementRepository, string $code_commune): Response
        $etablissements = $etablissementRepository->findBy(['code_commune' => $code_commune]);
        $commune = $etablissements[array_key_first($etablissements)] -> getCommune();
        return $this->render('etablissement/liste.html.twig', [
            'filtre' => "Commune : $commune",
        ]);
    }

    #[Route('/etablissements/{id}', name: 'app_etablissement')]
    public function show(EtablissementRepository $etablissementRepository,CommentaireRepository $commentaireRepository , int $id): Response
    {
        $etablissement = $etablissementRepository->find($id);
        $commentaires = $commentaireRepository->findBy(['etablissement' => $id]);
        return $this->render('etablissement/show.html.twig', [
            'etablissement' => $etablissement,
            'commentaires' => $commentaires,