src/Controller/Projets/TacheController.php line 559

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Projets;
  3. use App\Entity\Notes\Categorie;
  4. use App\Entity\Notes\Note;
  5. use App\Entity\Projets\Etat;
  6. use App\Entity\Projets\Priorite;
  7. use App\Entity\Projets\Projet;
  8. use App\Entity\Projets\Reference;
  9. use App\Entity\Projets\Tache;
  10. use App\Entity\Utilisateur\Contact;
  11. use App\Entity\Utilisateur\Utilisateur;
  12. use App\Form\Projets\SupprimerTacheType;
  13. use App\Form\Projets\TacheType;
  14. use App\Library\Datatable\Util\Datatable;
  15. use App\Security\Voter\EntityVoter;
  16. use App\Service\FO\Mailer;
  17. use App\Service\Utilisateur\ColonneTableauService;
  18. use Doctrine\ORM\EntityManagerInterface;
  19. use JMS\Serializer\SerializerBuilder;
  20. use Knp\Component\Pager\PaginatorInterface;
  21. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  22. use Symfony\Component\HttpFoundation\Request;
  23. use Symfony\Component\HttpFoundation\JsonResponse;
  24. use Symfony\Component\HttpFoundation\Response;
  25. use Symfony\Component\Routing\Annotation\Route;
  26. use Symfony\Component\Validator\Validator\ValidatorInterface;
  27. use Symfony\Contracts\Translation\TranslatorInterface;
  28. class TacheController extends AbstractController
  29. {
  30.     /**
  31.      * @Route("", name="")
  32.      */
  33.     public function agendaTacheAction(Request $request$param = [], EntityManagerInterface $em)
  34.     {
  35.         //print_r($param);
  36.         $user                 $this->getUser();
  37.         $get                  $request->query->all();
  38.         $repo_categories_note $em->getRepository(Categorie::class);
  39.         $categories           $repo_categories_note->findAll();
  40.         $date    = new \Datetime();
  41.         $semaine $date->format("W");
  42.         $repo_user $em->getRepository(Utilisateur::class);
  43.         if (array_key_exists('equipiers'$param)) {
  44.             $equipiers $repo_user->findBy(["id" => $param["equipiers"]]);
  45.         } else {
  46.             $equipiers $repo_user->findAll();
  47.         }
  48.         //print_r($param);
  49.         return $this->render('Projets/Tache/agenda_tache_2.html.twig', ["parametres" => $param"equipiers" => $equipiers"semaine" => $semaine"categories" => $categories]);
  50.     }
  51.     /**
  52.      * @Route("/tache/ajax/detail/{id}", name="dtc_tache_detail_ajax")
  53.      */
  54.     public function detailAction(Request $requestTache $tache)
  55.     {
  56.         $rendu $this->renderView('Projets/Tache/detail_datatable.html.twig', ['tache' => $tache]);
  57.         return new JsonResponse(['rendu' => $rendu,]);
  58.     }
  59.     /**
  60.      * @Route("/tache/ajax/detail-interventions/{id}", name="dtc_tache_detail_interventions_ajax")
  61.      */
  62.     public function detailInterventionsAction(Request $requestTache $tache)
  63.     {
  64.         $rendu $this->renderView('Projets/Tache/detail_interventions_datatable.html.twig', ['tache' => $tache]);
  65.         return new JsonResponse(['rendu' => $rendu,]);
  66.     }
  67.     /**
  68.      * @Route("/tache/ajax/sous-tache/{id}", name="dtc_tache_sous_tache_ajax")
  69.      */
  70.     public function sousTacheAction(Request $requestTache $tache)
  71.     {
  72.         $rendu $this->renderView('Projets/Tache/sous_taches_datatable.html.twig', ['tache' => $tache]);
  73.         return new JsonResponse(['rendu' => $rendu,]);
  74.     }
  75.     /**
  76.      * @Route("/projet/tache/modal/nouveau", name="dtc_tache_ajouter_modal")
  77.      */
  78.     public function ajouterModalAction(Request $requestEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validatorMailer $emailService)
  79.     {
  80.         $titre_modal $translator->trans("Nouvelle tâche");
  81.         $user        $this->getUser();
  82.         $get         $request->query->all();
  83.         $idProjet    $request->query->get('projet');
  84.         $parentId    $request->query->get('parentId');
  85.         $type        $request->query->get('type');
  86.         if ($type == '') {
  87.             $type 'tache';
  88.         }
  89.         $url '#';
  90.         $url $this->generateUrl('dtc_tache_liste', []);
  91.         $url '';
  92.         $tache = new Tache;
  93.         if (array_key_exists('sujet'$get)) {
  94.             $tache->setLibelle($get["sujet"]);
  95.         }
  96.         /*
  97.         if (array_key_exists('contenu', $get)) {
  98.             $tache->setDescription($get["contenu"]);
  99.         }
  100.         */
  101.         $tache->setUtilisateur($user);
  102.         $tache->setUtilisateur($user);
  103.         $tache->setResponsableInterne($user);
  104.         $tache->setRapporteurInterne($user);
  105.         if ($parentId != "") {
  106.             $parent $em->getRepository(Tache::class)->find($parentId);
  107.             if (is_object($parent)) {
  108.                 $tache->setParent($parent);
  109.                 $tache->setProjet($parent->getProjet());
  110.                 $url $this->generateUrl('dtc_tache_modifier', ['id' => $parentId'tab' => "sousTaches"]);
  111.             }
  112.         }
  113.         if ($idProjet != "") {
  114.             $repo_projet  $em->getRepository(Projet::class);
  115.             $projet_objet $repo_projet->find($idProjet);
  116.             if (is_object($projet_objet)) {
  117.                 $tache->setProjet($projet_objet);
  118.                 $url $this->generateUrl('dtc_projet_modifier', ['id' => $idProjet'tab' => "taches"]);
  119.             }
  120.         }
  121.         if (array_key_exists('redirection'$get)) {
  122.             $url $get["redirection"];
  123.         }
  124.         $form      $this->createForm(TacheType::class, $tache);
  125.         $errorsSup = [];
  126.         $errors    = [];
  127.         $libelle   "";
  128.         $form->handleRequest($request);
  129.         if ($form->isSubmitted()) {
  130.             if ($form->isValid()) {
  131.                 $em->persist($tache);
  132.                 $em->flush();
  133.                 if ($type == 'gantt') {
  134.                     if (is_object($tache->getDateDebutRecalee())) {
  135.                         $startDate $tache->getDateDebutRecalee();
  136.                     } else {
  137.                         $startDate $tache->getDateDebutPrevue();
  138.                     }
  139.                     if (is_object($tache->getParent())) {
  140.                         $parent $tache->getParent()->getId();
  141.                     } else {
  142.                         $parent '';
  143.                     }
  144.                     $task = [];
  145.                     if (is_object($startDate)) {
  146.                         $task = [
  147.                             'id'         => $tache->getId(),
  148.                             'text'       => $tache->getLibelle(),
  149.                             'start_date' => $startDate->format('d-m-Y H:i'),
  150.                             'duration'   => $tache->getNbHeuresAlloues(),
  151.                         ];
  152.                     }
  153.                     return new JsonResponse(
  154.                         [
  155.                             'rendu'  => '',
  156.                             'valide' => '1',
  157.                             'url'    => '',
  158.                             'type'   => $type,
  159.                             'task'   => $task,
  160.                             'parent' => $parent
  161.                             //                                'libelle'=>$libelle,
  162.                             //                                'id_tache'=>$tache->getId()
  163.                         ],
  164.                         200,
  165.                         ['Content-Type' => 'application/json']
  166.                     );
  167.                 } else {
  168.                     if (is_object($tache->setResponsableInterne()) && $tache->setResponsableInterne()->getId() != $user->getId()) {
  169.                         $em->refresh($tache);
  170.                         $emailService->sendMailNouvelleTache($tache$user);
  171.                     } else {
  172.                     }
  173.                     return new JsonResponse(
  174.                         ['rendu' => '''valide' => '1''url' => $url'type' => $type'libelle' => $libelle'id_tache' => $tache->getId()]
  175.                     );
  176.                 }
  177.             } else {
  178.                 $errors $validator->validate($tache);
  179.                 $rendu  $this->renderView(
  180.                     'Projets/Tache/ajouter_modal.html.twig',
  181.                     ['form' => $form->createView(), 'errors' => $errors'errorsSup' => $errorsSup'tache' => $tache]
  182.                 );
  183.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  184.             }
  185.         } else {
  186.         }
  187.         $url $this->generateUrl('dtc_tache_ajouter_modal', [
  188.             'projet'   => $idProjet,
  189.             'parentId' => $parentId,
  190.             'type'     => $type,
  191.         ]);
  192.         $rendu $this->renderView('Projets/Tache/ajouter_modal.html.twig', ['form' => $form->createView(), 'errors' => $errors'errorsSup' => $errorsSup'tache' => $tache]);
  193.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => $url'titre' => $titre_modal]);
  194.     }
  195.     /**
  196.      * @Route("/projet/tache/nouveau", name="dtc_tache_ajouter")
  197.      */
  198.     public function ajouterAction(Request $requestEntityManagerInterface $emValidatorInterface $validator)
  199.     {
  200.         $user  $this->getUser();
  201.         $tache = new Tache;
  202.         $tache->setUtilisateur($user);
  203.         //$tache->setUtilisateur($user);
  204.         //$form = $this->createForm(new TacheType, $tache);
  205.         $form   $this->createForm(TacheType::class, $tache);
  206.         $errors "";
  207.         $form->handleRequest($request);
  208.         if ($form->isSubmitted()) {
  209.             if ($form->isValid()) {
  210.                 $em->persist($tache);
  211.                 $em->flush();
  212.                 $this->addFlash(
  213.                     'notice',
  214.                     'Tache ajoutée avec succès !'
  215.                 );
  216.                 return $this->redirectToRoute('dtc_tache_liste');
  217.             } else {
  218.                 $errors $validator->validate($tache);
  219.             }
  220.         }
  221.         return $this->render('Projets/Tache/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  222.     }
  223.     /**
  224.      * @Route("/projet/tache/modifier/{id}", name="dtc_tache_modifier")
  225.      */
  226.     public function modifierAction(Request   $requestTache $tacheEntityManagerInterface $emValidatorInterface $validatorMailer $emailService,
  227.                                    Datatable $datatableTranslatorInterface $translator
  228.     ) {
  229.         $user $this->getUser();
  230.         $tache->setUtilisateur($user);
  231.         //$tache->setUtilisateur($user);
  232.         //$form = $this->createForm(new TacheType, $tache);
  233.         $get $request->query->all();
  234.         if (array_key_exists('t'$get) && $get["t"] == 1) {
  235.             $repo_etat    $em->getRepository(Etat::class);
  236.             $etatTerminee $repo_etat->find(4);
  237.             $dateJour = new \Datetime();
  238.             $tache->setEtat($etatTerminee);
  239.             $tache->setDateFinReelle($dateJour);
  240.             $tache->setPourcentage("100");
  241.             $em->persist($tache);
  242.             $em->flush();
  243.             $this->addFlash(
  244.                 'notice',
  245.                 'Tache marquée comme terminée réalisée avec succès !'
  246.             );
  247.             return $this->redirectToRoute('dtc_tache_modifier', ["id" => $tache->getId()]);
  248.         } elseif (array_key_exists('t'$get) && $get["t"] == 0) {
  249.             $repo_etat   $em->getRepository(Etat::class);
  250.             $etatEnCours $repo_etat->find(3);
  251.             $dateJour = new \Datetime();
  252.             $tache->setEtat($etatEnCours);
  253.             $tache->setDateFinReelle(null);
  254.             //$tache->setPourcentage("100");
  255.             $em->persist($tache);
  256.             $em->flush();
  257.             $this->addFlash(
  258.                 'notice',
  259.                 'Tache marquée comme non terminée réalisée avec succès !'
  260.             );
  261.             return $this->redirectToRoute('dtc_tache_modifier', ["id" => $tache->getId()]);
  262.         }
  263.         $form   $this->createForm(TacheType::class, $tache);
  264.         $errors "";
  265.         $form->handleRequest($request);
  266.         if ($form->isSubmitted()) {
  267.             $droit $this->isGranted(EntityVoter::UPDATETache::class);
  268.             if ( ! $droit) {
  269.                 $em->refresh($tache);
  270.                 return $this->redirectToRoute('dtc_tache_modifier', ["id" => $tache->getId()]);
  271.             }
  272.             if ($form->isValid()) {
  273.                 if (is_object($tache->getEtat()) && $tache->getEtat()->getDernierEtat() && ! is_object($tache->getDateFinReelle())) {
  274.                     $tache->setDateFinReelle(new \Datetime);
  275.                 }
  276.                 $em->persist($tache);
  277.                 $em->flush();
  278.                 $this->addFlash(
  279.                     'notice',
  280.                     'Tache modifiée avec succès !'
  281.                 );
  282.                 $emailService->sendMailModificationTache($tache$user);
  283.                 return $this->redirectToRoute('dtc_tache_modifier', ["id" => $tache->getId()]);
  284.             } else {
  285.                 $errors $validator->validate($tache);
  286.             }
  287.         }
  288.         $this->datatableInterventions($datatable$translator"tache"$tache);
  289.         return $this->render('Projets/Tache/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'tache' => $tache]);
  290.     }
  291.     /**
  292.      * @Route("/projet/tache/modal/modifier/{id}", name="dtc_tache_modifier_modal")
  293.      */
  294.     public function modifierModalAction(Request            $requestTache $tacheEntityManagerInterface $emTranslatorInterface $translator
  295.                                         ValidatorInterface $validatorMailer $emailServiceDatatable $datatable
  296.     ) {
  297.         $titre_modal $translator->trans("Modifier la tâche");
  298.         $errorsSup   null;
  299.         $user        $this->getUser();
  300.         $tache->setUtilisateur($user);
  301.         $type $request->query->get('type');
  302.         if ($type == '') {
  303.             $type 'tache';
  304.         }
  305.         $get $request->query->all();
  306.         $url '#';
  307.         $url $this->generateUrl('dtc_tache_liste', []);
  308.         if (array_key_exists('t'$get) && $get["t"] == 1) {
  309.             $repo_etat    $em->getRepository(Etat::class);
  310.             $etatTerminee $repo_etat->find(4);
  311.             $dateJour = new \Datetime();
  312.             $tache->setEtat($etatTerminee);
  313.             $tache->setDateFinReelle($dateJour);
  314.             $tache->setPourcentage("100");
  315.             $em->persist($tache);
  316.             $em->flush();
  317.             $this->addFlash(
  318.                 'notice',
  319.                 'Tache marquée comme terminée réalisé avec succès !'
  320.             );
  321.             return $this->redirectToRoute('dtc_tache_modifier', ["id" => $tache->getId()]);
  322.         } elseif (array_key_exists('t'$get) && $get["t"] == 0) {
  323.             $repo_etat   $em->getRepository(Etat::class);
  324.             $etatEnCours $repo_etat->find(3);
  325.             $dateJour = new \Datetime();
  326.             $tache->setEtat($etatEnCours);
  327.             $tache->setDateFinReelle(null);
  328.             //$tache->setPourcentage("100");
  329.             $em->persist($tache);
  330.             $em->flush();
  331.             $this->addFlash(
  332.                 'notice',
  333.                 'Tache marquée comme non terminée réalisé avec succès !'
  334.             );
  335.             return $this->redirectToRoute('dtc_tache_modifier', ["id" => $tache->getId()]);
  336.         }
  337.         $form   $this->createForm(TacheType::class, $tache);
  338.         $errors "";
  339.         $form->handleRequest($request);
  340.         if ($form->isSubmitted()) {
  341.             $droit $this->isGranted(EntityVoter::UPDATETache::class);
  342.             if ( ! $droit) {
  343.                 //return $this->redirectToRoute('dtc_tache_modifier_modal',array("id"=>$tache->getId()));
  344.             }
  345.             if ($form->isValid()) {
  346.                 $em->persist($tache);
  347.                 $em->flush();
  348.                 /*
  349.                 $this->addFlash(
  350.                       'notice',
  351.                       'Tache modifiée avec succès !'
  352.                  );
  353.                  */
  354.                 $emailService->sendMailModificationTache($tache$user);
  355.                 if ($type == 'gantt') {
  356.                     if (is_object($tache->getDateDebutRecalee())) {
  357.                         $startDate $tache->getDateDebutRecalee();
  358.                     } else {
  359.                         $startDate $tache->getDateDebutPrevue();
  360.                     }
  361.                     if (is_object($tache->getParent())) {
  362.                         $parent $tache->getParent()->getId();
  363.                     } else {
  364.                         $parent '';
  365.                     }
  366.                     $task = [];
  367.                     if (is_object($startDate)) {
  368.                         $urlTmp $this->generateUrl('dtc_tache_modifier_modal', ['id' => $tache->getId(), 'type' => 'gantt']);
  369.                         $task   = [
  370.                             'id'   => $tache->getId(),
  371.                             //'text' => $tache->getLibelle(),
  372.                             'text' => '<a class="open-modal-form" data-target="#blocModal" data-toggle="modal" data-link="'.$urlTmp.'" data-width="1100">'.$tache->getLibelle().'</a>',
  373.                             'start_date' => $startDate->format('d-m-Y H:i'),
  374.                             //'duration' => $tache->getNbHeuresAlloues(),
  375.                             'duration'   => $tache->getDuration(),
  376.                         ];
  377.                     }
  378.                     return new JsonResponse(
  379.                         [
  380.                             'rendu'  => '',
  381.                             'valide' => '1',
  382.                             'url'    => '',
  383.                             'type'   => $type,
  384.                             'task'   => $task,
  385.                             'parent' => $parent
  386. //                                'libelle'=>$libelle,
  387. //                                'id_tache'=>$tache->getId()
  388.                         ]
  389.                     );
  390.                 } else {
  391.                     if (is_object($tache->setResponsableInterne()) && $tache->setResponsableInterne()->getId() != $user->getId()) {
  392.                         $em->refresh($tache);
  393.                         $emailService->sendMailNouvelleTache($tache$user);
  394.                     } else {
  395.                     }
  396.                     return new JsonResponse(
  397.                         [
  398.                             'rendu'    => '',
  399.                             'valide'   => '1',
  400.                             'url'      => $url,
  401.                             'type'     => $type,
  402.                             //'libelle'=>$libelle,
  403.                             'id_tache' => $tache->getId(),
  404.                         ]
  405.                     );
  406.                 }
  407.             } else {
  408.                 $errors $validator->validate($tache);
  409.                 $rendu  $this->renderView(
  410.                     'Projets/Tache/ajouter_modal.html.twig',
  411.                     ['form' => $form->createView(), 'errors' => $errors'errorsSup' => $errorsSup'tache' => $tache]
  412.                 );
  413.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  414.             }
  415.         }
  416.         $this->datatableInterventions($datatable$translator"tache"$tache);
  417.         //return $this->render('Projets/Tache/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'tache'=>$tache));
  418.         /*
  419.                 $url = $this->generateUrl('dtc_tache_modifier_modal', array(
  420.                 'projet'=>$idProjet,
  421.                 'parentId'=>$parentId,
  422.                 'type'=>$type
  423.             ));
  424.          * 
  425.          */
  426.         $rendu $this->renderView('Projets/Tache/ajouter_modal.html.twig', ['form' => $form->createView(), 'errors' => $errors'errorsSup' => $errorsSup'tache' => $tache]);
  427.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  428.     }
  429.     /**
  430.      * @Route("/mon-activite", name="dtc_tache_liste")
  431.      */
  432.     public function listerAction(Request   $request$projetId ''$parentId ''$parametres = [], EntityManagerInterface $emColonneTableauService $serviceColonneTableau,
  433.                                  Datatable $datatableTranslatorInterface $translator
  434.     ) {
  435.         $param $request->query->all();
  436.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [0], "visible" => false"orderable" => false];
  437.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [1], "visible" => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "id")];
  438.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [2], "visible" => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "libelle")];
  439.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [3], "visible" => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "projet")];
  440.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [4], "visible" => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "date")];
  441.         $tableau_class_cellule[] = [
  442.             "className" => "colonne_id",
  443.             "targets"   => [5],
  444.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "dateDebutPrevue"),
  445.         ];
  446.         $tableau_class_cellule[] = [
  447.             "className" => "colonne_id",
  448.             "targets"   => [6],
  449.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "dateFinPrevue"),
  450.         ];
  451.         $tableau_class_cellule[] = [
  452.             "className" => "colonne_id",
  453.             "targets"   => [7],
  454.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "dateFinReelle"),
  455.         ];
  456.         $tableau_class_cellule[] = [
  457.             "className" => "colonne_id",
  458.             "targets"   => [8],
  459.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "heuresAllouees"),
  460.         ];
  461.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [9], "visible" => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "etat")];
  462.         $tableau_class_cellule[] = [
  463.             "className" => "colonne_id",
  464.             "targets"   => [10],
  465.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "origine"),
  466.         ];
  467.         $tableau_class_cellule[] = [
  468.             "className" => "colonne_id",
  469.             "targets"   => [11],
  470.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "priorite"),
  471.         ];
  472.         $tableau_class_cellule[] = [
  473.             "className" => "colonne_id",
  474.             "targets"   => [12],
  475.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "avancement"),
  476.         ];
  477.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [13], "visible" => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "rapint")];
  478.         $tableau_class_cellule[] = [
  479.             "className" => "colonne_id",
  480.             "targets"   => [14],
  481.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "rapclient"),
  482.         ];
  483.         $tableau_class_cellule[] = [
  484.             "className" => "colonne_id",
  485.             "targets"   => [15],
  486.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "respint"),
  487.         ];
  488.         $tableau_class_cellule[] = [
  489.             "className" => "colonne_id",
  490.             "targets"   => [16],
  491.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Tache::class, "respclient"),
  492.         ];
  493.         //$tableau_class_cellule[]=array("className"=>"colonne_id","targets"=>array(15),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Tache::class,"dateLivraisonRelle"));
  494.         $repo_user $em->getRepository(Utilisateur::class);
  495.         $repo_etat $em->getRepository(Etat::class);
  496.         $equipiers $repo_user->findAll();
  497.         $etats     $repo_etat->findAll();
  498.         $user $this->getUser();
  499.         $param $request->query->all();
  500.         $param array_merge($param$parametres);
  501.         if (array_key_exists('equipiers'$param)) {
  502.             $choix_equipiers $param["equipiers"];
  503.         } elseif ($projetId != '' || $parentId != '') {
  504.             $choix_equipiers    = [];
  505.             $param["equipiers"] = [];
  506.         } else {
  507.             $choix_equipiers    = [$user->getId()];
  508.             $param["equipiers"] = $choix_equipiers;
  509.         }
  510.         //$choix_equipiers = array();
  511.         //$param["equipiers"] = array();
  512.         if (array_key_exists('filtre-etat'$param)) {
  513.             $choix_etats $param["filtre-etat"];
  514.         } else {
  515.             //$choix_etats = array("1","2","3");
  516.             $choix_etats                  = ["1"];//en attente noogaa
  517.             $param["filtre-etat"]         = $choix_etats;
  518.             $param["filtre-etat-masquer"] = true;
  519.         }
  520.         $this->datatable($request$datatable$translator$projetId$parentId);
  521.         $respExt = [];
  522.         if ($projetId != '') {
  523.             //$respExt = $em->getRepository('DTCUtilisateurBundle:Contact')->getContactByProjet($projetId);
  524.             $respExt $em->getRepository(Contact::class)->getContactByClientProjet($projetId);
  525.             //var_dump('test');
  526.             //var_dump($respExt);
  527.         }
  528.         if ($parentId != '') {
  529.             $tacheTmp $em->getRepository(Tache::class)->find($parentId);
  530.             if (is_object($tacheTmp) && is_object($tacheTmp->getProjet())) {
  531.                 //$respExt = $em->getRepository('DTCUtilisateurBundle:Contact')->getContactByProjet($tacheTmp->getProjet()->getId());
  532.                 $respExt $em->getRepository(Contact::class)->getContactByClientProjet($tacheTmp->getProjet()->getId());
  533.             }
  534.         }
  535.         //$respExt = $em->getRepository('DTCUtilisateurBundle:Contact')->findAll();
  536.         //$rapExt = $em->getRepository('DTCUtilisateurBundle:Utilisateur')->findAll();
  537.         if ($parentId == '' && $projetId == '') {
  538.             return $this->render('Projets/Tache/lister.html.twig', [
  539.                 'choix_etats'         => $choix_etats,
  540.                 'etats'               => $etats,
  541.                 'parametres'          => $param,
  542.                 "choix_equipiers"     => $choix_equipiers,
  543.                 "equipiers"           => $equipiers,
  544.                 'tableauClassColonne' => $tableau_class_cellule,
  545.                 'parentId'            => $parentId,
  546.                 'projetId'            => $projetId,
  547.                 'filtres'             => [
  548.                     [
  549.                         'titre'    => 'Etat',
  550.                         'entity'   => 'etat',
  551.                         'entities' => $em->getRepository(Etat::class)->findAll(),
  552.                     ],
  553.                     [
  554.                         'titre'    => 'Origine',
  555.                         'entity'   => 'origine',
  556.                         'entities' => $em->getRepository(Reference::class)->findAll(),
  557.                     ],
  558.                     [
  559.                         'titre'    => 'Priorité',
  560.                         'entity'   => 'priorite',
  561.                         'entities' => $em->getRepository(Priorite::class)->findAll(),
  562.                     ],
  563.                     [
  564.                         'titre'    => 'Rap int',
  565.                         'entity'   => 'rapporteurInterne',
  566.                         'entities' => $em->getRepository(Utilisateur::class)->findAll(),
  567.                     ],
  568.                     [
  569.                         'titre'    => 'Rap client',
  570.                         'entity'   => 'rapporteurExterne',
  571.                         'entities' => $respExt,
  572.                     ],
  573.                     [
  574.                         'titre'    => 'Resp int',
  575.                         'entity'   => 'responsableInterne',
  576.                         'entities' => $em->getRepository(Utilisateur::class)->findAll(),
  577.                     ],
  578.                     [
  579.                         'titre'    => 'Resp client',
  580.                         'entity'   => 'responsableExterne',
  581.                         'entities' => $respExt,
  582.                     ]
  583.                     /*
  584.                     'Etat' => $em->getRepository('DTCProjetsBundle:Etat')->findAll(),
  585.                     'Origine' => $em->getRepository('DTCProjetsBundle:Reference')->findAll(),
  586.                     'Priorité' => $em->getRepository('DTCProjetsBundle:Priorite')->findAll(),
  587.                      *
  588.                      */
  589.                 ],
  590.             ]);
  591.         } else {
  592.             return $this->render('Projets/Tache/datatable.html.twig', [
  593.                 'choix_etats'         => $choix_etats,
  594.                 'etats'               => $etats,
  595.                 'parametres'          => $param,
  596.                 "choix_equipiers"     => $choix_equipiers,
  597.                 "equipiers"           => $equipiers,
  598.                 'tableauClassColonne' => $tableau_class_cellule,
  599.                 'parentId'            => $parentId,
  600.                 'projetId'            => $projetId,
  601.                 'filtres'             => [
  602.                     [
  603.                         'titre'    => 'Etat',
  604.                         'entity'   => 'etat',
  605.                         'entities' => $em->getRepository(Etat::class)->findAll(),
  606.                     ],
  607.                     [
  608.                         'titre'    => 'Origine',
  609.                         'entity'   => 'origine',
  610.                         'entities' => $em->getRepository(Reference::class)->findAll(),
  611.                     ],
  612.                     [
  613.                         'titre'    => 'Priorité',
  614.                         'entity'   => 'priorite',
  615.                         'entities' => $em->getRepository(Priorite::class)->findAll(),
  616.                     ],
  617.                     /*
  618.                                 array(
  619.                                     'titre' => 'Equipier',
  620.                                     'entity' => 'equipier',
  621.                                     'entities' => $em->getRepository('DTCUtilisateurBundle:Utilisateur')->findAll()
  622.                                 )
  623.                      * 
  624.                      */
  625.                     [
  626.                         'titre'    => 'Rap int',
  627.                         'entity'   => 'rapporteurInterne',
  628.                         'entities' => $em->getRepository(Utilisateur::class)->findAll(),
  629.                     ],
  630.                     [
  631.                         'titre'    => 'Rap ext',
  632.                         'entity'   => 'rapporteurExterne',
  633.                         'entities' => $respExt,
  634.                     ],
  635.                     [
  636.                         'titre'    => 'Resp int',
  637.                         'entity'   => 'responsableInterne',
  638.                         'entities' => $em->getRepository(Utilisateur::class)->findAll(),
  639.                     ],
  640.                     [
  641.                         'titre'    => 'Resp ext',
  642.                         'entity'   => 'responsableExterne',
  643.                         'entities' => $respExt,
  644.                     ],
  645.                 ],
  646.             ]);
  647.         }
  648.     }
  649.     /**
  650.      * set datatable configs
  651.      *
  652.      * @return \App\Library\Datatable\Util\Datatable
  653.      */
  654.     private function datatable(Request $requestDatatable $datatableTranslatorInterface $translator$projetId ''$parentId '')//, $parametres=array())
  655.     {
  656.         $param $request->query->all();
  657.         //$param = array_merge($param, $parametres);
  658.         $user $this->getUser();
  659.         //print_r($param);
  660.         $choix_equipiers = [];
  661.         if (array_key_exists('equipiers'$param) && count($param["equipiers"])) {
  662.             $choix_equipiers[] = $param["equipiers"];
  663.         } elseif ($projetId != '' or $parentId != '') {
  664.             //afficher tous les equipiers par défaut
  665.         } else {
  666.             $choix_equipiers[] = $user->getId();
  667.         }
  668.         //var_dump($choix_equipiers);
  669.         $datatable->setEntity(Tache::class, "x")
  670.                   ->setFields(
  671.                       [
  672.                           "ID"                                     => 'x.id',
  673.                           $translator->trans("Libellé")            => 'x.libelle',
  674.                           $translator->trans("Projet")             => 'p.libelle',
  675.                           $translator->trans("Date de création")   => 'x.date',
  676.                           $translator->trans("Date début prévue")  => 'x.dateDebutPrevue',
  677.                           $translator->trans("Date fin")           => 'x.dateFinPrevue',
  678.                           $translator->trans("Date de fin réelle") => 'x.dateFinReelle',
  679.                           $translator->trans("nb heures allouées") => 'x.nbHeuresAlloues',
  680.                           $translator->trans("nb heures réalisées") => 'x.id',
  681.                           $translator->trans("Etat")        => 'e.libelle',
  682.                           $translator->trans("Origine")     => 'r.libelle',
  683.                           //$translator->trans("Réf")      => 'r.libelle',
  684.                           $translator->trans("Priorité")    => 'pr.libelle',
  685.                           $translator->trans("Avancement")  => 'x.pourcentage',
  686.                           $translator->trans("Rap int")     => 'ri.reference',
  687.                           $translator->trans("Rap client")  => 're.nom',
  688.                           $translator->trans("Resp int")    => 'rsi.reference',
  689.                           $translator->trans("Resp client") => 'rse.nom',
  690.                           //$translator->trans("Date Mail")      => 'x.dateMail',
  691.                           //$translator->trans("Fin Prévue")      => 'x.dateFinPrevue',
  692.                           //$translator->trans("Fin Réelle")      => 'x.dateFinReelle',
  693.                           "Actions"                         => 'x.id',
  694.                           "_identifier_"                    => 'x.id',
  695.                       ]
  696.                   )
  697.                   ->addJoin('x.etat''e'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  698.                   ->addJoin('x.reference''r'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  699.                   ->addJoin('x.projet''p'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  700.                   ->addJoin('x.priorite''pr'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  701.                   ->addJoin('x.rapporteurInterne''ri'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  702.                   ->addJoin('x.rapporteurExterne''re'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  703.                   ->addJoin('x.responsableInterne''rsi'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  704.                   ->addJoin('x.responsableExterne''rse'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  705.                   ->setRenderers(
  706.                       [
  707.                           => [
  708.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  709.                               'params' => [
  710.                                   'edit_route' => 'dtc_tache_modifier',
  711.                               ],
  712.                           ],
  713.                           => [
  714.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  715.                               'params' => [
  716.                                   'edit_route' => 'dtc_tache_modifier',
  717.                                   //'deplierSousTache' => true,
  718.                                   'filAriane'  => 'parent',
  719.                               ],
  720.                           ],
  721.                           => [
  722.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  723.                               'params' => [
  724.                                   'edit_route'   => 'dtc_projet_modifier',
  725.                                   'typeDocument' => 'Projet',
  726.                               ],
  727.                           ],
  728.                           => [
  729.                               'view' => 'FO/DataTable/heure.html.twig',
  730.                           ],
  731.                           => [
  732.                               'view' => 'FO/DataTable/heure.html.twig',
  733.                           ],
  734.                           => [
  735.                               'view' => 'FO/DataTable/heure.html.twig',
  736.                           ],
  737.                           => [
  738.                               'view' => 'FO/DataTable/heure.html.twig',
  739.                           ],
  740.                           => [
  741.                               'view' => 'FO/DataTable/nb_heures_realisees_taches.html.twig',
  742.                           ],
  743.                           9  => [
  744.                               'view' => 'FO/DataTable/etat_projet.html.twig',
  745.                           ],
  746.                           10 => [
  747.                               'view' => 'FO/DataTable/reference_projet.html.twig',
  748.                           ],
  749.                           11 => [
  750.                               'view' => 'FO/DataTable/priorite_projet.html.twig',
  751.                           ],
  752.                           12 => [
  753.                               'view' => 'FO/DataTable/progress.html.twig',
  754.                           ],
  755.                           13 => [
  756.                               'view'   => 'FO/DataTable/utilisateur.html.twig',
  757.                               'params' => [],
  758.                           ],
  759.                           14 => [
  760.                               'view'   => 'FO/DataTable/contact.html.twig',
  761.                               'params' => [
  762.                                   'rapporteurExterne' => true,
  763.                               ],
  764.                           ],
  765.                           15 => [
  766.                               'view'   => 'FO/DataTable/utilisateur_2.html.twig',
  767.                               'params' => [
  768.                                   "type" => "responsableInterne",
  769.                               ],
  770.                           ],
  771.                           16 => [
  772.                               'view'   => 'FO/DataTable/contact.html.twig',
  773.                               'params' => [
  774.                                   'responsableExterne' => true,
  775.                               ],
  776.                           ],
  777.                           /*
  778.                           7 => array(
  779.                               'view' => 'FO/DataTable/edit_texte.html.twig',
  780.                               'params' => array(
  781.                                       'objet'    => 'DTCProjetsBundle:Tache',
  782.                                       'champ'    => 'setPourcentage',
  783.                                   ),
  784.                           ),
  785.                            *
  786.                            */
  787.                           17 => [
  788.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  789.                               'params' => [
  790.                                   //'edit_route'    => 'dtc_tache_modifier',
  791.                                   'edit_route'                => 'dtc_tache_modifier_modal',
  792.                                   'width_modal'               => '1100',
  793.                                   'objet'                     => Tache::class,
  794.                                   'supprimer_route'           => 'dtc_tache_supprimer',
  795.                                   'type'                      => 'projet',
  796.                                   //'deplierSousTache' => true,
  797.                                   'deplierTacheInterventions' => true,
  798.                                   'addTacheIntervention'      => true,
  799.                               ],
  800.                           ],
  801.                       ]
  802.                   )
  803.             //->setOrder("x.id", "desc")
  804.             //->setOrder("x.dateFinPrevue", "desc")
  805.             //->setOrder("x.dateDebutPrevue", "asc")
  806.             //->setOrder(array("x.dateDebutPrevue" => "asc", "pr.id"=>"ASC"))
  807.                   ->setSearch(true)
  808.                   ->setMultiple(
  809.                       [
  810.                           'delete' => [
  811.                               'title' => $translator->trans('Non disponible'),
  812.                               'route' => 'dtc_tache_liste',
  813.                           ],
  814.                       ]
  815.                   );
  816.         $where      '';
  817.         $parameters = [];
  818.         if ($projetId != '' or $parentId != '') {
  819.             $datatable->setOrder("x.dateFinPrevue asc, pr.id""asc");
  820.             //$datatable->addOrder("pr.id", "ASC");
  821.         } else {
  822.             $datatable->setOrder("x.dateDebutPrevue""asc");
  823.         }
  824.         if (count($choix_equipiers) > && array_key_exists('0'$choix_equipiers)) {
  825.             $where                         .= "x.responsableInterne in (:choix_equipiers) ";
  826.             $parameters["choix_equipiers"] = $choix_equipiers[0];
  827.         }
  828.         if (array_key_exists('parametres'$param)) {
  829.             /*
  830.             if(array_key_exists('etats', $param["parametres"]) and count($param["parametres"]["etats"]) > 0) {
  831.                 if($where != "") $where .= " AND ";
  832.                 $where .= "x.etat in (:choix_etats) ";
  833.                 $parameters["choix_etats"]=$param["parametres"]["etats"];
  834.             }
  835.                    */
  836.             if (array_key_exists('filtre-etat'$param["parametres"]) and count($param["parametres"]["filtre-etat"]) > 0) {
  837.                 if ($where != "") {
  838.                     $where .= " AND ";
  839.                 }
  840.                 $where                    .= "x.etat in (:choix_etat) ";
  841.                 $parameters["choix_etat"] = $param["parametres"]["filtre-etat"];
  842.             }
  843.             if (array_key_exists('filtre-origine'$param["parametres"]) and count($param["parametres"]["filtre-origine"]) > 0) {
  844.                 if ($where != "") {
  845.                     $where .= " AND ";
  846.                 }
  847.                 $where                       .= "x.reference in (:choix_origine) ";
  848.                 $parameters["choix_origine"] = $param["parametres"]["filtre-origine"];
  849.             }
  850.             if (array_key_exists('filtre-priorite'$param["parametres"]) and count($param["parametres"]["filtre-priorite"]) > 0) {
  851.                 if ($where != "") {
  852.                     $where .= " AND ";
  853.                 }
  854.                 $where                        .= "x.priorite in (:choix_priorite) ";
  855.                 $parameters["choix_priorite"] = $param["parametres"]["filtre-priorite"];
  856.             }
  857.             if (array_key_exists('filtre-responsableInterne'$param["parametres"]) and count($param["parametres"]["filtre-responsableInterne"]) > 0) {
  858.                 if ($where != "") {
  859.                     $where .= " AND ";
  860.                 }
  861.                 $where                                  .= "x.responsableInterne in (:choix_responsableInterne) ";
  862.                 $parameters["choix_responsableInterne"] = $param["parametres"]["filtre-responsableInterne"];
  863.             }
  864.             if (array_key_exists('filtre-responsableExterne'$param["parametres"]) and count($param["parametres"]["filtre-responsableExterne"]) > 0) {
  865.                 if ($where != "") {
  866.                     $where .= " AND ";
  867.                 }
  868.                 $where                                  .= "x.responsableExterne in (:choix_responsableExterne) ";
  869.                 $parameters["choix_responsableExterne"] = $param["parametres"]["filtre-responsableExterne"];
  870.             }
  871.             if (array_key_exists('filtre-rapporteurInterne'$param["parametres"]) and count($param["parametres"]["filtre-rapporteurInterne"]) > 0) {
  872.                 if ($where != "") {
  873.                     $where .= " AND ";
  874.                 }
  875.                 $where                                 .= "x.rapporteurInterne in (:choix_rapporteurInterne) ";
  876.                 $parameters["choix_rapporteurInterne"] = $param["parametres"]["filtre-rapporteurInterne"];
  877.             }
  878.             if (array_key_exists('filtre-rapporteurExterne'$param["parametres"]) and count($param["parametres"]["filtre-rapporteurExterne"]) > 0) {
  879.                 if ($where != "") {
  880.                     $where .= " AND ";
  881.                 }
  882.                 $where                                 .= "x.rapporteurExterne in (:choix_rapporteurExterne) ";
  883.                 $parameters["choix_rapporteurExterne"] = $param["parametres"]["filtre-rapporteurExterne"];
  884.             }
  885.             if (array_key_exists('date_debut'$param["parametres"]) and $param["parametres"]["date_debut"] != "") {
  886.                 $param["parametres"]["date_debut"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_debut"]);
  887.                 $param["parametres"]["date_debut"]->setTime(000000);
  888.                 $parameters["date_debut"] = $param["parametres"]["date_debut"];
  889.                 if ($where != "") {
  890.                     $where .= " AND ";
  891.                 }
  892.                 $where .= "x.dateDebutPrevue >= :date_debut";
  893.             }
  894.             if (array_key_exists('date_fin'$param["parametres"]) and $param["parametres"]["date_fin"] != "") {
  895.                 $param["parametres"]["date_fin"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_fin"]);
  896.                 $param["parametres"]["date_fin"]->setTime(235959);
  897.                 $parameters["date_fin"] = $param["parametres"]["date_fin"];
  898.                 if ($where != "") {
  899.                     $where .= " AND ";
  900.                 }
  901.                 $where .= "x.dateFinPrevue <= :date_fin";
  902.             }
  903.         }
  904.         if ($parentId != '') {
  905.             if (trim($where) != '') {
  906.                 $where .= ' AND ';
  907.             }
  908.             $where                  .= 'x.parent = :parentId';
  909.             $parameters['parentId'] = $parentId;
  910.         } else {
  911.             //if(trim($where) != '') $where .= ' AND ';
  912.             //$where .= 'x.parent IS NULL';
  913.         }
  914.         if ($projetId != '') {
  915.             if (trim($where) != '') {
  916.                 $where .= ' AND ';
  917.             }
  918.             $where                  .= 'x.projet = :projetId';
  919.             $parameters['projetId'] = $projetId;
  920.         }
  921.         if ($projetId == '' and $parentId == '') {
  922.             //Mon activité
  923.             if (trim($where) != '') {
  924.                 $where .= ' AND ';
  925.             }
  926.             $where .= 'x.nbHeuresAlloues > 0';
  927.         }
  928.         //echo "<br/><br/>".$where."<br/><br/>";
  929.         //print_r($parameters);print_r($where);
  930.         if ($where != '') {
  931.             $datatable->setWhere($where$parameters);
  932.         }
  933.         //$datatable->setSearchFields(array(0,1,2,3,4,5));
  934.         return $datatable;
  935.     }
  936.     /**
  937.      * Grid action
  938.      * @return Response
  939.      */
  940.     /**
  941.      * @Route("/projet/tache/grid", name="dtc_tache_liste_grid")
  942.      */
  943.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  944.     {
  945.         $parentId $request->query->get('parentId');
  946.         $projetId $request->query->get('projetId');
  947.         //$parametres = $request->query->get('parametres');
  948.         return $this->datatable($request$datatable$translator$projetId$parentId)->execute();
  949.     }
  950.     /**
  951.      * Grid action
  952.      * @return Response
  953.      */
  954.     /**
  955.      * @Route("", name="")
  956.      */
  957.     public function gridInterventionsAction(Request $request$idEntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  958.     {
  959.         $type $request->query->get('type');
  960.         if ($type == "projet") {
  961.             $repo  $em->getRepository(Projet::class);
  962.             $objet $repo->find($id);
  963.         } else {
  964.             $repo  $em->getRepository(Tache::class);
  965.             $objet $repo->find($id);
  966.         }
  967.         //echo "TYPE==>".$type;
  968.         return $this->datatableInterventions($datatable$translator$objet$type)->execute();
  969.     }
  970.     /**
  971.      * set datatable configs
  972.      *
  973.      * @return \App\Library\Datatable\Util\Datatable
  974.      */
  975.     private function datatableInterventions(Datatable $datatableTranslatorInterface $translator$objet$type "")
  976.     {
  977.         //echo "HYHYHYH";
  978.         /*
  979.         if($type == "projet") {
  980.         }
  981.         else {
  982.         }
  983.         */
  984.         if (is_object($type)) {
  985.             $type "tache";
  986.         }
  987.         $datatable
  988.             ->setDatatableId('dta-interventions')
  989.             ->setEntity(Note::class, "x")
  990.             ->setFields(
  991.                 [
  992.                     "ID"                              => 'x.id',
  993.                     $translator->trans("Libellé")     => 'x.message',
  994.                     $translator->trans("Début")       => 'x.dateDebut',
  995.                     $translator->trans("Fin")         => 'x.dateFin',
  996.                     $translator->trans("Utilisateur") => 'u.nom',
  997.                     "Actions"      => 'x.id',
  998.                     "_identifier_" => 'x.id',
  999.                 ]
  1000.             )
  1001.             ->addJoin('x.utilisateur''u'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  1002.             //->addJoin('x.reference', 'r', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  1003.             ->setWhere(
  1004.                 'x.'.$type.' = :objet',
  1005.                 ['objet' => $objet]
  1006.             )
  1007.             ->setRenderers(
  1008.                 [
  1009.                     => [
  1010.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  1011.                         'params' => [
  1012.                             'edit_route' => 'dtc_projet_intervention_modifier',
  1013.                         ],
  1014.                     ],
  1015.                     => [
  1016.                         'view'   => 'FO/DataTable/titre_note.html.twig',
  1017.                         'params' => [
  1018.                             'edit_route'      => 'dtc_intervention_modifier',
  1019.                             'supprimer_route' => 'dtc_intervention_supprimer',
  1020.                             //'id'    => $client->getId(),
  1021.                             'width_modal'     => 900,
  1022.                             'type'            => "liste",
  1023.                             'objet'           => Note::class,
  1024.                         ],
  1025.                     ],
  1026.                     => [
  1027.                         'view'   => 'FO/DataTable/heure.html.twig',
  1028.                         'params' => [//'edit_route'    => 'dtc_projet_intervention_modifier'
  1029.                         ],
  1030.                     ],
  1031.                     => [
  1032.                         'view'   => 'FO/DataTable/heure.html.twig',
  1033.                         'params' => [//'edit_route'    => 'dtc_projet_intervention_modifier'
  1034.                         ],
  1035.                     ],
  1036.                     => [
  1037.                         'view'   => 'FO/DataTable/utilisateur.html.twig',
  1038.                         'params' => [//'edit_route'    => 'dtc_projet_intervention_modifier'
  1039.                         ],
  1040.                     ],
  1041.                     => [
  1042.                         'view'   => 'FO/DataTable/actions_modal.html.twig',
  1043.                         'params' => [
  1044.                             'edit_route'      => 'dtc_intervention_modifier',
  1045.                             'supprimer_route' => 'dtc_intervention_supprimer',
  1046.                             //'id'    => $client->getId(),
  1047.                             'width_modal'     => 900,
  1048.                             'type'            => "liste",
  1049.                             'objet'           => Note::class,
  1050.                         ],
  1051.                     ],
  1052.                 ]
  1053.             )
  1054.             /*
  1055.             ->setMultiple(
  1056.                 array(
  1057.                     'delete' => array(
  1058.                         'title' => $translator->trans('Non disponible'),
  1059.                         'route' => 'dtc_tache_liste'
  1060.                     ),
  1061.                 )
  1062.             )
  1063.              *
  1064.              */
  1065.             ->setOrder("x.id""desc")
  1066.             ->setSearch(true);
  1067.         $datatable->setSearchFields([13]);
  1068.         return $datatable;
  1069.     }
  1070.     /**
  1071.      * @Route("/projet/tache/recherche", name="dtc_tache_recherche")
  1072.      */
  1073.     public function rechercheAction(Request $requestEntityManagerInterface $emTranslatorInterface $translatorPaginatorInterface $paginator)
  1074.     {
  1075.         $q       $request->query->get('q');
  1076.         $projet  $request->query->get('projet');
  1077.         $repo    $em->getRepository(Tache::class);
  1078.         $results $repo->getRechercheTache(trim($q), $projet);
  1079.         $tabClient = [];
  1080.         $pagination $paginator->paginate(
  1081.             $results/* query NOT result */
  1082.             $request->query->getInt('page'1)/*page number*/,
  1083.             10/*limit per page*/
  1084.         );
  1085.         $pagination_results $pagination->getItems();
  1086.         $option_placeholde  = ["libelle" => $translator->trans("Sélectionnez"), "id" => ""];
  1087.         if ($request->query->getInt('page'1) == 1) {
  1088.             array_unshift($pagination_results$option_placeholde);
  1089.         }
  1090.         $pagination->setItems($pagination_results);
  1091.         $serializer SerializerBuilder::create()->build();
  1092.         return JsonResponse::fromJsonString($serializer->serialize($pagination'json'));
  1093.     }
  1094.     /**
  1095.      * @Route("/tache/supprimer/{objet}/{type}", name="dtc_tache_supprimer")
  1096.      */
  1097.     public function supprimerAction(Request $requestTache $objet$typeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  1098.     {
  1099.         $titre_modal $translator->trans("Demande de confirmation");
  1100.         $user        $this->getUser();
  1101.         $form   $this->createForm(SupprimerTacheType::class, $objet);
  1102.         $errors "";
  1103.         $form->handleRequest($request);
  1104.         if ($form->isSubmitted()) {
  1105.             if ($form->isValid()) {
  1106.                 $em->remove($objet);
  1107.                 $em->flush();
  1108.                 $this->addFlash(
  1109.                     'notice',
  1110.                     'Tâche supprimée avec succès !'
  1111.                 );
  1112.                 $url '';
  1113.                 if ($type == 'projet') {
  1114.                     $url $this->generateUrl('dtc_projet_modifier', ['id' => $objet->getProjet()->getId(), 'tab' => 'taches']);
  1115.                 }
  1116.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  1117.             } else {
  1118.                 $errors $validator->validate($objet);
  1119.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'type' => $type'objet' => $objet]);
  1120.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  1121.             }
  1122.         }
  1123.         if (count($objet->getInterventions()) > 0) {
  1124.             $errors[] = ['message' => 'Vous ne pouvez pas supprimer une tâche pour laquelle des interventions ont été saisies!'];
  1125.         }
  1126.         if (count($objet->getEnfants()) > 0) {
  1127.             $errors[] = ['message' => 'Vous ne pouvez pas supprimer une tâche pour laquelle des sous-tâches existent!'];
  1128.         }
  1129.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'type' => $type'objet' => $objet]);
  1130.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  1131.     }
  1132. }