src/Controller/Remises/CategorieRemiseClientController.php line 239

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Remises;
  3. use App\Entity\Clients\Client;
  4. use App\Entity\Remises\CategorieRemiseClient;
  5. use App\Entity\Remises\CategorieRemiseClientClient;
  6. use App\Entity\Remises\CategorieRemiseClientRemise;
  7. use App\Entity\Remises\Remise;
  8. use App\Form\Remises\CategorieRemiseClientType;
  9. use App\Library\Datatable\Util\Datatable;
  10. use App\Security\Voter\EntityVoter;
  11. use App\Service\Utilisateur\ColonneTableauService;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\Validator\Validator\ValidatorInterface;
  18. use Symfony\Contracts\Translation\TranslatorInterface;
  19. class CategorieRemiseClientController extends AbstractController
  20. {
  21.     /**
  22.      * @Route("/remise/categorie-remise-client/nouveau", name="dtc_categorie_remise_client_ajouter")
  23.      */
  24.     public function ajouterAction(Request $requestEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  25.     {
  26.         $remiseCategorieClient = new CategorieRemiseClient();
  27.         $user                  $this->getUser();
  28.         $remiseCategorieClient->setUtilisateur($user);
  29.         $form   $this->createForm(CategorieRemiseClientType::class, $remiseCategorieClient);
  30.         $errors "";
  31.         $form->handleRequest($request);
  32.         if ($form->isSubmitted()) {
  33.             if ($form->isValid()) {
  34.                 $em->persist($remiseCategorieClient);
  35.                 $em->flush();
  36.                 $this->addFlash(
  37.                     'notice',
  38.                     $translator->trans('Remise catégorie client ajoutée avec succès !')
  39.                 );
  40.                 return $this->redirectToRoute('dtc_categorie_remise_client_liste');
  41.             } else {
  42.                 $errors $validator->validate($remiseCategorieClient);
  43.             }
  44.         }
  45.         return $this->render('Remises/CategorieRemiseClient/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  46.     }
  47.     /**
  48.      * @Route("/remise/categorie-remise-client/modifier/{id}", name="dtc_categorie_remise_client_modifier")
  49.      */
  50.     public function modifierAction(Request   $requestCategorieRemiseClient $remiseCategorieClientEntityManagerInterface $em
  51.                                    Datatable $datatableTranslatorInterface $translatorValidatorInterface $validator
  52.     ) {
  53.         $user $this->getUser();
  54.         $remiseCategorieClient->setUtilisateur($user);
  55.         $form   $this->createForm(CategorieRemiseClientType::class, $remiseCategorieClient);
  56.         $errors "";
  57.         $form->handleRequest($request);
  58.         if ($form->isSubmitted()) {
  59.             $droit $this->isGranted(EntityVoter::UPDATECategorieRemiseClient::class);
  60.             if ( ! $droit) {
  61.                 return $this->redirectToRoute('dtc_categorie_remise_client_modifier', ["id" => $remiseCategorieClient->getId()]);
  62.             }
  63.             if ($form->isValid()) {
  64.                 $em->persist($remiseCategorieClient);
  65.                 $em->flush();
  66.                 $this->addFlash(
  67.                     'notice',
  68.                     $translator->trans('Remise catégorie client sauvegardée avec succès !')
  69.                 );
  70.                 return $this->redirectToRoute('dtc_categorie_remise_client_modifier', ["id" => $remiseCategorieClient->getId()]);
  71.             } else {
  72.                 $errors $validator->validate($remiseCategorieClient);
  73.             }
  74.         }
  75.         $this->datatableClients($datatable$translator$remiseCategorieClient);
  76.         $this->datatableRemises($datatable$translator$remiseCategorieClient);
  77.         return $this->render('Remises/CategorieRemiseClient/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'categorieRemiseClient' => $remiseCategorieClient]);
  78.     }
  79.     /**
  80.      * @Route("/remise/categorie-remise-client", name="dtc_categorie_remise_client_liste")
  81.      */
  82.     public function listerAction(Request $requestColonneTableauService $serviceColonneTableauDatatable $datatableTranslatorInterface $translator)
  83.     {
  84.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [0], "visible" => true"orderable" => false];
  85.         $tableau_class_cellule[] = [
  86.             "className" => "visible_export colonne_id",
  87.             "targets"   => [1],
  88.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(CategorieRemiseClient::class, "id"),
  89.         ];
  90.         $tableau_class_cellule[] = [
  91.             "className" => "visible_export colonne_id",
  92.             "targets"   => [2],
  93.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(CategorieRemiseClient::class, "reference"),
  94.         ];
  95.         $tableau_class_cellule[] = [
  96.             "className" => "visible_export colonne_id",
  97.             "targets"   => [3],
  98.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(CategorieRemiseClient::class, "libelle"),
  99.         ];
  100.         $tableau_class_cellule[] = ["orderable" => false"className" => "colonne_id""targets" => [4], "visible" => true];
  101.         $this->datatable($datatable$translator);
  102.         return $this->render('Remises/CategorieRemiseClient/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule]);
  103.     }
  104.     /**
  105.      * set datatable configs
  106.      *
  107.      * @return \App\Library\Datatable\Util\Datatable
  108.      */
  109.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  110.     {
  111.         $datatable->setEntity(CategorieRemiseClient::class, "x")
  112.                   ->setFields(
  113.                       [
  114.                           $translator->trans("ID")      => 'x.id',
  115.                           $translator->trans("Réf")     => 'x.reference',
  116.                           $translator->trans("Libellé") => 'x.libelle',
  117.                           $translator->trans("Actions") => 'x.id',
  118.                           "_identifier_"                => 'x.id',
  119.                       ]
  120.                   )
  121.             //->addJoin('x.documentCommercial', 'd', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)             
  122.                   ->setRenderers(
  123.                 [
  124.                     => [
  125.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  126.                         'params' => [
  127.                             'edit_route' => 'dtc_categorie_remise_client_modifier',
  128.                         ],
  129.                     ],
  130.                     => [
  131.                         'view'   => 'FO/DataTable/actions.html.twig',
  132.                         'params' => [
  133.                             'edit_route' => 'dtc_categorie_remise_client_modifier',
  134.                             'objet'      => CategorieRemiseClient::class,
  135.                         ],
  136.                     ],
  137.                 ]
  138.             )
  139.                   ->setMultiple(
  140.                       [
  141.                           'delete' => [
  142.                               'title' => 'Non disponible',
  143.                               'route' => 'dtc_categorie_remise_client_liste',
  144.                           ],
  145.                       ]
  146.                   )
  147.                   ->setOrder("x.id""desc")
  148.                   ->setSearch(true)
  149.                   ->setSearchFields([12]);
  150.         //$datatable->setSearchFields(array(0,2));
  151.         return $datatable;
  152.     }
  153.     /**
  154.      * Grid action
  155.      * @return Response
  156.      */
  157.     /**
  158.      * @Route("/remise/categorie-remise-client/grid", name="dtc_categorie_remise_client_liste_grid")
  159.      */
  160.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  161.     {
  162.         return $this->datatable($datatable$translator)->execute();
  163.     }
  164.     /**
  165.      * @Route("/remise/checkbox/client/categorie", name="dtc_categorie_remise_client_client_checkbox")
  166.      */
  167.     public function listerCategorieRemiseClientCheckboxAction(Request $request$client = [], EntityManagerInterface $em)
  168.     {
  169.         $id                           '';
  170.         $repo_client                  $em->getRepository(Client::class);
  171.         $repo_categorie_remise        $em->getRepository(CategorieRemiseClient::class);
  172.         $repo_client_categorie_remise $em->getRepository(CategorieRemiseClientClient::class);
  173.         $id                           $request->query->get('id');
  174.         $url                          $this->generateUrl('dtc_categorie_remise_client_client_checkbox', []);
  175.         if ($request->query->get('client') != '') {
  176.             $client $repo_client->find($request->query->get('client'));
  177.         }
  178.         //$categories = $repo_categorie_remise->listeCategories();
  179.         $categories    $repo_categorie_remise->getCategorieRemiseClient();
  180.         $tabCategories = [];
  181.         foreach ($categories as $c) {
  182.             $c['checked'] = 0;
  183.             //$c['totalSousCategorie'] = count($repo_categorie_remise->findBy(array("categorieParent"=>$c)));
  184.             $c['totalSousCategorie'] = 0;
  185.             $c['selection']          = 0;
  186.             $tmp $repo_categorie_remise->find($c['id']);
  187.             if (is_object($client) and is_object($repo_client_categorie_remise->findOneBy(['client' => $client'categorieRemiseClient' => $tmp]))) {
  188.                 $c['checked'] = 1;
  189.             }
  190.             $tabCategories[] = $c;
  191.         }
  192.         $categories $tabCategories;
  193.         return $this->render(
  194.             'Remises/CategorieRemiseClient/checkbox.html.twig',
  195.             ['categories' => $categories'client' => $client'url' => $url'objet' => 'client''name' => 'categories_remise']
  196.         );
  197.     }
  198.     /**
  199.      * @Route("", name="")
  200.      */
  201.     public function listerCategorieRemiseClientPourRemiseCheckboxAction(Request $request$remise = [], EntityManagerInterface $em)
  202.     {
  203.         $id                           '';
  204.         $repo_remise                  $em->getRepository(Remise::class);
  205.         $repo_categorie_remise        $em->getRepository(CategorieRemiseClient::class);
  206.         $repo_remise_categorie_remise $em->getRepository(CategorieRemiseClientRemise::class);
  207.         $id                           $request->query->get('id');
  208.         $url                          $this->generateUrl('dtc_categorie_remise_client_client_checkbox', []);
  209.         if ($request->query->get('client') != '') {
  210.             $remise $repo_remise->find($request->query->get('remise'));
  211.         }
  212.         //$categories = $repo_categorie_remise->listeCategories();
  213.         $categories    $repo_categorie_remise->getCategorieRemiseClient();
  214.         $tabCategories = [];
  215.         foreach ($categories as $c) {
  216.             $c['checked'] = 0;
  217.             //$c['totalSousCategorie'] = count($repo_categorie_remise->findBy(array("categorieParent"=>$c)));
  218.             $c['totalSousCategorie'] = 0;
  219.             $c['selection']          = 0;
  220.             $tmp                     $repo_categorie_remise->find($c['id']);
  221.             if (is_object($remise) and is_object($repo_remise_categorie_remise->findOneBy(['remise' => $remise'categorieRemiseClient' => $tmp]))) {
  222.                 $c['checked'] = 1;
  223.             }
  224.             $tabCategories[] = $c;
  225.         }
  226.         $categories $tabCategories;
  227.         return $this->render(
  228.             'Remises/CategorieRemiseClient/checkbox.html.twig',
  229.             ['categories' => $categories'client' => $remise'url' => $url'objet' => 'client''name' => 'categories_remise']
  230.         );
  231.     }
  232.     /**
  233.      * set datatable configs
  234.      *
  235.      * @return \App\Library\Datatable\Util\Datatable
  236.      */
  237.     private function datatableClients(Datatable $datatableTranslatorInterface $translator$categorieRemiseClient)
  238.     {
  239.         $datatable->setDatatableId('dta-clients')
  240.                   ->setEntity(Client::class, "x")
  241.                   ->setFields(
  242.                       [
  243.                           $translator->trans("ID")        => 'x.id',
  244.                           $translator->trans("Réf")       => 'x.reference',
  245.                           $translator->trans("Nom")       => 'x.nom',
  246.                           $translator->trans("Prénom")    => 'x.prenom',
  247.                           $translator->trans("Téléphone") => 'x.telephone',
  248.                           $translator->trans("Actions") => 'x.id',
  249.                           "_identifier_"                => 'x.id',
  250.                       ]
  251.                   )
  252.             //->addJoin('x.marque', 'm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)         
  253.                   ->addJoin('x.categorieRemiseClientClient''m'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  254.                   ->setWhere(                                                     // set your dql where statement
  255.                       'm.categorieRemiseClient = :categorieRemiseClient',
  256.                       ['categorieRemiseClient' => $categorieRemiseClient]
  257.                   )
  258.                   ->setRenderers(
  259.                       [
  260.                           => [
  261.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  262.                               'params' => [
  263.                                   'edit_route' => 'dtc_client_modifier',
  264.                               ],
  265.                           ],
  266.                           => [
  267.                               'view'   => 'FO/DataTable/actions.html.twig',
  268.                               'params' => [
  269.                                   'edit_route' => 'dtc_client_modifier',
  270.                                   'objet'      => Client::class,
  271.                               ],
  272.                           ],
  273.                       ]
  274.                   )
  275.                   ->setOrder("x.id""desc")
  276.                   ->setSearch(true)
  277.                   ->setSearchFields([234]);
  278.         //$datatable->setSearchFields(array(0,2));
  279.         return $datatable;
  280.     }
  281.     /**
  282.      * Grid action
  283.      * @return Response
  284.      */
  285.     /**
  286.      * @Route("/remise/categorie-remise-client/clients/grid/{id}", name="dtc_categorie_remise_client_client_liste_grid")
  287.      */
  288.     public function gridClientsAction(Request $requestCategorieRemiseClient $categorieRemiseClientDatatable $datatableTranslatorInterface $translator)
  289.     {
  290.         return $this->datatableClients($datatable$translator$categorieRemiseClient)->execute();
  291.     }
  292.     /**
  293.      * set datatable configs
  294.      *
  295.      * @return \App\Library\Datatable\Util\Datatable
  296.      */
  297.     private function datatableRemises(Datatable $datatableTranslatorInterface $translator$categorieRemiseClient)
  298.     {
  299.         $datatable->setDatatableId('dta-remises')
  300.                   ->setEntity(Remise::class, "x")
  301.                   ->setFields(
  302.                       [
  303.                           $translator->trans("ID")      => 'x.id',
  304.                           $translator->trans("Libelle") => 'x.libelle',
  305.                           $translator->trans("Remise")  => 'x.montant',
  306.                           $translator->trans("Client")  => 'c.nom',
  307.                           $translator->trans("Actions") => 'x.id',
  308.                           "_identifier_"                => 'x.id',
  309.                       ]
  310.                   )
  311.                   ->addJoin('x.categorieRemiseClientRemise''ra'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  312.                   ->addJoin('x.client''c'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  313.                   ->setWhere(                                                     // set your dql where statement
  314.                       'ra.categorieRemiseClient = :categorieRemiseClient',
  315.                       ['categorieRemiseClient' => $categorieRemiseClient]
  316.                   )
  317.                   ->setRenderers(
  318.                       [
  319.                           => [
  320.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  321.                               'params' => [
  322.                                   'edit_route' => 'dtc_remise_modifier',
  323.                               ],
  324.                           ],
  325.                           => [
  326.                               'view' => 'FO/DataTable/pourcentage.html.twig',
  327.                           ],
  328.                           => [
  329.                               'view'   => 'FO/DataTable/actions.html.twig',
  330.                               'params' => [
  331.                                   'edit_route' => 'dtc_remise_modifier',
  332.                                   'objet'      => Remise::class,
  333.                               ],
  334.                           ],
  335.                       ]
  336.                   )
  337.                   ->setOrder("x.id""desc")
  338.                   ->setSearch(true)
  339.                   ->setSearchFields([1]);
  340.         //$datatable->setSearchFields(array(0,2));
  341.         return $datatable;
  342.     }
  343.     /**
  344.      * Grid action
  345.      * @return Response
  346.      */
  347.     /**
  348.      * @Route("/remise/categorie-remise-client/remises/grid/{id}", name="dtc_categorie_remise_client_remise_liste_grid")
  349.      */
  350.     public function gridRemisesAction(Request $requestCategorieRemiseClient $categorieRemiseClientDatatable $datatableTranslatorInterface $translator)
  351.     {
  352.         return $this->datatableRemises($datatable$translator$categorieRemiseClient)->execute();
  353.     }
  354. }