src/Controller/Clients/ParcMaterielController.php line 150

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Clients;
  3. use App\Entity\Clients\Client;
  4. use App\Entity\Clients\ParcMateriel;
  5. use App\Form\Clients\ParcMaterielType;
  6. use App\Form\Clients\SupprimerParcMaterielType;
  7. use App\Library\Datatable\Util\Datatable;
  8. use App\Security\Voter\EntityVoter;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\JsonResponse;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Symfony\Component\Validator\Validator\ValidatorInterface;
  16. use Symfony\Contracts\Translation\TranslatorInterface;
  17. class ParcMaterielController extends AbstractController
  18. {
  19.     /**
  20.      * @Route("/parc-materiel/nouveau/{id}/{type}", name="dtc_parc_materiel_ajouter")
  21.      */
  22.     public function ajouterAction(Request $request$id$type ""EntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  23.     {
  24.         $titre_modal  $translator->trans("Nouveau article");
  25.         $parcMateriel = new ParcMateriel();
  26.         $user         $this->getUser();
  27.         $parcMateriel->setUtilisateur($user);
  28.         $form $this->createForm(ParcMaterielType::class, $parcMateriel);
  29.         $errors "";
  30.         $form->handleRequest($request);
  31.         $get $request->query->all();
  32.         if ($form->isSubmitted()) {
  33.             if ($form->isValid()) {
  34.                 if ($type == 'client') {
  35.                     $repo_objet $em->getRepository(Client::class);
  36.                     $objet      $repo_objet->find($id);
  37.                     $parcMateriel->setClient($objet);
  38.                     $url $this->generateUrl('dtc_client_modifier', ['id' => $objet->getId(), 'tab' => 'parc']);
  39.                 }
  40.                 $em->persist($parcMateriel);
  41.                 $em->flush();
  42.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  43.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  44.                                             200,
  45.                                             ['Content-Type' => 'application/json']);
  46.                 } else {
  47.                     $this->addFlash('notice'$translator->trans('Article ajouté avec succès !'));
  48.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  49.                 }
  50.             } else {
  51.                 $errors $validator->validate($parcMateriel);
  52.                 $rendu  $this->renderView('Clients/ParcMateriel/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type]);
  53.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  54.             }
  55.         }
  56.         $rendu $this->renderView('Clients/ParcMateriel/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type]);
  57.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  58.         //return $this->render('Clients/ParcMateriel/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type));
  59.     }
  60.     /**
  61.      * @Route("/parc-materiel/modifier/{objet}/{id}/{type}", name="dtc_parc_materiel_modifier")
  62.      */
  63.     public function modifierAction(Request            $requestParcMateriel $objet$id$typeEntityManagerInterface $emTranslatorInterface $translator,
  64.                                    ValidatorInterface $validator
  65.     ) {
  66.         $parcMateriel $objet;
  67.         $titre_modal  $translator->trans("Modifier article du parc matériel");
  68.         $get          $request->query->all();
  69.         $user         $this->getUser();
  70.         $parcMateriel->setUtilisateur($user);
  71.         $form   $this->createForm(ParcMaterielType::class, $parcMateriel);
  72.         $errors "";
  73.         $form->handleRequest($request);
  74.         if ($form->isSubmitted()) {
  75.             $droit $this->isGranted(EntityVoter::UPDATEParcMateriel::class);
  76.             if ( ! $droit and != 1) {
  77.                 $rendu $this->renderView('Clients/ParcMateriel/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type]);
  78.                 return new Response(json_encode(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]));
  79.             }
  80.             if ($form->isValid()) {
  81.                 if ($type == 'client') {
  82.                     $repo_objet $em->getRepository(Client::class);
  83.                     $objet      $repo_objet->find($id);
  84.                     $parcMateriel->setClient($objet);
  85.                     $url $this->generateUrl('dtc_client_modifier', ['id' => $objet->getId(), 'tab' => 'parc']);
  86.                 }
  87.                 $em->persist($parcMateriel);
  88.                 $em->flush();
  89.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  90.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  91.                                             200,
  92.                                             ['Content-Type' => 'application/json']);
  93.                 } else {
  94.                     $this->addFlash('notice'$translator->trans('Article du parc matériel modifié avec succès !'));
  95.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  96.                 }
  97.             } else {
  98.                 $errors $validator->validate($parcMateriel);
  99.                 $rendu  $this->renderView(
  100.                     'Clients/ParcMateriel/ajouter.html.twig',
  101.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'parcMateriel' => $parcMateriel]
  102.                 );
  103.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  104.             }
  105.         }
  106.         $rendu $this->renderView(
  107.             'Clients/ParcMateriel/ajouter.html.twig',
  108.             ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'parcMateriel' => $parcMateriel]
  109.         );
  110.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  111.     }
  112.     /**
  113.      * @Route("", name="")
  114.      */
  115.     public function listerAction(Request $request$id$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  116.     {
  117.         if ($type == 'client') {
  118.             $repo_objet $em->getRepository(Client::class);
  119.             $objet      $repo_objet->find($id);
  120.         }
  121.         $tableau_class_cellule   = [];
  122.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [0], "visible" => true"orderable" => true"searchable" => true];
  123.         $tableau_class_cellule[] = ["orderable" => false"className" => "visible_export colonne_id""targets" => [1], "visible" => true"orderable" => true];
  124.         $tableau_class_cellule[] = ["orderable" => false"className" => "visible_export colonne_id""targets" => [2], "visible" => true"orderable" => true];
  125.         $tableau_class_cellule[] = ["orderable" => false"className" => "visible_export colonne_id""targets" => [3], "visible" => true"orderable" => false];
  126.         $this->datatable($objet$type$datatable$translator);
  127.         return $this->render('Clients/ParcMateriel/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  128.     }
  129.     /**
  130.      * set datatable configs
  131.      *
  132.      * @return \App\Library\Datatable\Util\Datatable
  133.      */
  134.     private function datatable($objet$type ""Datatable $datatableTranslatorInterface $translator)
  135.     {
  136.         $type_jointure 'x.'.$type;
  137.         $datatable->setDatatableId('dta-parc-materiel')
  138.                   ->setEntity(ParcMateriel::class, "x")
  139.                   ->setFields(
  140.                       [
  141.                           //$translator->trans("ID") =>  'x.id',
  142.                           $translator->trans("Article")            => 'a.libelle',
  143.                           $translator->trans("Chez le concurrent") => 'x.concurrent',
  144.                           $translator->trans("Équipier")           => 'e.reference',
  145.                           $translator->trans("Actions")            => 'x.id',
  146.                           "_identifier_"                           => 'x.id',
  147.                       ]
  148.                   )
  149.                   ->addJoin('x.article''a'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  150.                   ->addJoin('x.utilisateur''e'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  151.                   ->setWhere(
  152.                       $type_jointure.' = :objet',
  153.                       ['objet' => $objet]
  154.                   )
  155.                   ->setRenderers(
  156.                       [
  157.                           => [
  158.                               'view' => 'FO/DataTable/booleen.html.twig',
  159.                           ],
  160.                           => [
  161.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  162.                               'params' => [
  163.                                   'edit_route'      => 'dtc_parc_materiel_modifier',
  164.                                   'supprimer_route' => 'dtc_parc_materiel_supprimer',
  165.                                   'id'              => $objet->getId(),
  166.                                   'type'            => $type,
  167.                                   'entite'          => 'parcMateriel',
  168.                                   'table'           => 'dta-parc-materiel',
  169.                                   'objet'           => ParcMateriel::class,
  170.                               ],
  171.                           ],
  172.                       ]
  173.                   )
  174.                   ->setOrder("x.id""desc")
  175.                   ->setSearch(true)//->setSearchFields(array(0,1,2,3,4,5))
  176.         ;
  177.         return $datatable;
  178.     }
  179.     /**
  180.      * Grid action
  181.      * @return Response
  182.      */
  183.     /**
  184.      * @Route("/parc-materiel/grid/{id}/{type}", name="dtc_parc_materiel_liste_grid")
  185.      */
  186.     public function gridAction(Request $request$id ""$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  187.     {
  188.         if ($type == 'client') {
  189.             $repo_objet $em->getRepository(Client::class);
  190.             $objet      $repo_objet->find($id);
  191.         }
  192.         return $this->datatable($objet$type$datatable$translator)->execute();
  193.     }
  194.     /**
  195.      * @Route("/parc-materiel/supprimer/{objet}/{id}/{type}", name="dtc_parc_materiel_supprimer")
  196.      */
  197.     public function supprimerAction(Request $requestParcMateriel $objet$id$typeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  198.     {
  199.         $parcMateriel $objet;
  200.         $titre_modal  $translator->trans("Demande de confirmation");
  201.         $get          $request->query->all();
  202.         $user         $this->getUser();
  203.         $form   $this->createFormSupprimerParcMaterielType::class, $parcMateriel);
  204.         $errors "";
  205.         $form->handleRequest($request);
  206.         if ($form->isSubmitted()) {
  207.             if ($form->isValid()) {
  208.                 if ($type == 'client') {
  209.                     $repo_objet $em->getRepository(Client::class);
  210.                     $objet      $repo_objet->find($id);
  211.                     $parcMateriel->setClient(null);
  212.                     $em->persist($parcMateriel);
  213.                     $em->flush();
  214.                     $url $this->generateUrl('dtc_client_modifier', ['id' => $objet->getId(), 'tab' => 'parc']);
  215.                 }
  216.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  217.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  218.                                             200,
  219.                                             ['Content-Type' => 'application/json']);
  220.                 } else {
  221.                     $this->addFlash('notice'$translator->trans('Article du parc matériel supprimé avec succès !'));
  222.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  223.                 }
  224.             } else {
  225.                 $errors $validator->validate($parcMateriel);
  226.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  227.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  228.             }
  229.         }
  230.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  231.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  232.     }
  233. }