src/Controller/Projets/TypeProjetController.php line 238

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Projets;
  3. use App\Entity\Projets\Tache;
  4. use App\Entity\Projets\TypeProjet;
  5. use App\Form\Projets\ProjetType;
  6. use App\Form\Projets\SupprimerTypeProjetType;
  7. use App\Library\Datatable\Util\Datatable;
  8. use App\Security\Voter\EntityVoter;
  9. use App\Service\Utilisateur\ColonneTableauService;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use JMS\Serializer\SerializerBuilder;
  12. use Knp\Component\Pager\PaginatorInterface;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\JsonResponse;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  19. use Symfony\Component\Validator\Validator\ValidatorInterface;
  20. use Symfony\Contracts\Translation\TranslatorInterface;
  21. class TypeProjetController extends AbstractController
  22. {
  23.     /**
  24.      * @Route("/projet/type-projet/nouveau", name="dtc_type_projet_ajouter")
  25.      */
  26.     public function ajouterAction(Request $requestEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  27.     {
  28.         $titre_modal $translator->trans("Nouveau Type Projet");
  29.         $repo_objet  $em->getRepository(TypeProjet::class);
  30.         $get         $request->query->all();
  31.         $typeProjet  = new TypeProjet();
  32.         $user $this->getUser();
  33.         $form   $this->createForm(ProjetType::class, $typeProjet, [
  34.             'method' => 'post',
  35.         ]);
  36.         $errors "";
  37.         $form->handleRequest($request);
  38.         if ($form->isSubmitted()) {
  39.             if ($form->isValid()) {
  40.                 $url "";
  41.                 $em->persist($typeProjet);
  42.                 $em->flush();
  43.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  44.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  45.                 } else {
  46.                     $this->addFlash('notice'$translator->trans('Type Projet ajouté avec succès !'));
  47.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  48.                 }
  49.             } else {
  50.                 $errors $validator->validate($typeProjet);
  51.                 $rendu  $this->renderView('Projets/TypeProjet/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'typeProjet' => $typeProjet]);
  52.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  53.             }
  54.         }
  55.         $rendu $this->renderView('Projets/TypeProjet/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'typeProjet' => $typeProjet]);
  56.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  57.     }
  58.     /**
  59.      * @Route("/projet/type-projet/modifier/{id}", name="dtc_type_projet_modifier")
  60.      */
  61.     public function modifierAction(Request            $requestTypeProjet $typeProjetEntityManagerInterface $emTranslatorInterface $translator,
  62.                                    ValidatorInterface $validator
  63.     ) {
  64.         $titre_modal $translator->trans("Modifier le Type Projet");
  65.         $get         $request->query->all();
  66.         $user        $this->getUser();
  67.         $form   $this->createForm(ProjetType::class, $typeProjet);
  68.         $errors "";
  69.         $form->handleRequest($request);
  70.         if ($form->isSubmitted()) {
  71.             $droit $this->isGranted(EntityVoter::UPDATETypeProjet::class);
  72.             $url "";
  73.             if ($form->isValid()) {
  74.                 $em->persist($typeProjet);
  75.                 $em->flush();
  76.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  77.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  78.                 } else {
  79.                     $this->addFlash('notice'$translator->trans('Type Projet modifié avec succès !'));
  80.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  81.                 }
  82.             } else {
  83.                 $errors $validator->validate($typeProjet);
  84.                 $rendu  $this->renderView('Projets/TypeProjet/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'typeProjet' => $typeProjet]);
  85.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  86.             }
  87.         }
  88.         $rendu $this->renderView('Projets/TypeProjet/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'typeProjet' => $typeProjet]);
  89.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  90.     }
  91.     /**
  92.      * @Route("/projet/type-projet", name="dtc_type_projet_liste")
  93.      */
  94.     public function listerAction(Request $requestColonneTableauService $serviceColonneTableauDatatable $datatableTranslatorInterface $translator)
  95.     {
  96.         $user $this->getUser();
  97.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  98.             //throw new AccessDeniedException('This user does not have access to this section.');
  99.             return $this->redirectToRoute('dtcfo_homepage', []);
  100.         }
  101.         $tableau_class_cellule   = [];
  102.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [0], "visible" => false"orderable" => false];
  103.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [1], "visible" => $serviceColonneTableau->getColonneUtilisateur(TypeProjet::class, "id")];
  104.         $tableau_class_cellule[] = [
  105.             "className" => "colonne_id",
  106.             "targets"   => [2],
  107.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(TypeProjet::class, "libelle"),
  108.         ];
  109.         $this->datatable($datatable$translator);
  110.         return $this->render('Projets/TypeProjet/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule]);
  111.     }
  112.     /**
  113.      * set datatable configs
  114.      *
  115.      * @return \App\Library\Datatable\Util\Datatable
  116.      */
  117.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  118.     {
  119.         $user $this->getUser();
  120.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  121.             //throw new AccessDeniedException('This user does not have access to this section.');
  122.             return $this->redirectToRoute('dtcfo_homepage', []);
  123.         }
  124.         $datatable->setEntity(TypeProjet::class, "x")
  125.                   ->setFields(
  126.                       [
  127.                           "ID"                          => 'x.id',
  128.                           $translator->trans("Libellé") => 'x.libelle',
  129.                           "Actions"                     => 'x.id',
  130.                           "_identifier_"                => 'x.id',
  131.                       ]
  132.                   )
  133.                   ->setRenderers(
  134.                       [
  135.                           => [
  136.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  137.                               'params' => [
  138.                                   'edit_route' => 'dtc_type_projet_modifier',
  139.                               ],
  140.                           ],
  141.                           => [
  142.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  143.                               'params' => [
  144.                                   'edit_route' => 'dtc_type_projet_modifier',
  145.                               ],
  146.                           ],
  147.                           => [
  148.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  149.                               'params' => [
  150.                                   'edit_route'      => 'dtc_type_projet_modifier',
  151.                                   'supprimer_route' => 'dtc_type_projet_supprimer',
  152.                                   'type'            => "",
  153.                                   'entite'          => 'typeprojet',
  154.                                   'table'           => 'dtc-typeprojet',
  155.                                   'objet'           => TypeProjet::class,
  156.                               ],
  157.                           ],
  158.                       ]
  159.                   )
  160.                   ->setMultiple(
  161.                       [
  162.                           'delete' => [
  163.                               'title' => $translator->trans('Non disponible'),
  164.                               'route' => 'dtc_type_projet_liste',
  165.                           ],
  166.                       ]
  167.                   )
  168.                   ->setOrder("x.id""desc")
  169.                   ->setSearch(true);
  170.         $datatable->setSearchFields([1]);
  171.         return $datatable;
  172.     }
  173.     /**
  174.      * Grid action
  175.      * @return Response
  176.      */
  177.     /**
  178.      * @Route("/projet/type-projet/grid", name="dtc_type_projet_liste_grid")
  179.      */
  180.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  181.     {
  182.         $user $this->getUser();
  183.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  184.             //throw new AccessDeniedException('This user does not have access to this section.');
  185.             return $this->redirectToRoute('dtcfo_homepage', []);
  186.         }
  187.         return $this->datatable($datatable$translator)->execute();
  188.     }
  189.     /**
  190.      * @Route("/projet/type-projet/{tache}/{type-projet}", name="dtc_type_projet_changer")
  191.      */
  192.     public function changeTypeProjetAction(Request $requestTache $tacheTypeProjet $typeProjet nullEntityManagerInterface $em)
  193.     {
  194.         $tache->setTypeProjet($typeProjet);
  195.         $em->persist($tache);
  196.         $em->flush();
  197.         $headers = [
  198.             'Content-Type'                 => 'application/json',
  199.             'Access-Control-Allow-Origin'  => '*',
  200.             'Access-Control-Allow-Methods' => 'POST',
  201.         ];
  202.         return new JsonResponse(['data' => '1']);
  203.     }
  204.     /**
  205.      * @Route("/projet/type-projet/recherche", name="dtc_type_projet_recherche")
  206.      */
  207.     public function rechercheAction(Request $requestEntityManagerInterface $emTranslatorInterface $translatorPaginatorInterface $paginator)
  208.     {
  209.         $q       $request->query->get('q');
  210.         $page    $request->query->getInt('page'1);
  211.         $repo    $em->getRepository(TypeProjet::class);
  212.         $results $repo->getRecherche($q);
  213.         $pagination $paginator->paginate(
  214.             $results/* query NOT result */
  215.             $request->query->getInt('page'1)/*page number*/,
  216.             10/*limit per page*/
  217.         );
  218.         $pagination_results $pagination->getItems();
  219.         if ($q == "" && $page 2) {
  220.             //$option_placeholde = array("libelle"=>"Choisir","id"=>"","departement_id"=>"");
  221.             $option_placeholde = ["libelle" => $translator->trans("Sélectionnez"), "id" => "0"];
  222.             array_unshift($pagination_results$option_placeholde);
  223.         } elseif ($page 2) {
  224.             /*
  225.             $phase_saisie_existe = $repo->findOneBy(array('libelle'=>$q));
  226.             if(!is_object($phase_saisie_existe)) {
  227.                 $option_placeholde = array("libelle"=>"Nouvelle phase : ".$q,"id"=>'0',"nouveau"=>$q);
  228.                 array_unshift($pagination_results, $option_placeholde);
  229.                 $option_placeholde = array("libelle" =>$translator->trans("Sélectionnez"),"id"=>"0");
  230.                 array_unshift($pagination_results, $option_placeholde);
  231.             }
  232.             */
  233.         }
  234.         //$option_placeholde = array("libelle" =>$translator->trans("Sélectionnez"),"id"=>"");
  235.         //array_unshift($pagination_results, $option_placeholde);
  236.         $pagination->setItems($pagination_results);
  237.         $serializer SerializerBuilder::create()->build();
  238.         return JsonResponse::fromJsonString($serializer->serialize($pagination'json'));
  239.     }
  240.     /**
  241.      * @Route("/projet/type-projet/modifier/{id}", name="dtc_type_projet_supprimer")
  242.      */
  243.     public function supprimerAction(Request $requestTypeProjet $typeProjetEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  244.     {
  245.         $titre_modal $translator->trans("Demande de confirmation");
  246.         $user        $this->getUser();
  247.         $get         $request->query->all();
  248.         $erreur      '';
  249.         if ( ! empty($erreur)) {
  250.             $rendu $this->renderView('FO/Supprimer/supprimer_impossible.html.twig', ['errors' => $erreur]);
  251.             return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  252.         }
  253.         $form   $this->createForm(SupprimerTypeProjetType::class, $typeProjet);
  254.         $errors "";
  255.         $form->handleRequest($request);
  256.         if ($form->isSubmitted()) {
  257.             if ($form->isValid()) {
  258.                 $em->remove($typeProjet);
  259.                 $em->flush();
  260.                 $url "";
  261.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  262.                     return new JsonResponse(
  263.                         ['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]
  264.                     );
  265.                 } else {
  266.                     $this->addFlash('notice'$this->get("translator")->trans('Marché supprimé avec succès !'));
  267.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  268.                 }
  269.             } else {
  270.                 $errors $validator->validate($typeProjet);
  271.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  272.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  273.             }
  274.         }
  275.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  276.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  277.     }
  278. }