src/Controller/Transporteurs/ZoneLivraisonController.php line 305

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Transporteurs;
  3. use App\Entity\Transporteurs\Transporteur;
  4. use App\Entity\Transporteurs\TransporteurZoneLivraison;
  5. use App\Entity\Transporteurs\ZoneLivraison;
  6. use App\Form\Transporteurs\SupprimerZoneLivraisonType;
  7. use App\Form\Transporteurs\ZoneLivraisonType;
  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\Component\HttpFoundation\JsonResponse;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\Routing\Annotation\Route;
  19. use Symfony\Component\Validator\Validator\ValidatorInterface;
  20. use Symfony\Contracts\Translation\TranslatorInterface;
  21. class ZoneLivraisonController extends AbstractController
  22. {
  23.     /**
  24.      * @Route("/zone-livraison/dupliquer/{id}", name="dtc_zone_livraison_dupliquer")
  25.      */
  26.     public function dupliquerAction(Request $requestZoneLivraison $zoneLivraisonEntityManagerInterface $emTranslatorInterface $translator)
  27.     {
  28.         $zoneLivraison_duplique = clone $zoneLivraison;
  29.         $zoneLivraison_duplique->setLibelle("COPIE ".$zoneLivraison_duplique->getLibelle());
  30.         $em->persist($zoneLivraison_duplique);
  31.         $em->flush();
  32.         $this->addFlash(
  33.             'notice',
  34.             $translator->trans('Zone de livraison dupliqué avec succès !')
  35.         );
  36.         return $this->redirectToRoute('dtc_zone_livraison_liste');
  37.     }
  38.     /**
  39.      * @Route("/zone-livraison/nouveau", name="dtc_zone_livraison_ajouter")
  40.      */
  41.     public function ajouterAction(Request $requestEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  42.     {
  43.         $zoneLivraison = new ZoneLivraison;
  44.         $user          $this->getUser();
  45.         $zoneLivraison->setUtilisateur($user);
  46.         $form   $this->createForm(ZoneLivraisonType::class, $zoneLivraison);
  47.         $errors "";
  48.         $form->handleRequest($request);
  49.         if ($form->isSubmitted()) {
  50.             $tokenP $request->request->get('tokenPicture');
  51.             if ($form->isValid()) {
  52.                 $em->persist($zoneLivraison);
  53.                 $em->flush();
  54.                 $this->addFlash(
  55.                     'notice',
  56.                     $translator->trans('Zone de livraison ajouté avec succès !')
  57.                 );
  58.                 return $this->redirectToRoute('dtc_zone_livraison_liste');
  59.             } else {
  60.                 $errors $validator->validate($zoneLivraison);
  61.             }
  62.         }
  63.         return $this->render('Transporteurs/ZoneLivraison/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  64.     }
  65.     /**
  66.      * @Route("/zone-livraison/supprimer/multiple", name="dtc_zone_livraison_liste_supprimer")
  67.      */
  68.     public function supprimerMultipleAction(Request $requestEntityManagerInterface $emTranslatorInterface $translator)
  69.     {
  70.         $url $this->generateUrl('dtc_zone_livraison_liste', []);
  71.         return new JsonResponse(['url' => $url'valide' => '1']);
  72.         $data $request->get('dataTables');
  73.         $ids  $data['actions'];
  74.         $repo $em->getRepository(ZoneLivraison::class);
  75.         for ($i 0$i count($ids); $i++) {
  76.             $v $repo->find($ids[$i]);
  77.             if (is_object($v)) {
  78.                 $em->remove($v);
  79.             }
  80.         }
  81.         $em->flush();
  82.         $this->addFlash(
  83.             'notice',
  84.             $translator->trans('Zones de livraisons supprimées avec succès !')
  85.         );
  86.         $url $this->generateUrl('dtc_zone_livraison_liste', []);
  87.         return new JsonResponse(['url' => $url'valide' => '1']);
  88.     }
  89.     /**
  90.      * @Route("/zone-livraison/supprimer/{id}", name="dtc_zone_livraison_supprimer")
  91.      */
  92.     public function supprimerAction(Request $requestZoneLivraison $zoneLivraisonEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  93.     {
  94.         $titre_modal $translator->trans("Demande de confirmation");
  95.         $user        $this->getUser();
  96.         $form   $this->createForm(SupprimerZoneLivraisonType::class, $zoneLivraison);
  97.         $errors "";
  98.         $form->handleRequest($request);
  99.         if ($form->isSubmitted()) {
  100.             if ($form->isValid()) {
  101.                 $em->remove($zoneLivraison);
  102.                 $em->flush();
  103.                 $this->addFlash(
  104.                     'notice',
  105.                     $translator->trans('Zone de livraison supprimée avec succès !')
  106.                 );
  107.                 $url $this->generateUrl('dtc_zone_livraison_liste', []);
  108.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  109.             } else {
  110.                 $errors $validator->validate($zoneLivraison);
  111.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $zoneLivraison->getId(), 'type' => '']);
  112.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  113.             }
  114.         }
  115.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'id' => $zoneLivraison->getId(), 'type' => '''errors' => $errors]);
  116.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  117.     }
  118.     /**
  119.      * @Route("/zone-livraison/modifier/{id}", name="dtc_zone_livraison_modifier")
  120.      */
  121.     public function modifierAction(Request            $requestZoneLivraison $zoneLivraisonEntityManagerInterface $emTranslatorInterface $translator,
  122.                                    ValidatorInterface $validator
  123.     ) {
  124.         $user $this->getUser();
  125.         $zoneLivraison->setUtilisateur($user);
  126.         $form   $this->createForm(ZoneLivraisonType::class, $zoneLivraison);
  127.         $errors "";
  128.         $form->handleRequest($request);
  129.         if ($form->isSubmitted()) {
  130.             $droit $this->isGranted(EntityVoter::UPDATEZoneLivraison::class);
  131.             if ( ! $droit) {
  132.                 return $this->redirectToRoute('dtc_zone_livraison_modifier', ["id" => $zoneLivraison->getId()]);
  133.             }
  134.             if ($form->isValid()) {
  135.                 $em->persist($zoneLivraison);
  136.                 $em->flush();
  137.                 $this->addFlash(
  138.                     'notice',
  139.                     $translator->trans('Zone de livraison sauvegardée avec succès !')
  140.                 );
  141.                 return $this->redirectToRoute('dtc_zone_livraison_modifier', ["id" => $zoneLivraison->getId()]);
  142.             } else {
  143.                 $errors $validator->validate($zoneLivraison);
  144.             }
  145.         }
  146.         return $this->render('Transporteurs/ZoneLivraison/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'zoneLivraison' => $zoneLivraison]);
  147.     }
  148.     /**
  149.      * @Route("/zone-livraison/", name="dtc_zone_livraison_liste")
  150.      */
  151.     public function listerAction(Request $requestColonneTableauService $serviceColonneTableauDatatable $datatableTranslatorInterface $translator)
  152.     {
  153.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [0], "visible" => false"orderable" => false];
  154.         $tableau_class_cellule[] = [
  155.             "className" => "visible_export colonne_id",
  156.             "targets"   => [1],
  157.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(ZoneLivraison::class, "id"),
  158.         ];
  159.         $tableau_class_cellule[] = [
  160.             "className" => "visible_export colonne_id",
  161.             "targets"   => [2],
  162.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(ZoneLivraison::class, "reference"),
  163.         ];
  164.         $tableau_class_cellule[] = [
  165.             "className" => "visible_export colonne_id",
  166.             "targets"   => [3],
  167.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(ZoneLivraison::class, "libelle"),
  168.         ];
  169.         $tableau_class_cellule[] = ["orderable" => false"className" => "colonne_id""targets" => [4], "visible" => true];
  170.         $this->datatable($datatable$translator);
  171.         return $this->render('Transporteurs/ZoneLivraison/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule]);
  172.     }
  173.     /**
  174.      * set datatable configs
  175.      *
  176.      * @return \App\Library\Datatable\Util\Datatable
  177.      */
  178.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  179.     {
  180.         $datatable->setEntity(ZoneLivraison::class, "x")
  181.                   ->setFields(
  182.                       [
  183.                           $translator->trans("ID")      => 'x.id',
  184.                           $translator->trans("Réf")     => 'x.reference',
  185.                           $translator->trans("Libellé") => 'x.libelle',
  186.                           $translator->trans("Actions") => 'x.id',
  187.                           "_identifier_"                => 'x.id',
  188.                       ]
  189.                   )
  190.             //->addJoin('x.transporteur', 't', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
  191.                   ->setRenderers(
  192.                 [
  193.                     => [
  194.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  195.                         'params' => [
  196.                             'edit_route' => 'dtc_zone_livraison_modifier',
  197.                         ],
  198.                     ],
  199.                     => [
  200.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  201.                         'params' => [
  202.                             'edit_route' => 'dtc_zone_livraison_modifier',
  203.                         ],
  204.                     ],
  205.                     => [
  206.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  207.                         'params' => [
  208.                             'edit_route'   => 'dtc_zone_livraison_modifier',
  209.                             'typeDocument' => '',
  210.                         ],
  211.                     ],
  212.                     => [
  213.                         'view'   => 'FO/DataTable/actions.html.twig',
  214.                         'params' => [
  215.                             'edit_route'      => 'dtc_zone_livraison_modifier',
  216.                             'dupliquer_route' => 'dtc_zone_livraison_dupliquer',
  217.                             //'supprimer_route'    => 'dtc_zone_livraison_supprimer', 
  218.                             'objet'           => Transporteur::class,
  219.                         ],
  220.                     ],
  221.                 ]
  222.             )
  223.                   ->setMultiple(
  224.                       [
  225.                           'delete' => [
  226.                               'title' => 'Non disponible',
  227.                               'route' => 'dtc_zone_livraison_liste_supprimer',
  228.                           ],
  229.                       ]
  230.                   )
  231.                   ->setOrder("x.id""desc")
  232.                   ->setSearch(true)
  233.                   ->setSearchFields([12]);
  234.         return $datatable;
  235.     }
  236.     /**
  237.      * Grid action
  238.      * @return Response
  239.      */
  240.     /**
  241.      * @Route("/zone-livraison/grid", name="dtc_zone_livraison_liste_grid")
  242.      */
  243.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  244.     {
  245.         return $this->datatable($datatable$translator)->execute();
  246.     }
  247.     //\Doctrine\Common\Util\Debug::dump($tabZonesLivraison);
  248.     /**
  249.      * @Route("", name="")
  250.      */
  251.     public function listerZoneLivraisonCheckboxAction(Request $request$transporteur = [], EntityManagerInterface $em)
  252.     {
  253.         $id                               '';
  254.         $repo_transporteur                $em->getRepository(Transporteur::class);
  255.         $repo_zone_livraison              $em->getRepository(ZoneLivraison::class);
  256.         $repo_transporteur_zone_livraison $em->getRepository(TransporteurZoneLivraison::class);
  257.         $id                               $request->query->get('id');
  258.         if ($request->query->get('transporteur') != '') {
  259.             $transporteur $repo_transporteur->find($request->query->get('transporteur'));
  260.         }
  261.         $zonesLivraison $repo_zone_livraison->getAllZoneLivraison();
  262.         $tabZonesLivraison = [];
  263.         foreach ($zonesLivraison as $c) {
  264.             $c['checked'] = 0;
  265.             //$c['totalSousCategorie'] = count($repo_zone_livraison->findBy(array("categorieParent"=>$c)));
  266.             //$c['totalSousCategorie'] = 0;
  267.             $c['selection'] = 0;
  268.             if (is_object($transporteur) and is_object($repo_transporteur_zone_livraison->findOneBy(['transporteur' => $transporteur'zoneLivraison' => $c]))) {
  269.                 $c['checked'] = 1;
  270.             }
  271.             $tabZonesLivraison[] = $c;
  272.         }
  273.         $zonesLivraison $tabZonesLivraison;
  274.         if ($request->isXmlHttpRequest()) {
  275.             $rendu $this->renderView('Transporteurs/ZoneLivraison/checkbox.html.twig', ['zonesLivraison' => $zonesLivraison'transporteur' => $transporteur]);
  276.             return new JsonResponse(['rendu' => $rendu]);
  277.         }
  278.         return $this->render('Transporteurs/ZoneLivraison/checkbox.html.twig', ['zonesLivraison' => $zonesLivraison'transporteur' => $transporteur]);
  279.     }
  280.     /**
  281.      * @Route("/zone-livraison/recherche", name="dtc_zone_livraison_recherche")
  282.      */
  283.     public function rechercheAction(Request $requestEntityManagerInterface $emPaginatorInterface $paginator)
  284.     {
  285.         $q    $request->query->get('q');
  286.         $repo $em->getRepository(ZoneLivraison::class);
  287.         //$results = $repo->getRechercheClient($q);
  288.         $results $repo->getRechercheZoneLivraison($q);
  289.         $pagination $paginator->paginate(
  290.             $results/* query NOT result */
  291.             $request->query->getInt('page'1)/*page number*/,
  292.             10/*limit per page*/
  293.         );
  294.         $pagination_results $pagination->getItems();
  295.         $option_placeholde  = ["libelle" => "Sélectionnez""id" => ""];
  296.         array_unshift($pagination_results$option_placeholde);
  297.         $pagination->setItems($pagination_results);
  298.         $serializer SerializerBuilder::create()->build();
  299.         return JsonResponse::fromJsonString($serializer->serialize($pagination'json'));
  300.     }
  301. }