src/Controller/Projets/EtatController.php line 247

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Projets;
  3. use App\Entity\Projets\Etat;
  4. use App\Entity\Projets\Tache;
  5. use App\Form\Projets\EtatType;
  6. use App\Library\Datatable\Util\Datatable;
  7. use App\Security\Voter\EntityVoter;
  8. use App\Service\Utilisateur\ColonneTableauService;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  16. use Symfony\Component\Validator\Validator\ValidatorInterface;
  17. use Symfony\Contracts\Translation\TranslatorInterface;
  18. class EtatController extends AbstractController
  19. {
  20.     /**
  21.      * @Route("/projet/etat/nouveau", name="dtc_etat_ajouter")
  22.      */
  23.     public function ajouterAction(Request $requestEntityManagerInterface $emValidatorInterface $validator)
  24.     {
  25.         $user $this->getUser();
  26.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  27.             //throw new AccessDeniedException('This user does not have access to this section.');
  28.             return $this->redirectToRoute('dtcfo_homepage', []);
  29.         }
  30.         $etat = new Etat();
  31.         //$etat->setUtilisateur($user);
  32.         $form   $this->createForm(EtatType::class, $etat);
  33.         $errors "";
  34.         $form->handleRequest($request);
  35.         if ($form->isSubmitted()) {
  36.             if ($form->isValid()) {
  37.                 if ($etat->getDernierEtat()) {
  38.                     $etats $em->getRepository(Etat::class)->findBy([
  39.                                                                          'dernierEtat' => true,
  40.                                                                      ]);
  41.                     if (count($etats)) {
  42.                         foreach ($etats as $etatTmp) {
  43.                             $etatTmp->setDernierEtat(false);
  44.                             $em->persist($etatTmp);
  45.                         }
  46.                     }
  47.                 }
  48.                 $em->persist($etat);
  49.                 $em->flush();
  50.                 $this->addFlash(
  51.                     'notice',
  52.                     'Etat ajoute avec succès !'
  53.                 );
  54.                 return $this->redirectToRoute('dtc_etat_liste');
  55.             } else {
  56.                 $errors $validator->validate($etat);
  57.             }
  58.         }
  59.         return $this->render('Projets/Etat/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  60.     }
  61.     /**
  62.      * @Route("/projet/etat/modifier/{id}", name="dtc_etat_modifier")
  63.      */
  64.     public function modifierAction(Request $requestEtat $etatEntityManagerInterface $emValidatorInterface $validator)
  65.     {
  66.         $user $this->getUser();
  67.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  68.             //throw new AccessDeniedException('This user does not have access to this section.');
  69.             return $this->redirectToRoute('dtcfo_homepage', []);
  70.         }
  71.         //$etat->setUtilisateur($user);
  72.         $form   $this->createForm(EtatType::class, $etat);
  73.         $errors "";
  74.         $form->handleRequest($request);
  75.         if ($form->isSubmitted()) {
  76.             $droit $this->isGranted(EntityVoter::UPDATEEtat::class);
  77.             if ( ! $droit) {
  78.                 $em->refresh($etat);
  79.                 return $this->redirectToRoute('dtc_etat_modifier', ["id" => $etat->getId()]);
  80.             }
  81.             if ($form->isValid()) {
  82.                 if ($etat->getDernierEtat()) {
  83.                     $etats $em->getRepository(Etat::class)->findBy([
  84.                                                                          'dernierEtat' => true,
  85.                                                                      ]);
  86.                     if (count($etats)) {
  87.                         foreach ($etats as $etatTmp) {
  88.                             $etatTmp->setDernierEtat(false);
  89.                             $em->persist($etatTmp);
  90.                         }
  91.                     }
  92.                 }
  93.                 $em->persist($etat);
  94.                 $em->flush();
  95.                 $this->addFlash(
  96.                     'notice',
  97.                     'Etat modifiée avec succès !'
  98.                 );
  99.                 return $this->redirectToRoute('dtc_etat_modifier', ["id" => $etat->getId()]);
  100.             } else {
  101.                 $errors $validator->validate($etat);
  102.             }
  103.         }
  104.         return $this->render('Projets/Etat/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'etat' => $etat]);
  105.     }
  106.     /**
  107.      * @Route("/projet/etat", name="dtc_etat_liste")
  108.      */
  109.     public function listerAction(Request $requestColonneTableauService $serviceColonneTableauDatatable $datatableTranslatorInterface $translator)
  110.     {
  111.         $user $this->getUser();
  112.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  113.             //throw new AccessDeniedException('This user does not have access to this section.');
  114.             return $this->redirectToRoute('dtcfo_homepage', []);
  115.         }
  116.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [0], "visible" => false"orderable" => false];
  117.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [1], "visible" => $serviceColonneTableau->getColonneUtilisateur(Etat::class, "id")];
  118.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [2], "visible" => $serviceColonneTableau->getColonneUtilisateur(Etat::class, "libelle")];
  119.         $tableau_class_cellule[] = [
  120.             "className" => "colonne_id",
  121.             "targets"   => [3],
  122.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Etat::class, "dernierEtat"),
  123.         ];
  124.         $this->datatable($datatable$translator);
  125.         return $this->render('Projets/Etat/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule]);
  126.     }
  127.     /**
  128.      * set datatable configs
  129.      *
  130.      * @return \App\Library\Datatable\Util\Datatable
  131.      */
  132.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  133.     {
  134.         $user $this->getUser();
  135.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  136.             //throw new AccessDeniedException('This user does not have access to this section.');
  137.             return $this->redirectToRoute('dtcfo_homepage', []);
  138.         }
  139.         $datatable->setEntity(Etat::class, "x")
  140.                   ->setFields(
  141.                       [
  142.                           "ID"                               => 'x.id',
  143.                           $translator->trans("Libellé")      => 'x.libelle',
  144.                           $translator->trans("Couleur")      => 'x.couleur',
  145.                           $translator->trans("Dernier état") => 'x.dernierEtat',
  146.                           "Actions"                          => 'x.id',
  147.                           "_identifier_"                     => 'x.id',
  148.                       ]
  149.                   )
  150.                   ->setRenderers(
  151.                       [
  152.                           => [
  153.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  154.                               'params' => [
  155.                                   'edit_route' => 'dtc_etat_modifier',
  156.                               ],
  157.                           ],
  158.                           => [
  159.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  160.                               'params' => [
  161.                                   'edit_route' => 'dtc_etat_modifier',
  162.                               ],
  163.                           ],
  164.                           => ['view' => 'FO/DataTable/booleen.html.twig'],
  165.                           => [
  166.                               'view'   => 'FO/DataTable/actions.html.twig',
  167.                               'params' => [
  168.                                   'edit_route' => 'dtc_etat_modifier',
  169.                                   'objet'      => Etat::class,
  170.                               ],
  171.                           ],
  172.                       ]
  173.                   )
  174.                   ->setMultiple(
  175.                       [
  176.                           'delete' => [
  177.                               'title' => $translator->trans('Non disponible'),
  178.                               'route' => 'dtc_etat_liste',
  179.                           ],
  180.                       ]
  181.                   )
  182.                   ->setOrder("x.id""desc")
  183.                   ->setSearch(true);
  184.         $datatable->setSearchFields([1]);
  185.         return $datatable;
  186.     }
  187.     /**
  188.      * Grid action
  189.      * @return Response
  190.      */
  191.     /**
  192.      * @Route("/projet/etat/grid", name="dtc_etat_liste_grid")
  193.      */
  194.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  195.     {
  196.         $user $this->getUser();
  197.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  198.             //throw new AccessDeniedException('This user does not have access to this section.');
  199.             return $this->redirectToRoute('dtcfo_homepage', []);
  200.         }
  201.         return $this->datatable($datatable$translator)->execute();
  202.     }
  203.     /**
  204.      * @Route("/projet/etat/{tache}/{etat}", name="dtc_etat_changer")
  205.      */
  206.     public function changeEtatAction(Request $requestTache $tacheEtat $etat nullEntityManagerInterface $em)
  207.     {
  208.         $tache->setEtat($etat);
  209.         $em->persist($tache);
  210.         $em->flush();
  211.         $headers = [
  212.             'Content-Type'                 => 'application/json',
  213.             'Access-Control-Allow-Origin'  => '*',
  214.             'Access-Control-Allow-Methods' => 'POST',
  215.         ];
  216.         return new JsonResponse(['data' => '1'], 200$headers);
  217.     }
  218. }