src/Controller/Litiges/LitigeController.php line 758

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Litiges;
  3. use _PHPStan_7bd9fb728\Nette\Utils\Json;
  4. use App\Entity\Clients\Client;
  5. use App\Entity\Fournisseurs\Fournisseur;
  6. use App\Entity\GestionComerciale\ArticleCommande;
  7. use App\Entity\GestionComerciale\Commande;
  8. use App\Entity\GestionComerciale\CommandeFournisseur;
  9. use App\Entity\GestionComerciale\RetourFournisseur;
  10. use App\Entity\GestionComerciale\RetourFournisseurArticleCommande;
  11. use App\Entity\Litiges\Litige;
  12. use App\Entity\Litiges\LitigeArticleCommande;
  13. use App\Form\Litiges\LitigeType;
  14. use App\Form\Litiges\SupprimerLitigeType;
  15. use App\Library\Datatable\Util\Datatable;
  16. use App\Model\GestionCommerciale\TypeDocumentCommercial;
  17. use App\Security\Voter\EntityVoter;
  18. use Doctrine\ORM\EntityManagerInterface;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. use Symfony\Component\HttpFoundation\JsonResponse;
  21. use Symfony\Component\HttpFoundation\Request;
  22. use Symfony\Component\HttpFoundation\Response;
  23. use Symfony\Component\Routing\Annotation\Route;
  24. use Symfony\Component\Validator\Validator\ValidatorInterface;
  25. use Symfony\Contracts\Translation\TranslatorInterface;
  26. class LitigeController extends AbstractController
  27. {
  28.     /**
  29.      * @Route("/litige/nouveau/{id}/{type}", name="dtc_litige_ajouter")
  30.      */
  31.     public function ajouterAction(Request $request$id$type ""EntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  32.     {
  33.         $titre_modal $translator->trans("Nouveau litige");
  34.         $page        $request->query->get('page');
  35.         $litige      = new Litige();
  36.         $user        $this->getUser();
  37.         $litige->setUtilisateur($user);
  38.         $get $request->query->all();
  39.         $form   $this->createForm(LitigeType::class, $litige);
  40.         $errors "";
  41.         $form->handleRequest($request);
  42.         $articleCommande = [];
  43.         if (array_key_exists('articles'$get) && count($get["articles"]) > 0) {
  44.             $repo_article_commande $em->getRepository(ArticleCommande::class);
  45.             foreach ($get["articles"] as $ac) {
  46.                 $ac_obj $repo_article_commande->find($ac);
  47.                 if (is_object($ac_obj) && ! is_object($ac_obj->getLitige())) {
  48.                     //$articleCommande[] = $ac_obj;
  49.                     $litigeArticleCommande = new LitigeArticleCommande();
  50.                     $litigeArticleCommande->setArticleCommande($ac_obj);
  51.                     $litigeArticleCommande->setLitige($litige);
  52.                     $litigeArticleCommande->setQuantite($ac_obj->getQuantite());
  53.                     $articleCommande[] = $litigeArticleCommande;
  54.                 }
  55.             }
  56.         }
  57.         if ($form->isSubmitted()) {
  58.             $post $request->request->all();
  59.             if ($form->isValid()) {
  60.                 if ($type == 'commandeFournisseur') {
  61.                     $repo_objet $em->getRepository(CommandeFournisseur::class);
  62.                     $objet      $repo_objet->find($id);
  63.                     $litige->setCommandeFournisseur($objet);
  64.                     $litige->setFournisseur(null);
  65.                     if (is_object($objet->getFournisseur())) {
  66.                         $litige->setFournisseur($objet->getFournisseur());
  67.                     }
  68.                     $compteur_boucle 0;
  69.                     if (count($articleCommande) > 0) {
  70.                         foreach ($articleCommande as $ac) {
  71.                             $litigeArticleCommande = new LitigeArticleCommande();
  72.                             $litigeArticleCommande->setLitige($litige);
  73.                             $litigeArticleCommande->setArticleCommande($ac->getArticleCommande());
  74.                             $litigeArticleCommande->setQuantite($post["qte"][$compteur_boucle]);
  75.                             $em->persist($litigeArticleCommande);
  76.                             $compteur_boucle++;
  77.                             /*
  78.                             if(!is_object($ac->getLitige())) {
  79.                                 $ac->setLitige($litige);
  80.                                 $em->persist($ac);
  81.                             }
  82.                             */
  83.                         }
  84.                     }
  85.                     $url $this->generateUrl('dtc_commande_fournisseur_modifier', ['id' => $objet->getId(), 'tab' => 'litiges']);
  86.                 } elseif ($type == 'commande') {
  87.                     $repo_objet $em->getRepository(Commande::class);
  88.                     $objet      $repo_objet->find($id);
  89.                     $litige->setCommande($objet);
  90.                     $litige->setCommandeParent($objet);
  91.                     if (is_object($objet->getCommande())) {
  92.                         $litige->setCommandeParent($objet->getCommande());
  93.                     }
  94.                     $litige->setClient(null);
  95.                     if (is_object($objet->getClient())) {
  96.                         $litige->setClient($objet->getClient());
  97.                     }
  98.                     $compteur_boucle 0;
  99.                     if (count($articleCommande) > 0) {
  100.                         foreach ($articleCommande as $ac) {
  101.                             $litigeArticleCommande = new LitigeArticleCommande();
  102.                             $litigeArticleCommande->setLitige($litige);
  103.                             $litigeArticleCommande->setArticleCommande($ac->getArticleCommande());
  104.                             $litigeArticleCommande->setQuantite($post["qte"][$compteur_boucle]);
  105.                             $em->persist($litigeArticleCommande);
  106.                             $compteur_boucle++;
  107.                             /*
  108.                             if(!is_object($ac->getLitige())) {
  109.                                 $ac->setLitige($litige);
  110.                                 $em->persist($ac);
  111.                             }
  112.                             */
  113.                         }
  114.                     }
  115.                     $url $this->generateUrl('dtc_commande_modifier', ['id' => $objet->getId(), 'tab' => 'litiges']);
  116.                 } elseif ($type == 'client') {
  117.                     $repo_objet $em->getRepository(Client::class);
  118.                     $objet      $repo_objet->find($id);
  119.                     $litige->setClient($objet);
  120.                     $url $this->generateUrl('dtc_client_modifier', ['id' => $objet->getId(), 'tab' => 'litiges']);
  121.                 } elseif ($type == 'fournisseur') {
  122.                     $repo_objet $em->getRepository(Fournisseur::class);
  123.                     $objet      $repo_objet->find($id);
  124.                     $litige->setFournisseur($objet);
  125.                     $url $this->generateUrl('dtc_fournisseur_modifier', ['id' => $objet->getId(), 'tab' => 'litiges']);
  126.                 }
  127.                 $em->persist($litige);
  128.                 $em->flush();
  129.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  130.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  131.                 } else {
  132.                     $this->addFlash('notice'$translator->trans('Litige ajoutée avec succès !'));
  133.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  134.                 }
  135.             } else {
  136.                 $errors $validator->validate($litige);
  137.                 $rendu  $this->renderView(
  138.                     'Litiges/Litige/ajouter.html.twig',
  139.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'articleCommande' => $articleCommande]
  140.                 );
  141.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  142.             }
  143.         }
  144.         $rendu $this->renderView(
  145.             'Litiges/Litige/ajouter.html.twig',
  146.             ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'articleCommande' => $articleCommande]
  147.         );
  148.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  149.     }
  150.     /**
  151.      * @Route("/litige/modifier/{objet}/{id}/{type}", name="dtc_litige_modifier")
  152.      */
  153.     public function modifierAction(Request            $requestLitige $objet$id$typeEntityManagerInterface $emTranslatorInterface $translator,
  154.                                    ValidatorInterface $validator
  155.     ) {
  156.         $litige      $objet;
  157.         $titre_modal $translator->trans("Modifier litige");
  158.         $get         $request->query->all();
  159.         $user        $this->getUser();
  160.         $litige->setUtilisateur($user);
  161.         $form   $this->createForm(LitigeType::class, $litige);
  162.         $errors "";
  163.         $form->handleRequest($request);
  164.         $post $request->request->all();
  165.         $repo_article_commande $em->getRepository(ArticleCommande::class);
  166.         $repo_litige_article_commande $em->getRepository(LitigeArticleCommande::class);
  167.         $litigeArticleCommande $repo_litige_article_commande->findBy(["litige" => $litige]);
  168.         $articleCommande       $litigeArticleCommande;
  169.         //$articleCommande = $repo_article_commande->findBy(array("litige"=>$litige));
  170.         if ($form->isSubmitted()) {
  171.             $droit $this->isGranted(EntityVoter::UPDATELitige::class);
  172.             if ( ! $droit) {
  173.                 $rendu $this->renderView(
  174.                     'Litiges/Litige/ajouter.html.twig',
  175.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]
  176.                 );
  177.                 return new Response(json_encode(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]));
  178.             }
  179.             if ($form->isValid()) {
  180.                 if ($type == 'commandeFournisseur') {
  181.                     $repo_objet $em->getRepository(CommandeFournisseur::class);
  182.                     $objet      $repo_objet->find($id);
  183.                     $litige->setCommandeFournisseur($objet);
  184.                     $compteur_boucle 0;
  185.                     if (count($articleCommande) > 0) {
  186.                         foreach ($articleCommande as $ac) {
  187.                             if (isset($post["articleCommande"]) && in_array($ac->getArticleCommande()->getId(), $post["articleCommande"])) {
  188.                                 //echo "<div>A ==> ".$ac->getArticleCommande()->getId()."</div>";
  189.                                 $ac->setQuantite($post["qte"][$compteur_boucle]);
  190.                                 $em->persist($ac);
  191.                             } else {
  192.                                 //echo "<div>B</div>";
  193.                                 $em->remove($ac);
  194.                             }
  195.                             $compteur_boucle++;
  196.                         }
  197.                     }
  198.                     $url $this->generateUrl('dtc_commande_fournisseur_modifier', ['id' => $objet->getId(), 'tab' => 'litiges']);
  199.                 } elseif ($type == 'commande') {
  200.                     $repo_objet $em->getRepository(Commande::class);
  201.                     $objet      $repo_objet->find($id);
  202.                     $litige->setCommande($objet);
  203.                     $compteur_boucle 0;
  204.                     if (count($articleCommande) > 0) {
  205.                         foreach ($articleCommande as $ac) {
  206.                             if (isset($post["articleCommande"]) && in_array($ac->getArticleCommande()->getId(), $post["articleCommande"])) {
  207.                                 //echo "<div>A ==> ".$ac->getArticleCommande()->getId()."</div>";
  208.                                 $ac->setQuantite($post["qte"][$compteur_boucle]);
  209.                                 $em->persist($ac);
  210.                             } else {
  211.                                 //echo "<div>B</div>";
  212.                                 $em->remove($ac);
  213.                             }
  214.                             $compteur_boucle++;
  215.                         }
  216.                     }
  217.                     $url $this->generateUrl('dtc_transporteur_modifier', ['id' => $objet->getId(), 'tab' => 'litiges']);
  218.                 } elseif ($type == 'client') {
  219.                     $repo_objet $em->getRepository(Client::class);
  220.                     $objet      $repo_objet->find($id);
  221.                     $litige->setClient($objet);
  222.                     $url $this->generateUrl('dtc_client_modifier', ['id' => $objet->getId(), 'tab' => 'litiges']);
  223.                 } elseif ($type == 'fournisseur') {
  224.                     $repo_objet $em->getRepository(Fournisseur::class);
  225.                     $objet      $repo_objet->find($id);
  226.                     $litige->setFournisseur($objet);
  227.                     $url $this->generateUrl('dtc_fournisseur_modifier', ['id' => $objet->getId(), 'tab' => 'litiges']);
  228.                 }
  229.                 if ($litige->getStatut() == "1" && ! is_object($litige->getDateCloture())) {
  230.                     $date = new \Datetime();
  231.                     $litige->setDateCloture($date);
  232.                 } elseif ($litige->getStatut() == "0" or is_null($litige->getStatut())) {
  233.                     $litige->setDateCloture(null);
  234.                 }
  235.                 $em->persist($litige);
  236.                 $em->flush();
  237.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  238.                     return new JsonResponse(
  239.                         ['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]
  240.                     );
  241.                 } else {
  242.                     $this->addFlash('notice'$translator->trans('Litige modifié avec succès !'));
  243.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  244.                 }
  245.             } else {
  246.                 $errors $validator->validate($litige);
  247.                 $rendu  $this->renderView(
  248.                     'Litiges/Litige/ajouter.html.twig',
  249.                     [
  250.                         'form'            => $form->createView(),
  251.                         'errors'          => $errors,
  252.                         'id'              => $id,
  253.                         'type'            => $type,
  254.                         'objet'           => $objet,
  255.                         'articleCommande' => $articleCommande,
  256.                         'litige'          => $litige,
  257.                     ]
  258.                 );
  259.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  260.             }
  261.         }
  262.         $rendu $this->renderView(
  263.             'Litiges/Litige/ajouter.html.twig',
  264.             [
  265.                 'form'            => $form->createView(),
  266.                 'errors'          => $errors,
  267.                 'id'              => $id,
  268.                 'type'            => $type,
  269.                 'objet'           => $objet,
  270.                 'articleCommande' => $articleCommande,
  271.                 'litige'          => $litige,
  272.             ]
  273.         );
  274.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  275.     }
  276.     /**
  277.      * @Route("/litige/supprimer/{objet}/{id}/{type}", name="dtc_litige_supprimer")
  278.      */
  279.     public function supprimerAction(Request $requestLitige $objet$id$typeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  280.     {
  281.         $litige      $objet;
  282.         $titre_modal $translator->trans("Demande de confirmation");
  283.         $user        $this->getUser();
  284.         $get         $request->query->all();
  285.         $form        $this->createForm(SupprimerLitigeType::class, $litige);
  286.         $errors      "";
  287.         $form->handleRequest($request);
  288.         if ($form->isSubmitted()) {
  289.             if ($form->isValid()) {
  290.                 if ($type == 'commandeFournisseur') {
  291.                     $repo_article_commande   $em->getRepository(ArticleCommande::class);
  292.                     $article_commande_litige $repo_article_commande->findBy(["litige" => $litige]);
  293.                     if (count($article_commande_litige) > 0) {
  294.                         foreach ($article_commande_litige as $acl) {
  295.                             $acl->setLitige(null);
  296.                             $em->persist($acl);
  297.                         }
  298.                     }
  299.                     $url $this->generateUrl('dtc_commande_fournisseur_modifier', ['id' => $id'tab' => 'litiges']);
  300.                 } elseif ($type == 'commande') {
  301.                     $repo_article_commande   $em->getRepository(ArticleCommande::class);
  302.                     $article_commande_litige $repo_article_commande->findBy(["litige" => $litige]);
  303.                     if (count($article_commande_litige) > 0) {
  304.                         foreach ($article_commande_litige as $acl) {
  305.                             $acl->setLitige(null);
  306.                             $em->persist($acl);
  307.                         }
  308.                     }
  309.                     $url $this->generateUrl('dtc_commande_modifier', ['id' => $id'tab' => 'litiges']);
  310.                 } elseif ($type == 'client') {
  311.                     $url $this->generateUrl('dtc_client_modifier', ['id' => $id'tab' => 'litiges']);
  312.                 } elseif ($type == 'fournisseur') {
  313.                     $url $this->generateUrl('dtc_fournisseur_modifier', ['id' => $id'tab' => 'litiges']);
  314.                 }
  315.                 $em->remove($litige);
  316.                 $em->flush();
  317.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  318.                     return new JsonResponse(
  319.                         ['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]
  320.                     );
  321.                 } else {
  322.                     $this->addFlash('notice'$translator->trans('Litige supprimé avec succès !'));
  323.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  324.                 }
  325.             } else {
  326.                 $errors $validator->validate($litige);
  327.                 $rendu  $this->renderView(
  328.                     'FO/Supprimer/supprimer.html.twig',
  329.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]
  330.                 );
  331.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  332.             }
  333.         }
  334.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  335.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  336.     }
  337.     /**
  338.      * @Route("", name="")
  339.      */
  340.     public function listerAction(Request $request$id$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  341.     {
  342.         $visibilite_colonne_commande_client      true;
  343.         $visibilite_colonne_client               true;
  344.         $visibilite_colonne_commande_fournisseur true;
  345.         $visibilite_colonne_fournisseur          true;
  346.         if ($type == 'commandeFournisseur') {
  347.             $repo_objet $em->getRepository(CommandeFournisseur::class);
  348.             $objet      $repo_objet->find($id);
  349.             $visibilite_colonne_commande_client      false;
  350.             $visibilite_colonne_client               false;
  351.             $visibilite_colonne_commande_fournisseur false;
  352.             $visibilite_colonne_fournisseur          false;
  353.         } elseif ($type == 'commande') {
  354.             $repo_objet $em->getRepository(Commande::class);
  355.             $objet      $repo_objet->find($id);
  356.             $visibilite_colonne_commande_client      false;
  357.             $visibilite_colonne_client               false;
  358.             $visibilite_colonne_commande_fournisseur false;
  359.             $visibilite_colonne_fournisseur          false;
  360.         } elseif ($type == 'client') {
  361.             $repo_objet $em->getRepository(Client::class);
  362.             $objet      $repo_objet->find($id);
  363.             $visibilite_colonne_commande_client      true;
  364.             $visibilite_colonne_client               false;
  365.             $visibilite_colonne_commande_fournisseur false;
  366.             $visibilite_colonne_fournisseur          false;
  367.         } elseif ($type == 'fournisseur') {
  368.             $repo_objet $em->getRepository(Fournisseur::class);
  369.             $objet      $repo_objet->find($id);
  370.             $visibilite_colonne_commande_client      false;
  371.             $visibilite_colonne_client               false;
  372.             $visibilite_colonne_commande_fournisseur true;
  373.             $visibilite_colonne_fournisseur          false;
  374.         }
  375.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-center""targets" => [0], "visible" => true"orderable" => true"searchable" => true];
  376.         $tableau_class_cellule[] = [
  377.             "className"  => "visible_export colonne_id",
  378.             "targets"    => [1],
  379.             "visible"    => $visibilite_colonne_commande_client,
  380.             "orderable"  => true,
  381.             "searchable" => true,
  382.         ];
  383.         $tableau_class_cellule[] = [
  384.             "className"  => "visible_export colonne_id ",
  385.             "targets"    => [2],
  386.             "visible"    => $visibilite_colonne_client,
  387.             "orderable"  => true,
  388.             "searchable" => true,
  389.         ];
  390.         $tableau_class_cellule[] = [
  391.             "className"  => "visible_export colonne_id ",
  392.             "targets"    => [3],
  393.             "visible"    => $visibilite_colonne_commande_fournisseur,
  394.             "orderable"  => true,
  395.             "searchable" => true,
  396.         ];
  397.         $tableau_class_cellule[] = [
  398.             "className"  => "visible_export colonne_id ",
  399.             "targets"    => [4],
  400.             "visible"    => $visibilite_colonne_fournisseur,
  401.             "orderable"  => true,
  402.             "searchable" => true,
  403.         ];
  404.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id ""targets" => [5], "visible" => true"orderable" => true"searchable" => true];
  405.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right""targets" => [6], "visible" => true"orderable" => true"searchable" => true];
  406.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id ""targets" => [7], "visible" => true"orderable" => true"searchable" => true];
  407.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-center ""targets" => [8], "visible" => true"orderable" => true"searchable" => true];
  408.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id ""targets" => [9], "visible" => true"orderable" => true"searchable" => true];
  409.         $tableau_class_cellule[] = ["orderable" => false"className" => "colonne_id""targets" => [10], "visible" => true];
  410.         $this->datatable($datatable$translator$objet$type);
  411.         return $this->render('Litiges/Litige/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  412.     }
  413.     /**
  414.      * set datatable configs
  415.      *
  416.      * @return \App\Library\Datatable\Util\Datatable
  417.      */
  418.     private function datatable(Datatable $datatableTranslatorInterface $translator$objet ""$type "")
  419.     {
  420.         $type_jointure    'x.'.$type;
  421.         $where            "";
  422.         $parametres_where = [];
  423.         if ($type == "commande" && is_object($objet->getTypeDocumentCommercial()) && $objet->getTypeDocumentCommercial() == TypeDocumentCommercial::COMMANDE) {
  424.             $where            'x.commandeParent = :objet';
  425.             $parametres_where = ['objet' => $objet];
  426.         } elseif ($type == "commande") {
  427.             if (is_object($objet->getCommande())) {
  428.                 $where            $type_jointure.' = :objet OR x.commandeParent = :commandeParent';
  429.                 $parametres_where = ['objet' => $objet'commandeParent' => $objet->getCommande()];
  430.             } else {
  431.                 $where            $type_jointure.' = :objet';
  432.                 $parametres_where = ['objet' => $objet];
  433.             }
  434.         } elseif ($type != "") {
  435.             $where            $type_jointure.' = :objet';
  436.             $parametres_where = ['objet' => $objet];
  437.         }
  438.         $datatable->setDatatableId('dta-litiges')
  439.                   ->setEntity(Litige::class, "x")
  440.                   ->setFields(
  441.                       [
  442.                           //$translator->trans("ID") =>  'x.id',
  443.                           $translator->trans("Date")                 => 'x.date',
  444.                           $translator->trans("Commande client")      => 'c.reference',
  445.                           $translator->trans("Client")               => 'cl.reference',
  446.                           $translator->trans("Commande fournisseur") => 'cf.reference',
  447.                           $translator->trans("Fournisseur")          => 'f.reference',
  448.                           $translator->trans("Référence")            => 'x.reference',
  449.                           $translator->trans("Montant")              => 'x.montant',
  450.                           $translator->trans("Clôturé")              => 'x.statut',
  451.                           $translator->trans("Date clôture")         => 'x.dateCloture',
  452.                           $translator->trans("Commentaire")          => 'x.commentaire',
  453.                           $translator->trans("Actions")              => 'x.id',
  454.                           "_identifier_"                             => 'x.id',
  455.                       ]
  456.                   )
  457.                   ->addJoin('x.commande''c'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  458.                   ->addJoin('x.client''cl'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  459.                   ->addJoin('x.fournisseur''f'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  460.                   ->addJoin('x.commandeFournisseur''cf'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  461.                   ->setRenderers(
  462.                       [
  463.                           => [
  464.                               'view'   => 'FO/DataTable/date.html.twig',
  465.                               'params' => [],
  466.                           ],
  467.                           => [
  468.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  469.                               'params' => [
  470.                                   'edit_route'   => 'dtc_commande_modifier',
  471.                                   'typeDocument' => 'commande',
  472.                               ],
  473.                           ],
  474.                           => [
  475.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  476.                               'params' => [
  477.                                   'edit_route'   => 'dtc_client_modifier',
  478.                                   'typeDocument' => 'client',
  479.                               ],
  480.                           ],
  481.                           => [
  482.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  483.                               'params' => [
  484.                                   'edit_route'   => 'dtc_commande_fournisseur_modifier',
  485.                                   'typeDocument' => 'commandeFournisseur',
  486.                               ],
  487.                           ],
  488.                           => [
  489.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  490.                               'params' => [
  491.                                   'edit_route'   => 'dtc_fournisseur_modifier',
  492.                                   'typeDocument' => 'fournisseur',
  493.                               ],
  494.                           ],
  495.                           6  => [
  496.                               'view'   => 'FO/DataTable/prix.html.twig',
  497.                               'params' => [],
  498.                           ],
  499.                           7  => [
  500.                               'view'   => 'FO/DataTable/statut.html.twig',
  501.                               'params' => [
  502.                                   'edit_route' => 'dtc_litige_statut',
  503.                               ],
  504.                           ],
  505.                           8  => [
  506.                               'view'   => 'FO/DataTable/heure.html.twig',
  507.                               'params' => [
  508.                                   'edit_route' => 'dtc_litige_statut',
  509.                               ],
  510.                           ],
  511.                           10 => [
  512.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  513.                               'params' => [
  514.                                   'edit_route'      => 'dtc_litige_modifier',
  515.                                   'supprimer_route' => 'dtc_litige_supprimer',
  516.                                   'id'              => $objet->getId(),
  517.                                   'type'            => $type,
  518.                                   'entite'          => 'adresse',
  519.                                   'objet'           => Litige::class,
  520.                                   'table'           => "dta-litiges",
  521.                                   'deplier_litige'  => true,
  522.                               ],
  523.                           ],
  524.                       ]
  525.                   )
  526.                   ->setOrder("x.id""desc")
  527.                   ->setSearch(true)
  528.                   ->setSearchFields([1]);
  529.         if ($where != "") {
  530.             $datatable->setWhere($where$parametres_where);
  531.         }
  532.         return $datatable;
  533.     }
  534.     /**
  535.      * Grid action
  536.      * @return Response
  537.      */
  538.     /**
  539.      * @Route("/litige/grid/{id}/{type}", name="dtc_litige_liste_grid")
  540.      */
  541.     public function gridAction(Request $request$id ""$type "dtc_litige_liste_grid"EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  542.     {
  543.         if ($type == 'commandeFournisseur') {
  544.             $repo_objet $em->getRepository(CommandeFournisseur::class);
  545.             $objet      $repo_objet->find($id);
  546.         } elseif ($type == 'commande') {
  547.             $repo_objet $em->getRepository(Commande::class);
  548.             $objet      $repo_objet->find($id);
  549.         } elseif ($type == 'client') {
  550.             $repo_objet $em->getRepository(Client::class);
  551.             $objet      $repo_objet->find($id);
  552.         } elseif ($type == 'fournisseur') {
  553.             $repo_objet $em->getRepository(Fournisseur::class);
  554.             $objet      $repo_objet->find($id);
  555.         }
  556.         return $this->datatable($datatable$translator$objet$type)->execute();
  557.     }
  558.     /**
  559.      * @Route("/litige/statut/{id}", name="dtc_litige_statut")
  560.      */
  561.     public function changeStatutAction(Request $requestLitige $litigeEntityManagerInterface $em)
  562.     {
  563.         if ($litige->getStatut() == 1) {
  564.             $litige->setStatut(0);
  565.         } else {
  566.             $litige->setStatut(1);
  567.         }
  568.         if ($litige->getStatut() == "1") {
  569.             $date = new \Datetime();
  570.             $litige->setDateCloture($date);
  571.         } else {
  572.             $litige->setDateCloture(null);
  573.         }
  574.         $em->persist($litige);
  575.         $em->flush();
  576.         $em->refresh($litige);
  577.         $headers = [
  578.             'Content-Type'                 => 'application/json',
  579.             'Access-Control-Allow-Origin'  => '*',
  580.             'Access-Control-Allow-Methods' => 'POST',
  581.         ];
  582.         return new JsonResponse(['data' => '1'], 200$headers);
  583.     }
  584.     /**
  585.      * @Route("", name="")
  586.      */
  587.     public function detailRetourFournisseurAction(Request            $requestRetourFournisseur $retourFournisseurEntityManagerInterface $emTranslatorInterface $translator,
  588.                                                   ValidatorInterface $validator
  589.     ) {
  590.         $repo_retour_fournisseur_article_commande $em->getRepository(RetourFournisseurArticleCommande::class);
  591.         $retourFournisseurArticleCommande         $repo_retour_fournisseur_article_commande->findBy(["retourFournisseur" => $retourFournisseur]);
  592.         $rendu                                    $this->renderView(
  593.             'GestionComerciale/RetourFournisseur/detail_datatable.html.twig',
  594.             [
  595.                 'retourFournisseur'                => $retourFournisseur,
  596.                 'retourFournisseurArticleCommande' => $retourFournisseurArticleCommande,
  597.             ]
  598.         );
  599.         return new JsonResponse(['rendu' => $rendu,]);
  600.     }
  601.     /**
  602.      * @Route("/litige/ajax/detail/{id}", name="dtc_litige_detail_ajax")
  603.      */
  604.     public function detailLitigeAction(Request $requestLitige $litigeEntityManagerInterface $em)
  605.     {
  606.         $repo_litige_article_commande $em->getRepository(LitigeArticleCommande::class);
  607.         $litigeArticleCommande        $repo_litige_article_commande->findBy(["litige" => $litige]);
  608.         $rendu                        $this->renderView('Litiges/Litige/detail_datatable.html.twig', ['litige' => $litige'litigeArticleCommande' => $litigeArticleCommande]
  609.         );
  610.         return new JsonResponse(['rendu' => $rendu,]);
  611.     }
  612.     /**
  613.      * @Route("", name="")
  614.      */
  615.     public function ____detailLitigeAction(Request $requestLitige $litige)
  616.     {
  617.         $rendu $this->renderView('Litiges/Litige/detail_datatable.html.twig', ['litige' => $litige]);
  618.         return new JsonResponse(['rendu' => $rendu,]);
  619.     }
  620.     /**
  621.      * @Route("/litige/charger-tableau/{id}/{type}", name="dtc_litige_charger_tableau")
  622.      */
  623.     public function chargerTableauAction(Request $request$id "0"$type ""EntityManagerInterface $em
  624.     ) {
  625.         $objet null;
  626.         if ($type == 'commandeFournisseur') {
  627.             $repo_objet $em->getRepository(CommandeFournisseur::class);
  628.             $objet      $repo_objet->find($id);
  629.         } elseif ($type == 'commande') {
  630.             $repo_objet $em->getRepository(Commande::class);
  631.             $objet      $repo_objet->find($id);
  632.         } elseif ($type == 'client') {
  633.             $repo_objet $em->getRepository(Client::class);
  634.             $objet      $repo_objet->find($id);
  635.         } elseif ($type == 'fournisseur') {
  636.             $repo_objet $em->getRepository(Fournisseur::class);
  637.             $objet      $repo_objet->find($id);
  638.         }
  639.         $rendu $this->renderView('Litiges/Litige/charger_tableau.html.twig', ["id" => $id"type" => $type"objet" => $objet]);
  640.         return new JsonResponse(['rendu' => $rendu]);
  641.     }
  642. }