src/Controller/Kanban/ActiviteController.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Kanban;
  3. use App\Entity\Kanban\Fiche;
  4. use App\Entity\Notes\Categorie;
  5. use App\Entity\Notes\Note;
  6. use App\Entity\Notes\Statut;
  7. use App\Form\Notes\NoteType;
  8. use App\Library\Datatable\Util\Datatable;
  9. use App\Service\Notes\NoteGoogleAgendaService;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Symfony\Component\Validator\Validator\ValidatorInterface;
  17. use Symfony\Contracts\Translation\TranslatorInterface;
  18. class ActiviteController extends AbstractController
  19. {
  20.     /**
  21.      * @Route("", name="")
  22.      */
  23.     public function listerAction(Request $request$id$type 'fiche'Datatable $datatableTranslatorInterface $translator)
  24.     {
  25.         //dump($request);
  26.         //dump($request->attributes->get('table'));
  27.         $table $request->attributes->get('table');
  28.         /*
  29.         if($type == 'commande'}{
  30.             $objet = $this->getDoctrine()->getRepository(Commande::class)->find($id);
  31.         } else {
  32.             $objet = $this->getDoctrine()->getRepository('DTCKanbanBundle:Fiche')->find($id);
  33.         }
  34.         */
  35.         $tableau_class_cellule   = [];
  36.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id ""targets" => [0], "visible" => false"orderable" => true"searchable" => true];
  37.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [1], "visible" => false"orderable" => true"searchable" => true];
  38.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id ""targets" => [2], "visible" => true"orderable" => true"searchable" => true];
  39.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id ""targets" => [3], "visible" => true"orderable" => true"searchable" => true];
  40.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id ""targets" => [4], "visible" => true"orderable" => true"searchable" => true];
  41.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id ""targets" => [5], "visible" => true"orderable" => true"searchable" => true];
  42.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id ""targets" => [6], "visible" => true"orderable" => true"searchable" => true];
  43.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id ""targets" => [7], "visible" => true"orderable" => true"searchable" => true];
  44.         //$tableau_class_cellule[]=array("className"=>"visible_export colonne_id ","targets"=>array(8),"visible"=>true,"orderable"=>true,"searchable"=> true);
  45.         $tableau_class_cellule[] = ["className" => " colonne_id""targets" => [8], "visible" => true"orderable" => false"searchable" => true];
  46.         /*
  47.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(0),"visible"=>true,"orderable"=>true,"searchable"=> true);
  48.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(1),"visible"=>true,"orderable"=>true,"searchable"=> true);
  49.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(2),"visible"=>true,"orderable"=>true,"searchable"=> true);
  50.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(3),"visible"=>true,"orderable"=>true,"searchable"=> true);
  51.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(4),"visible"=>true,"orderable"=>true,"searchable"=> true);
  52.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(5),"visible"=>true,"orderable"=>true,"searchable"=> true);
  53.         $tableau_class_cellule[]=array("orderable"=>false,"className"=>"colonne_id","targets"=>array(6),"visible"=>true);
  54.         */
  55.         $this->datatable($request$datatable$translator);
  56.         return $this->render('Kanban/Activite/lister.html.twig', [
  57.             'tableauClassColonne' => $tableau_class_cellule,
  58.             //"objet" => $objet,
  59.             "id"                  => $id,
  60.             "type"                => $type,
  61.             'table'               => $table,
  62.         ]);
  63.     }
  64.     /**
  65.      * Grid action
  66.      *
  67.      * @return Response
  68.      */
  69.     /**
  70.      * @Route("/tunnels/activites/grid", name="dtc_kanban_activites_liste_grid")
  71.      */
  72.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  73.     {
  74.         $params $request->query->all();
  75.         return $this->datatable($request$datatable$translator$params)->execute();
  76.     }
  77.     private function datatable(Request $requestDatatable $datatableTranslatorInterface $translator$params = [])
  78.     {
  79.         //dump($params);
  80.         $table '';
  81.         if ( ! empty($params['table'])) {
  82.             $table $params['table'];
  83.         }
  84.         $param $request->query->all();
  85.         $user  $this->getUser();
  86.         $datatable->setDatatableId('dta-activites-fiche')
  87.                   ->setEntity(Note::class, "x")
  88.                   ->setFields(
  89.                       [
  90.                           "ID"                                => 'x.id',
  91.                           $translator->trans("Date échéance") => 'x.dateFin',
  92.                           $translator->trans("Titre")         => 'x.libelle',
  93.                           $translator->trans("Type")          => 'cn.libelle',
  94.                           $translator->trans("Contact") => 'c.nom',
  95.                           $translator->trans("Statut") => 's.libelle',
  96.                           //$translator->trans("Avancement")    => 'x.avancement',
  97.                           $translator->trans("Auteur") => 'u.nom',
  98.                           "Actions"                    => 'x.id',
  99.                           "_identifier_"               => 'x.id',
  100.                       ]
  101.                   )
  102.                   ->addJoin('x.categorie''cn'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  103.                   ->addJoin('x.statut''s'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  104.                   ->addJoin('x.contact''c'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  105.                   ->addJoin('x.client''cl'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  106.                   ->addJoin('x.utilisateur''u'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  107.             //->addJoin('x.articleCommande', 'ac', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  108.                   ->setRenderers(
  109.                 [
  110.                     => [
  111.                         'view'   => 'FO/DataTable/heure.html.twig',
  112.                         'params' => [],
  113.                     ],
  114.                     => [
  115.                         'view'   => 'FO/DataTable/titre_activite.html.twig',
  116.                         'params' => [
  117.                             'edit_route'      => 'dtc_note_modifier',
  118.                             'supprimer_route' => 'dtc_note_supprimer',
  119.                             //'id'    => $client->getId(),
  120.                             'width_modal'     => 900,
  121.                             'type'            => "liste",
  122.                             'objet'           => Note::class,
  123.                             'get'             => [
  124.                                 'affichage' => '2',
  125.                             ],
  126.                         ],
  127.                     ],
  128.                     => [
  129.                         'view'   => 'FO/DataTable/type_activite.html.twig',
  130.                         'params' => [],
  131.                     ],
  132.                     => [
  133.                         'view'   => 'FO/DataTable/contact.html.twig',
  134.                         'params' => [],
  135.                     ],
  136.                     => [
  137.                         'view'   => 'FO/DataTable/utilisateur.html.twig',
  138.                         'params' => [],
  139.                     ],
  140.                     => [
  141.                         'view'   => 'FO/DataTable/actions_activites_modal.html.twig',
  142.                         'params' => [
  143.                             'edit_route'      => 'dtc_note_modifier',
  144.                             'supprimer_route' => 'dtc_note_supprimer',
  145.                             //'id'    => $client->getId(),
  146.                             'width_modal'     => 900,
  147.                             'type'            => "liste",
  148.                             'objet'           => Note::class,
  149.                             'table'           => $table,
  150.                             'parametres'      => ['affichage' => 2],
  151.                         ],
  152.                     ],
  153.                 ]
  154.             )
  155.                   ->setOrder("x.dateSaisie""desc")
  156.                   ->setSearch(true)
  157.             //->setSearchFields(array(2,3,4,5,6))
  158.                   ->setMultiple(
  159.                 [
  160.                     'delete' => [
  161.                         'title' => $translator->trans('Non disponible'),
  162.                         'route' => 'dtc_commande_liste_supprimer',
  163.                     ],
  164.                 ]
  165.             );
  166.         $where      "";//(x.cra IS NULL OR x.cra = 0) AND
  167.         $where      "(x.prive = :prive OR x.prive IS NULL OR x.utilisateur = :utilisateur) AND (x.categorie != :categorieintervention or x.categorie IS NULL)";//(ac.id IS NULL OR (ac.niveau = 2 AND ac.libelle != '')) AND
  168.         $parameters = ["prive" => 0"utilisateur" => $user"categorieintervention" => 8];
  169.         if ( ! empty($params['id']) && ! empty($params['type'])) {
  170.             $parameters[$params['type']] = $params['id'];
  171.             if ($where != "") {
  172.                 $where .= " AND ";
  173.             }
  174.             $where .= "x.".$params['type']." = :".$params['type'];
  175.         }
  176.         if (array_key_exists('parametres'$param)) {
  177.             if (array_key_exists('date_debut'$param["parametres"]) and $param["parametres"]["date_debut"] > 0) {
  178.                 $debut \DateTime::createFromFormat('d/m/Y'$param["parametres"]['date_debut']);
  179.                 $debut->setTime(000000);
  180.                 $parameters["debut"] = $debut;
  181.                 if ($where != "") {
  182.                     $where .= " AND";
  183.                 }
  184.                 $where .= " x.dateSaisie >= :debut";
  185.             }
  186.             if (array_key_exists('date_fin'$param["parametres"]) and $param["parametres"]["date_fin"] > 0) {
  187.                 $fin \DateTime::createFromFormat('d/m/Y'$param["parametres"]['date_fin']);
  188.                 $fin->setTime(235959);
  189.                 $parameters["fin"] = $fin;
  190.                 if ($where != "") {
  191.                     $where .= " AND";
  192.                 }
  193.                 $where .= " x.dateSaisie <= :fin";
  194.             }
  195.             if (array_key_exists('statut'$param["parametres"]) and $param["parametres"]["statut"] > 0) {
  196.                 $parameters["statut"] = $param["parametres"]["statut"];
  197.                 if ($where != "") {
  198.                     $where .= " AND";
  199.                 }
  200.                 $where .= " s.id = :statut";
  201.             }
  202.             if (array_key_exists('cat'$param["parametres"]) and $param["parametres"]["cat"] > 0) {
  203.                 $parameters["cat"] = $param["parametres"]["cat"];
  204.                 if ($where != "") {
  205.                     $where .= " AND";
  206.                 }
  207.                 $where .= " cn.id = :cat";
  208.             }
  209.         }
  210.         if ($where != '') {
  211.             $datatable->setWhere($where$parameters);
  212.         }
  213.         return $datatable;
  214.     }
  215.     /**
  216.      * @Route("/tunnels/activites/nouveau/{id}/", name="dtc_kanban_activites_ajouter")
  217.      */
  218.     public function ajouterAction(Request $requestFiche $ficheEntityManagerInterface $emValidatorInterface $validatorNoteGoogleAgendaService $serviceGoogleAgenda)
  219.     {
  220.         $titre_modal    "Nouvelle activité";
  221.         $user           $this->getUser();
  222.         $note           = new Note();
  223.         $categorie_note $em->getRepository(Categorie::class)->findAll();
  224.         $statutAfaire   $em->getRepository(Statut::class)->find(1);
  225.         $note->setStatut($statutAfaire);
  226.         $note->setUtilisateur($user);
  227.         if (is_object($fiche->getClient())) {
  228.             $note->setClient($fiche->getClient());
  229.         }
  230.         $dateNoteDebut = new \Datetime();
  231.         $dateNoteFin   = new \Datetime();
  232.         $note->setDateDebut($dateNoteDebut);
  233.         $dateNoteFin date_modify($dateNoteFin"+1 hour");
  234.         $type_json   "";
  235.         $currentPath "";
  236.         $currentPath $request->query->get('currentPath');
  237.         $note->setFiche($fiche);
  238.         $note->setDateFin($dateNoteFin);
  239.         $form   $this->createForm(NoteType::class, $note);
  240.         $errors "";
  241.         $form->handleRequest($request);
  242.         if ($form->isSubmitted()) {
  243.             if ($form->isValid()) {
  244.                 if ($note->getLibelle() == "" and is_object($note->getCategorie())) {
  245.                     $note->setLibelle($note->getCategorie()->getLibelle());
  246.                 } elseif ($note->getLibelle() == "") {
  247.                     $note->setLibelle("Sans titre");
  248.                 }
  249.                 $url "";
  250.                 if ($note->getAlerte() == "") {
  251.                     $note->setDateRappel(null);
  252.                 } else {
  253.                     $dateRappel = new \Datetime($note->getDateDebut()->format('Y-m-d H:i:s'));
  254.                     $dateRappel->add(new \DateInterval('PT'.$note->getAlerte().'M'));
  255.                     $note->setDateRappel($dateRappel);
  256.                 }
  257.                 $em->persist($note);
  258.                 $em->flush();
  259.                 $serviceGoogleAgenda->ajouter($note);
  260.                 return new JsonResponse(['type_json' => $type_json'rendu' => '''valide' => '1''url' => $url"errors" => $errors]);
  261.             } else {
  262.                 $errors $validator->validate($note);
  263.                 $errors $this->renderView('layout-errors.html.twig', ['errors' => $errors'form' => $form->createView()]);
  264.                 $rendu $this->renderView(
  265.                     'Notes/Note/ajouter_modal.html.twig',
  266.                     ['currentPath' => $currentPath'categorie_note' => $categorie_note'form' => $form->createView(), 'errors' => $errors"fiche" => $fiche]
  267.                 );
  268.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''errors' => $errors]);
  269.             }
  270.         }
  271.         //$rendu = $this->renderView('Notes/Note/ajouter_modal.html.twig', array('equipiers'=>$equipiers,'currentPath'=>$currentPath,'categorie_note'=>$categorie_note,'form' => $form->createView(),'errors'=>$errors));
  272.         $rendu $this->renderView(
  273.             'Kanban/Activite/ajouter.html.twig',
  274.             ['currentPath' => $currentPath'categorie_note' => $categorie_note'form' => $form->createView(), 'errors' => $errors]
  275.         );
  276.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  277.         //return $this->render('Notes/Note/note_fiche.html.twig', array('currentPath'=>$currentPath,'categorie_note'=>$categorie_note,'form' => $form->createView(),'errors'=>$errors,"fiche"=>$fiche));
  278.     }
  279. }