src/Controller/Fournisseurs/FraisPortController.php line 29

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Fournisseurs;
  3. use App\Entity\Clients\Client;
  4. use App\Entity\Fournisseurs\Fournisseur;
  5. use App\Entity\Fournisseurs\FraisPort;
  6. use App\Entity\Transporteurs\Transporteur;
  7. use App\Form\Fournisseurs\FraisPortType;
  8. use App\Form\Fournisseurs\SupprimerFraisPortType;
  9. use App\Library\Datatable\Util\Datatable;
  10. use App\Security\Voter\EntityVoter;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\JsonResponse;
  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 FraisPortController extends AbstractController
  20. {
  21.     /**
  22.      * @Route("/frais-port-fournisseur/nouveau/{id}/{type}", name="dtc_fournisseur_frais_port_ajouter")
  23.      */
  24.     public function ajouterAction(Request $request$id$type ""EntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  25.     {
  26.         $titre_modal $translator->trans("Nouveau frais de port");
  27.         $page        $request->query->get('page');
  28.         $fraisPort   = new FraisPort();
  29.         $user        $this->getUser();
  30.         //$fraisPort->setUtilisateur($user);
  31.         $get $request->query->all();
  32.         $form   $this->createForm(FraisPortType::class, $fraisPort);
  33.         $errors "";
  34.         $form->handleRequest($request);
  35.         if ($form->isSubmitted()) {
  36.             $post $request->request->all();
  37.             if ($form->isValid()) {
  38.                 if ($type == 'client') {
  39.                     $repo_objet $em->getRepository(Client::class);
  40.                     $objet      $repo_objet->find($id);
  41.                     $fraisPort->setClient($objet);
  42.                     $url $this->generateUrl('dtc_client_modifier', ['id' => $objet->getId(), 'tab' => 'fraisPort']);
  43.                 } elseif ($type == 'fournisseur') {
  44.                     $repo_objet $em->getRepository(Fournisseur::class);
  45.                     $objet      $repo_objet->find($id);
  46.                     $fraisPort->setFournisseur($objet);
  47.                     $url $this->generateUrl('dtc_fournisseur_modifier', ['id' => $objet->getId(), 'tab' => 'fraisPort']);
  48.                 }
  49.                 $em->persist($fraisPort);
  50.                 $em->flush();
  51.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  52.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  53.                 } else {
  54.                     $this->addFlash('notice'$translator->trans('FraisPort ajoutée avec succès !'));
  55.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  56.                 }
  57.             } else {
  58.                 $errors $validator->validate($fraisPort);
  59.                 $rendu  $this->renderView('Fournisseurs/FraisPort/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('Fournisseurs/FraisPort/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type]);
  64.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  65.         //return $this->render('Fournisseurs/FraisPort/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type));
  66.     }
  67.     /**
  68.      * @Route("/frais-port-fournisseur/modifier/{objet}/{id}/{type}", name="dtc_fournisseur_frais_port_modifier")
  69.      */
  70.     public function modifierAction(Request            $requestFraisPort $objet$id$typeEntityManagerInterface $emTranslatorInterface $translator,
  71.                                    ValidatorInterface $validator
  72.     ) {
  73.         $fraisPort   $objet;
  74.         $titre_modal $translator->trans("Modifier frais de port");
  75.         $get         $request->query->all();
  76.         $user        $this->getUser();
  77.         //$fraisPort->setUtilisateur($user);
  78.         $form   $this->createForm(FraisPortType::class, $fraisPort);
  79.         $errors "";
  80.         $form->handleRequest($request);
  81.         $post $request->request->all();
  82.         if ($form->isSubmitted()) {
  83.             $droit $this->isGranted(EntityVoter::UPDATEFraisPort::class);
  84.             if ( ! $droit) {
  85.                 $rendu $this->renderView(
  86.                     'Fournisseurs/FraisPort/ajouter.html.twig',
  87.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]
  88.                 );
  89.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  90.             }
  91.             if ($form->isValid()) {
  92.                 if ($type == 'client') {
  93.                     $repo_objet $em->getRepository(Client::class);
  94.                     $objet      $repo_objet->find($id);
  95.                     $fraisPort->setClient($objet);
  96.                     $url $this->generateUrl('dtc_client_modifier', ['id' => $objet->getId(), 'tab' => 'fraisPort']);
  97.                 } elseif ($type == 'fournisseur') {
  98.                     $repo_objet $em->getRepository(Fournisseur::class);
  99.                     $objet      $repo_objet->find($id);
  100.                     $fraisPort->setFournisseur($objet);
  101.                     $url $this->generateUrl('dtc_fournisseur_modifier', ['id' => $objet->getId(), 'tab' => 'fraisPort']);
  102.                 }
  103.                 $em->persist($fraisPort);
  104.                 $em->flush();
  105.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  106.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  107.                 } else {
  108.                     $this->addFlash('notice'$translator->trans('FraisPort modifié avec succès !'));
  109.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  110.                 }
  111.             } else {
  112.                 $errors $validator->validate($fraisPort);
  113.                 $rendu  $this->renderView(
  114.                     'Fournisseurs/FraisPort/ajouter.html.twig',
  115.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]
  116.                 );
  117.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  118.             }
  119.         }
  120.         $rendu $this->renderView('Fournisseurs/FraisPort/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  121.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  122.     }
  123.     /**
  124.      * @Route("/frais-port-fournisseur/supprimer/{objet}/{id}/{type}", name="dtc_fournisseur_frais_port_supprimer")
  125.      */
  126.     public function supprimerAction(Request $requestFraisPort $objet$id$typeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  127.     {
  128.         $fraisPort   $objet;
  129.         $titre_modal $translator->trans("Demande de confirmation");
  130.         $user        $this->getUser();
  131.         $get         $request->query->all();
  132.         $form        $this->createForm(SupprimerFraisPortType::class, $fraisPort);
  133.         $errors      "";
  134.         $form->handleRequest($request);
  135.         if ($form->isSubmitted()) {
  136.             if ($form->isValid()) {
  137.                 $em->remove($fraisPort);
  138.                 $em->flush();
  139.                 if ($type == 'client') {
  140.                     $url $this->generateUrl('dtc_client_modifier', ['id' => $id'tab' => 'fraisPort']);
  141.                 } elseif ($type == 'transporteur') {
  142.                     $url $this->generateUrl('dtc_transporteur_modifier', ['id' => $id'tab' => 'fraisPort']);
  143.                 } elseif ($type == 'fournisseur') {
  144.                     $url $this->generateUrl('dtc_fournisseur_modifier', ['id' => $id'tab' => 'fraisPort']);
  145.                 }
  146.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  147.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  148.                                             200,
  149.                                             ['Content-Type' => 'application/json']);
  150.                 } else {
  151.                     $this->addFlash('notice'$translator->trans('FraisPort supprimée avec succès !'));
  152.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  153.                 }
  154.             } else {
  155.                 $errors $validator->validate($fraisPort);
  156.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  157.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  158.             }
  159.         }
  160.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  161.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  162.     }
  163.     /**
  164.      * @Route("", name="")
  165.      */
  166.     public function listerAction(Request $request$id$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  167.     {
  168.         if ($type == 'client') {
  169.             $repo_objet $em->getRepository(Client::class);
  170.             $objet      $repo_objet->find($id);
  171.         } elseif ($type == 'transporteur') {
  172.             $repo_objet $em->getRepository(Transporteur::class);
  173.             $objet      $repo_objet->find($id);
  174.         } elseif ($type == 'fournisseur') {
  175.             $repo_objet $em->getRepository(Fournisseur::class);
  176.             $objet      $repo_objet->find($id);
  177.         }
  178.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right""targets" => [0], "visible" => true"orderable" => true"searchable" => true];
  179.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right""targets" => [1], "visible" => true"orderable" => true"searchable" => true];
  180.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-center""targets" => [2], "visible" => true"orderable" => true"searchable" => true];
  181.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-center""targets" => [3], "visible" => true"orderable" => true"searchable" => true];
  182.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right""targets" => [4], "visible" => true"orderable" => true"searchable" => true];
  183.         $tableau_class_cellule[] = ["orderable" => false"className" => "colonne_id""targets" => [5], "visible" => true];
  184.         $this->datatable($objet$type$datatable$translator);
  185.         return $this->render('Fournisseurs/FraisPort/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  186.     }
  187.     /**
  188.      * set datatable configs
  189.      *
  190.      * @return \App\Library\Datatable\Util\Datatable
  191.      */
  192.     private function datatable($objet$type ""Datatable $datatableTranslatorInterface $translator)
  193.     {
  194.         $type_jointure 'x.'.$type;
  195.         $datatable->setDatatableId('dta-fournisseurs-frais-port')
  196.                   ->setEntity(FraisPort::class, "x")
  197.                   ->setFields(
  198.                       [
  199.                           //$translator->trans("ID") =>  'x.id',
  200.                           $translator->trans("Montant minimum") => 'x.montantMini',
  201.                           $translator->trans("Montant maximum") => 'x.montantMaxi',
  202.                           $translator->trans("Poids minimum")   => 'x.poidsMini',
  203.                           $translator->trans("Poids maximum")   => 'x.poidsMaxi',
  204.                           $translator->trans("Frais de port")   => 'x.fraisPort',
  205.                           $translator->trans("Actions")         => 'x.id',
  206.                           "_identifier_"                        => 'x.id',
  207.                       ]
  208.                   )
  209.             //->addJoin('x.ville', 'v', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  210.             //->addJoin('x.codePostal', 'cp', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  211.             //->addJoin('x.pays', 'p', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  212.                   ->setWhere(
  213.                 $type_jointure.' = :objet',
  214.                 ['objet' => $objet]
  215.             )
  216.                   ->setRenderers(
  217.                       [
  218.                           => [
  219.                               'view'   => 'FO/DataTable/prix.html.twig',
  220.                               'params' => [],
  221.                           ],
  222.                           => [
  223.                               'view'   => 'FO/DataTable/prix.html.twig',
  224.                               'params' => [],
  225.                           ],
  226.                           => [
  227.                               'view'   => 'FO/DataTable/prix.html.twig',
  228.                               'params' => [],
  229.                           ],
  230.                           /*
  231.                           0=> array(
  232.                               'view' => 'FO/DataTable/edit_texte.html.twig',
  233.                               'params' => array(
  234.                                       'objet'    => 'DTCFournisseursBundle:FraisPort',
  235.                                       'champ'    => 'setLibelle',
  236.                                   ),
  237.                           ),
  238.                           1=> array(
  239.                               'view' => 'FO/DataTable/edit_texte.html.twig',
  240.                               'params' => array(
  241.                                       'objet'    => 'DTCFournisseursBundle:FraisPort',
  242.                                       'champ'    => 'setNumero',
  243.                                   ),
  244.                           ),
  245.                           2=> array(
  246.                               'view' => 'FO/DataTable/edit_texte.html.twig',
  247.                               'params' => array(
  248.                                       'objet'    => 'DTCFournisseursBundle:FraisPort',
  249.                                       'champ'    => 'setRue',
  250.                                   ),
  251.                           ),
  252.                           3=> array(
  253.                               'view' => 'FO/DataTable/edit_texte.html.twig',
  254.                               'params' => array(
  255.                                       'objet'    => 'DTCFournisseursBundle:FraisPort',
  256.                                       'champ'    => 'setComplement',
  257.                                   ),
  258.                           ),
  259.                           */
  260.                           => [
  261.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  262.                               'params' => [
  263.                                   'edit_route'      => 'dtc_fournisseur_frais_port_modifier',
  264.                                   'supprimer_route' => 'dtc_fournisseur_frais_port_supprimer',
  265.                                   'id'              => $objet->getId(),
  266.                                   'type'            => $type,
  267.                                   'entite'          => 'fraisPort',
  268.                                   'objet'           => FraisPort::class,
  269.                                   'table'           => "dta-fournisseurs-frais-port",
  270.                               ],
  271.                           ],
  272.                       ]
  273.                   )
  274.                   ->setOrder("x.id""asc")
  275.                   ->setSearch(true)
  276.                   ->setSearchFields([12]);
  277.         return $datatable;
  278.     }
  279.     /**
  280.      * @Route("/frais-port-fournisseur/grid/{id}/{type}", name="dtc_fournisseur_frais_port_liste_grid")
  281.      */
  282.     public function gridAction(Request $request$id ""$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  283.     {
  284.         if ($type == 'client') {
  285.             $repo_objet $em->getRepository(Client::class);
  286.             $objet      $repo_objet->find($id);
  287.         } elseif ($type == 'transporteur') {
  288.             $repo_objet $em->getRepository(Transporteur::class);
  289.             $objet      $repo_objet->find($id);
  290.         } elseif ($type == 'fournisseur') {
  291.             $repo_objet $em->getRepository(Fournisseur::class);
  292.             $objet      $repo_objet->find($id);
  293.         }
  294.         return $this->datatable($objet$type$datatable$translator)->execute();
  295.     }
  296.     /**
  297.      * @Route("/frais-port-fournisseur/recuperer/fournisseur/{id}", name="dtc_fournisseur_frais_port_recuperer")
  298.      */
  299.     public function recupererAction(Request $requestFournisseur $fournisseurEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  300.     {
  301.         $franco          floatval($fournisseur->getFranco());
  302.         $repo_frais_port $em->getRepository(FraisPort::class);
  303.         $montant         floatval($request->query->get('montant'));
  304.         $poids           floatval($request->query->get('poids'));
  305.         if ($franco && $montant $franco) {
  306.             //var_dump('franco');
  307.             $fraisPort 0;
  308.         } else {
  309.             $fraisPort $repo_frais_port->getFraisPort($fournisseur$montant$poids);
  310.         }
  311.         return new JsonResponse(['fraisPort' => $fraisPort]);
  312.     }
  313.     /**
  314.      * @Route("/fraisport/charger-tableau/{id}/{type}", name="dtc_fraisport_fournisseur_charger_tableau")
  315.      */
  316.     public function chargerTableauAction(Request $requestFournisseur $fournisseur)
  317.     {
  318.         $rendu $this->renderView('Fournisseurs/FraisPort/charger_tableau.html.twig', ["fournisseur" => $fournisseur]);
  319.         return new JsonResponse(['rendu' => $rendu]);
  320.     }
  321. }