src/Controller/FO/AtelierController.php line 140

Open in your IDE?
  1. <?php
  2. namespace App\Controller\FO;
  3. use App\Entity\Articles\Article;
  4. use App\Entity\FO\Atelier;
  5. use App\Entity\Utilisateur\Utilisateur;
  6. use App\Entity\Utilisateur\UtilisateurAtelier;
  7. use App\Form\FO\AtelierType;
  8. use App\Form\FO\SupprimerAtelierType;
  9. use App\Library\Datatable\Util\Datatable;
  10. use App\Security\Voter\EntityVoter;
  11. use App\Service\Utilisateur\ColonneTableauService;
  12. use Doctrine\ORM\EntityManagerInterface;
  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 AtelierController extends AbstractController
  21. {
  22.     /**
  23.      * @Route("/atelier/nouveau", name="dtc_atelier_ajouter")
  24.      */
  25.     public function ajouterAction(Request $requestEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  26.     {
  27.         $titre_modal $translator->trans("Nouveau atelier");
  28.         $get         $request->query->all();
  29.         $atelier     = new Atelier();
  30.         $user        $this->getUser();
  31.         $form        $this->createForm(AtelierType::class, $atelier);
  32.         $errors      "";
  33.         $form->handleRequest($request);
  34.         if ($form->isSubmitted()) {
  35.             if ($form->isValid()) {
  36.                 $url "";
  37.                 $em->persist($atelier);
  38.                 $em->flush();
  39.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  40.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  41.                 } else {
  42.                     $this->addFlash('notice'$translator->trans('Nouveau atelier ajouté avec succès !'));
  43.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  44.                 }
  45.             } else {
  46.                 $errors $validator->validate($atelier);
  47.                 $rendu  $this->renderView('FO/Atelier/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'atelierArticle' => $atelier]);
  48.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  49.             }
  50.         }
  51.         $rendu $this->renderView('FO/Atelier/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'atelierArticle' => $atelier]);
  52.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  53.     }
  54.     /**
  55.      * @Route("/atelier/supprimer/{id}", name="dtc_atelier_supprimer")
  56.      */
  57.     public function supprimerAction(Request $requestAtelier $objetEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  58.     {
  59.         $atelierArticle $objet;
  60.         $titre_modal    $translator->trans("Demande de confirmation");
  61.         $user           $this->getUser();
  62.         $get            $request->query->all();
  63.         $repo_article     $em->getRepository(Article::class);
  64.         $repo_utilisateur $em->getRepository(UtilisateurAtelier::class);
  65.         $atelier_article_existe     $repo_article->findOneBy(["atelier" => $objet]);
  66.         $atelier_utilisateur_existe $repo_utilisateur->findOneBy(["atelier" => $objet]);
  67.         $erreur "";
  68.         //Verifier si un client a une civilité
  69.         if (is_object($atelier_article_existe)) {
  70.             $erreur .= 'Cet atelier n\'est pas supprimable car il contient un ou plusieurs articles.';
  71.         }
  72.         //Verifier si un contact a une civilité
  73.         if (is_object($atelier_utilisateur_existe)) {
  74.             //if ($message != '') $message .= ' ';
  75.             $erreur .= ' Cet atelier n\'est pas supprimable car il contient un ou plusieurs utilisateurs.';
  76.         }
  77.         //echo "TEST ===> ".$erreur;
  78.         if ($erreur != "") {
  79.             $rendu $this->renderView('FO/Supprimer/supprimer_impossible.html.twig', ['errors' => $erreur]);
  80.             return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  81.         }
  82.         $form   $this->createForm(SupprimerAtelierType::class, $atelierArticle);
  83.         $errors "";
  84.         $form->handleRequest($request);
  85.         if ($form->isSubmitted()) {
  86.             if ($form->isValid()) {
  87.                 $em->remove($atelierArticle);
  88.                 $em->flush();
  89.                 $url "";
  90.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  91.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],);
  92.                 } else {
  93.                     $this->addFlash('notice'$translator->trans('Atelier supprimé avec succès !'));
  94.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  95.                 }
  96.             } else {
  97.                 $errors $validator->validate($atelierArticle);
  98.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  99.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  100.             }
  101.         }
  102.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  103.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  104.     }
  105.     public function listerAtelierCheckboxAction(Request $request$utilisateur = [], EntityManagerInterface $em)
  106.     {
  107.         $id                       '';
  108.         $repo_utilisateur         $em->getRepository(Utilisateur::class);
  109.         $repo_atelier             $em->getRepository(Atelier::class);
  110.         $repo_utilisateur_atelier $em->getRepository(UtilisateurAtelier::class);
  111.         $id                       $request->query->get('id');
  112.         if ($request->query->get('utilisateur') != '') {
  113.             $utilisateur $repo_utilisateur->find($request->query->get('utilisateur'));
  114.         }
  115.         $atelier $repo_atelier->getAllAtelier();
  116.         $tabAtelier = [];
  117.         foreach ($atelier as $c) {
  118.             $c['checked'] = 0;
  119.             //$c['totalSousCategorie'] = count($repo_atelier->findBy(array("categorieParent"=>$c)));
  120.             //$c['totalSousCategorie'] = 0;
  121.             $c['selection'] = 0;
  122.             if (is_object($utilisateur) and is_object($repo_utilisateur_atelier->findOneBy(['utilisateur' => $utilisateur'atelier' => $c]))) {
  123.                 $c['checked'] = 1;
  124.             }
  125.             $tabAtelier[] = $c;
  126.         }
  127.         $atelier $tabAtelier;
  128.         if ($request->isXmlHttpRequest()) {
  129.             $rendu $this->renderView('FO/Atelier/checkbox.html.twig', ['atelier' => $atelier'utilisateur' => $utilisateur]);
  130.             return new JsonResponse(['rendu' => $rendu]);
  131.         }
  132.         return $this->render('FO/Atelier/checkbox.html.twig', ['atelier' => $atelier'utilisateur' => $utilisateur]);
  133.     }
  134.     /**
  135.      * @Route("/atelier/modifier/{id}", name="dtc_atelier_modifier")
  136.      */
  137.     public function modifierAction(Request $requestAtelier $objetEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  138.     {
  139.         $atelierArticle $objet;
  140.         $titre_modal    $translator->trans("Modifier atelier");
  141.         $get            $request->query->all();
  142.         $user           $this->getUser();
  143.         // $origineClient->setUtilisateur($user);
  144.         $form   $this->createForm(AtelierType::class, $atelierArticle);
  145.         $errors "";
  146.         $form->handleRequest($request);
  147.         if ($form->isSubmitted()) {
  148.             $droit $this->isGranted(EntityVoter::UPDATEAtelier::class);
  149.             /*
  150.             if(!$droit) {
  151.                 $rendu = $this->renderView('Clients/Origine/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type,'objet'=>$objet));
  152.                 return new Response(json_encode(array('rendu'=>$rendu,'valide'=>'0','url'=>'','titre'=>$titre_modal)), 200, array('Content-Type'=>'application/json'));
  153.             }
  154.             */
  155.             $url "";
  156.             if ($form->isValid()) {
  157.                 $em->persist($atelierArticle);
  158.                 $em->flush();
  159.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  160.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  161.                 } else {
  162.                     $this->addFlash('notice'$translator->trans('Atelier modifié avec succès !'));
  163.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  164.                 }
  165.             } else {
  166.                 $errors $validator->validate($atelierArticle);
  167.                 $rendu  $this->renderView('FO/Atelier/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'articleAutomatique' => $atelierArticle]);
  168.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  169.             }
  170.         }
  171.         $rendu $this->renderView('FO/Atelier/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'articleAutomatique' => $atelierArticle]);
  172.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  173.     }
  174.     /**
  175.      * @Route("/atelier/", name="dtc_atelier_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[] = ["className" => "colonne_id""targets" => [1], "visible" => $serviceColonneTableau->getColonneUtilisateur(Atelier::class, "id")];
  181.         $tableau_class_cellule[] = [
  182.             "orderable" => true,
  183.             "className" => "colonne_id",
  184.             "targets"   => [2],
  185.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Atelier::class, "libelle"),
  186.         ];
  187.         $tableau_class_cellule[] = [
  188.             "orderable" => true,
  189.             "className" => "colonne_id",
  190.             "targets"   => [3],
  191.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Atelier::class, "reference"),
  192.         ];
  193.         $this->datatable($datatable$translator);
  194.         return $this->render('FO/Atelier/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule]);
  195.     }
  196.     /**
  197.      * set datatable configs
  198.      *
  199.      * @return \App\Library\Datatable\Util\Datatable
  200.      */
  201.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  202.     {
  203.         $datatable
  204.             ->setDatatableId('dta-ateliers')
  205.             ->setEntity(Atelier::class, "x")
  206.             ->setFields(
  207.                 [
  208.                     $translator->trans("ID")                   => 'x.id',
  209.                     $translator->trans("Libellé") => 'x.libelle',
  210.                     $translator->trans("Référence")            => 'x.reference',
  211.                     $translator->trans("Actions")              => 'x.id',
  212.                     "_identifier_"                             => 'x.id',
  213.                 ]
  214.             )
  215.             ->setRenderers(
  216.                 [
  217.                     => [
  218.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  219.                         'params' => [
  220.                             'edit_route' => 'dtc_atelier_modifier',
  221.                         ],
  222.                     ],
  223.                     => [
  224.                         'view'   => 'FO/DataTable/actions_modal.html.twig',
  225.                         'params' => [
  226.                             'edit_route'      => 'dtc_atelier_modifier',
  227.                             'supprimer_route' => 'dtc_atelier_supprimer',
  228.                             'type'            => "",
  229.                             'entite'          => 'atelier',
  230.                             'table'           => 'dta-ateliers',
  231.                             'objet'           => Atelier::class,
  232.                             'width_modal'     => 800,
  233.                         ],
  234.                     ],
  235.                     /*
  236.                     1 => array(
  237.                         'view' => 'FO/DataTable/edit_texte.html.twig',
  238.                         'params' => array(
  239.                                 'objet'    => 'DTCFOBundle:Atelier',
  240.                                 'champ'    => 'setLibelle',
  241.                             ),
  242.                     ),*/
  243.                 ]
  244.             )
  245.             ->setMultiple(
  246.                 [
  247.                 ]
  248.             )
  249.             ->setOrder("x.id""desc")
  250.             ->setSearch(true)
  251.             ->setSearchFields([1]);
  252.         //$datatable->setSearchFields(array(0,2));
  253.         return $datatable;
  254.     }
  255.     /**
  256.      * Grid action
  257.      * @return Response
  258.      */
  259.     /**
  260.      * @Route("/atelier/grid", name="dtc_atelier_liste_grid")
  261.      */
  262.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  263.     {
  264.         return $this->datatable($datatable$translator)->execute();
  265.     }
  266. }