src/Controller/Articles/ConditionnementAchatController.php line 220

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Articles;
  3. use App\Entity\Articles\Article;
  4. use App\Entity\Articles\ConditionnementAchat;
  5. use App\Entity\Fournisseurs\Fournisseur;
  6. use App\Form\Articles\ConditionnementAchatType;
  7. use App\Form\Articles\SupprimerConditionnementAchatType;
  8. use App\Library\Datatable\Util\Datatable;
  9. use App\Security\Voter\EntityVoter;
  10. use App\Service\Articles\ArticleService;
  11. use Doctrine\ORM\EntityManagerInterface;
  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\Validator\Validator\ValidatorInterface;
  18. use Symfony\Contracts\Translation\TranslatorInterface;
  19. class ConditionnementAchatController extends AbstractController
  20. {
  21.     /**
  22.      * @Route("/conditionnement-achat/nouveau/{id}/{type}", name="dtc_conditionnement_achat_ajouter")
  23.      */
  24.     public function ajouterAction(Request $request$id,$type=""EntityManagerInterface $emArticleService $articleServiceTranslatorInterface $translatorValidatorInterface $validator)
  25.     {
  26.         $titre_modal =$translator->trans("Nouveau conditionnement d'achat");
  27.         $conditionnementAchat = new ConditionnementAchat();
  28.         $user $this->getUser();
  29.         //$conditionnementAchat->setUtilisateur($user);
  30.         $form $this->createForm(ConditionnementAchatType::class, $conditionnementAchat);
  31.         $errors "";
  32.         $form->handleRequest($request);
  33.         $get $request->query->all();
  34.         if ($form->isSubmitted()) {
  35.             if ($form->isValid()) {
  36.                 if($type == 'article') {
  37.                     $repo_objet $em->getRepository(Article::class);
  38.                     $objet $repo_objet->find($id);
  39.                     if(is_object($objet)){
  40.                         $conditionnementAchat->setArticle($objet);
  41.                     }
  42.                     $url $this->generateUrl('dtc_article_modifier', ['id' => $objet->getId(), 'tab' =>'conditions']);
  43.                 }
  44.                 $em->persist($conditionnementAchat);
  45.                 $em->persist($objet);
  46.                 $em->flush();
  47.         if($type == 'article') {
  48.                     $em->refresh($conditionnementAchat);
  49.                     $message_historique = [];
  50.                     $message_historique["titre"]="Création d'un nouveau conditionnement d'achat";
  51.                     $message_historique["message"]=$conditionnementAchat->getIdentifiant()." (id : ".$conditionnementAchat->getId().")";
  52.                     $articleService->creerHistorique($objet,'defaut',$message_historique);
  53.                 }
  54.                 if (array_key_exists('table'$get) && $get["table"]!="") {
  55.                       return new JsonResponse(['rendu' =>'''valide' =>'1''url' =>$url'type' =>'recharger_datatable''id_datatable' =>$get["table"]], 200, ['Content-Type' =>'application/json']
  56.                     );
  57.                   }
  58.                   else {
  59.                  $this->addFlash'notice','Conditionnement d\'achat ajoutée avec succès !');
  60.                 return new JsonResponse(['rendu' =>'''valide' =>'1''url' =>$url], 200, ['Content-Type' =>'application/json']);
  61.                   }
  62.             }
  63.             else {
  64.                 $errors $validator->validate($conditionnementAchat);
  65.                 $rendu $this->renderView('Articles/ConditionnementAchat/ajouter.html.twig', ['form' => $form->createView(), 'errors' =>$errors'id' =>$id'type' =>$type]);
  66.                 return new JsonResponse(['rendu' =>$rendu'valide' =>'0''url' =>'''titre' =>$titre_modal], 200, ['Content-Type' =>'application/json']);
  67.             }
  68.         }
  69.         $rendu $this->renderView('Articles/ConditionnementAchat/ajouter.html.twig', ['form' => $form->createView(), 'errors' =>$errors'id' =>$id'type' =>$type]);
  70.         return new JsonResponse(['rendu' =>$rendu'valide' =>'0''url' =>'''titre' =>$titre_modal], 200, ['Content-Type' =>'application/json']);
  71.     }
  72.     /**
  73.      * @Route("/conditionnement-achat/modifier/{objet}/{id}/{type}", name="dtc_conditionnement_achat_modifier")
  74.      */
  75.     public function modifierAction(Request $requestConditionnementAchat $objet,$id,$typeArticleService $articleServiceEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  76.     {
  77.         $conditionnementAchat $objet;
  78.         $titre_modal =$translator->trans("Modifier le conditionnement d'achat");
  79.         $user $this->getUser();
  80.         //$conditionnementAchat->setUtilisateur($user);
  81.         $form $this->createForm(ConditionnementAchatType::class, $conditionnementAchat);
  82.         $errors "";
  83.         $form->handleRequest($request);
  84.         $get $request->query->all();
  85.         if ($form->isSubmitted()) {
  86.             $droit $this->isGranted(EntityVoter::UPDATEConditionnementAchat::class);
  87.             if ($form->isValid()) {
  88.                 if($type == 'article') {
  89.                     $repo_objet $em->getRepository(Article::class);
  90.                     $article $repo_objet->find($id);
  91.                     if(is_object($article)){
  92.                         $conditionnementAchat->setArticle($article);
  93.                     }
  94.                     $url $this->generateUrl('dtc_article_modifier', ['id' => $article->getId(), 'tab' =>'conditions']);
  95.                 }
  96.                 if($type == 'fournisseur') {
  97.                     $url $this->generateUrl('dtc_fournisseur_modifier', ['id' => $id'tab' =>'conditions']);
  98.                 }
  99.                 if($type == 'commandeFournisseur') {
  100.                     $url $this->generateUrl('dtc_commande_fournisseur_modifier', ['id' => $id]);
  101.                 }
  102.               $em->persist($conditionnementAchat);
  103.               $em->flush();
  104.           if($type == 'article') {
  105.                     $em->refresh($conditionnementAchat);
  106.                     $message_historique = [];
  107.                     $message_historique["titre"]="Modification d'un conditionnement d'achat";
  108.                     $message_historique["message"]=$conditionnementAchat->getIdentifiant()." (id : ".$conditionnementAchat->getId().")";
  109.                     $articleService->creerHistorique($objet->getArticle(),'defaut',$message_historique);
  110.                 } 
  111.               if (array_key_exists('table'$get) && $get["table"]!="") {
  112.                       return new JsonResponse(['rendu' =>'''valide' =>'1''url' =>$url'type' =>'recharger_datatable''id_datatable' =>$get["table"]], 200, ['Content-Type' =>'application/json']
  113.                     );
  114.                   }
  115.                   else {
  116.                   $this->addFlash('notice','Conditionnement d\'achat modifiée avec succès !');
  117.                   return new JsonResponse(['rendu' =>'''valide' =>'1''url' =>$url], 200, ['Content-Type' =>'application/json']);
  118.                   }
  119.             }
  120.             else {
  121.                 $errors $validator->validate($conditionnementAchat);
  122.                 $rendu $this->renderView('Articles/ConditionnementAchat/ajouter.html.twig', ['form' => $form->createView(), 'errors' =>$errors'id' =>$id'type' =>$type'objet' =>$objet]
  123.                 );
  124.                 return new JsonResponse(['rendu' =>$rendu'valide' =>'0''url' =>'''titre' =>$titre_modal], 200, ['Content-Type' =>'application/json']);
  125.             }
  126.         }
  127.         $rendu $this->renderView('Articles/ConditionnementAchat/ajouter.html.twig', ['form' => $form->createView(), 'errors' =>$errors'id' =>$id'type' =>$type'objet' =>$objet]);
  128.         return new JsonResponse(['rendu' =>$rendu'valide' =>'0''url' =>'''titre' =>$titre_modal], 200, ['Content-Type' =>'application/json']);
  129.     }
  130.     /**
  131.      * @Route("/conditionnement-achat/supprimer/{objet}/{id}/{type}", name="dtc_conditionnement_achat_supprimer")
  132.      */
  133.     public function supprimerAction(Request $requestConditionnementAchat $objet,$id,$typeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator) {
  134.         $conditionnementAchat $objet;
  135.         $titre_modal =$translator->trans("Demande de confirmation");
  136.         $user $this->getUser();
  137.         $get $request->query->all();
  138.         $form $this->createForm(SupprimerConditionnementAchatType::class, $conditionnementAchat);
  139.         $errors "";
  140.         $form->handleRequest($request);
  141.         if ($form->isSubmitted()) {
  142.             if ($form->isValid()) {
  143.                 $em->remove($conditionnementAchat);
  144.                 $em->flush();
  145.                 if($type == 'article') {
  146.                     $url $this->generateUrl('dtc_article_modifier', ['id' => $id'tab' =>'conditions']);
  147.                 }
  148.                 if (array_key_exists('table'$get) && $get["table"]!="") {
  149.                       return new JsonResponse(['rendu' =>'''valide' =>'1''url' =>$url'type' =>'recharger_datatable''id_datatable' =>$get["table"]], 200, ['Content-Type' =>'application/json']
  150.                     );
  151.                   }
  152.                   else {
  153.                   $this->addFlash'notice','Conditionnement d\'achat supprimé avec succès !');
  154.                   return new JsonResponse(['rendu' =>'''valide' =>'1''url' =>$url], 200, ['Content-Type' =>'application/json']);
  155.                   }
  156.             }
  157.              else {
  158.                 $errors $validator->validate($conditionnementAchat);
  159.                 $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' =>$errors'id' =>$id'type' =>$type'objet' =>$objet]);
  160.                 return new JsonResponse(['rendu' =>$rendu'valide' =>'0''url' =>'''titre' =>$titre_modal], 200, ['Content-Type' =>'application/json']);
  161.             }
  162.         }
  163.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' =>$errors'id' =>$id'type' =>$type'objet' =>$objet]);
  164.         return new JsonResponse(['rendu' =>$rendu'valide' =>'0''url' =>'''titre' =>$titre_modal], 200, ['Content-Type' =>'application/json']);
  165.     }
  166.     /**
  167.      * @Route("/conditionnement-achat", name="dtc_conditionnement_achat_liste")
  168.      */
  169.     public function listerAction(Request $request,$id="0",$type="a"EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  170.     {
  171.             $tableau_class_cellule = [];
  172.             $tableau_class_cellule[]= ["searchable" => true"className" =>"visible_export colonne_id text-center""targets" => [0], "visible" =>true];
  173.             $tableau_class_cellule[]= ["searchable" => true"className" =>"visible_export colonne_id""targets" => [1], "visible" =>true];
  174.             $tableau_class_cellule[]= ["orderable" => false"className" =>"visible_export colonne_id""targets" => [2], "visible" =>true];
  175.             $modal $request->query->get('modal');
  176.             $articleId $request->query->get('id');
  177.             $qte $request->query->get('qte');
  178.             if($type == "article")  $repo_objet $em->getRepository(Article::class);
  179.             if($type == "fournisseur")  $repo_objet $em->getRepository(Fournisseur::class);
  180.             $objet $repo_objet->find($id);
  181.             if ($articleId != ''){
  182.                 $article $repo_objet->find($articleId);
  183.                 if ($modal == && is_object($article))
  184.                 {
  185.                     $titre_modal 'Conditions d\'achat';
  186.                     $this->datatableArticle($article,$type,  $datatable,  $translator);
  187.                     $rendu $this->renderView('Articles/ConditionnementAchat/lister.html.twig', ['tableauClassColonne' =>$tableau_class_cellule"id" =>$articleId"type" =>$type'qte' =>$qte]
  188.                     );
  189.                     return new JsonResponse(['rendu' =>$rendu'valide' =>'0''url' =>'''titre' =>$titre_modal], 200, ['Content-Type' =>'application/json']);
  190.                 }
  191.             }
  192.             if(is_object($objet)) {
  193.                 if($type == "article") {
  194.                     $this->datatableArticle($objet,$type,  $datatable,  $translator);
  195.                 }
  196.                 else if($type == "fournisseur") {
  197.                     $tableau_class_cellule = [];
  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.                     $this->datatableFournisseur($objet,$type);
  201.                 }
  202.                 return $this->render('Articles/ConditionnementAchat/lister.html.twig', ['tableauClassColonne' =>$tableau_class_cellule"id" =>$id"type" =>$type]);
  203.             }
  204.             else {
  205.                 $this->datatable($datatable,  $translator);
  206.                 return $this->render('Articles/ConditionnementAchat/lister.html.twig', ['tableauClassColonne' =>$tableau_class_cellule"id" =>$id"type" =>$type]);
  207.             }
  208.     }
  209.     /**
  210.      * set datatable configs
  211.      *
  212.      * @return \App\Library\Datatable\Util\Datatable
  213.      */
  214.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  215.     {
  216.         $datatable  ->setDatatableId('dta-conditionnement-achat')
  217.                     ->setEntity(ConditionnementAchat::class, "x")
  218.                     ->setFields(
  219.                         [
  220.                                $translator->trans("ID") =>  'x.id',
  221.                                 //$translator->trans("Libelle") =>  'x.libelle',
  222.                                $translator->trans("Actions") =>  'x.id',
  223.                                    "_identifier_" => 'x.id'
  224.                         ]
  225.                             )
  226.                     //->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  227.                      /*->setWhere(
  228.                              $type_jointure.' = :objet',
  229.                              array('objet' => $objet)
  230.                         )
  231.                        */
  232.                     ->setRenderers(
  233.                         [
  234.                                 => [
  235.                                     'view' => 'FO/DataTable/actions.html.twig',
  236.                                     'params' => [
  237.                                             //'edit_route'  => 'dtc_garantie_modifier',
  238.                                             //'supprimer_route'  => 'dtc_garantie_supprimer',
  239.                                             'entite'    => 'garantie',
  240.                                             'objet' => ConditionnementAchat::class
  241.                                     ],
  242.                                 ],
  243.                         ]
  244.                     )
  245.                     ->setOrder("x.id""desc")
  246.                     ->setSearch(true)
  247.                     ->setSearchFields([1,4])
  248.                     ;
  249.         return $datatable;
  250.     }
  251.     /**
  252.      * set datatable configs
  253.      *
  254.      * @return \App\Library\Datatable\Util\Datatable
  255.      */
  256.     private function datatableArticle($objet,$type=""Datatable $datatableTranslatorInterface $translator)
  257.     {
  258.         $type_jointure 'x.'.$type;
  259.         $datatable  ->setDatatableId('dta-conditionnement-achat')
  260.                     ->setEntity(ConditionnementAchat::class, "x")
  261.                     ->setFields(
  262.                         [
  263.                                 //$translator->trans("ID") =>  'x.id',
  264.                                    $translator->trans("Quantité") =>  'x.quantite',
  265.                                    $translator->trans("EAN") =>  'x.identifiant',
  266.                                    $translator->trans("Actions") =>  'x.id',
  267.                                        "_identifier_" => 'x.id'
  268.                         ]
  269.                             )
  270.                     //->addJoin('x.fournisseur', 'f', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  271.                      /*->setWhere(
  272.                              $type_jointure.' = :objet',
  273.                              array('objet' => $objet)
  274.                         )
  275.                        */
  276.                      ->setWhere(
  277.                         'x.article = :objet',
  278.                         ['objet' => $objet]
  279.                         )
  280.                     ->setRenderers(
  281.                         [
  282.                                 => [
  283.                                     'view' => 'FO/DataTable/actions_modal.html.twig',
  284.                                     'params' => [
  285.                                             'edit_route'  => 'dtc_conditionnement_achat_modifier',
  286.                                             'supprimer_route'  => 'dtc_conditionnement_achat_supprimer',
  287.                                             'id'    => $objet->getId(),
  288.                                             'type'    => $type,
  289.                                             'entite'    => 'ConditionnementAchat',
  290.                                             'objet' => ConditionnementAchat::class,
  291.                                             'table' => "dta-conditionnement-achat",
  292.                                     ],
  293.                                 ],
  294.                         ]
  295.                     )
  296.                     ->setOrder("x.id""desc")
  297.                     ->setSearch(true)
  298.                     //->setSearchFields(array(1,2))
  299.                     ;
  300.         return $datatable;
  301.     }
  302.     /**
  303.      * @Route("/conditionnement-achat/grid/{id}/{type}", name="dtc_conditionnement_achat_liste_grid")
  304.      */
  305.     public function gridAction($id="",$type=""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  306.     {
  307.         if($type == "article"$repo_objet $em->getRepository(Article::class);
  308.         else if($type == "fournisseur"$repo_objet $em->getRepository(Fournisseur::class);
  309.         $objet $repo_objet->find($id);
  310.         if(is_object($objet) and $type == "article") return $this->datatableArticle($objet,$type,  $datatable,  $translator)->execute();
  311.         else if(is_object($objet) and $type == "fournisseur") return $this->datatableFournisseur($objet,$type)->execute();
  312.         else return $this->datatable($datatable$translator)->execute();
  313.     }
  314. }