src/Controller/Projets/ReferenceController.php line 210

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Projets;
  3. use App\Entity\Projets\Reference;
  4. use App\Entity\Projets\Tache;
  5. use App\Form\Projets\ReferenceType;
  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 ReferenceController extends AbstractController
  19. {
  20.     /**
  21.      * @Route("/projet/reference/nouveau", name="dtc_reference_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.         $reference = new Reference();
  31.         //$reference->setUtilisateur($user);
  32.         $form   $this->createForm(ReferenceType::class, $reference);
  33.         $errors "";
  34.         $form->handleRequest($request);
  35.         if ($form->isSubmitted()) {
  36.             if ($form->isValid()) {
  37.                 $em->persist($reference);
  38.                 $em->flush();
  39.                 $this->addFlash(
  40.                     'notice',
  41.                     'Référence ajoutée avec succès !'
  42.                 );
  43.                 return $this->redirectToRoute('dtc_reference_liste');
  44.             } else {
  45.                 $errors $validator->validate($reference);
  46.             }
  47.         }
  48.         return $this->render('Projets/Reference/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  49.     }
  50.     /**
  51.      * @Route("/projet/reference/modifier/{id}", name="dtc_reference_modifier")
  52.      */
  53.     public function modifierAction(Request $requestReference $referenceEntityManagerInterface $emValidatorInterface $validator)
  54.     {
  55.         $user $this->getUser();
  56.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  57.             //throw new AccessDeniedException('This user does not have access to this section.');
  58.             return $this->redirectToRoute('dtcfo_homepage', []);
  59.         }
  60.         //$reference->setUtilisateur($user);
  61.         $form   $this->createForm(ReferenceType::class, $reference);
  62.         $errors "";
  63.         $form->handleRequest($request);
  64.         if ($form->isSubmitted()) {
  65.             $droit $this->isGranted(EntityVoter::UPDATEReference::class);
  66.             if ( ! $droit) {
  67.                 $em->refresh($reference);
  68.                 return $this->redirectToRoute('dtc_reference_modifier', ["id" => $reference->getId()]);
  69.             }
  70.             if ($form->isValid()) {
  71.                 $em->persist($reference);
  72.                 $em->flush();
  73.                 $this->addFlash(
  74.                     'notice',
  75.                     'Reference modifiée avec succès !'
  76.                 );
  77.                 return $this->redirectToRoute('dtc_reference_modifier', ["id" => $reference->getId()]);
  78.             } else {
  79.                 $errors $validator->validate($reference);
  80.             }
  81.         }
  82.         return $this->render('Projets/Reference/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'reference' => $reference]);
  83.     }
  84.     /**
  85.      * @Route("/projet/reference", name="dtc_reference_liste")
  86.      */
  87.     public function listerAction(Request $requestColonneTableauService $serviceColonneTableauDatatable $datatableTranslatorInterface $translator)
  88.     {
  89.         $user $this->getUser();
  90.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  91.             //throw new AccessDeniedException('This user does not have access to this section.');
  92.             return $this->redirectToRoute('dtcfo_homepage', []);
  93.         }
  94.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [0], "visible" => false"orderable" => false];
  95.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [1], "visible" => $serviceColonneTableau->getColonneUtilisateur(Reference::class, "id")];
  96.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [2], "visible" => $serviceColonneTableau->getColonneUtilisateur(Reference::class, "libelle")];
  97.         $this->datatable($datatable$translator);
  98.         return $this->render('Projets/Reference/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule]);
  99.     }
  100.     /**
  101.      * set datatable configs
  102.      *
  103.      * @return \App\Library\Datatable\Util\Datatable
  104.      */
  105.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  106.     {
  107.         $user $this->getUser();
  108.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  109.             //throw new AccessDeniedException('This user does not have access to this section.');
  110.             return $this->redirectToRoute('dtcfo_homepage', []);
  111.         }
  112.         $datatable->setEntity(Reference::class, "x")
  113.                   ->setFields(
  114.                       [
  115.                           "ID"                          => 'x.id',
  116.                           $translator->trans("Libellé") => 'x.libelle',
  117.                           "Actions"                     => 'x.id',
  118.                           "_identifier_"                => 'x.id',
  119.                       ]
  120.                   )
  121.                   ->setRenderers(
  122.                       [
  123.                           => [
  124.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  125.                               'params' => [
  126.                                   'edit_route' => 'dtc_reference_modifier',
  127.                               ],
  128.                           ],
  129.                           => [
  130.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  131.                               'params' => [
  132.                                   'edit_route' => 'dtc_reference_modifier',
  133.                               ],
  134.                           ],
  135.                           => [
  136.                               'view'   => 'FO/DataTable/actions.html.twig',
  137.                               'params' => [
  138.                                   'edit_route' => 'dtc_reference_modifier',
  139.                                   'objet'      => Reference::class,
  140.                               ],
  141.                           ],
  142.                       ]
  143.                   )
  144.                   ->setMultiple(
  145.                       [
  146.                           'delete' => [
  147.                               'title' => $translator->trans('Non disponible'),
  148.                               'route' => 'dtc_reference_liste',
  149.                           ],
  150.                       ]
  151.                   )
  152.                   ->setOrder("x.id""desc")
  153.                   ->setSearch(true);
  154.         $datatable->setSearchFields([1]);
  155.         return $datatable;
  156.     }
  157.     /**
  158.      * Grid action
  159.      * @return Response
  160.      */
  161.     /**
  162.      * @Route("/projet/reference/grid", name="dtc_reference_liste_grid")
  163.      */
  164.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  165.     {
  166.         $user $this->getUser();
  167.         if ( ! is_object($user) || ! is_object($user->getType()) || $user->getType()->getId() != "1") {
  168.             //throw new AccessDeniedException('This user does not have access to this section.');
  169.             return $this->redirectToRoute('dtcfo_homepage', []);
  170.         }
  171.         return $this->datatable($datatable$translator)->execute();
  172.     }
  173.     /**
  174.      * @Route("/projet/reference/{tache}/{reference}", name="dtc_reference_changer")
  175.      */
  176.     public function changeReferenceAction(Request $requestTache $tacheReference $reference nullEntityManagerInterface $em)
  177.     {
  178.         $tache->setReference($reference);
  179.         $em->persist($tache);
  180.         $em->flush();
  181.         $headers = [
  182.             'Content-Type'                 => 'application/json',
  183.             'Access-Control-Allow-Origin'  => '*',
  184.             'Access-Control-Allow-Methods' => 'POST',
  185.         ];
  186.         return new JsonResponse(['data' => '1'], 200$headers);
  187.     }
  188. }