src/Controller/Localisation/SecteurGeographiqueController.php line 333

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Localisation;
  3. use App\Entity\Localisation\SecteurGeographique;
  4. use App\Entity\Utilisateur\Utilisateur;
  5. use App\Entity\Utilisateur\UtilisateurZoneGeographique;
  6. use App\Form\Localisation\SecteurGeographiqueType;
  7. use App\Form\Localisation\SupprimerSecteurGeographiqueType;
  8. use App\Library\Datatable\Util\Datatable;
  9. use App\Security\Voter\EntityVoter;
  10. use App\Service\Utilisateur\ColonneTableauService;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use JMS\Serializer\SerializerBuilder;
  13. use Knp\Component\Pager\PaginatorInterface;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  16. use Symfony\Component\HttpFoundation\JsonResponse;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use Symfony\Component\Validator\Validator\ValidatorInterface;
  21. use Symfony\Contracts\Translation\TranslatorInterface;
  22. class SecteurGeographiqueController extends AbstractController
  23. {
  24.     /**
  25.      * @Route("/secteur-geographique/dupliquer/{id}", name="dtc_secteur_geographique_dupliquer")
  26.      */
  27.     public function dupliquerAction(Request $requestSecteurGeographique $secteurGeographiqueEntityManagerInterface $emTranslatorInterface $translator)
  28.     {
  29.         $secteurGeographique_duplique = clone $secteurGeographique;
  30.         $secteurGeographique_duplique->setLibelle("COPIE ".$secteurGeographique_duplique->getLibelle());
  31.         $em->persist($secteurGeographique_duplique);
  32.         $em->flush();
  33.         $this->addFlash('notice'$translator->trans('Secteur géographique dupliquée avec succès !'));
  34.         return $this->redirectToRoute('dtc_secteur_geographique_liste');
  35.     }
  36.     /**
  37.      * @Route("/secteur-geographique/nouveau", name="dtc_secteur_geographique_ajouter")
  38.      */
  39.     public function ajouterAction(Request $requestEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  40.     {
  41.         $titre_modal         $translator->trans("Nouveau secteur géographique");
  42.         $get                 $request->query->all();
  43.         $secteurGeographique = new SecteurGeographique();
  44.         $user                $this->getUser();
  45.         $form                $this->createForm(SecteurGeographiqueType::class, $secteurGeographique);
  46.         $errors              "";
  47.         $form->handleRequest($request);
  48.         if ($form->isSubmitted()) {
  49.             if ($form->isValid()) {
  50.                 $url "";
  51.                 $em->persist($secteurGeographique);
  52.                 $em->flush();
  53.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  54.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  55.                 } else {
  56.                     $this->addFlash('notice'$translator->trans('Nouveau secteur géographique ajouté avec succès !'));
  57.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  58.                 }
  59.             } else {
  60.                 $errors $validator->validate($secteurGeographique);
  61.                 $rendu  $this->renderView(
  62.                     'Localisation/SecteurGeographique/ajouter.html.twig',
  63.                     ['form' => $form->createView(), 'errors' => $errors'secteurGeographique' => $secteurGeographique]
  64.                 );
  65.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  66.             }
  67.         }
  68.         $rendu $this->renderView(
  69.             'Localisation/SecteurGeographique/ajouter.html.twig',
  70.             ['form' => $form->createView(), 'errors' => $errors'secteurGeographique' => $secteurGeographique]
  71.         );
  72.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  73.     }
  74.     /**
  75.      * @Route("/secteur-geographique/supprimer/multiple", name="dtc_secteur_geographique_liste_supprimer")
  76.      */
  77.     public function supprimerMultipleAction(Request $requestEntityManagerInterface $emTranslatorInterface $translator)
  78.     {
  79.         $url $this->generateUrl('dtc_secteur_geographique_liste', []);
  80.         return new JsonResponse(['url' => $url'valide' => '1']);
  81.         $data $request->get('dataTables');
  82.         $ids  $data['actions'];
  83.         $repo $em->getRepository(SecteurGeographique::class);
  84.         for ($i 0$i count($ids); $i++) {
  85.             $v $repo->find($ids[$i]);
  86.             if (is_object($v)) {
  87.                 $em->remove($v);
  88.             }
  89.         }
  90.         $em->flush();
  91.         $this->addFlash('notice'$translator->trans('Secteurs géographique supprimés avec succès !'));
  92.         $url $this->generateUrl('dtc_secteur_geographique_liste', []);
  93.         return new JsonResponse(['url' => $url'valide' => '1']);
  94.     }
  95.     /**
  96.      * @Route("/secteur-geographique/supprimer/{id}", name="dtc_secteur_geographique_supprimer")
  97.      */
  98.     public function supprimerAction(Request $requestSecteurGeographique $objetEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  99.     {
  100.         $secteurGeographique $objet;
  101.         $titre_modal         $translator->trans("Demande de confirmation");
  102.         $user                $this->getUser();
  103.         $get                 $request->query->all();
  104.         $form                $this->createForm(SupprimerSecteurGeographiqueType::class, $secteurGeographique);
  105.         $errors              "";
  106.         $form->handleRequest($request);
  107.         if ($form->isSubmitted()) {
  108.             if ($form->isValid()) {
  109.                 $em->remove($secteurGeographique);
  110.                 $em->flush();
  111.                 $url "";
  112.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  113.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  114.                 } else {
  115.                     $this->addFlash('notice'$translator->trans('Secteur géographique supprimée avec succès !'));
  116.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  117.                 }
  118.             } else {
  119.                 $errors $validator->validate($secteurGeographique);
  120.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  121.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  122.             }
  123.         }
  124.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  125.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  126.     }
  127.     /**
  128.      * @Route("/secteur-geographique/modifier/{id}", name="dtc_secteur_geographique_modifier")
  129.      */
  130.     public function modifierAction(Request            $requestSecteurGeographique $objetEntityManagerInterface $emTranslatorInterface $translator,
  131.                                    ValidatorInterface $validator
  132.     ) {
  133.         $secteurGeographique $objet;
  134.         $titre_modal         $translator->trans("Modifier le secteur géographique");
  135.         $get                 $request->query->all();
  136.         $user                $this->getUser();
  137.         // $secteurGeographique->setUtilisateur($user);
  138.         $form   $this->createForm(SecteurGeographiqueType::class, $secteurGeographique);
  139.         $errors "";
  140.         $form->handleRequest($request);
  141.         if ($form->isSubmitted()) {
  142.             $droit $this->isGranted(EntityVoter::UPDATESecteurGeographique::class);
  143.             /*
  144.             if(!$droit) {
  145.                 $rendu = $this->renderView('Localisation/SecteurGeographique/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type,'objet'=>$objet));
  146.                 return new Response(json_encode(array('rendu'=>$rendu,'valide'=>'0','url'=>'','titre'=>$titre_modal)), 200, array('Content-Type'=>'application/json'));
  147.             }
  148.             */
  149.             $url "";
  150.             if ($form->isValid()) {
  151.                 $em->persist($secteurGeographique);
  152.                 $em->flush();
  153.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  154.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  155.                 } else {
  156.                     $this->addFlash('notice'$translator->trans('Secteur géographique modifiée avec succès !'));
  157.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  158.                 }
  159.             } else {
  160.                 $errors $validator->validate($secteurGeographique);
  161.                 $rendu  $this->renderView(
  162.                     'Localisation/SecteurGeographique/ajouter.html.twig',
  163.                     ['form' => $form->createView(), 'errors' => $errors'articleAutomatique' => $secteurGeographique]
  164.                 );
  165.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  166.             }
  167.         }
  168.         $rendu $this->renderView(
  169.             'Localisation/SecteurGeographique/ajouter.html.twig',
  170.             ['form' => $form->createView(), 'errors' => $errors'articleAutomatique' => $secteurGeographique]
  171.         );
  172.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  173.     }
  174.     /**
  175.      * @Route("/secteur-geographique/", name="dtc_secteur_geographique_liste")
  176.      */
  177.     public function listerAction(Request $requestColonneTableauService $serviceColonneTableauDatatable $datatableTranslatorInterface $translator)
  178.     {
  179.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [0], "visible" => false"orderable" => false];
  180.         $tableau_class_cellule[] = [
  181.             "className" => "colonne_id",
  182.             "targets"   => [1],
  183.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(SecteurGeographique::class, "id"),
  184.         ];
  185.         $tableau_class_cellule[] = [
  186.             "orderable" => true,
  187.             "className" => "colonne_id",
  188.             "targets"   => [2],
  189.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(SecteurGeographique::class, "libelle"),
  190.         ];
  191.         $tableau_class_cellule[] = ["orderable" => false"className" => "colonne_id""targets" => [3], "visible" => true];
  192.         $this->datatable($datatable$translator);
  193.         return $this->render('Localisation/SecteurGeographique/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule]);
  194.     }
  195.     /**
  196.      * set datatable configs
  197.      *
  198.      * @return \App\Library\Datatable\Util\Datatable
  199.      */
  200.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  201.     {
  202.         $datatable
  203.             ->setDatatableId('dta-secteur-geographique')
  204.             ->setEntity(SecteurGeographique::class, "x")
  205.             ->setFields(
  206.                 [
  207.                     $translator->trans("ID")      => 'x.id',
  208.                     $translator->trans("Libellé") => 'x.libelle',
  209.                     $translator->trans("Actions") => 'x.id',
  210.                     "_identifier_"                => 'x.id',
  211.                 ]
  212.             )
  213.             ->setRenderers(
  214.                 [
  215.                     => [
  216.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  217.                         'params' => [
  218.                             'edit_route' => 'dtc_secteur_geographique_modifier',
  219.                         ],
  220.                     ],
  221.                     => [
  222.                         'view'   => 'FO/DataTable/actions_modal.html.twig',
  223.                         'params' => [
  224.                             'edit_route'      => 'dtc_secteur_geographique_modifier',
  225.                             'supprimer_route' => 'dtc_secteur_geographique_supprimer',
  226.                             'type'            => "",
  227.                             'entite'          => 'secteurGeographique',
  228.                             'table'           => 'dta-secteur-geographique',
  229.                             'objet'           => SecteurGeographique::class,
  230.                             'width_modal'     => 800,
  231.                         ],
  232.                     ],
  233.                     /*
  234.                     1 => array(
  235.                         'view' => 'FO/DataTable/edit_texte.html.twig',
  236.                         'params' => array(
  237.                                 'objet'    => 'DTCLocalisationBundle:SecteurGeographique',
  238.                                 'champ'    => 'setLibelle',
  239.                             ),
  240.                     ),*/
  241.                 ]
  242.             )
  243.             ->setMultiple(
  244.                 [
  245.                     'delete' => [
  246.                         'title' => $translator->trans('Non disponible'),
  247.                         'route' => 'dtc_secteur_geographique_liste_supprimer',
  248.                     ],
  249.                 ]
  250.             )
  251.             ->setOrder("x.id""desc")
  252.             ->setSearch(true)
  253.             ->setSearchFields([1]);
  254.         //$datatable->setSearchFields(array(0,2));
  255.         return $datatable;
  256.     }
  257.     /**
  258.      * Grid action
  259.      * @return Response
  260.      */
  261.     /**
  262.      * @Route("/secteur-geographique/grid", name="dtc_secteur_geographique_liste_grid")
  263.      */
  264.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  265.     {
  266.         return $this->datatable($datatable$translator)->execute();
  267.     }
  268.     //\Doctrine\Common\Util\Debug::dump($tabZonesLivraison);
  269.     //\Doctrine\Common\Util\Debug::dump($tabSecteursGeographique);
  270.     /**
  271.      * @Route("", name="")
  272.      */
  273.     public function listerSecteurGeographiqueCheckboxAction(Request $request$utilisateur = [], EntityManagerInterface $em)
  274.     {
  275.         $id                                    '';
  276.         $repo_utilisateur                      $em->getRepository(Utilisateur::class);
  277.         $repo_secteur_geographique             $em->getRepository(SecteurGeographique::class);
  278.         $repo_utilisateur_secteur_geographique $em->getRepository(UtilisateurZoneGeographique::class);
  279.         $id                                    $request->query->get('id');
  280.         if ($request->query->get('utilisateur') != '') {
  281.             $utilisateur $repo_utilisateur->find($request->query->get('utilisateur'));
  282.         }
  283.         $secteursGeographique $repo_secteur_geographique->getAllSecteurGeographique();
  284.         $tabSecteursGeographique = [];
  285.         foreach ($secteursGeographique as $c) {
  286.             $c['checked'] = 0;
  287.             //$c['totalSousCategorie'] = count($repo_secteur_geographique->findBy(array("categorieParent"=>$c)));
  288.             //$c['totalSousCategorie'] = 0;
  289.             $c['selection'] = 0;
  290.             if (is_object($utilisateur) and is_object($repo_utilisateur_secteur_geographique->findOneBy(['utilisateur' => $utilisateur'secteurGeographique' => $c]))) {
  291.                 $c['checked'] = 1;
  292.             }
  293.             $tabSecteursGeographique[] = $c;
  294.         }
  295.         $secteursGeographique $tabSecteursGeographique;
  296.         if ($request->isXmlHttpRequest()) {
  297.             $rendu $this->renderView('Localisation/SecteurGeographique/checkbox.html.twig', ['secteursGeographique' => $secteursGeographique'utilisateur' => $utilisateur]);
  298.             return new JsonResponse(['rendu' => $rendu]);
  299.         }
  300.         return $this->render('Localisation/SecteurGeographique/checkbox.html.twig', ['secteursGeographique' => $secteursGeographique'utilisateur' => $utilisateur]);
  301.     }
  302.     /**
  303.      * @Route("/secteur-geographique/recherche", name="dtc_secteur_geographique_recherche")
  304.      */
  305.     public function rechercheAction(Request $requestEntityManagerInterface $emPaginatorInterface $paginator)
  306.     {
  307.         $q          $request->query->get('q');
  308.         $commercial $request->query->get('commercial');
  309.         $repo       $em->getRepository(SecteurGeographique::class);
  310.         $results    $repo->getRechercheSecteurGeographique($q$commercial);
  311.         $pagination $paginator->paginate(
  312.             $results/* query NOT result */
  313.             $request->query->getInt('page'1)/*page number*/,
  314.             10/*limit per page*/
  315.         );
  316.         $pagination_results $pagination->getItems();
  317.         $option_placeholde  = ["libelle" => "Sélectionnez""id" => ""];
  318.         if ($request->query->getInt('page'1) == 1) {
  319.             array_unshift($pagination_results$option_placeholde);
  320.         }
  321.         $pagination->setItems($pagination_results);
  322.         $serializer SerializerBuilder::create()->build();
  323.         return JsonResponse::fromJsonString($serializer->serialize($pagination'json'));
  324.     }
  325. }