<?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,
]);
}
}