src/Controller/DivisionController.php line 96

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Division;
  4. use App\Repository\DivisionRepository;
  5. use App\Form\DivisionType;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. /**
  12.  * @Route("/division")
  13.  */
  14. class DivisionController extends AbstractController
  15. {
  16.     /**
  17.      * @Route("/", name="division_index", methods={"GET"})
  18.      */
  19.     public function index(): Response
  20.     {
  21.         $divisions $this->getDoctrine()
  22.             ->getRepository(Division::class)
  23.             ->findAll();
  24.         return $this->render('division/index.html.twig', [
  25.             'divisions' => $divisions,
  26.             'is_active' => true,
  27.             'is_open' => true
  28.         ]);
  29.     }
  30.     /**
  31.      * @Route("/new", name="division_new", methods={"GET","POST"})
  32.      */
  33.     public function new(Request $requestDivisionRepository $divisionRepository): Response
  34.     {
  35.         $division = new Division();
  36.         $form $this->createForm(DivisionType::class, $division);
  37.         $form->handleRequest($request);        
  38.         if ($form->isSubmitted() && $form->isValid()) {
  39.             
  40.             $parent $divisionRepository->find$request->request->get('parent')); //recuperation du parent
  41.             $division->setIntitule(strtoupper($division->getIntitule()));
  42.             $division->setLibelle(strtoupper($division->getLibelle()));
  43.             
  44.             $division->setGauche($parent->getDroite()); //definition de la borne gauche du fils
  45.             $division->setDroite($parent->getDroite()+1); //definition de la borne droite du fils
  46.             $division->setNiveau($parent->getNiveau()+1); //definition du niveau dans la hierachie
  47.             //contruction des requestes de mise a jour des nouvelles bornes apres insetion
  48.             $query1 "UPDATE division SET gauche = gauche + 2 WHERE gauche >= :droite";
  49.             $query2 "UPDATE division SET droite = droite + 2 WHERE droite >= :droite";
  50.             
  51.             $conn $this->getDoctrine()->getManager()->getConnection(); //connection
  52.             $stmt1 $conn->prepare($query1); //preparation de la requete 1
  53.             $stmt2 $conn->prepare($query2);//preparation de la requete2
  54.             $stmt1->execute(['droite'=>$parent->getDroite()]); //excution de la requete 1
  55.             $stmt2->execute(['droite'=>$parent->getDroite()]);//execution de la requete2
  56.             //connection pour l'insertion du nouveau fils
  57.             $entityManager $this->getDoctrine()->getManager();
  58.             $entityManager->persist($division);
  59.             $entityManager->flush();
  60.             return $this->redirectToRoute('division_index');
  61.         }
  62.                
  63.         return $this->render('division/new.html.twig', [
  64.             'division' => $division,            
  65.             'divisions' => $divisionRepository->findAll(),
  66.             'form' => $form->createView(),
  67.             'is_active' => true,
  68.             'is_open' => true
  69.         ]);
  70.     }
  71.     /**
  72.      * @Route("/{id}", name="division_show", methods={"GET"})
  73.      */
  74.     public function show(Division $division): Response
  75.     {
  76.         return $this->render('division/show.html.twig', [
  77.             'division' => $division,
  78.             'is_active' => true,
  79.             'is_open' => true
  80.         ]);
  81.     }
  82.     /**
  83.      * @Route("/{id}/edit", name="division_edit", methods={"GET","POST"})
  84.      */
  85.     public function edit(Request $requestDivision $division): Response
  86.     {
  87.         $form $this->createForm(DivisionType::class, $division);
  88.         $form->handleRequest($request);
  89.         if ($form->isSubmitted() && $form->isValid()) {
  90.             $this->getDoctrine()->getManager()->flush();
  91.             return $this->redirectToRoute('division_index');
  92.         }
  93.         return $this->render('division/edit.html.twig', [
  94.             'division' => $division,
  95.             'form' => $form->createView(),
  96.             'is_active' => true,
  97.             'is_open' => true
  98.         ]);
  99.     }
  100.     /**
  101.      * @Route("/{id}", name="division_delete", methods={"DELETE"})
  102.      */
  103.     public function delete(Request $requestDivision $division): Response
  104.     {
  105.         if ($this->isCsrfTokenValid('delete'.$division->getId(),
  106.              $request->request->get('_token'))) {
  107.             $entityManager $this->getDoctrine()->getManager();
  108.             $entityManager->remove($division);
  109.             $entityManager->flush();
  110.         }
  111.         return $this->redirectToRoute('division_index');
  112.     }
  113.     /**
  114.      * @Route("/{id}/ajax", name="division_ajax", methods={"GET"})
  115.      */
  116.     public function ajax(Request $requestDivision $divisionDivisionRepository $diviR)
  117.     {
  118.         if (!$request->isXmlHttpRequest()) {
  119.             return new JsonResponse(array(
  120.                 'status' => 'Error',
  121.                 'message' => 'Error'),
  122.             400);
  123.         }
  124.         
  125.         if(isset($request->request))
  126.         {
  127.                    
  128.             $fille $diviR->getDivisionFille($division->getNiveau());
  129.             if ($fille === null)
  130.             {
  131.                 // Looks like something went wrong
  132.                 return new JsonResponse(array(
  133.                     'status' => 'Null',
  134.                     'message' => 'Division not found!'),
  135.                 200);
  136.             }
  137.             // Send all this back to client
  138.             return new JsonResponse(array(
  139.                 'status' => 'OK',
  140.                 'message' => $fille->getLibelle()),
  141.             200);
  142.                  
  143.             
  144.         }
  145.         // If we reach this point, it means that something went wrong
  146.         return new JsonResponse(array(
  147.             'status' => 'Error',
  148.             'message' => 'Error'),
  149.         400);
  150.        
  151.     }
  152. }