- <?php
- namespace App\Controller;
- use App\Entity\TTraitatolTra;
- use App\Entity\TjTraitatolsynonymeTrs;
- use App\Entity\TrSynonymeSyn;
- use App\Repository\TrSynonymeRepository;
- use App\Repository\TraitatolRepository;
- use App\Form\TjTraitatolsynonymeTrsType;
- use App\Filter\Entity\SynonymeTraitSearch;
- use Knp\Component\Pager\PaginatorInterface;
- use App\Filter\Form\SynonymeTraitFilterType;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\Routing\Annotation\Route;
- use App\Repository\TjTraitatolsynonymeRepository;
- use ATOLBundle\Entity\Synonyme;
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
- /**
-  * @Route("/traitatolsynonyme")
-  */
- class TjTraitatolsynonymeTrsController extends AbstractController
- {
-     /**
-      * @Route("/", name="traitatolsynonyme_index", methods={"GET", "POST"})
-      */
-     public function index(TjTraitatolsynonymeRepository $tjTraitatolsynonymeRepository, Request $request, PaginatorInterface $paginator): Response
-     {
-         $search = new SynonymeTraitSearch();
-         $form = $this->createForm(SynonymeTraitFilterType::class, $search);
-         $form->handleRequest($request);
-         $maxItemPerPage = $request->get('maxItemPerPage');
-         if ($maxItemPerPage == "")    $maxItemPerPage = 10;
-         $entities = $tjTraitatolsynonymeRepository->findAllVisibleQuery($search);   //$traitatolRepository->findAllVisibleQuery($search);
-         $nb = count($entities);
-         $entitiesPaginated = $paginator->paginate(
-             $entities,
-             $request->query->getInt('page', 1),
-             $maxItemPerPage
-         );
-         $data = [
-             'synonymes' => $entitiesPaginated,
-             'nb' => $nb,
-             'maxItemPerPage' => $maxItemPerPage,
-             'form' => $form->createView()
-         ];
-         $rep = $this->render("tj_traitatolsynonyme_trs/index.html.twig", $data);
-         return $rep;
-     }
-     /**
-      * @Route("/new/{atolId}", name="traitatolsynonyme_new", methods={"GET","POST"})
-      * @ParamConverter("TjTraitatolsynonymeTrs", options={"id"="atolId"})
-      */
-     public function new(Request $request, TrSynonymeRepository $synonymeRepository, TraitatolRepository $traitAtolRepository): Response
-     {
-         $synonymeAtol = new TjTraitatolsynonymeTrs();
-         $traitId = $request->attributes->get('atolId');
-         $trait = $traitAtolRepository->findOneBy(['traitId' => $traitId]);
-         $synonymeAtol->setSynonymeTrait($trait);
-         $form = $this->createForm(TjTraitatolsynonymeTrsType::class, $synonymeAtol);
-         $form->handleRequest($request);
-         if ($form->isSubmitted()) {
-             $entityManager = $this->getDoctrine()->getManager();
-             $synonyme = $synonymeRepository->find($request->request->get('tj_traitatolsynonyme_trs')["synonyme"]);
-             if ($synonyme == null) {
-                 $synonyme = new TrSynonymeSyn();
-                 $synonyme->setSynonymeNom($request->request->get('tj_traitatolsynonyme_trs')["synonyme"]);
-                 $synonyme->setSynonymeNomEn($request->request->get('tj_traitatolsynonyme_trs')["synonyme"]);
-                 $entityManager->persist($synonyme);
-                 $entityManager->flush();
-                 $synonymeAtol->setSynonyme($synonyme);
-             }
-             $entityManager->persist($synonymeAtol);
-             $entityManager->flush();
-             if ($form->getClickedButton() === $form->get('saveAndAdd')) {
-                 return $this->redirectToRoute('traitatolsynonyme_new', ['atolId' => $synonymeAtol->getSynonymeTrait()->getTraitId()]);
-             } else return $this->redirectToRoute('traitatol_index');
-         }
-         return $this->render('tj_traitatolsynonyme_trs/new.html.twig', [
-             'synonymes' => $synonymeAtol,
-             'form' => $form->createView(),
-         ]);
-     }
-     /**
-      * @Route("/ajout", name="traitatolsynonyme_ajout", methods={"GET","POST"})
-      */
-     public function new2(Request $request, TraitatolRepository $traitAtolRepository): Response
-     {
-         $synonyme = new TjTraitatolsynonymeTrs();
-         $form = $this->createForm(TjTraitatolsynonymeTrsType::class, $synonyme);
-         $form->handleRequest($request);
-         if ($form->isSubmitted() && $form->isValid()) {
-             $entityManager = $this->getDoctrine()->getManager();
-             $entityManager->persist($synonyme);
-             $entityManager->flush();
-             return $this->redirectToRoute('traitatol_index');
-         }
-         return $this->render('tj_traitatolsynonyme_trs/new.html.twig', [
-             'tj_traitatolsynonyme_tr' => $synonyme,
-             'var' => $synonyme,
-             'form' => $form->createView(),
-         ]);
-     }
-     /**
-      * @Route("/show/{synonymeTrait}", name="traitatolsynonyme_show", methods={"GET"}, options= {"expose":"true"})
-      */
-     public function show(TjTraitatolsynonymeTrs $tjTraitatolsynonymeTr, TjTraitatolsynonymeRepository $synRep, TraitatolRepository $traitRep, string $synonymeTrait): Response
-     {
-         $entities = $synRep->findBySynonymeTrait($synonymeTrait);
-         $data = [
-             'synonymes' => $entities
-         ];
-         $rep = $this->render("tj_traitatolsynonyme_trs/show.html.twig", $data);
-         return $rep;
-     }
-     /**
-      * @Route("/{synonymeId}/edit", name="traitatolsynonyme_edit", methods={"GET","POST"}, requirements={"synonymeId":"\d+"})
-      * @ParamConverter("TjTraitatolsynonymeTrs", options={"id"="synonymeId"})
-      */
-     public function edit(Request $request, TjTraitatolsynonymeTrs $tjTraitatolsynonymeTr): Response
-     {
-         $form = $this->createForm(TjTraitatolsynonymeTrsType::class, $tjTraitatolsynonymeTr);
-         $form->handleRequest($request);
-         if ($form->isSubmitted() && $form->isValid()) {
-             $this->getDoctrine()->getManager()->flush();
-             return $this->redirectToRoute('tj_traitatolsynonyme_trs_index');
-         }
-         return $this->render('tj_traitatolsynonyme_trs/edit.html.twig', [
-             'tj_traitatolsynonyme_tr' => $tjTraitatolsynonymeTr,
-             'form' => $form->createView(),
-         ]);
-     }
-     /**
-      * @Route("/{synonymeId}", name="traitatolsynonyme_delete", methods={"POST"})
-      * @ParamConverter("TjTraitatolsynonymeTrs", options={"id"="synonymeId"})
-      */
-     public function delete(Request $request, TjTraitatolsynonymeTrs $tjTraitatolsynonymeTr): Response
-     {
-         if ($this->isCsrfTokenValid('delete' . $tjTraitatolsynonymeTr->getSynonymeId(), $request->request->get('_token'))) {
-             $entityManager = $this->getDoctrine()->getManager();
-             $entityManager->remove($tjTraitatolsynonymeTr);
-             $entityManager->flush();
-         }
-         return $this->redirectToRoute('traitatolsynonyme_index');
-     }
-     /**
-      * @Route("/delete/{id}", name="traitatolsynonyme_delete_by_get", methods={"GET"})
-      */
-     public function deleteByGet(Request $request, TjTraitatolsynonymeTrs $tjTraitatolsynonymeTr): Response
-     {
-         $idAtol = $tjTraitatolsynonymeTr->getSynonymeTrait()->getTraitId();
-         $entityManager = $this->getDoctrine()->getManager();
-         $entityManager->remove($tjTraitatolsynonymeTr);
-         $entityManager->flush();
-         return $this->redirectToRoute('traitatolsynonyme_new', [
-             'atolId' => $idAtol,
-         ]);
-     }
- }
-