src/Controller/Projets/InterventionsProjetController.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Projets;
  3. use App\Entity\Notes\Note;
  4. use App\Entity\Projets\Intervention;
  5. use App\Entity\Projets\Projet;
  6. use App\Entity\Projets\Tache;
  7. use App\Entity\Utilisateur\Utilisateur;
  8. use App\Library\Datatable\Util\Datatable;
  9. use App\Service\Utilisateur\ColonneTableauService;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Component\Validator\Validator\ValidatorInterface;
  15. use Symfony\Contracts\Translation\TranslatorInterface;
  16. class InterventionsProjetController extends AbstractController
  17. {
  18.     /**
  19.      * @Route("", name="")
  20.      */
  21.     public function listerAction(Request             $request$id$type ""EntityManagerInterface $emColonneTableauService $serviceColonneTableauDatatable $datatable,
  22.                                  TranslatorInterface $translator
  23.     ) {
  24.         $objet '';
  25.         if ($type == 'projet') {
  26.             $repo_objet $em->getRepository(Projet::class);
  27.             $objet      $repo_objet->find($id);
  28.         } elseif ($type == 'utilisateur') {
  29.             $repo_objet $em->getRepository(Utilisateur::class);
  30.             $objet      $repo_objet->find($id);
  31.         } elseif ($type == 'tache') {
  32.             $repo_objet $em->getRepository(Note::class);
  33.             $objet      $repo_objet->find($id);
  34.         }
  35.         $tableau_class_cellule   = [];
  36.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [0], "visible" => true"orderable" => false];
  37.         $tableau_class_cellule[] = [
  38.             "className" => "colonne_id",
  39.             "targets"   => [1],
  40.             // TODO refactor this
  41.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Intervention::class, "id"),
  42.         ];
  43.         $tableau_class_cellule[] = [
  44.             "className" => "colonne_id",
  45.             "targets"   => [2],
  46.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Intervention::class, "libelle"),
  47.         ];
  48.         $tableau_class_cellule[] = [
  49.             "className" => "colonne_id",
  50.             "targets"   => [3],
  51.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Intervention::class, "dateDebut"),
  52.         ];
  53.         $tableau_class_cellule[] = [
  54.             "className" => "colonne_id",
  55.             "targets"   => [4],
  56.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Intervention::class, "dateFin"),
  57.         ];
  58.         $tableau_class_cellule[] = [
  59.             "className" => "colonne_id",
  60.             "targets"   => [5],
  61.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Intervention::class, "utilisateur"),
  62.         ];
  63.         $tableau_class_cellule[] = [
  64.             "className" => "colonne_id",
  65.             "targets"   => [6],
  66.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Intervention::class, "libelleTache"),
  67.         ];
  68.         $this->datatable($datatable$translator$objet$type);
  69.         return $this->render('Projets/InterventionsProjet/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  70.     }
  71.     private function datatable(Datatable $datatableTranslatorInterface $translator$objet$type)
  72.     {
  73.         if ($type == "projet") {
  74.         } else {
  75.         }
  76.         $datatable
  77.             //->setDatatableId('dta-interventions')
  78.             ->setEntity(Note::class, "x")
  79.             ->setFields(
  80.                 [
  81.                     "ID"                                      => 'x.id',
  82.                     $translator->trans("Libellé")             => 'x.message',
  83.                     $translator->trans("Date de début")       => 'x.dateDebut',
  84.                     $translator->trans("Date de fin")         => 'x.dateFin',
  85.                     $translator->trans("Utilisateur")         => 'u.nom',
  86.                     $translator->trans("Libellé de la tâche") => 't.libelle',
  87.                     "Actions"                                 => 'x.id',
  88.                     "_identifier_"                            => 'x.id',
  89.                 ]
  90.             )
  91.             ->addJoin('x.utilisateur''u'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  92.             ->addJoin('x.tache''t'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)//->addJoin('x.reference', 'r', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  93.         ;
  94.         if (is_object($objet)) {
  95.             $datatable->setWhere(
  96.                 'x.'.$type.' = :objet',
  97.                 ['objet' => $objet]
  98.             );
  99.         }
  100.         $datatable->setRenderers(
  101.             [
  102.                 => [
  103.                     'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  104.                     'params' => [
  105.                         'edit_route' => 'dtc_projet_intervention_modifier',
  106.                     ],
  107.                 ],
  108.                 => [
  109.                     'view'   => 'FO/DataTable/titre_note.html.twig',
  110.                     'params' => [
  111.                         'edit_route'      => 'dtc_intervention_modifier',
  112.                         'supprimer_route' => 'dtc_intervention_supprimer',
  113.                         //'id'    => $client->getId(),
  114.                         'width_modal'     => 900,
  115.                         'type'            => "liste",
  116.                         'objet'           => Note::class,
  117.                     ],
  118.                 ],
  119.                 => [
  120.                     'view'   => 'FO/DataTable/heure.html.twig',
  121.                     'params' => [//'edit_route'    => 'dtc_projet_intervention_modifier'
  122.                     ],
  123.                 ],
  124.                 => [
  125.                     'view'   => 'FO/DataTable/heure.html.twig',
  126.                     'params' => [//'edit_route'    => 'dtc_projet_intervention_modifier'
  127.                     ],
  128.                 ],
  129.                 => [
  130.                     'view'   => 'FO/DataTable/utilisateur.html.twig',
  131.                     'params' => [//'edit_route'    => 'dtc_projet_intervention_modifier'
  132.                     ],
  133.                 ],
  134.                 => [
  135.                     'view'   => 'FO/DataTable/actions_modal.html.twig',
  136.                     'params' => [
  137.                         //'edit_route'  => 'dtc_intervention_modifier',
  138.                         'view_route'      => 'dtc_intervention_modifier',
  139.                         'supprimer_route' => 'dtc_intervention_supprimer',
  140.                         //'id'    => $client->getId(),
  141.                         'width_modal'     => 900,
  142.                         'type'            => "liste",
  143.                         'objet'           => Note::class,
  144.                     ],
  145.                 ],
  146.             ]
  147.         )
  148.             /*
  149.             ->setMultiple(
  150.                 array(
  151.                     'delete' => array(
  152.                         'title' => $translator->trans('Non disponible'),
  153.                         'route' => 'dtc_tache_liste'
  154.                     ),
  155.                 )
  156.             )
  157.              *
  158.              */
  159.                   ->setOrder("x.id""desc")
  160.                   ->setSearch(true);
  161.         $datatable->setSearchFields([012345]);
  162.         return $datatable;
  163.     }
  164.     /**
  165.      * @Route("/projet/intervention/grid/{id}", name="dtc_tache_intervention_liste_grid")
  166.      */
  167.     public function gridAction(Request $request$idEntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  168.     {
  169.         $type  $request->query->get('type');
  170.         $objet '';
  171.         if ($type == "projet") {
  172.             $repo  $em->getRepository(Projet::class);
  173.             $objet $repo->find($id);
  174.         } elseif ($type == 'utilisateur') {
  175.             $repo_objet $em->getRepository(Utilisateur::class);
  176.             $objet      $repo_objet->find($id);
  177.         } elseif ($type == 'tache') {
  178.             $repo  $em->getRepository(Tache::class);
  179.             $objet $repo->find($id);
  180.         }
  181.         //echo "TYPE==>".$type;
  182.         return $this->datatable($datatable$translator$objet$type)->execute();
  183.     }
  184. }