src/Controller/Vehicules/ApplicationController.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Vehicules;
  3. use App\Entity\Articles\Article;
  4. use App\Entity\Vehicules\Application;
  5. use App\Entity\Vehicules\Type;
  6. use App\Form\Vehicules\ApplicationType;
  7. use App\Form\Vehicules\SupprimerApplicationType;
  8. use App\Library\Datatable\Util\Datatable;
  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 ApplicationController extends AbstractController
  18. {
  19.     /**
  20.      * @Route("/application/nouveau/{id}/{type}", name="dtc_application_ajouter")
  21.      */
  22.     public function ajouterAction(Request $request$id$type ""EntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  23.     {
  24.         $titre_modal "Nouvelle application";
  25.         $application = new Application();
  26.         $user        $this->getUser();
  27.         $application->setUtilisateur($user);
  28.         $form   $this->createForm(ApplicationType::class, $application);
  29.         $errors "";
  30.         $form->handleRequest($request);
  31.         $repo_article $em->getRepository(Article::class);
  32.         $article      $repo_article->find($id);
  33.         if ($form->isSubmitted()) {
  34.             if ($form->isValid()) {
  35.                 if ($type == 'type') {
  36.                     $repo_objet $em->getRepository(Type::class);
  37.                     $objet      $repo_objet->find($id);
  38.                     $application->setType($objet);
  39.                     if (is_object($objet->getMarque())) {
  40.                         $application->setMarque($objet->getMarque());
  41.                     }
  42.                     if (is_object($objet->getModele())) {
  43.                         $application->setModele($objet->getModele());
  44.                     }
  45.                     $url $this->generateUrl('dtc_vehicule_type_modifier', ['id' => $objet->getId(), 'tab' => 'applications']);
  46.                 } elseif ($type == 'article') {
  47.                     $application->setArticle($article);
  48.                     $url $this->generateUrl('dtc_article_modifier', ['id' => $article->getId(), 'tab' => 'applications']);
  49.                 }
  50.                 $em->persist($application);
  51.                 $em->flush();
  52.                 $this->addFlash(
  53.                     'notice',
  54.                     'Application ajoutée avec succès !'
  55.                 );
  56.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  57.             } else {
  58.                 $errors $validator->validate($application);
  59.                 $rendu  $this->renderView('Vehicules/Application/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type]);
  60.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  61.             }
  62.         }
  63.         $rendu $this->renderView('Vehicules/Application/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'article' => $article]);
  64.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  65.     }
  66.     /**
  67.      * @Route("/application/supprimer/{objet}/{id}/{type}", name="dtc_application_supprimer")
  68.      */
  69.     public function supprimerAction(Request $requestApplication $objet$id$typeEntityManagerInterface $emValidatorInterface $validator)
  70.     {
  71.         $application $objet;
  72.         $titre_modal "Demande de confirmation";
  73.         $user        $this->getUser();
  74.         $form   $this->createForm(SupprimerApplicationType::class, $application);
  75.         $errors "";
  76.         $form->handleRequest($request);
  77.         if ($form->isSubmitted()) {
  78.             if ($form->isValid()) {
  79.                 $em->remove($application);
  80.                 $em->flush();
  81.                 $this->addFlash(
  82.                     'notice',
  83.                     'Application supprimée avec succès !'
  84.                 );
  85.                 if ($type == 'type') {
  86.                     $url $this->generateUrl('dtc_vehicule_type_modifier', ['id' => $id'tab' => 'applications']);
  87.                 } elseif ($type == 'article') {
  88.                     $url $this->generateUrl('dtc_article_modifier', ['id' => $id'tab' => 'applications']);
  89.                 }
  90.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url], 200, ['Content-Type' => 'application/json']);
  91.             } else {
  92.                 $errors $validator->validate($application);
  93.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  94.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  95.             }
  96.         }
  97.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  98.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  99.     }
  100.     /**
  101.      * @Route("", name="")
  102.      */
  103.     public function listerAction(Request $request$id$type ""$param = [], EntityManagerInterface $emDatatable $datatable)
  104.     {
  105.         if ($type == 'type') {
  106.             $repo_objet $em->getRepository(Type::class);
  107.             $objet      $repo_objet->find($id);
  108.         }
  109.         $this->datatable($request$datatable$objet$type);
  110.         return $this->render('Vehicules/Application/lister.html.twig', ["id" => $id"type" => $type"param" => $param]);
  111.     }
  112.     /**
  113.      * set datatable configs
  114.      *
  115.      * @return \App\Library\Datatable\Util\Datatable
  116.      */
  117.     private function datatable(Request $requestDatatable $datatable$objet$type "")
  118.     {
  119.         $parametres $request->query->all();
  120.         if (array_key_exists('param'$parametres)) {
  121.             $param['parametres'] = $parametres["param"];
  122.         } else {
  123.             $param['parametres'] = [];
  124.         }
  125.         $type_jointure       'x.'.$type;
  126.         $parametres          = [];
  127.         $where               $type_jointure.' = :objet ';
  128.         $parametres["objet"] = $objet;
  129.         $datatable->setDatatableId('dta-applications')
  130.                   ->setEntity(Application::class, "x");
  131.         $datatable->addJoin('x.article''a'\Doctrine\ORM\Query\Expr\Join::INNER_JOIN);
  132.         if (array_key_exists('categorie_article'$param['parametres']) and $param['parametres']['categorie_article'] != "") {
  133.             $datatable->addJoin('a.articleCategorie''ac'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  134.             $datatable->addJoin('ac.categorie''cat'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  135.             //$qb->join('a.articleCategorie', 'ac', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  136.             $where                   .= " AND cat.id = :categorie";
  137.             $parametres['categorie'] = $param['parametres']['categorie_article'];
  138.             if (array_key_exists('sous_categorie_article'$param['parametres']) and $param['parametres']['sous_categorie_article'] != "") {
  139.                 $datatable->addJoin('a.articleCategorie''ac2'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  140.                 $datatable->addJoin('ac2.categorie''cat2'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  141.                 //$qb->join('a.articleCategorie', 'ac2', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  142.                 //$qb->join('ac2.categorie', 'cat2', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  143.                 $where                    .= " AND cat2.id = :categorie2";
  144.                 $parametres['categorie2'] = $param['parametres']['sous_categorie_article'];
  145.             }
  146.         }
  147.         if (array_key_exists('marque'$param['parametres']) and $param['parametres']['marque'] != "") {
  148.             //$qb->join('x.marque', 'm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  149.             $where                .= " AND a.marque = :marque";
  150.             $parametres['marque'] = $param['parametres']['marque'];
  151.         }
  152.         if (array_key_exists('type'$param['parametres']) and $param['parametres']['type'] != "") {
  153.             //$qb->join('x.marque', 'm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  154.             $where              .= " AND a.type = :type";
  155.             $parametres['type'] = $param['parametres']['type'];
  156.         }
  157.         $datatable
  158.             ->setFields(
  159.                 [
  160.                     "Réf"          => 'a.reference',
  161.                     "Libellé"      => 'a.libelle',
  162.                     "Stock"        => 'a.stock',
  163.                     "Actions"      => 'x.id',
  164.                     "_identifier_" => 'x.id',
  165.                 ]
  166.             )
  167.             /*
  168.             ->setWhere(
  169.                      $type_jointure.' = :objet',
  170.                      array('objet' => $objet)
  171.                 )
  172.             */
  173.             ->setWhere(
  174.                 $where,
  175.                 $parametres
  176.             //array('objet' => $objet)
  177.             )
  178.             ->setRenderers(
  179.                 [
  180.                     => [
  181.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  182.                         'params' => [
  183.                             'edit_route'   => 'dtc_article_modifier',
  184.                             'typeDocument' => 'article',
  185.                         ],
  186.                     ],
  187.                     => [
  188.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  189.                         'params' => [
  190.                             'edit_route'   => 'dtc_article_modifier',
  191.                             'typeDocument' => 'article',
  192.                         ],
  193.                     ],
  194.                     => [
  195.                         'view'   => 'FO/DataTable/actions_modal.html.twig',
  196.                         'params' => [
  197.                             'supprimer_route' => 'dtc_application_supprimer',
  198.                             'id'              => $objet->getId(),
  199.                             'type'            => $type,
  200.                             'entite'          => 'application',
  201.                             'objet'           => Application::class,
  202.                         ],
  203.                     ],
  204.                 ]
  205.             )
  206.             ->setOrder("x.id""desc")
  207.             ->setSearch(true)
  208.             ->setSearchFields([01]);
  209.         return $datatable;
  210.     }
  211.     /**
  212.      * Grid action
  213.      * @return Response
  214.      */
  215.     /**
  216.      * @Route("/application/grid/{id}/{type}", name="dtc_application_liste_grid")
  217.      */
  218.     public function gridAction(Request $request$id ""$type ""EntityManagerInterface $emDatatable $datatable)
  219.     {
  220.         $param $request->query->all();
  221.         if ($type == 'type') {
  222.             $repo_objet $em->getRepository(Type::class);
  223.             $objet      $repo_objet->find($id);
  224.         }
  225.         return $this->datatable($request$datatable$objet$type)->execute();
  226.     }
  227. }