src/Controller/Articles/ColisController.php line 345

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Articles;
  3. use App\Entity\Articles\Article;
  4. use App\Entity\Articles\Colis;
  5. use App\Entity\Fournisseurs\Fournisseur;
  6. use App\Form\Articles\ColisType;
  7. use App\Form\Articles\SupprimerColisType;
  8. use App\Library\Datatable\Util\Datatable;
  9. use App\Security\Voter\EntityVoter;
  10. use App\Service\Utilisateur\ColonneTableauService;
  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 ColisController extends AbstractController
  20. {
  21.     /**
  22.      * @Route("/colis/nouveau/{id}/{type}", name="dtc_colis_ajouter")
  23.      */
  24.     public function ajouterAction(Request $request$id$type ""EntityManagerInterface $emValidatorInterface $validatorTranslatorInterface $translator)
  25.     {
  26.         $titre_modal $translator->trans("Nouveau colis");
  27.         $repo_objet  $em->getRepository(Article::class);
  28.         $get         $request->query->all();
  29.         $colis       = new Colis();
  30.         $objet $repo_objet->find($id);
  31.         if (is_object($objet)) {
  32.             $colis->setArticle($objet);
  33.             //$colis->setLibelle($objet->getLibelle());
  34.         }
  35.         $user $this->getUser();
  36.         //$colis->setUtilisateur($user);
  37.         $form      $this->createForm(ColisType::class, $colis);
  38.         $errors    "";
  39.         $form->handleRequest($request);
  40.         if ($form->isSubmitted()) {
  41.             if ($form->isValid()) {
  42.                 if ($type == 'article') {
  43.                     $repo_objet $em->getRepository(Article::class);
  44.                     $objet      $repo_objet->find($id);
  45.                     $url        $this->generateUrl('dtc_article_modifier', ['id' => $objet->getId(), 'tab' => 'colis']);
  46.                 }
  47.                 $em->persist($colis);
  48.                 $em->persist($objet);
  49.                 $em->flush();
  50.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  51.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  52.                                             200,
  53.                                             ['Content-Type' => 'application/json']);
  54.                 } else {
  55.                     $this->addFlash('notice'$translator->trans('Condition de vente ajoutée avec succès !'));
  56.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  57.                 }
  58.             } else {
  59.                 $errors $validator->validate($colis);
  60.                 $rendu  $this->renderView('Articles/Colis/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'colis' => $colis]);
  61.                 return new Response(json_encode(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]));
  62.             }
  63.         }
  64.         $rendu $this->renderView('Articles/Colis/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'colis' => $colis]);
  65.         return new Response(json_encode(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]));
  66.         //return $this->render('Articles/Colis/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type));
  67.     }
  68.     /**
  69.      * @Route("/colis/modifier/{objet}/{id}/{type}", name="dtc_colis_modifier")
  70.      */
  71.     public function modifierAction(Request $requestColis $objet$id$typeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  72.     {
  73.         $colis       $objet;
  74.         $titre_modal $translator->trans("Modifier le colis");
  75.         $get         $request->query->all();
  76.         $user        $this->getUser();
  77.         // $colis->setUtilisateur($user);
  78.         $form      $this->createForm(ColisType::class, $colis);
  79.         $errors    "";
  80.         $form->handleRequest($request);
  81.         if ($form->isSubmitted()) {
  82.             $droit         $this->isGranted(EntityVoter::UPDATEColis::class);
  83.             /*
  84.             if(!$droit) {
  85.                 $rendu = $this->renderView('Articles/Colis/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type,'objet'=>$objet));
  86.                 return new Response(json_encode(array('rendu'=>$rendu,'valide'=>'0','url'=>'','titre'=>$titre_modal)), 200, array('Content-Type'=>'application/json'));
  87.             }
  88.             */
  89.             if ($form->isValid()) {
  90.                 if ($type == 'article') {
  91.                     $repo_objet $em->getRepository(Article::class);
  92.                     $article    $repo_objet->find($id);
  93.                     $url        $this->generateUrl('dtc_article_modifier', ['id' => $article->getId(), 'tab' => 'colis']);
  94.                 }
  95.                 $em->persist($colis);
  96.                 $em->flush();
  97.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  98.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  99.                                             200,
  100.                                             ['Content-Type' => 'application/json']);
  101.                 } else {
  102.                     $this->addFlash('notice'$translator->trans('Condition de vente modifiée avec succès !'));
  103.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  104.                 }
  105.             } else {
  106.                 $errors $validator->validate($colis);
  107.                 $rendu  $this->renderView(
  108.                     'Articles/Colis/ajouter.html.twig',
  109.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet'colis' => $colis]
  110.                 );
  111.                 return new Response(json_encode(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]));
  112.             }
  113.         }
  114.         $rendu $this->renderView(
  115.             'Articles/Colis/ajouter.html.twig',
  116.             ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet'colis' => $colis]
  117.         );
  118.         return new Response(json_encode(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]));
  119.     }
  120.     /**
  121.      * @Route("/colis/supprimer/{objet}/{id}/{type}", name="dtc_colis_supprimer")
  122.      */
  123.     public function supprimerAction(Request $requestColis $objet$id$typeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  124.     {
  125.         $colis       $objet;
  126.         $titre_modal $translator->trans("Demande de confirmation");
  127.         $user        $this->getUser();
  128.         $get         $request->query->all();
  129.         $form        $this->createForm(SupprimerColisType::class, $colis);
  130.         $errors      "";
  131.         $form->handleRequest($request);
  132.         if ($form->isSubmitted()) {
  133.             if ($form->isValid()) {
  134.                 $em->remove($colis);
  135.                 $em->flush();
  136.                 if ($type == 'article') {
  137.                     $url $this->generateUrl('dtc_article_modifier', ['id' => $id'tab' => 'colis']);
  138.                 }
  139.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  140.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  141.                                             200,
  142.                                             ['Content-Type' => 'application/json']);
  143.                 } else {
  144.                     $this->addFlash('notice'$translator->trans('Condition de vente supprimée avec succès !'));
  145.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  146.                 }
  147.             } else {
  148.                 $errors $validator->validate($colis);
  149.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  150.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  151.             }
  152.         }
  153.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  154.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  155.     }
  156.     /**
  157.      * @Route("/colis/charger-tableau/{id}/{type}", name="dtc_colis_charger_tableau")
  158.      */
  159.     public function chargerTableauAction(Request $request$id "0"$type "a")
  160.     {
  161.         $rendu $this->renderView('Articles/Colis/charger_tableau.html.twig', ["id" => $id"type" => $type]);
  162.         return new JsonResponse(['rendu' => $rendu]);
  163.     }
  164.     /**
  165.      * @Route("/colis", name="dtc_colis_liste")
  166.      */
  167.     public function listerAction(Request $request$id "0"$type "a"EntityManagerInterface $emColonneTableauService $serviceColonneTableauTranslatorInterface $translatorDatatable $datatable)
  168.     {
  169.         $tableau_class_cellule = [];
  170.         /*
  171.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(0),"visible"=>true);
  172.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(1),"visible"=>true);
  173.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(2),"visible"=>true);
  174.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(3),"visible"=>true);
  175.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(4),"visible"=>true);
  176.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(5),"visible"=>true);
  177.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(6),"visible"=>true);
  178.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(7),"visible"=>true);
  179.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(8),"visible"=>true);
  180.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(9),"visible"=>true);
  181.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(10),"visible"=>true);
  182.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(11),"visible"=>true);
  183.         $tableau_class_cellule[]=array("orderable"=> false,"searchable"=> false,"className"=>" colonne_id","targets"=>array(12),"visible"=>true);
  184.         */
  185.         $modal     $request->query->get('modal');
  186.         $articleId $request->query->get('id');
  187.         $qte       $request->query->get('qte');
  188.         if ($type == "article") {
  189.             $repo_objet $em->getRepository(Article::class);
  190.         }
  191.         if ($type == "fournisseur") {
  192.             $repo_objet $em->getRepository(Fournisseur::class);
  193.         }
  194.         $objet $repo_objet->find($id);
  195.         if ($articleId != '') {
  196.             $article $repo_objet->find($articleId);
  197.             if ($modal == && is_object($article)) {
  198.                 $titre_modal $translator->trans('Colis');
  199.                 $this->datatableArticle($article$type);
  200.                 $rendu $this->renderView('Articles/Colis/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $articleId"type" => $type'qte' => $qte]);
  201.                 //$rendu = $this->renderView('FO/Supprimer/supprimer.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type,'objet'=>$objet));
  202.                 return new Response(json_encode(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]));
  203.             }
  204.         }
  205.         if (is_object($objet)) {
  206.             if ($type == "article") {
  207.                 $tableau_class_cellule = [];
  208.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id""targets" => [0], "visible" => true];
  209.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [1], "visible" => true];
  210.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [2], "visible" => true];
  211.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [3], "visible" => true];
  212.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [4], "visible" => true];
  213.                 $tableau_class_cellule[] = ["orderable" => false"searchable" => false"className" => "colonne_id""targets" => [5], "visible" => true];
  214.                 $this->datatableArticle($objet$type);
  215.             }
  216.             return $this->render('Articles/Colis/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  217.         } else {
  218.             $this->datatable($datatable$translator);
  219.             return $this->render('Articles/Colis/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  220.         }
  221.     }
  222.     /**
  223.      * set datatable configs
  224.      *
  225.      * @return \App\Library\Datatable\Util\Datatable
  226.      */
  227.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  228.     {
  229.         $datatable->setDatatableId('dta-colis')
  230.                   ->setEntity(Colis::class, "x")
  231.                   ->setFields(
  232.                       [
  233.                           $translator->trans("ID")      => 'x.id',
  234.                           $translator->trans("Mini")    => 'x.debut',
  235.                           $translator->trans("Maxi")    => 'x.fin',
  236.                           $translator->trans("Prix")    => 'x.prix',
  237.                           //$translator->trans("Libelle") =>  'x.libelle',
  238.                           $translator->trans("Actions") => 'x.id',
  239.                           "_identifier_"                => 'x.id',
  240.                       ]
  241.                   )
  242.                   ->addJoin('x.colisModele''cm'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  243.             /*->setWhere(
  244.                     $type_jointure.' = :objet',
  245.                     array('objet' => $objet)
  246.                )
  247.               */
  248.                   ->setRenderers(
  249.                 [
  250.                     => [
  251.                         'view'   => 'FO/DataTable/actions.html.twig',
  252.                         'params' => [
  253.                             //'edit_route'  => 'dtc_garantie_modifier',
  254.                             //'supprimer_route'  => 'dtc_garantie_supprimer',
  255.                             'entite' => 'garantie',
  256.                             'objet'  => Colis::class,
  257.                         ],
  258.                     ],
  259.                 ]
  260.             )
  261.                   ->setOrder("x.id""desc")
  262.                   ->setSearch(true)
  263.                   ->setSearchFields([14]);
  264.         return $datatable;
  265.     }
  266.     /**
  267.      * set datatable configs
  268.      *
  269.      * @return \App\Library\Datatable\Util\Datatable
  270.      */
  271.     private function datatableArticle($objet$type ""Datatable $datatableTranslatorInterface $translator)
  272.     {
  273.         $type_jointure 'x.'.$type;
  274.         $datatable->setDatatableId('dta-colis')
  275.                   ->setEntity(Colis::class, "x")
  276.                   ->setFields(
  277.                       [
  278.                           //$translator->trans("ID") =>  'x.id',
  279.                           $translator->trans("Modèle")     => 'cm.libelle',
  280.                           $translator->trans("Largeur")    => 'cm.largeur',
  281.                           $translator->trans("Profondeur") => 'cm.profondeur',
  282.                           $translator->trans("Hauteur")    => 'cm.hauteur',
  283.                           $translator->trans("Poids")      => 'cm.poids',
  284.                           $translator->trans("Actions")    => 'x.id',
  285.                           "_identifier_"                   => 'x.id',
  286.                       ]
  287.                   )
  288.                   ->addJoin('x.colisModele''cm'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  289.                   ->setWhere(
  290.                       'x.article = :objet',
  291.                       ['objet' => $objet]
  292.                   )
  293.                   ->setRenderers(
  294.                       [
  295.                           /*
  296.                           0 => array(
  297.                               'view' => 'FO/DataTable/date.html.twig',
  298.                           ),
  299.                       1 => array(
  300.                           'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
  301.                            'params' => array(
  302.                                       'edit_route'    => 'dtc_fournisseur_modifier',
  303.                                       'typeDocument' => 'fournisseur',
  304.                                       'target' => '_blank'
  305.                                   ),
  306.                           ),
  307.                           3 => array(
  308.                               'view' => 'FO/DataTable/prix.html.twig',
  309.                           ),
  310.                           7 => array(
  311.                               'view' => 'FO/DataTable/num2chiffres.html.twig',
  312.                           ),
  313.                           8 => array(
  314.                               'view' => 'FO/DataTable/prix.html.twig',
  315.                           ),
  316.                           10 => array(
  317.                               'view' => 'FO/DataTable/prix.html.twig',
  318.                               'params' => array('conversion'=>'*',
  319.                                   'forceEuro' => 1
  320.                                   )
  321.                           ),
  322.                           15 => array(
  323.                               'view' => 'FO/DataTable/statut.html.twig',
  324.                               'params' => array(
  325.                                   'edit_route' => 'dtc_condition_achat_statut'
  326.                               )
  327.                           ),
  328.                           */
  329.                           => [
  330.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  331.                               'params' => [
  332.                                   'edit_route'      => 'dtc_colis_modifier',
  333.                                   'supprimer_route' => 'dtc_colis_supprimer',
  334.                                   'id'              => $objet->getId(),
  335.                                   'type'            => $type,
  336.                                   'entite'          => 'colis',
  337.                                   'table'           => 'dta-colis',
  338.                                   'objet'           => Colis::class,
  339.                                   'width_modal'     => 800,
  340.                               ],
  341.                           ],
  342.                       ]
  343.                   )
  344.                   ->setOrder("x.id""desc")
  345.                   ->setSearch(true)//->setSearchFields(array(1,2))
  346.         ;
  347.         return $datatable;
  348.     }
  349.     /**
  350.      * @Route("/colis/grid/{id}/{type}", name="dtc_colis_liste_grid")
  351.      */
  352.     public function gridAction($id ""$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  353.     {
  354.         if ($type == "article") {
  355.             $repo_objet $em->getRepository(Article::class);
  356.         } elseif ($type == "fournisseur") {
  357.             $repo_objet $em->getRepository(Fournisseur::class);
  358.         }
  359.         $objet $repo_objet->find($id);
  360.         if (is_object($objet) and $type == "article") {
  361.             return $this->datatableArticle($objet$type$datatable$translator)->execute();
  362.         } elseif (is_object($objet) and $type == "fournisseur") {
  363.             return $this->datatableFournisseur($objet$type)->execute();
  364.         } else {
  365.             return $this->datatable($datatable$translator)->execute();
  366.         }
  367.     }
  368. }