src/Controller/Email/VariableController.php line 83

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