src/Controller/Utilisateur/TypeUtilisateurController.php line 94

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Utilisateur;
  3. use App\Entity\Utilisateur\Droit;
  4. use App\Entity\Utilisateur\TypeUtilisateur;
  5. use App\Entity\Utilisateur\Utilisateur;
  6. use App\Form\Utilisateur\TypeUtilisateurType;
  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\JsonResponse;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use Symfony\Component\Validator\Validator\ValidatorInterface;
  19. use Symfony\Contracts\Translation\TranslatorInterface;
  20. class TypeUtilisateurController extends AbstractController
  21. {
  22.     /**
  23.      * @Route("", name="")
  24.      */
  25.     public function dupliquerAction(Request $requestTypeUtilisateur $typeUtilisateurEntityManagerInterface $em)
  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.         $typeUtilisateur_duplique = clone $typeUtilisateur;
  33.         //$article_duplique->setId(null);
  34.         $typeUtilisateur_duplique->setNom("COPIE ".$typeUtilisateur_duplique->getNom());
  35.         $em->persist($typeUtilisateur_duplique);
  36.         $em->flush();
  37.         $this->addFlash(
  38.             'notice',
  39.             'Type d\'utilisateur dupliqué avec succès !'
  40.         );
  41.         return $this->redirectToRoute('dtc_client_liste');
  42.     }
  43.     /**
  44.      * @Route("/type/utilisateur/nouveau", name="dtc_type_utilisateur_ajouter")
  45.      */
  46.     public function ajouterAction(Request $requestEntityManagerInterface $emValidatorInterface $validator)
  47.     {
  48.         $user $this->getUser();
  49.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  50.             //throw new AccessDeniedException('This user does not have access to this section.');
  51.             return $this->redirectToRoute('dtcfo_homepage', []);
  52.         }
  53.         $typeUtilisateur = new TypeUtilisateur;
  54.         $typeUtilisateur->setUtilisateur($user);
  55.         $form   $this->createForm(TypeUtilisateurType::class, $typeUtilisateur);
  56.         $errors "";
  57.         $form->handleRequest($request);
  58.         if ($form->isSubmitted()) {
  59.             if ($form->isValid()) {
  60.                 $em->persist($typeUtilisateur);
  61.                 $em->flush();
  62.                 $this->addFlash(
  63.                     'notice',
  64.                     'Type d\'utilisateur ajouté avec succès !'
  65.                 );
  66.                 return $this->redirectToRoute('dtc_type_utilisateur_liste');
  67.             } else {
  68.                 $errors $validator->validate($typeUtilisateur);
  69.             }
  70.         }
  71.         return $this->render('Utilisateur/TypeUtilisateur/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  72.     }
  73.     /**
  74.      * @Route("/type/utilisateur/modifier/{id}", name="dtc_type_utilisateur_modifier")
  75.      */
  76.     public function modifierAction(Request   $requestTypeUtilisateur $typeUtilisateurEntityManagerInterface $emValidatorInterface $validator,
  77.                                    Datatable $datatableTranslatorInterface $translator
  78.     ) {
  79.         $user $this->getUser();
  80.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  81.             //throw new AccessDeniedException('This user does not have access to this section.');
  82.             return $this->redirectToRoute('dtcfo_homepage', []);
  83.         }
  84.         $typeUtilisateur->setUtilisateur($user);
  85.         $form   $this->createForm(TypeUtilisateurType::class, $typeUtilisateur);
  86.         $errors "";
  87.         $form->handleRequest($request);
  88.         if ($form->isSubmitted()) {
  89.             $droit $this->isGranted(EntityVoter::UPDATETypeUtilisateur::class);
  90.             if ( ! $droit) {
  91.                 return $this->redirectToRoute('dtc_type_utilisateur_modifier', ["id" => $typeUtilisateur->getId()]);
  92.             }
  93.             if ($form->isValid()) {
  94.                 $em->persist($typeUtilisateur);
  95.                 $em->flush();
  96.                 $this->addFlash(
  97.                     'notice',
  98.                     'Type d\'utilisateur sauvegardé avec succès !'
  99.                 );
  100.                 return $this->redirectToRoute('dtc_type_utilisateur_modifier', ["id" => $typeUtilisateur->getId()]);
  101.             } else {
  102.                 $errors $validator->validate($typeUtilisateur);
  103.             }
  104.         }
  105.         $this->datatableUtilisateurs($datatable$translator$typeUtilisateur);
  106.         $this->datatableDroits($datatable$translator$typeUtilisateur);
  107.         return $this->render('Utilisateur/TypeUtilisateur/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'typeUtilisateur' => $typeUtilisateur]);
  108.     }
  109.     /**
  110.      * @Route("/type/utilisateur/", name="dtc_type_utilisateur_liste")
  111.      */
  112.     public function listerAction(Request $requestColonneTableauService $serviceColonneTableauDatatable $datatableTranslatorInterface $translator)
  113.     {
  114.         $user $this->getUser();
  115.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  116.             //throw new AccessDeniedException('This user does not have access to this section.');
  117.             return $this->redirectToRoute('dtcfo_homepage', []);
  118.         }
  119.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [0], "visible" => false"orderable" => false];
  120.         $tableau_class_cellule[] = [
  121.             "className" => "colonne_id",
  122.             "targets"   => [1],
  123.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(TypeUtilisateur::class, "id"),
  124.         ];
  125.         $tableau_class_cellule[] = [
  126.             "className" => "colonne_id",
  127.             "targets"   => [2],
  128.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(TypeUtilisateur::class, "libelle"),
  129.         ];
  130.         $this->datatable($datatable$translator);
  131.         return $this->render('Utilisateur/TypeUtilisateur/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule]);
  132.     }
  133.     /**
  134.      * set datatable configs
  135.      *
  136.      * @return \App\Library\Datatable\Util\Datatable
  137.      */
  138.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  139.     {
  140.         $user $this->getUser();
  141.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  142.             //throw new AccessDeniedException('This user does not have access to this section.');
  143.             return $this->redirectToRoute('dtcfo_homepage', []);
  144.         }
  145.         $datatable->setEntity(TypeUtilisateur::class, "x")
  146.                   ->setFields(
  147.                       [
  148.                           $translator->trans("ID")      => 'x.id',
  149.                           $translator->trans("Libellé") => 'x.libelle',
  150.                           $translator->trans("Actions") => 'x.id',
  151.                           "_identifier_"                => 'x.id',
  152.                       ]
  153.                   )
  154.                   ->setRenderers(
  155.                       [
  156.                           => [
  157.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  158.                               'params' => [
  159.                                   'edit_route' => 'dtc_type_utilisateur_modifier',
  160.                               ],
  161.                           ],
  162.                           => [
  163.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  164.                               'params' => [
  165.                                   'edit_route'   => 'dtc_type_utilisateur_modifier',
  166.                                   'typeDocument' => '',
  167.                               ],
  168.                           ],
  169.                           => [
  170.                               'view'   => 'FO/DataTable/actions.html.twig',
  171.                               'params' => [
  172.                                   'edit_route' => 'dtc_type_utilisateur_modifier',
  173.                                   'objet'      => TypeUtilisateur::class,
  174.                               ],
  175.                           ],
  176.                       ]
  177.                   )
  178.                   ->setMultiple(
  179.                       [
  180.                           'delete' => [
  181.                               'title' => $translator->trans('Non disponible'),
  182.                               'route' => 'dtc_client_liste',
  183.                           ],
  184.                       ]
  185.                   )
  186.                   ->setOrder("x.id""desc")
  187.                   ->setSearch(true)
  188.                   ->setSearchFields([1]);
  189.         return $datatable;
  190.     }
  191.     /**
  192.      * Grid action
  193.      * @return Response
  194.      */
  195.     /**
  196.      * @Route("/type/utilisateur/grid", name="dtc_type_utilisateur_liste_grid")
  197.      */
  198.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  199.     {
  200.         $user $this->getUser();
  201.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  202.             //throw new AccessDeniedException('This user does not have access to this section.');
  203.             return $this->redirectToRoute('dtcfo_homepage', []);
  204.         }
  205.         return $this->datatable($datatable$translator)->execute();
  206.     }
  207.     /**
  208.      * @Route("", name="")
  209.      */
  210.     public function rechercheAction(Request $requestEntityManagerInterface $em,  PaginatorInterface $paginator)
  211.     {
  212.         $user $this->getUser();
  213.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  214.             //throw new AccessDeniedException('This user does not have access to this section.');
  215.             return $this->redirectToRoute('dtcfo_homepage', []);
  216.         }
  217.         $q       $request->query->get('q');
  218.         $repo    $em->getRepository(TypeUtilisateur::class);
  219.         $results $repo->getRechercheTypeUtilisateur($q);
  220.         $pagination $paginator->paginate(
  221.             $results/* query NOT result */
  222.             $request->query->getInt('page'1)/*page number*/,
  223.             10/*limit per page*/
  224.         );
  225.         $serializer SerializerBuilder::create()->build();
  226.         return JsonResponse::fromJsonString($serializer->serialize($pagination'json'));
  227.     }
  228.     /**
  229.      * set datatable configs
  230.      *
  231.      * @return \App\Library\Datatable\Util\Datatable
  232.      */
  233.     private function datatableVehicules(Datatable $datatableTranslatorInterface $translator$typeUtilisateur)
  234.     {
  235.         $datatable->setDatatableId('dta-vehicules')
  236.                   ->setEntity("DTCVehiculesBundle:VehiculeTypeUtilisateur""x")
  237.                   ->setFields(
  238.                       [
  239.                           $translator->trans("ID") => 'x.id',
  240.                           $translator->trans("Libellé") => 'x.libelle',
  241.                           $translator->trans("Actions") => 'x.id',
  242.                           "_identifier_"                => 'x.id',
  243.                       ]
  244.                   )
  245.                   ->setWhere(
  246.                       'x.client = :client',
  247.                       ['client' => $typeUtilisateur]
  248.                   )
  249.                   ->setRenderers(
  250.                       [
  251.                           => [
  252.                               'view'   => 'FO/DataTable/actions.html.twig',
  253.                               'params' => [
  254.                                   'edit_route' => 'dtc_vehicule_client_modifier',
  255.                               ],
  256.                           ],
  257.                       ]
  258.                   )
  259.                   ->setOrder("x.id""desc")
  260.                   ->setSearch(true)
  261.                   ->setSearchFields([1]);
  262.         return $datatable;
  263.     }
  264.     /**
  265.      * Grid action
  266.      * @return Response
  267.      */
  268.     /**
  269.      * @Route("", name="")
  270.      */
  271.     public function gridVehiculesAction(Request $requestTypeUtilisateur $typeUtilisateurDatatable $datatableTranslatorInterface $translator)
  272.     {
  273.         return $this->datatableVehicules($datatable$translator$typeUtilisateur)->execute();
  274.     }
  275.     /**
  276.      * Grid action
  277.      * @return Response
  278.      */
  279.     /**
  280.      * @Route("/type/utilisateur/utilisateurs/grid/{id}", name="dtc_type_utilisateur_utilisateur_liste_grid")
  281.      */
  282.     public function gridUtilisateursAction(Request $requestTypeUtilisateur $typeUtilisateurDatatable $datatableTranslatorInterface $translator)
  283.     {
  284.         return $this->datatableUtilisateurs($datatable$translator$typeUtilisateur)->execute();
  285.     }
  286.     /**
  287.      * set datatable configs
  288.      *
  289.      * @return \App\Library\Datatable\Util\Datatable
  290.      */
  291.     private function datatableUtilisateurs(Datatable $datatableTranslatorInterface $translator$typeUtilisateur)
  292.     {
  293.         $datatable->setEntity(Utilisateur::class, "x")
  294.                   ->setFields(
  295.                       [
  296.                           $translator->trans("ID")        => 'x.id',
  297.                           $translator->trans("Réf")       => 'x.reference',
  298.                           $translator->trans("Email")     => 'x.email',
  299.                           $translator->trans("Prénom")    => 'x.prenom',
  300.                           $translator->trans("Nom")       => 'x.nom',
  301.                           $translator->trans("Téléphone") => 'x.telephone',
  302.                           $translator->trans("Type")      => 't.libelle',
  303.                           $translator->trans("Actions")   => 'x.id',
  304.                           "_identifier_"                  => 'x.id',
  305.                       ]
  306.                   )
  307.                   ->addJoin('x.type''t'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  308.                   ->setWhere(
  309.                       'x.type = :type',
  310.                       ['type' => $typeUtilisateur]
  311.                   )
  312.                   ->setRenderers(
  313.                       [
  314.                           => [
  315.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  316.                               'params' => [
  317.                                   'edit_route' => 'dtc_utilisateur_modifier',
  318.                               ],
  319.                           ],
  320.                           => [
  321.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  322.                               'params' => [
  323.                                   'edit_route'   => 'dtc_utilisateur_modifier',
  324.                                   'typeDocument' => '',
  325.                               ],
  326.                           ],
  327.                           => [
  328.                               'view'   => 'FO/DataTable/actions.html.twig',
  329.                               'params' => [
  330.                                   'edit_route' => 'dtc_utilisateur_modifier',
  331.                                   'objet'      => Utilisateur::class,
  332.                               ],
  333.                           ],
  334.                       ]
  335.                   )
  336.                   ->setMultiple(
  337.                       [
  338.                           'delete' => [
  339.                               'title' => $translator->trans('Non disponible'),
  340.                               'route' => 'dtc_utilisateur_liste',
  341.                           ],
  342.                       ]
  343.                   )
  344.                   ->setOrder("x.id""desc")
  345.                   ->setSearch(true)
  346.                   ->setSearchFields([123]);
  347.         return $datatable;
  348.     }
  349.     public function CreerDroits(TypeUtilisateur $typeUtilisateurEntityManagerInterface $em)
  350.     {
  351.         $repo_droit $em->getRepository(Droit::class);
  352.         $listeDroits $repo_droit->getListeDroits();
  353.         if (count($listeDroits) > 0) {
  354.             foreach ($listeDroits as $d) {
  355.                 //echo "<div>ID ".$d->getId()."</div>";
  356.                 $droit_existe $repo_droit->findOneBy(["typesUtilisateur" => $typeUtilisateur"parent" => $d]);
  357.                 if ( ! is_object($droit_existe)) {
  358.                     $d_clone = clone $d;
  359.                     $d_clone->setTypesUtilisateur($typeUtilisateur);
  360.                     $d_clone->setParent($d);
  361.                     $em->persist($d_clone);
  362.                 } else {
  363.                     $droit_existe->setStatut($d->getStatut());
  364.                     $em->persist($droit_existe);
  365.                 }
  366.             }
  367.             $em->flush();
  368.         }
  369.         //echo "AAA ".$typeUtilisateur->getId();
  370.         //exit;
  371.     }
  372.     /**
  373.      * Grid action
  374.      * @return Response
  375.      */
  376.     /**
  377.      * @Route("/type/utilisateur/droits/grid/{id}", name="dtc_type_utilisateur_droits_liste_grid")
  378.      */
  379.     public function gridDroitsAction(Request $requestTypeUtilisateur $typeUtilisateurEntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  380.     {
  381. //        $this->CreerDroits($typeUtilisateur, $em);
  382.         return $this->datatableDroits($datatable$translator$typeUtilisateur)->execute();
  383.     }
  384.     /**
  385.      * set datatable configs
  386.      *
  387.      * @return \App\Library\Datatable\Util\Datatable
  388.      */
  389.     private function datatableDroits(Datatable $datatableTranslatorInterface $translator$typeUtilisateur)
  390.     {
  391.         $datatable->setEntity(Droit::class, "x")
  392.                   ->setFields(
  393.                       [
  394.                           $translator->trans("ID")        => 'x.id',
  395.                           $translator->trans("Libellé")   => 'x.libelle',
  396.                           $translator->trans("Voir")      => 'x.voir',
  397.                           $translator->trans("Ajouter")   => 'x.ajouter',
  398.                           $translator->trans("Modifier")  => 'x.modifier',
  399.                           $translator->trans("Supprimer") => 'x.supprimer',
  400.                           $translator->trans("Exporter")  => 'x.exporter',
  401.                           //$translator->trans("Actions") =>  'x.id',
  402.                           "_identifier_"                  => 'x.id',
  403.                       ]
  404.                   )
  405.                   ->addJoin('x.typesUtilisateur''t'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  406.                   ->setWhere(
  407.                       'x.typesUtilisateur = :type',
  408.                       ['type' => $typeUtilisateur]
  409.                   )
  410.                   ->setRenderers(
  411.                       [
  412.                           => [
  413.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  414.                               'params' => [
  415.                                   'edit_route' => 'dtc_droit_modifier',
  416.                               ],
  417.                           ],
  418.                           => [
  419.                               'view'   => 'FO/DataTable/libelle_droit.html.twig',
  420.                               'params' => [],
  421.                           ],
  422.                           /*
  423.                           5 => array(
  424.                               'view' => 'FO/DataTable/booleen.html.twig',
  425.                           ),
  426.                            *
  427.                            */
  428.                           => [
  429.                               'view'   => 'FO/DataTable/statut_permissions.html.twig',
  430.                               'params' => [
  431.                                   'edit_route'      => 'dtc_droit_statut',
  432.                                   'action'          => 'voir',
  433.                                   'typeUtilisateur' => $typeUtilisateur,
  434.                               ],
  435.                           ],
  436.                           => [
  437.                               'view'   => 'FO/DataTable/statut_permissions.html.twig',
  438.                               'params' => [
  439.                                   'edit_route'      => 'dtc_droit_statut',
  440.                                   'action'          => 'ajouter',
  441.                                   'typeUtilisateur' => $typeUtilisateur,
  442.                               ],
  443.                           ],
  444.                           => [
  445.                               'view'   => 'FO/DataTable/statut_permissions.html.twig',
  446.                               'params' => [
  447.                                   'edit_route'      => 'dtc_droit_statut',
  448.                                   'action'          => 'modifier',
  449.                                   'typeUtilisateur' => $typeUtilisateur,
  450.                               ],
  451.                           ],
  452.                           => [
  453.                               'view'   => 'FO/DataTable/statut_permissions.html.twig',
  454.                               'params' => [
  455.                                   'edit_route'      => 'dtc_droit_statut',
  456.                                   'action'          => 'supprimer',
  457.                                   'typeUtilisateur' => $typeUtilisateur,
  458.                               ],
  459.                           ],
  460.                           => [
  461.                               'view'   => 'FO/DataTable/statut_permissions.html.twig',
  462.                               'params' => [
  463.                                   'edit_route'      => 'dtc_droit_statut',
  464.                                   'action'          => 'exporter',
  465.                                   'typeUtilisateur' => $typeUtilisateur,
  466.                               ],
  467.                           ],
  468.                           => [
  469.                               'view'   => 'FO/DataTable/actions.html.twig',
  470.                               'params' => [
  471.                                   //'edit_route'    => 'dtc_droit_modifier',
  472.                                   //'objet'    => 'DTCUtilisateurBundle:Droit',
  473.                               ],
  474.                           ],
  475.                       ]
  476.                   )
  477.                   ->setOrder("x.position""asc")
  478.                   ->setWhere("x.statut = :statut AND t.id =:typeUtilisateur", ["statut" => "1""typeUtilisateur" => $typeUtilisateur])
  479.                   ->setSearch(true)
  480.                   ->setSearchFields([1]);
  481.         return $datatable;
  482.     }
  483. }