src/Controller/Articles/ValeurAttributArticleController.php line 242

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Articles;
  3. use App\Entity\Articles\AttributArticle;
  4. use App\Entity\Articles\ValeurAttributArticle;
  5. use App\Form\Articles\SupprimerValeurAttributArticleType;
  6. use App\Form\Articles\ValeurAttributArticleType;
  7. use App\Library\Datatable\Util\Datatable;
  8. use App\Security\Voter\EntityVoter;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  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 ValeurAttributArticleController extends AbstractController
  18. {
  19.     /**
  20.      * @Route("/valeur-attribut-article/nouveau/{id}/{type}", name="dtc_valeur_attribut_article_ajouter")
  21.      */
  22.     public function ajouterAction(Request            $request$id$type "dtc_valeur_attribut_article_ajouter"EntityManagerInterface $emTranslatorInterface $translator,
  23.                                   ValidatorInterface $validator
  24.     ) {
  25.         $titre_modal           $translator->trans("Nouvelle valeur");
  26.         $repo_objet            $em->getRepository(AttributArticle::class);
  27.         $get                   $request->query->all();
  28.         $valeurAttributArticle = new ValeurAttributArticle();
  29.         $objet $repo_objet->find($id);
  30.         if (is_object($objet)) {
  31.             $valeurAttributArticle->setAttributArticle($objet);
  32.             //$valeurAttributArticle->setLibelle($objet->getLibelle());
  33.         }
  34.         $user $this->getUser();
  35.         //$valeurAttributArticle->setUtilisateur($user);
  36.         $form   $this->createForm(ValeurAttributArticleType::class, $valeurAttributArticle);
  37.         $errors "";
  38.         $form->handleRequest($request);
  39.         if ($form->isSubmitted()) {
  40.             if ($form->isValid()) {
  41.                 if ($type == 'attributArticle') {
  42.                     $repo_objet $em->getRepository(AttributArticle::class);
  43.                     $objet      $repo_objet->find($id);
  44.                     $url        $this->generateUrl('dtc_article_attribut_article_modifier', ['id' => $objet->getId(), 'tab' => 'valeurAttribut']);
  45.                 }
  46.                 $em->persist($valeurAttributArticle);
  47.                 $em->persist($objet);
  48.                 $em->flush();
  49.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  50.                     return new JsonResponse(
  51.                         ['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  52.                         200,
  53.                         ['Content-Type' => 'application/json']
  54.                     );
  55.                 } else {
  56.                     $this->addFlash('notice'$translator->trans('Déclinaison ajoutée avec succès !'));
  57.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  58.                 }
  59.             } else {
  60.                 $errors $validator->validate($valeurAttributArticle);
  61.                 $rendu  $this->renderView(
  62.                     'Articles/ValeurAttributArticle/ajouter.html.twig',
  63.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'valeurAttributArticle' => $valeurAttributArticle]
  64.                 );
  65.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  66.             }
  67.         }
  68.         $rendu $this->renderView(
  69.             'Articles/ValeurAttributArticle/ajouter.html.twig',
  70.             ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'valeurAttributArticle' => $valeurAttributArticle]
  71.         );
  72.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  73.         //return $this->render('Articles/ValeurAttributArticle/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type));
  74.     }
  75.     /**
  76.      * @Route("/valeur-attribut-article/modifier/{objet}/{id}/{type}", name="dtc_valeur_attribut_article_modifier")
  77.      */
  78.     public function modifierAction(Request             $requestValeurAttributArticle $objet$id$typeEntityManagerInterface $em
  79.                                    TranslatorInterface $translatorValidatorInterface $validator
  80.     ) {
  81.         $url                   "";
  82.         $valeurAttributArticle $objet;
  83.         $titre_modal           $translator->trans("Modifier la valeur");
  84.         $get                   $request->query->all();
  85.         $user                  $this->getUser();
  86.         // $valeurAttributArticle->setUtilisateur($user);
  87.         $form   $this->createForm(ValeurAttributArticleType::class, $valeurAttributArticle);
  88.         $errors "";
  89.         $form->handleRequest($request);
  90.         if ($form->isSubmitted()) {
  91.             $droit $this->isGranted(EntityVoter::UPDATE,ValeurAttributArticle::class);
  92.             /*
  93.             if(!$droit) {
  94.                 $rendu = $this->renderView('Articles/ValeurAttributArticle/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type,'objet'=>$objet));
  95.                 return new Response(json_encode(array('rendu'=>$rendu,'valide'=>'0','url'=>'','titre'=>$titre_modal)), 200, array('Content-Type'=>'application/json'));
  96.             }
  97.             */
  98.             if ($form->isValid()) {
  99.                 if ($type == 'article') {
  100.                     $repo_objet $em->getRepository(AttributArticle::class);
  101.                     $article    $repo_objet->find($id);
  102.                     $url $this->generateUrl('dtc_article_attribut_article_modifier', ['id' => $article->getId(), 'tab' => 'valeurAttribut']);
  103.                 }
  104.                 $em->persist($valeurAttributArticle);
  105.                 $em->flush();
  106.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  107.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  108.                                             200,
  109.                                             ['Content-Type' => 'application/json']
  110.                     );
  111.                 } else {
  112.                     $this->addFlash('notice'$translator->trans('Valeur attribut modifiée avec succès !'));
  113.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  114.                 }
  115.             } else {
  116.                 $errors $validator->validate($valeurAttributArticle);
  117.                 $rendu  $this->renderView(
  118.                     'Articles/ValeurAttributArticle/ajouter.html.twig',
  119.                     [
  120.                         'form'                  => $form->createView(),
  121.                         'errors'                => $errors,
  122.                         'id'                    => $id,
  123.                         'type'                  => $type,
  124.                         'objet'                 => $objet,
  125.                         'valeurAttributArticle' => $valeurAttributArticle,
  126.                     ]
  127.                 );
  128.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  129.             }
  130.         }
  131.         $rendu $this->renderView(
  132.             'Articles/ValeurAttributArticle/ajouter.html.twig',
  133.             [
  134.                 'form'                  => $form->createView(),
  135.                 'errors'                => $errors,
  136.                 'id'                    => $id,
  137.                 'type'                  => $type,
  138.                 'objet'                 => $objet,
  139.                 'valeurAttributArticle' => $valeurAttributArticle,
  140.             ]
  141.         );
  142.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  143.     }
  144.     /**
  145.      * @Route("/valeur-attribut-article/supprimer/{objet}/{id}/{type}", name="dtc_valeur_attribut_article_supprimer")
  146.      */
  147.     public function supprimerAction(Request $requestValeurAttributArticle $objet$id$typeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  148.     {
  149.         $valeurAttributArticle $objet;
  150.         $titre_modal           $translator->trans("Demande de confirmation");
  151.         $user                  $this->getUser();
  152.         $get                   $request->query->all();
  153.         $form                  $this->createForm(SupprimerValeurAttributArticleType::class, $valeurAttributArticle);
  154.         $errors                "";
  155.         $form->handleRequest($request);
  156.         if ($form->isSubmitted()) {
  157.             if ($form->isValid()) {
  158.                 $em->remove($valeurAttributArticle);
  159.                 $em->flush();
  160.                 if ($type == 'attributArticle') {
  161.                     $url $this->generateUrl('dtc_article_attribut_article_modifier', ['id' => $id'tab' => 'valeurAttribut']);
  162.                 }
  163.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  164.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  165.                                             200,
  166.                                             ['Content-Type' => 'application/json']
  167.                     );
  168.                 } else {
  169.                     $this->addFlash('notice'$translator->trans('Valeur supprimée avec succès !'));
  170.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  171.                 }
  172.             } else {
  173.                 $errors $validator->validate($valeurAttributArticle);
  174.                 $rendu  $this->renderView(
  175.                     'FO/Supprimer/supprimer.html.twig',
  176.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]
  177.                 );
  178.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  179.             }
  180.         }
  181.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  182.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  183.     }
  184.     /**
  185.      * @Route("/valeur-attribut-article/charger-tableau/{id}/{type}", name="dtc_valeur_attribut_article_charger_tableau")
  186.      */
  187.     public function chargerTableauAction($id "0"$type "a"
  188.     ) {
  189.         $rendu $this->renderView('Articles/ValeurAttributArticle/charger_tableau.html.twig', ["id" => $id"type" => $type]);
  190.         return new JsonResponse(['rendu' => $rendu]);
  191.     }
  192.     /**
  193.      * @Route("/valeur-attribut-article", name="dtc_valeur_attribut_article_liste")
  194.      */
  195.     public function listerAction(Request $request$id "0"$type "a"EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  196.     {
  197.         /*
  198.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(0),"visible"=>true);
  199.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(1),"visible"=>true);
  200.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(2),"visible"=>true);
  201.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(3),"visible"=>true);
  202.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(4),"visible"=>true);
  203.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(5),"visible"=>true);
  204.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(6),"visible"=>true);
  205.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(7),"visible"=>true);
  206.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(8),"visible"=>true);
  207.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(9),"visible"=>true);
  208.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(10),"visible"=>true);
  209.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(11),"visible"=>true);
  210.         $tableau_class_cellule[]=array("orderable"=> false,"searchable"=> false,"className"=>" colonne_id","targets"=>array(12),"visible"=>true);
  211.         */
  212.         $modal     $request->query->get('modal');
  213.         $articleId $request->query->get('id');
  214.         $qte       $request->query->get('qte');
  215.         if ($type == "attributArticle") {
  216.             $repo_objet $em->getRepository(AttributArticle::class);
  217.         }
  218.         //if($type == "fournisseur")  $repo_objet = $em->getRepository('DTCFournisseursBundle:Fournisseur');
  219.         $objet $repo_objet->find($id);
  220.         if (is_object($objet)) {
  221.             if ($type == "attributArticle") {
  222.                 $tableau_class_cellule   = [];
  223.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id""targets" => [0], "visible" => false];
  224.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id""targets" => [1], "visible" => true];
  225.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id""targets" => [2], "visible" => true];
  226.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-right""targets" => [3], "visible" => true];
  227.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [4], "visible" => true];
  228.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [5], "visible" => true];
  229.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [6], "visible" => true];
  230.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [7], "visible" => true];
  231.                 $tableau_class_cellule[] = ["orderable" => false"searchable" => false"className" => "colonne_id""targets" => [8], "visible" => true];
  232.                 $tableau_class_cellule = [];
  233.                 $this->datatableAttributArticle($objet$type$datatable$translator);
  234.             }
  235.             return $this->render('Articles/ValeurAttributArticle/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  236.         } else {
  237.             $this->datatable();
  238.             return $this->render('Articles/ValeurAttributArticle/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  239.         }
  240.     }
  241.     /**
  242.      * set datatable configs
  243.      *
  244.      * @return \App\Library\Datatable\Util\Datatable
  245.      */
  246.     private function datatableAttributArticle($objet$type ""Datatable $datatableTranslatorInterface $translator)
  247.     {
  248.         $type_jointure 'x.'.$type;
  249.         //echo $type_jointure;
  250.         $datatable->setDatatableId('dta-valeur-attribut-article')
  251.                   ->setEntity(ValeurAttributArticle::class, "x")
  252.                   ->setFields(
  253.                       [
  254.                           $translator->trans("Valeur")  => 'x.libelle',
  255.                           $translator->trans("Actions") => 'x.id',
  256.                           "_identifier_"                => 'x.id',
  257.                       ]
  258.                   )
  259.             //->addJoin('x.pays', 'p', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  260.             //->addJoin('f.devise', 'd', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  261.             //->addJoin('x.uniteMesure', 'u', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  262.             /*->setWhere(
  263.                     $type_jointure.' = :objet',
  264.                     array('objet' => $objet)
  265.                )
  266.               */
  267.                   ->setWhere(
  268.                 $type_jointure.' = :objet',
  269.                 ['objet' => $objet]
  270.             )
  271.                   ->setRenderers(
  272.                       [
  273.                           /*
  274.                           3 => array(
  275.                               'view' => 'FO/DataTable/prix.html.twig',
  276.                           ),
  277.                            4 => array(
  278.                               'view' => 'FO/DataTable/date.html.twig',
  279.                           ),
  280.                            5 => array(
  281.                               'view' => 'FO/DataTable/date.html.twig',
  282.                           ),
  283.                            7 => array(
  284.                               'view' => 'FO/DataTable/statut.html.twig',
  285.                               'params' => array(
  286.                                       'edit_route'    => 'dtc_valeurAttributArticle_article_statut'
  287.                                   ),
  288.                           ),
  289.                           */
  290.                           => [
  291.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  292.                               'params' => [
  293.                                   'edit_route'      => 'dtc_valeur_attribut_article_modifier',
  294.                                   'supprimer_route' => 'dtc_valeur_attribut_article_supprimer',
  295.                                   'id'              => $objet->getId(),
  296.                                   'type'            => $type,
  297.                                   'entite'          => 'garantie',
  298.                                   'table'           => 'dta-valeur-attribut-article',
  299.                                   'objet'           => ValeurAttributArticle::class,
  300.                                   'width_modal'     => 800,
  301.                               ],
  302.                           ],
  303.                       ]
  304.                   )
  305.                   ->setOrder("x.id""desc")
  306.                   ->setSearch(true)//->setSearchFields(array(1,2))
  307.         ;
  308.         return $datatable;
  309.     }
  310.     /**
  311.      * @Route("/valeur-attribut-article/grid/{id}/{type}", name="dtc_valeur_attribut_article_liste_grid")
  312.      */
  313.     public function gridAction($id ""$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  314.     {
  315.         $em $em;
  316.         if ($type == "attributArticle") {
  317.             $repo_objet $em->getRepository(AttributArticle::class);
  318.         }
  319.         $objet $repo_objet->find($id);
  320.         if (is_object($objet) and $type == "attributArticle") {
  321.             return $this->datatableAttributArticle($objet$type$datatable$translator)->execute();
  322.         }
  323.     }
  324.     /**
  325.      * @Route("", name="")
  326.      */
  327.     public function changeDefautAction(ValeurAttributArticle $valeurAttributArticleEntityManagerInterface $em)
  328.     {
  329.         if ($valeurAttributArticle->getDefaut() == 1) {
  330.             $valeurAttributArticle->setDefaut(0);
  331.         } else {
  332.             $valeurAttributArticle->setDefaut(1);
  333.         }
  334.         $em->persist($valeurAttributArticle);
  335.         $em->flush();
  336.         $em->refresh($valeurAttributArticle);
  337.         $headers = [
  338.             'Content-Type'                 => 'application/json',
  339.             'Access-Control-Allow-Origin'  => '*',
  340.             'Access-Control-Allow-Methods' => 'POST',
  341.         ];
  342.         return new JsonResponse(['data' => '1'], 200$headers);
  343.     }
  344. }