src/Controller/Articles/GarantieController.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Articles;
  3. use App\Entity\Articles\Article;
  4. use App\Entity\Articles\Garantie;
  5. use App\Form\Articles\GarantieType;
  6. use App\Form\Articles\SupprimerGarantieType;
  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\Request;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  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 GarantieController extends AbstractController
  18. {
  19.     /**
  20.      * @Route("/garantie/nouveau/{id}/{type}", name="dtc_garantie_ajouter")
  21.      */
  22.     public function ajouterAction(Request $request$id$type ""EntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  23.     {
  24.         $titre_modal $translator->trans("Nouvelle garantie");
  25.         $garantie    = new Garantie();
  26.         $user        $this->getUser();
  27.         $garantie->setUtilisateur($user);
  28.         $form      $this->createForm(GarantieType::class, $garantie);
  29.         $validator $validator;
  30.         $errors    "";
  31.         $form->handleRequest($request);
  32.         if ($form->isSubmitted()) {
  33.             if ($form->isValid()) {
  34.                 if ($type == 'article') {
  35.                     $repo_objet $em->getRepository(Article::class);
  36.                     $objet      $repo_objet->find($id);
  37.                     $garantie->setArticle($objet);
  38.                     $url $this->generateUrl('dtc_article_modifier', ['id' => $objet->getId(), 'tab' => 'garanties']);
  39.                 }
  40.                 $em->persist($garantie);
  41.                 $em->flush();
  42.                 $this->addFlash(
  43.                     'notice',
  44.                     $translator->trans('Garantie ajoutée avec succès !')
  45.                 );
  46.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  47.             } else {
  48.                 $errors $validator->validate($garantie);
  49.                 $rendu  $this->renderView('Articles/Garantie/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type]);
  50.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  51.             }
  52.         }
  53.         $rendu $this->renderView('Articles/Garantie/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type]);
  54.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  55.         //return $this->render('Articles/Garantie/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type));
  56.     }
  57.     /**
  58.      * @Route("/garantie/modifier/{objet}/{id}/{type}", name="dtc_garantie_modifier")
  59.      */
  60.     public function modifierAction(Request            $requestGarantie $objet$id$typeEntityManagerInterface $emTranslatorInterface $translator,
  61.                                    ValidatorInterface $validator
  62.     ) {
  63.         $garantie    $objet;
  64.         $titre_modal $translator->trans("Modifier garantie");
  65.         $user $this->getUser();
  66.         $garantie->setUtilisateur($user);
  67.         $form   $this->createForm(GarantieType::class, $garantie);
  68.         $errors "";
  69.         $form->handleRequest($request);
  70.         if ($form->isSubmitted()) {
  71.             $droit $this->isGranted(EntityVoter::UPDATEGarantie::class);
  72.             /*
  73.             if(!$droit) {
  74.                 $rendu = $this->renderView('Articles/Garantie/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type,'objet'=>$objet));
  75.                 return new Response(json_encode(array('rendu'=>$rendu,'valide'=>'0','url'=>'','titre'=>$titre_modal)), 200, array('Content-Type'=>'application/json'));
  76.             }
  77.             */
  78.             if ($form->isValid()) {
  79.                 if ($type == 'article') {
  80.                     $repo_objet $em->getRepository(Article::class);
  81.                     $objet      $repo_objet->find($id);
  82.                     $garantie->setArticle($objet);
  83.                     $url $this->generateUrl('dtc_article_modifier', ['id' => $objet->getId(), 'tab' => 'garanties']);
  84.                 }
  85.                 $em->persist($garantie);
  86.                 $em->flush();
  87.                 $this->addFlash(
  88.                     'notice',
  89.                     $translator->trans('Garantie modifiée avec succès !')
  90.                 );
  91.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  92.             } else {
  93.                 $errors $validator->validate($garantie);
  94.                 $rendu  $this->renderView('Articles/Garantie/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]
  95.                 );
  96.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  97.             }
  98.         }
  99.         $rendu $this->renderView('Articles/Garantie/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  100.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  101.     }
  102.     /**
  103.      * @Route("/garantie/supprimer/{objet}/{id}/{type}", name="dtc_garantie_supprimer")
  104.      */
  105.     public function supprimerAction(Request $requestGarantie $objet$id$typeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  106.     {
  107.         $garantie    $objet;
  108.         $titre_modal $translator->trans("Demande de confirmation");
  109.         $user        $this->getUser();
  110.         $form   $this->createForm(SupprimerGarantieType::class, $garantie);
  111.         $errors "";
  112.         $form->handleRequest($request);
  113.         if ($form->isSubmitted()) {
  114.             if ($form->isValid()) {
  115.                 $em->remove($garantie);
  116.                 $em->flush();
  117.                 $this->addFlash(
  118.                     'notice',
  119.                     $translator->trans('Garantie supprimée avec succès !')
  120.                 );
  121.                 if ($type == 'article') {
  122.                     $url $this->generateUrl('dtc_article_modifier', ['id' => $id'tab' => 'garanties']);
  123.                 }
  124.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  125.             } else {
  126.                 $errors $validator->validate($garantie);
  127.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  128.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  129.             }
  130.         }
  131.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  132.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  133.     }
  134.     /**
  135.      * @Route("/garantie", name="dtc_garantie_liste")
  136.      */
  137.     public function listerAction($id "0"$type "a"EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  138.     {
  139.         $repo_objet $em->getRepository(Article::class);
  140.         $objet      $repo_objet->find($id);
  141.         if (is_object($objet)) {
  142.             $this->datatableArticle($objet$type$datatable$translator);
  143.             return $this->render('Articles/Garantie/lister.html.twig', ["id" => $id"type" => $type]);
  144.         } else {
  145.             $this->datatable($datatable$translator);
  146.             return $this->render('Articles/Garantie/lister.html.twig', ["id" => $id"type" => $type]);
  147.         }
  148.     }
  149.     /**
  150.      * set datatable configs
  151.      *
  152.      * @return \App\Library\Datatable\Util\Datatable
  153.      */
  154.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  155.     {
  156.         $datatable->setDatatableId('dta-garanties')
  157.                   ->setEntity(Garantie::class, "x")
  158.                   ->setFields(
  159.                       [
  160.                           $translator->trans("ID")      => 'x.id',
  161.                           $translator->trans("Libelle") => 'x.libelle',
  162.                           $translator->trans("Actions") => 'x.id',
  163.                           "_identifier_"                => 'x.id',
  164.                       ]
  165.                   )
  166.             //->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  167.             /*->setWhere(
  168.                     $type_jointure.' = :objet',
  169.                     array('objet' => $objet)
  170.                )
  171.               */
  172.                   ->setRenderers(
  173.                 [
  174.                     => [
  175.                         'view'   => 'FO/DataTable/actions.html.twig',
  176.                         'params' => [
  177.                             //'edit_route'  => 'dtc_garantie_modifier',
  178.                             //'supprimer_route'  => 'dtc_garantie_supprimer',
  179.                             'entite' => 'garantie',
  180.                             'objet'  => Garantie::class,
  181.                         ],
  182.                     ],
  183.                 ]
  184.             )
  185.                   ->setOrder("x.id""desc")
  186.                   ->setSearch(true)
  187.                   ->setSearchFields([14]);
  188.         return $datatable;
  189.     }
  190.     /**
  191.      * set datatable configs
  192.      *
  193.      * @return \App\Library\Datatable\Util\Datatable
  194.      */
  195.     private function datatableArticle($objet$type ""Datatable $datatableTranslatorInterface $translator)
  196.     {
  197.         $type_jointure 'x.'.$type;
  198.         $datatable->setDatatableId('dta-garanties')
  199.                   ->setEntity(Garantie::class, "x")
  200.                   ->setFields(
  201.                       [
  202.                           $translator->trans("ID")      => 'x.id',
  203.                           $translator->trans("Libellé") => 'x.libelle',
  204.                           $translator->trans("Actions") => 'x.id',
  205.                           "_identifier_"                => 'x.id',
  206.                       ]
  207.                   )
  208.             //->addJoin('x.pays', 'p', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  209.             /*->setWhere(
  210.                     $type_jointure.' = :objet',
  211.                     array('objet' => $objet)
  212.                )
  213.               */
  214.                   ->setWhere(
  215.                 'x.article = :objet',
  216.                 ['objet' => $objet]
  217.             )
  218.                   ->setRenderers(
  219.                       [
  220.                           => [
  221.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  222.                               'params' => [
  223.                                   'edit_route'      => 'dtc_garantie_modifier',
  224.                                   'supprimer_route' => 'dtc_garantie_supprimer',
  225.                                   'id'              => $objet->getId(),
  226.                                   'type'            => $type,
  227.                                   'entite'          => 'garantie',
  228.                                   'objet'           => Garantie::class,
  229.                               ],
  230.                           ],
  231.                       ]
  232.                   )
  233.                   ->setOrder("x.id""desc")
  234.                   ->setSearch(true)//->setSearchFields(array(1,2))
  235.         ;
  236.         return $datatable;
  237.     }
  238.     /**
  239.      * @Route("/garantie/grid/{id}/{type}", name="dtc_garantie_liste_grid")
  240.      */
  241.     public function gridAction($id ""$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  242.     {
  243.         $repo_objet $em->getRepository(Article::class);
  244.         $objet      $repo_objet->find($id);
  245.         if (is_object($objet)) {
  246.             return $this->datatableArticle($objet$type,  $datatable$translator)->execute();
  247.         } else {
  248.             return $this->datatable($datatable$translator)->execute();
  249.         }
  250.     }
  251. }