EtablissementController.php 7,44 ko
Newer Older
use App\Repository\CommentaireRepository;
use App\Repository\EtablissementRepository;
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;
use App\Entity\Etablissement;
use App\Form\EtablissementType;
use Doctrine\ORM\EntityManagerInterface;

final class EtablissementController extends AbstractController
{
    #[Route('/etablissements', name: 'app_etablissements')]
Glody Kutumbakana's avatar
Glody Kutumbakana a validé
    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(Request $request, PaginatorInterface $paginator, EtablissementRepository $etablissementRepository): Response
        $code_academie = $request->get('code_academie');
        $academie = $etablissementRepository->findAcademieByCode($code_academie);
        $queryBuilder = $etablissementRepository->queryFindOrderedByCategorie(['code_academie' => $code_academie]);
        
        $pagination = $paginator->paginate(
            $queryBuilder,
            $request->query->getInt('page', 1),
            10
        );
        return $this->render('etablissement/liste.html.twig', [
            'pagination' => $pagination,
    #[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', [
    #[Route('/etablissements/commune/{code_commune}', name: 'app_commune')]
    public function commune(Request $request, PaginatorInterface $paginator, EtablissementRepository $etablissementRepository): Response
        $code_commune = $request->get('code_commune');
        $commune = $etablissementRepository->findCommuneByCode($code_commune);
        $queryBuilder = $etablissementRepository->queryFindOrderedByCategorie(['code_commune' => $code_commune]);

        $pagination = $paginator->paginate(
            $queryBuilder,
            $request->query->getInt('page', 1),
            10
        );

        return $this->render('etablissement/liste.html.twig', [
            'pagination' => $pagination,
            'filtre' => "Commune : $commune "
    #[Route('/etablissements/{id<\d+>}', 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,
    ]);
}


    #[Route('/etablissements/new', name: 'etablissement_new', methods: ['GET', 'POST'])]
    public function new(Request $request, EntityManagerInterface $entityManager): Response
    {
        $etablissement = new Etablissement();
        $form = $this->createForm(EtablissementType::class, $etablissement);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            $entityManager->persist($etablissement);
            $entityManager->flush();

            return $this->redirectToRoute('app_etablissements'); // Redirection vers la liste des établissements
        }

        return $this->render('etablissement/new.html.twig', [
            'form' => $form->createView(),
        ]);
    }

    #[Route('/etablissements/{id}/edit', name: 'etablissement_edit', methods: ['GET', 'POST'])]
    public function edit(Request $request, EntityManagerInterface $entityManager, EtablissementRepository $etablissementRepository, int $id): Response
    {
        $etablissement = $etablissementRepository->find($id);
        $form = $this->createForm(EtablissementType::class, $etablissement);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            $entityManager->flush();

            return $this->redirectToRoute('app_etablissements'); // Redirection vers la liste des établissements
        }

        return $this->render('etablissement/edit.html.twig', [
        ]);
    }

    #[Route('/etablissements/{id}/confirm_delete', name: 'etablissement_confirm_delete', methods: ['GET' , 'POST'])]
    public function comfirm_delete(Request $request, EntityManagerInterface $entityManager, EtablissementRepository $etablissementRepository, int $id): Response
    {
    
        $etablissement = $etablissementRepository->find($id);

        if (!$etablissement) {
            throw $this->createNotFoundException('Etablissement n\'exite pas.');
        }
    
        return $this->render('etablissement/remove.html.twig', [
            'etablissement' => $etablissement,
        ]);
    }

    #[Route('/etablissements/{id}/delete', name: 'etablissement_delete', methods: ['GET' , 'POST'])]
    public function delete(Request $request, EntityManagerInterface $entityManagerInterface , EtablissementRepository $etablissementRepository , int $id): Response
    {
        if($this->isCsrfTokenValid('delete'.$id, $request->request->get('_token'))){
            $etablissement = $etablissementRepository->find($id);
            $entityManagerInterface->remove($etablissement);
            $entityManagerInterface->flush();
        }
        return $this->redirectToRoute('app_etablissements');    
    }