src/Controller/Email/CategorieController.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Email;
  3. use App\Entity\Email\Categorie;
  4. use App\Form\Email\CategorieType;
  5. use App\Form\Email\SupprimerCategorieType;
  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 CategorieController extends AbstractController
  21. {
  22.     /**
  23.      * @Route("/email-categorie/nouveau", name="dtc_email_categorie_ajouter")
  24.      */
  25.     public function ajouterAction(Request $request$type ""EntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  26.     {
  27.         $titre_modal $translator->trans("Nouvelle catégorie");
  28.         $repo_objet  $em->getRepository(Categorie::class);
  29.         $get       $request->query->all();
  30.         $categorie = new Categorie();
  31.         $user $this->getUser();
  32.         $categorie->setUtilisateur($user);
  33.         $form   $this->createForm(CategorieType::class, $categorie);
  34.         $errors "";
  35.         $form->handleRequest($request);
  36.         if ($form->isSubmitted()) {
  37.             if ($form->isValid()) {
  38.                 $em->persist($categorie);
  39.                 $em->flush();
  40.                 $retour = ['rendu' => '''valide' => '1''url' => ''];
  41.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  42.                     $retour['type']         = 'recharger_datatable';
  43.                     $retour['id_datatable'] = $get["table"];
  44.                     return new JsonResponse($retour);
  45.                 } else {
  46.                     $this->addFlash('notice'$translator->trans('Catégorie ajoutée avec succès !'));
  47.                     return new JsonResponse($retour);
  48.                 }
  49.             } else {
  50.                 $errors $validator->validate($categorie);
  51.                 $rendu  $this->renderView(
  52.                     'Email/Categorie/ajouter.html.twig',
  53.                     ['form' => $form->createView(), 'errors' => $errors'type' => $type'categorie' => $categorie]
  54.                 );
  55.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  56.             }
  57.         }
  58.         $rendu $this->renderView('Email/Categorie/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'type' => $type'categorie' => $categorie]);
  59.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  60.         //return $this->render('Email/Categorie/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type));
  61.     }
  62.     /**
  63.      * @Route("/email-categorie/modifier/{id}", name="dtc_email_categorie_modifier")
  64.      */
  65.     public function modifierAction(Request            $requestCategorie $objet$type ""EntityManagerInterface $emTranslatorInterface $translator,
  66.                                    ValidatorInterface $validator
  67.     ) {
  68.         $categorie   $objet;
  69.         $titre_modal $translator->trans("Modifier la catégorie");
  70.         $get         $request->query->all();
  71.         $user        $this->getUser();
  72.         $categorie->setUtilisateur($user);
  73.         $form   $this->createForm(CategorieType::class, $categorie);
  74.         $errors "";
  75.         $form->handleRequest($request);
  76.         if ($form->isSubmitted()) {
  77.             $droit $this->isGranted(EntityVoter::UPDATECategorie::class);
  78.             /*
  79.             if(!$droit) {
  80.                 $rendu = $this->renderView('Email/Categorie/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type,'objet'=>$objet));
  81.                 return new Response(json_encode(array('rendu'=>$rendu,'valide'=>'0','url'=>'','titre'=>$titre_modal)), 200, array('Content-Type'=>'application/json'));
  82.             }
  83.             */
  84.             if ($form->isValid()) {
  85.                 $em->persist($categorie);
  86.                 $em->flush();
  87.                 $retour = ['rendu' => '''valide' => '1''url' => ''];
  88.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  89.                     $retour['type']         = 'recharger_datatable';
  90.                     $retour['id_datatable'] = $get["table"];
  91.                     return new JsonResponse($retour);
  92.                 } else {
  93.                     $this->addFlash('notice'$translator->trans('Catégorie modifiée avec succès !'));
  94.                     return new JsonResponse($retour);
  95.                 }
  96.             } else {
  97.                 $errors $validator->validate($categorie);
  98.                 $rendu  $this->renderView(
  99.                     'Email/Categorie/ajouter.html.twig',
  100.                     ['form' => $form->createView(), 'errors' => $errors'type' => $type'objet' => $objet'categorie' => $categorie]
  101.                 );
  102.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  103.             }
  104.         }
  105.         $rendu $this->renderView(
  106.             'Email/Categorie/ajouter.html.twig',
  107.             ['form' => $form->createView(), 'errors' => $errors'type' => $type'objet' => $objet'categorie' => $categorie]
  108.         );
  109.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  110.     }
  111.     /*
  112.     public function ajouterAction(Request $request, Request $request, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
  113.     {
  114.         $user = $this->getUser();
  115.         $categorie = new Categorie;
  116.         $form = $this->createForm(new CategorieType, $categorie);
  117.         $validator = $validator;
  118.         $errors = "";
  119.         $form->handleRequest($request);
  120.         if ($form->isSubmitted()) {
  121.             if ($form->isValid()) {
  122.                 $em = $em;
  123.                 $em->persist($categorie);
  124.                 $em->flush();
  125.                 $this->addFlash('notice',$translator->trans('Catégorie ajoutée avec succès !'));
  126.                 return $this->redirectToRoute('dtc_email_categorie_liste');
  127.             }
  128.             else {
  129.                 $errors = $validator->validate($categorie);
  130.             }
  131.         }
  132.         return $this->render('Email/Categorie/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors));
  133.     }
  134.     */
  135.     /**
  136.      * @Route("/email-categorie/supprimer/{id}", name="dtc_email_categorie_supprimer")
  137.      */
  138.     public function supprimerAction(Request $requestCategorie $objetEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  139.     {
  140.         $categorie   $objet;
  141.         $titre_modal $translator->trans("Demande de confirmation");
  142.         $user        $this->getUser();
  143.         $get         $request->query->all();
  144.         $form   $this->createForm(SupprimerCategorieType::class, $categorie);
  145.         $errors "";
  146.         $form->handleRequest($request);
  147.         if ($form->isSubmitted()) {
  148.             if ($form->isValid()) {
  149.                 $em->remove($categorie);
  150.                 $em->flush();
  151.                 $url "";
  152.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  153.                     return new JsonResponse(
  154.                         ['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  155.                         200,
  156.                         ['Content-Type' => 'application/json']
  157.                     );
  158.                 } else {
  159.                     $this->addFlash('notice'$translator->trans('Catégorie supprimée avec succès !'));
  160.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  161.                 }
  162.             } else {
  163.                 $errors $validator->validate($categorie);
  164.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  165.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  166.             }
  167.         }
  168.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  169.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  170.     }
  171.     /*
  172.     public function modifierAction(Request $request, Categorie $categorie, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
  173.     {
  174.         $user = $this->getUser();
  175.         $request = $request;
  176.         $form = $this->createForm(new CategorieType, $categorie);
  177.         $validator = $validator;
  178.         $errors = "";
  179.         $form->handleRequest($request);
  180.         if ($form->isSubmitted()) {
  181.             $serviceDroits = $this->get('dtc.droit.utilisateur');
  182.             $droit = $this->isGranted("DTCEmailBundle:Categorie",EntityVoter::UPDATE);
  183.             if(!$droit and 1!=1) {
  184.                 return $this->redirectToRoute('dtc_email_categorie_modifier',array("id"=>$categorie->getId()));
  185.             }
  186.             if ($form->isValid()) {
  187.               $em = $em;
  188.               $em->persist($categorie);
  189.               $em->flush();
  190.               $this->addFlash(
  191.                     'notice',
  192.                    $translator->trans('Catégorie sauvegardée avec succès !')
  193.                 );
  194.                return $this->redirectToRoute('dtc_email_categorie_modifier',array("id"=>$categorie->getId()));
  195.             }
  196.             else {
  197.                 $errors = $validator->validate($categorie);
  198.             }
  199.         }
  200.         return $this->render('Email/Categorie/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'categorie'=>$categorie));
  201.     }
  202.     */
  203.     /**
  204.      * @Route("/email-categorie/", name="dtc_email_categorie_liste")
  205.      */
  206.     public function listerAction(Request $requestEntityManagerInterface $emColonneTableauService $serviceColonneTableauDatatable $datatableTranslatorInterface $translator)
  207.     {
  208.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [0], "visible" => false"orderable" => false];
  209.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [1], "visible" => $serviceColonneTableau->getColonneUtilisateur(Categorie::class, "id")];
  210.         $tableau_class_cellule[] = [
  211.             "orderable" => true,
  212.             "className" => "colonne_id",
  213.             "targets"   => [2],
  214.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Categorie::class, "libelle"),
  215.         ];
  216.         $tableau_class_cellule[] = [
  217.             "orderable" => true,
  218.             "className" => "colonne_id",
  219.             "targets"   => [3],
  220.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Categorie::class, "sujet"),
  221.         ];
  222.         $tableau_class_cellule[] = [
  223.             "orderable" => true,
  224.             "className" => "colonne_id",
  225.             "targets"   => [4],
  226.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Categorie::class, "message"),
  227.         ];
  228.         $tableau_class_cellule[] = ["orderable" => false"className" => "colonne_id""targets" => [5], "visible" => true];
  229.         $this->datatable($datatable$translator);
  230.         return $this->render('Email/Categorie/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule]);
  231.     }
  232.     /**
  233.      * set datatable configs
  234.      *
  235.      * @return \App\Library\Datatable\Util\Datatable
  236.      */
  237.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  238.     {
  239.         $datatable->setEntity(Categorie::class, "x")
  240.                   ->setFields(
  241.                       [
  242.                           $translator->trans("ID")                   => 'x.id',
  243.                           $translator->trans("Libellé") => 'x.libelle',
  244.                           $translator->trans("Catégorie parente")    => 'cp.libelle',
  245.                           $translator->trans("Statut")               => 'x.statut',
  246.                           $translator->trans("Actions")              => 'x.id',
  247.                           "_identifier_"                             => 'x.id',
  248.                       ]
  249.                   )
  250.                   ->addJoin('x.categorieParent''cp'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  251.                   ->setRenderers(
  252.                       [
  253.                           => [
  254.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  255.                               'params' => [
  256.                                   'edit_route' => 'dtc_email_categorie_modifier',
  257.                               ],
  258.                           ],
  259.                           => [
  260.                               'view'   => 'FO/DataTable/statut.html.twig',
  261.                               'params' => [
  262.                                   'edit_route' => 'dtc_email_categorie_changer_statut',
  263.                               ],
  264.                           ],
  265.                           => [
  266.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  267.                               'params' => [
  268.                                   'edit_route'      => 'dtc_email_categorie_modifier',
  269.                                   'supprimer_route' => 'dtc_email_categorie_supprimer',
  270.                                   'type'            => "",
  271.                                   'entite'          => 'categorie',
  272.                                   'table'           => 'dta-emails-categorie',
  273.                                   'objet'           => Categorie::class,
  274.                                   'width_modal'     => 800,
  275.                               ],
  276.                           ],
  277.                       ]
  278.                   )
  279.                   ->setMultiple(
  280.                       [
  281.                           'delete' => [
  282.                               'title' => $translator->trans('Non disponible'),
  283.                               'route' => '',
  284.                           ],
  285.                       ]
  286.                   )
  287.                   ->setOrder("x.id""asc")
  288.                   ->setSearch(true)
  289.                   ->setSearchFields([12]);
  290.         //$datatable->setSearchFields(array(0,2));
  291.         return $datatable;
  292.     }
  293.     /**
  294.      * @Route("/email-categorie/grid", name="dtc_email_categorie_liste_grid")
  295.      */
  296.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  297.     {
  298.         return $this->datatable($datatable$translator)->execute();
  299.     }
  300.     /**
  301.      * @Route("/email-variable/statut/{id}", name="dtc_email_variable_changer_statut")
  302.      * @Route("/email-categorie/statut/{id}", name="dtc_email_categorie_changer_statut")
  303.      */
  304.     public function changeStatutAction(Request $requestCategorie $categorieEntityManagerInterface $em)
  305.     {
  306.         if ($categorie->getStatut() == 1) {
  307.             $categorie->setStatut(0);
  308.         } else {
  309.             $categorie->setStatut(1);
  310.         }
  311.         $em->persist($categorie);
  312.         $em->flush();
  313.         $em->refresh($categorie);
  314.         if ($this->getParameter('domaine_prestashop') != '') {
  315.             @fopen('http://'.$this->getParameter('domaine_prestashop').'/67PHEAuaps4P4h3/categories.php?id_categorie='.$categorie->getId(), 'r');
  316.         }
  317.         $headers = [
  318.             'Content-Type'                 => 'application/json',
  319.             'Access-Control-Allow-Origin'  => '*',
  320.             'Access-Control-Allow-Methods' => 'POST',
  321.         ];
  322.         return new JsonResponse(['data' => '1'], 200$headers);
  323.     }
  324.     /**
  325.      * @Route("/email-categorie/recherche", name="dtc_email_categorie_recherche")
  326.      */
  327.     public function rechercheAction(Request $requestEntityManagerInterface $emPaginatorInterface $paginator)
  328.     {
  329.         $q      $request->query->get('q');
  330.         $parent $request->query->get('parent');
  331.         if ($request->query->get('parent') != '') {
  332.             $parent true;
  333.         } else {
  334.             $parent false;
  335.         }
  336.         $repo $em->getRepository(Categorie::class);
  337.         $results $repo->getRechercheCategorie($q500$parent);
  338.         $pagination $paginator->paginate(
  339.             $results/* query NOT result */
  340.             $request->query->getInt('page'1/*page number*/,
  341.             10 /*limit per page*/
  342.         );
  343.         $pagination_results $pagination->getItems();
  344.         $option_placeholde  = ["libelle" => "Choisir""id" => "0"];
  345.         array_unshift($pagination_results$option_placeholde);
  346.         $pagination->setItems($pagination_results);
  347.         $serializer SerializerBuilder::create()->build();
  348.         return JsonResponse::fromJsonString($serializer->serialize($pagination'json'));
  349.     }
  350. }