src/Controller/TTraitatolTraController.php line 186

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\TTraitatolTra;
  4. use App\Form\TTraitatolTraType;
  5. use App\Entity\TrEspecevaleurEsv;
  6. use App\Filter\Entity\traitSearch;
  7. use App\Form\TTraitatolTraTypeEdit;
  8. use App\Entity\TjTraitatolespeceTre;
  9. use App\Filter\Form\traitFilterType;
  10. use App\Entity\TjTraitatolsynonymeTrs;
  11. use App\Repository\TrEspeceRepository;
  12. use App\Repository\TrSourceRepository;
  13. use App\Repository\TraitatolRepository;
  14. use App\Form\TjTraitatolsynonymeTrsType;
  15. use Knp\Component\Pager\PaginatorInterface;
  16. use App\Repository\TrEspecevaleurRepository;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use App\Repository\TjTraitatolespeceRepository;
  20. use Symfony\Component\Routing\Annotation\Route;
  21. use App\Repository\TjTraitatolsynonymeRepository;
  22. use Symfony\Component\HttpFoundation\JsonResponse;
  23. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Entity;
  24. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  25. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  26. /**
  27.  * @Route("/traitatol")
  28.  */
  29. class TTraitatolTraController extends AbstractController
  30. {
  31.     /**
  32.      * @Route("/", name="traitatol_index", methods={"GET", "POST"})
  33.      */
  34.     public function index(TraitatolRepository $traitatolRepository,  Request $requestPaginatorInterface $paginator): Response
  35.     {
  36.         $search = new traitSearch();
  37.         $form $this->createForm(traitFilterType::class, $search);
  38.         $form->handleRequest($request);
  39.         $maxItemPerPage $request->get('maxItemPerPage');
  40.         if ($maxItemPerPage == "")    $maxItemPerPage 10;
  41.         $entities $traitatolRepository->findAllVisibleQuery($search);
  42.         $nb count($entities);
  43.         $entitiesPaginated $paginator->paginate(
  44.             $entities,
  45.             $request->query->getInt('page'1),
  46.             $maxItemPerPage
  47.         );
  48.         $data = [
  49.             'traits' => $entitiesPaginated,
  50.             'nb' => $nb,
  51.             'maxItemPerPage' => $maxItemPerPage,
  52.             'form' => $form->createView()
  53.         ];
  54.         $rep $this->render("t_traitatol_tra/index.html.twig"$data);
  55.         return $rep;
  56.     }
  57.     //création d'un trait atol
  58.     /**
  59.      * @Route("/new", name="traitatol_new", methods={"GET","POST"})
  60.      */
  61.     public function new(Request $requestTjTraitatolespeceRepository $traitEspeceRepositoryTjTraitatolespeceRepository $especeRepositoryTrEspecevaleurRepository $especeValeurRepTrSourceRepository $sourceRepository): Response
  62.     {
  63.         $traitatol = new TTraitatolTra();
  64.         $source $sourceRepository->findOneBySourceLibelle('INRAE');
  65.         $traitatol->setSource($source);
  66.         $form $this->createForm(TTraitatolTraType::class, $traitatol);
  67.         $especes $especeRepository->findAllByTypeEspece();
  68.         $form->handleRequest($request);
  69.         $em $this->getDoctrine()->getManager();
  70.         if ($form->isSubmitted() && $form->isValid()) {
  71.             foreach ($especes as $espece) {
  72.                 $idEspece $espece->getEspeceId();
  73.                 if (isset($_POST["espece-" $idEspece])) {
  74.                     $valeur $_POST["espece-" $idEspece];
  75.                     $especeValeur $especeValeurRep->findOneBy(array("valeurLibelle" => $valeur));
  76.                     $traitATOLEspeces $traitEspeceRepository->findBy(array("espece" => $espece"especeTrait" => $traitatol));
  77.                     if (count($traitATOLEspeces) > 0) {
  78.                         foreach ($traitATOLEspeces as $traitATOLEspece) {
  79.                             $em->remove($traitATOLEspece);
  80.                             $em->flush();
  81.                         }
  82.                     }
  83.                     $traitATOLEspece = new TjTraitatolespeceTre();
  84.                     $traitATOLEspece->setEspeceValeur($especeValeur);
  85.                     $traitATOLEspece->setEspece($espece);
  86.                     $traitATOLEspece->setEspeceTrait($traitatol);
  87.                     $em->persist($traitATOLEspece);
  88.                 }
  89.             }
  90.             $em->persist($traitatol);
  91.             $em->flush();
  92.             //redirection route selon bouton cliqué
  93.             if ($form->getClickedButton() === $form->get('saveAndAdd')) {
  94.                 return $this->redirectToRoute('traitatolsynonyme_new', ['atolId' => $traitatol->getTraitId()]);
  95.             } elseif ($form->getClickedButton() === $form->get('saveAndSee')) {
  96.                 return $this->redirectToRoute('traitatol_index');
  97.             }
  98.         }
  99.         return $this->render('t_traitatol_tra/new.html.twig', [
  100.             'traitatol' => $traitatol,
  101.             'especes' => $especes,
  102.             'form' => $form->createView()
  103.         ]);
  104.     }
  105.     //ajout d'un trait fils
  106.     /**
  107.      * @Route("/ajouter/{atolId}", name="traitatol_new2", methods={"GET","POST"})
  108.      * @Entity("TTraitatolTra", expr="repository.find(atolId)")
  109.      * @ParamConverter("TTraitatolTra", options={"id"="atolId"})
  110.      */
  111.     public function new2(Request $request$atolId nullTraitatolRepository $traitatolRepositoryTjTraitatolespeceRepository $especeRepositoryTrEspecevaleurRepository $especeValeurRepTrSourceRepository $sourceRepositoryTjTraitatolespeceRepository $traitEspeceRepository): Response
  112.     {
  113.         $traitatol = new TTraitatolTra();
  114.         $em $this->getDoctrine()->getManager();
  115.         $atolId $request->attributes->get('atolId');
  116.         $traitId $traitatolRepository->getTraitId($atolId);
  117.         $entityATOL $traitatolRepository->find($traitId->getTraitId());
  118.         $traitatol->addParent($entityATOL);
  119.         $source $sourceRepository->findOneBySourceLibelle('INRAE');
  120.         $traitatol->setSource($source);
  121.         $especes $especeRepository->findAllByTypeEspece();
  122.         $form $this->createForm(TTraitatolTraType::class, $traitatol);;
  123.         $form->handleRequest($request);
  124.         if ($form->isSubmitted() && $form->isValid()) {
  125.             foreach ($especes as $espece) {
  126.                 $idEspece $espece->getEspeceId();
  127.                 if (isset($_POST["espece-" $idEspece])) {
  128.                     $valeur $_POST["espece-" $idEspece];
  129.                     $especeValeur $especeValeurRep->findOneBy(array("valeurLibelle" => $valeur));
  130.                     $traitATOLEspeces $traitEspeceRepository->findBy(array("espece" => $espece"especeTrait" => $traitatol));
  131.                     if (count($traitATOLEspeces) > 0) {
  132.                         foreach ($traitATOLEspeces as $traitATOLEspece) {
  133.                             $em->remove($traitATOLEspece);
  134.                             $em->flush();
  135.                         }
  136.                     }
  137.                     $traitATOLEspece = new TjTraitatolespeceTre();
  138.                     $traitATOLEspece->setEspeceValeur($especeValeur);
  139.                     $traitATOLEspece->setEspece($espece);
  140.                     $traitATOLEspece->setEspeceTrait($traitatol);
  141.                     $em->persist($traitATOLEspece);
  142.                 }
  143.             }
  144.             $em->persist($traitatol);
  145.             $em->flush();
  146.             if ($form->getClickedButton() === $form->get('saveAndAdd')) {
  147.                 return $this->redirectToRoute('traitatolsynonyme_new', ['atolId' => $traitatol->getTraitId()]);
  148.             } elseif ($form->getClickedButton() === $form->get('saveAndSee')) {
  149.                 return $this->redirectToRoute('traitatol_index');
  150.             }
  151.         }
  152.         return $this->render('t_traitatol_tra/new.html.twig', [
  153.             'entity' => $traitatol,
  154.             'especes' => $especes,
  155.             'form' => $form->createView(),
  156.         ]);
  157.     }
  158.     /**
  159.      * @Route("/{atolId}", name="traitatol_show", methods={"GET"}, options={ "expose": "true"})
  160.      */
  161.     public function show(TTraitatolTra $tTraitatolTra): Response
  162.     {
  163.         return $this->render('t_traitatol_tra/show.html.twig', [
  164.             't_traitatol_tra' => $tTraitatolTra,
  165.         ]);
  166.     }
  167.     /**
  168.      * @Route("/{atolId}/edit", name="traitatol_edit", methods={"GET","POST"})
  169.      * @ParamConverter("TTraitatolTra", options={"id"="atolId"})
  170.      */
  171.     public function edit(Request $requestTTraitatolTra $traitatol,  TrEspecevaleurRepository $especeValeurRepTjTraitatolespeceRepository $traitEspeceRepositoryTrEspeceRepository $especeRep): Response
  172.     {
  173.         $form $this->createForm(TTraitatolTraTypeEdit::class, $traitatol);
  174.         $form->handleRequest($request);
  175.         $especes $especeRep->findAll();
  176.         $traitsEspece $traitEspeceRepository->findBy(array("especeTrait" => $traitatol));
  177.         $em $this->getDoctrine()->getManager();
  178.         if ($form->isSubmitted() && $form->isValid()) {
  179.             foreach ($especes as $espece) {
  180.                 $idEspece $espece->getEspeceId();
  181.                 if (isset($_POST["espece-" $idEspece])) {
  182.                     $valeur $_POST["espece-" $idEspece];
  183.                     $especeValeur $especeValeurRep->findOneBy(array("valeurLibelle" => $valeur));
  184.                     $traitATOLEspeces $traitEspeceRepository->findBy(array("espece" => $espece"especeTrait" => $traitatol));
  185.                     if (count($traitATOLEspeces) > 0) {
  186.                         foreach ($traitATOLEspeces as $traitATOLEspece) {
  187.                             $em->remove($traitATOLEspece);
  188.                             $em->flush();
  189.                         }
  190.                     }
  191.                     $traitATOLEspece = new TjTraitatolespeceTre();
  192.                     $traitATOLEspece->setEspeceValeur($especeValeur);
  193.                     $traitATOLEspece->setEspece($espece);
  194.                     $traitATOLEspece->setEspeceTrait($traitatol);
  195.                     $em->persist($traitATOLEspece);
  196.                 }
  197.             }
  198.             $em->persist($traitatol);
  199.             $em->flush();
  200.             $this->addFlash('message''Trait ' $traitatol->getTraitNom() . ' modifié avec succès.');
  201.             return $this->redirectToRoute('traitatol_index');
  202.         }
  203.         return $this->render('t_traitatol_tra/edit.html.twig', [
  204.             'traitatol' => $traitatol,
  205.             "traitsEspece" => $traitsEspece,
  206.             'especes' => $especes,
  207.             'form' => $form->createView(),
  208.         ]);
  209.     }
  210.     /**
  211.      * @Route("/{atolId}", name="traitatol_delete", methods={"POST"})
  212.      */
  213.     public function delete(Request $requestTTraitatolTra $traitatol): Response
  214.     {
  215.         if ($this->isCsrfTokenValid('delete' $traitatol->getAtolId(), $request->request->get('_token'))) {
  216.             $entityManager $this->getDoctrine()->getManager();
  217.             $entityManager->remove($traitatol);
  218.             $entityManager->flush();
  219.         }
  220.         return $this->redirectToRoute('traitatol_index');
  221.     }
  222.     /**
  223.      * Find the next AtolID
  224.      *
  225.      * @Route("/selectAtolId/",name="traitatol_selectid", options={"expose"=true}, methods={"POST"})
  226.      */
  227.     public function selectAtolIdAction(Request $requestTraitatolRepository $traitatolRepository)
  228.     {
  229.         $em $this->getDoctrine()->getManager();
  230.         $entities $traitatolRepository->getLast();
  231.         // if (!$entity) {
  232.         //     throw $this->createNotFoundException('Unable to find Maladie entity.');
  233.         // }
  234.         $value "";
  235.         foreach ($entities as $entity)
  236.             $val $entity->getAtolId();
  237.         list($atol$idAtol) = explode('_'$val);
  238.         $idAtol2 intval($idAtol) + 1;
  239.         $zero "";
  240.         for ($i strlen($idAtol2); $i strlen($idAtol); $i++)  $zero .= "0";
  241.         $value 'ATOL_' $zero $idAtol2;
  242.         $data['value'] = $value;
  243.         $response = new JsonResponse();
  244.         $response->setData($data);
  245.         return $response;
  246.     }
  247. }