src/Controller/Projets/PrioriteController.php line 215

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Projets;
  3. use App\Entity\Projets\Priorite;
  4. use App\Entity\Projets\Tache;
  5. use App\Form\Projets\PrioriteType;
  6. use App\Library\Datatable\Util\Datatable;
  7. use App\Security\Voter\EntityVoter;
  8. use App\Service\Utilisateur\ColonneTableauService;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use JMS\Serializer\SerializerBuilder;
  11. use Knp\Component\Pager\PaginatorInterface;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\JsonResponse;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  18. use Symfony\Component\Validator\Validator\ValidatorInterface;
  19. use Symfony\Contracts\Translation\TranslatorInterface;
  20. class PrioriteController extends AbstractController
  21. {
  22.     /**
  23.      * @Route("/projet/priorite/nouveau", name="dtc_priorite_ajouter")
  24.      */
  25.     public function ajouterAction(Request $requestEntityManagerInterface $emValidatorInterface $validator)
  26.     {
  27.         $user $this->getUser();
  28.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  29.             //throw new AccessDeniedException('This user does not have access to this section.');
  30.             return $this->redirectToRoute('dtcfo_homepage', []);
  31.         }
  32.         $priorite = new Priorite();
  33.         //$priorite->setUtilisateur($user);
  34.         $form   $this->createForm(PrioriteType::class, $priorite);
  35.         $errors "";
  36.         $form->handleRequest($request);
  37.         if ($form->isSubmitted()) {
  38.             if ($form->isValid()) {
  39.                 $em->persist($priorite);
  40.                 $em->flush();
  41.                 $this->addFlash(
  42.                     'notice',
  43.                     'Priorité ajoutée avec succès !'
  44.                 );
  45.                 return $this->redirectToRoute('dtc_priorite_liste');
  46.             } else {
  47.                 $errors $validator->validate($priorite);
  48.             }
  49.         }
  50.         return $this->render('Projets/Priorite/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  51.     }
  52.     /**
  53.      * @Route("/projet/priorite/modifier/{id}", name="dtc_priorite_modifier")
  54.      */
  55.     public function modifierAction(Request $requestPriorite $prioriteEntityManagerInterface $emValidatorInterface $validator)
  56.     {
  57.         $user $this->getUser();
  58.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  59.             //throw new AccessDeniedException('This user does not have access to this section.');
  60.             return $this->redirectToRoute('dtcfo_homepage', []);
  61.         }
  62.         //$priorite->setUtilisateur($user);
  63.         $form   $this->createForm(PrioriteType::class, $priorite);
  64.         $errors "";
  65.         $form->handleRequest($request);
  66.         if ($form->isSubmitted()) {
  67.             $droit $this->isGranted(EntityVoter::UPDATEPriorite::class);
  68.             if ( ! $droit) {
  69.                 $em->refresh($priorite);
  70.                 return $this->redirectToRoute('dtc_priorite_modifier', ["id" => $priorite->getId()]);
  71.             }
  72.             if ($form->isValid()) {
  73.                 $em->persist($priorite);
  74.                 $em->flush();
  75.                 $this->addFlash(
  76.                     'notice',
  77.                     'Etat modifiée avec succès !'
  78.                 );
  79.                 return $this->redirectToRoute('dtc_priorite_modifier', ["id" => $priorite->getId()]);
  80.             } else {
  81.                 $errors $validator->validate($priorite);
  82.             }
  83.         }
  84.         return $this->render('Projets/Priorite/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'priorite' => $priorite]);
  85.     }
  86.     /**
  87.      * @Route("/projet/priorite", name="dtc_priorite_liste")
  88.      */
  89.     public function listerAction(Request $requestColonneTableauService $serviceColonneTableauDatatable $datatableTranslatorInterface $translator)
  90.     {
  91.         $user $this->getUser();
  92.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  93.             //throw new AccessDeniedException('This user does not have access to this section.');
  94.             $this->addFlash('warning'$translator->trans('Vous n\'avez pas les droits nécessaires pour accèder à cette section'));
  95.             return $this->redirectToRoute('dtcfo_homepage', []);
  96.         }
  97.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [0], "visible" => false"orderable" => false];
  98.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [1], "visible" => $serviceColonneTableau->getColonneUtilisateur(Priorite::class, "id")];
  99.         //$tableau_class_cellule[]=array("className"=>"colonne_id","targets"=>array(2),"visible"=>$serviceColonneTableau->getColonneUtilisateur("DTCProjetsBundle:Priorite","libelle"));
  100.         $this->datatable($datatable$translator);
  101.         return $this->render('Projets/Priorite/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule]);
  102.     }
  103.     /**
  104.      * set datatable configs
  105.      *
  106.      * @return \App\Library\Datatable\Util\Datatable
  107.      */
  108.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  109.     {
  110.         $user $this->getUser();
  111.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  112.             //throw new AccessDeniedException('This user does not have access to this section.');
  113.             return $this->redirectToRoute('dtcfo_homepage', []);
  114.         }
  115.         $datatable->setEntity(Priorite::class, "x")
  116.                   ->setFields(
  117.                       [
  118.                           "ID"                          => 'x.id',
  119.                           $translator->trans("Libellé") => 'x.libelle',
  120.                           //"Actions"      => 'x.id',
  121.                           "_identifier_"                => 'x.id',
  122.                       ]
  123.                   )
  124.                   ->setRenderers(
  125.                       [
  126.                           => [
  127.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  128.                               'params' => [
  129.                                   'edit_route' => 'dtc_priorite_modifier',
  130.                               ],
  131.                           ],
  132.                           => [
  133.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  134.                               'params' => [
  135.                                   'edit_route' => 'dtc_priorite_modifier',
  136.                               ],
  137.                           ],
  138.                           /*2 => array(
  139.                               'view' => 'FO/DataTable/actions.html.twig',
  140.                               'params' => array(
  141.                                       'edit_route'    => 'dtc_priorite_modifier',
  142.                                       'objet'    => 'DTCProjetsBundle:Priorite',
  143.                                   ),
  144.                           ),*/
  145.                       ]
  146.                   )
  147.                   ->setMultiple(
  148.                       [
  149.                           'delete' => [
  150.                               'title' => $translator->trans('Non disponible'),
  151.                               'route' => 'dtc_priorite_liste',
  152.                           ],
  153.                       ]
  154.                   )
  155.                   ->setOrder("x.id""desc")
  156.                   ->setSearch(true);
  157.         $datatable->setSearchFields([1]);
  158.         return $datatable;
  159.     }
  160.     /**
  161.      * Grid action
  162.      * @return Response
  163.      */
  164.     /**
  165.      * @Route("/projet/priorite/grid", name="dtc_priorite_liste_grid")
  166.      */
  167.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  168.     {
  169.         $user $this->getUser();
  170.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  171.             //throw new AccessDeniedException('This user does not have access to this section.');
  172.             return $this->redirectToRoute('dtcfo_homepage', []);
  173.         }
  174.         return $this->datatable($datatable$translator)->execute();
  175.     }
  176.     /**
  177.      * @Route("/projet/priorite/{tache}/{priorite}", name="dtc_priorite_changer")
  178.      */
  179.     public function changePrioriteAction(Request $requestTache $tachePriorite $priorite nullEntityManagerInterface $em)
  180.     {
  181.         $tache->setPriorite($priorite);
  182.         $em->persist($tache);
  183.         $em->flush();
  184.         $headers = [
  185.             'Content-Type'                 => 'application/json',
  186.             'Access-Control-Allow-Origin'  => '*',
  187.             'Access-Control-Allow-Methods' => 'POST',
  188.         ];
  189.         return new JsonResponse(['data' => '1'], 200$headers);
  190.     }
  191.     /**
  192.      * @Route("/projet/priorite/rechercher", name="dtc_priorite_recherche")
  193.      */
  194.     public function rechercheAction(Request $requestEntityManagerInterface $emTranslatorInterface $translatorPaginatorInterface $paginator)
  195.     {
  196.         $q       $request->query->get('q');
  197.         $projet  $request->query->get('projet');
  198.         $repo    $em->getRepository(Priorite::class);
  199.         $results $repo->getRecherchePriorite(trim($q), $projet);//à changer
  200.         $tabClient = [];
  201.         $pagination $paginator->paginate(
  202.             $results/* query NOT result */
  203.             $request->query->getInt('page'1)/*page number*/,
  204.             10/*limit per page*/
  205.         );
  206.         $pagination_results $pagination->getItems();
  207.         $option_placeholde  = ["libelle" => $translator->trans("Sélectionnez"), "id" => ""];
  208.         if ($request->query->getInt('page'1) == 1) {
  209.             array_unshift($pagination_results$option_placeholde);
  210.         }
  211.         $pagination->setItems($pagination_results);
  212.         $serializer SerializerBuilder::create()->build();
  213.         return JsonResponse::fromJsonString($serializer->serialize($pagination'json'));
  214.     }
  215. }