src/Controller/Rangements/CaisseEmplacementController.php line 68

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Rangements;
  3. use App\Entity\Rangements\Caisse;
  4. use App\Entity\Rangements\CaisseEmplacement;
  5. use App\Form\Rangements\CaisseEmplacementType;
  6. use App\Form\Rangements\SupprimerCaisseEmplacementType;
  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 CaisseEmplacementController extends AbstractController
  18. {
  19.     /**
  20.      * @Route("/chariot-emplacement/scanner/{id}", name="dtc_caisse_emplacement_scanner")
  21.      */
  22.     public function scannerAction(Request $requestCaisse $caisseEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  23.     {
  24.         $caisse_emplacement '';
  25.         $rendu              '';
  26.         $errors             '';
  27.         $id                 '';
  28.         $titreModal         '';
  29.         $ean                trim($request->request->get('scan'));
  30.         if ( ! empty($ean)) {
  31.             $caisse_emplacement $em->getRepository(CaisseEmplacement::class)->findOneBy(['ean' => $ean'caisse' => $caisse]);
  32.         }
  33.         if (is_object($caisse_emplacement)) {
  34.             return new JsonResponse(
  35.                 [
  36.                     'id'                       => $id,
  37.                     'rendu'                    => '',
  38.                     'errors'                   => $errors,
  39.                     'caisseEmplacementId'      => $caisse_emplacement->getId(),
  40.                     'caisseEmplacementLibelle' => $caisse_emplacement->getEan(),
  41.                 ]
  42.             );
  43.         } else {
  44.             $this->addFlash('warning'"Emplacement chariot introuvable : ".$ean);
  45.             $errors $this->renderView('layout-errors.html.twig');
  46.             return new JsonResponse(['id' => $id'rendu' => '''errors' => $errors'caisseEmplacementId' => '''caisseEmplacementLibelle' => '']);
  47.         }
  48.     }
  49.     /**
  50.      * @Route("/caisse-emplacement/nouveau/{id}/{type}", name="dtc_caisse_emplacement_ajouter")
  51.      */
  52.     public function ajouterAction(Request $request$id$type ""EntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  53.     {
  54.         $titre_modal       $translator->trans("Nouveau emplacement de chariot");
  55.         $repo_objet        $em->getRepository(Caisse::class);
  56.         $get               $request->query->all();
  57.         $caisseEmplacement = new CaisseEmplacement;
  58.         $objet $repo_objet->find($id);
  59.         if (is_object($objet)) {
  60.             $caisseEmplacement->setCaisse($objet);
  61.             //$caisseEmplacement->setLibelle($objet->getLibelle());
  62.         }
  63.         $user $this->getUser();
  64.         //$caisseEmplacement->setUtilisateur($user);
  65.         $form   $this->createForm(CaisseEmplacementType::class, $caisseEmplacement);
  66.         $errors "";
  67.         $form->handleRequest($request);
  68.         if ($form->isSubmitted()) {
  69.             if ($form->isValid()) {
  70.                 if ($type == 'caisse') {
  71.                     $repo_objet $em->getRepository(Caisse::class);
  72.                     $objet      $repo_objet->find($id);
  73.                     $url $this->generateUrl('dtc_caisse_modifier', ['id' => $objet->getId(), 'tab' => 'emplacements']);
  74.                 }
  75.                 $em->persist($caisseEmplacement);
  76.                 $em->persist($objet);
  77.                 $em->flush();
  78.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  79.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  80.                 } else {
  81.                     $this->addFlash('notice'$translator->trans('Condition de vente ajoutée avec succès !'));
  82.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  83.                 }
  84.             } else {
  85.                 $errors $validator->validate($caisseEmplacement);
  86.                 $rendu  $this->renderView(
  87.                     'Rangements/CaisseEmplacement/ajouter.html.twig',
  88.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'caisseEmplacement' => $caisseEmplacement]
  89.                 );
  90.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  91.             }
  92.         }
  93.         $rendu $this->renderView(
  94.             'Rangements/CaisseEmplacement/ajouter.html.twig',
  95.             ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'caisseEmplacement' => $caisseEmplacement]
  96.         );
  97.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  98.         //return $this->render('Rangements/CaisseEmplacement/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type));
  99.     }
  100.     /**
  101.      * @Route("/caisse-emplacement/modifier/{objet}/{id}/{type}", name="dtc_caisse_emplacement_modifier")
  102.      */
  103.     public function modifierAction(Request             $requestCaisseEmplacement $objet$id$typeEntityManagerInterface $em
  104.                                    TranslatorInterface $translatorValidatorInterface $validator
  105.     ) {
  106.         $caisseEmplacement $objet;
  107.         $titre_modal       $translator->trans("Modifier l'emplacement du chariot");
  108.         $get               $request->query->all();
  109.         $user              $this->getUser();
  110.         // $caisseEmplacement->setUtilisateur($user);
  111.         $form   $this->createForm(CaisseEmplacementType::class, $caisseEmplacement);
  112.         $errors "";
  113.         $form->handleRequest($request);
  114.         if ($form->isSubmitted()) {
  115.             $droit $this->isGranted(EntityVoter::UPDATECaisseEmplacement::class);
  116.             /*
  117.             if(!$droit) {
  118.                 $rendu = $this->renderView('Rangements/CaisseEmplacement/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type,'objet'=>$objet));
  119.                 return new Response(json_encode(array('rendu'=>$rendu,'valide'=>'0','url'=>'','titre'=>$titre_modal)), 200, array('Content-Type'=>'application/json'));
  120.             }
  121.             */
  122.             if ($form->isValid()) {
  123.                 if ($type == 'caisse') {
  124.                     $repo_objet $em->getRepository(Caisse::class);
  125.                     $caisse     $repo_objet->find($id);
  126.                     $url        $this->generateUrl('dtc_caisse_modifier', ['id' => $caisse->getId(), 'tab' => 'emplacements']);
  127.                 }
  128.                 $em->persist($caisseEmplacement);
  129.                 $em->flush();
  130.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  131.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  132.                 } else {
  133.                     $this->addFlash('notice'$translator->trans('Condition de vente modifiée avec succès !'));
  134.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  135.                 }
  136.             } else {
  137.                 $errors $validator->validate($caisseEmplacement);
  138.                 $rendu  $this->renderView(
  139.                     'Rangements/CaisseEmplacement/ajouter.html.twig',
  140.                     [
  141.                         'form'              => $form->createView(),
  142.                         'errors'            => $errors,
  143.                         'id'                => $id,
  144.                         'type'              => $type,
  145.                         'objet'             => $objet,
  146.                         'caisseEmplacement' => $caisseEmplacement,
  147.                     ]
  148.                 );
  149.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  150.             }
  151.         }
  152.         $rendu $this->renderView(
  153.             'Rangements/CaisseEmplacement/ajouter.html.twig',
  154.             ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet'caisseEmplacement' => $caisseEmplacement]
  155.         );
  156.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  157.     }
  158.     /**
  159.      * @Route("/caisse-emplacement/supprimer/{objet}/{id}/{type}", name="dtc_caisse_emplacement_supprimer")
  160.      */
  161.     public function supprimerAction(Request $requestCaisseEmplacement $objet$id$typeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  162.     {
  163.         $caisseEmplacement $objet;
  164.         $titre_modal       $translator->trans("Demande de confirmation");
  165.         $user              $this->getUser();
  166.         $get               $request->query->all();
  167.         $form              $this->createForm(SupprimerCaisseEmplacementType::class, $caisseEmplacement);
  168.         $errors            "";
  169.         $form->handleRequest($request);
  170.         if ($form->isSubmitted()) {
  171.             if ($form->isValid()) {
  172.                 $em->remove($caisseEmplacement);
  173.                 $em->flush();
  174.                 if ($type == 'caisse') {
  175.                     $url $this->generateUrl('dtc_caisse_modifier', ['id' => $id'tab' => 'emplacements']);
  176.                 }
  177.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  178.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  179.                 } else {
  180.                     $this->addFlash('notice'$translator->trans('Condition de vente supprimée avec succès !'));
  181.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  182.                 }
  183.             } else {
  184.                 $errors $validator->validate($caisseEmplacement);
  185.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  186.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  187.             }
  188.         }
  189.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  190.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  191.     }
  192.     /**
  193.      * @Route("/caisse-emplacement/charger-tableau/{id}/{type}", name="dtc_caisse_emplacement_charger_tableau")
  194.      */
  195.     public function chargerTableauAction(Request $request$id "0"$type "a")
  196.     {
  197.         $rendu $this->renderView('Rangements/CaisseEmplacement/charger_tableau.html.twig', ["id" => $id"type" => $type]);
  198.         return new JsonResponse(['rendu' => $rendu]);
  199.     }
  200.     /**
  201.      * @Route("/caisse-emplacement", name="dtc_caisse_emplacement_liste")
  202.      */
  203.     public function listerAction(Request $request$id "0"$type "a"EntityManagerInterface $emTranslatorInterface $translatorDatatable $datatable)
  204.     {
  205.         $tableau_class_cellule = [];
  206.         /*
  207.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(0),"visible"=>true);         
  208.         $tableau_class_cellule[]=array("orderable"=> false,"searchable"=> false,"className"=>" colonne_id","targets"=>array(12),"visible"=>true); 
  209.         */
  210.         $modal    $request->query->get('modal');
  211.         $caisseId $request->query->get('id');
  212.         $qte      $request->query->get('qte');
  213.         if ($type == "caisse") {
  214.             $repo_objet $em->getRepository(Caisse::class);
  215.         }
  216.         $objet $repo_objet->find($id);
  217.         if ($caisseId != '') {
  218.             $caisse $repo_objet->find($caisseId);
  219.             if ($modal == && is_object($caisse)) {
  220.                 $titre_modal $translator->trans('Conditions de vente');
  221.                 $this->datatableCaisse($datatable$translator$caisse$type);
  222.                 $rendu $this->renderView(
  223.                     'Rangements/CaisseEmplacement/lister.html.twig',
  224.                     ['tableauClassColonne' => $tableau_class_cellule"id" => $caisseId"type" => $type'qte' => $qte]
  225.                 );
  226.                 //$rendu = $this->renderView('FO/Supprimer/supprimer.html.twig', array('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.         if (is_object($objet)) {
  231.             if ($type == "caisse") {
  232.                 $tableau_class_cellule = [];
  233.                 $tableau_class_cellule   = [];
  234.                 $tableau_class_cellule[] = ["orderable" => true"searchable" => false"className" => "colonne_id""targets" => [0], "visible" => false];
  235.                 $tableau_class_cellule[] = ["orderable" => true"searchable" => false"className" => "colonne_id""targets" => [1], "visible" => true];
  236.                 $tableau_class_cellule[] = ["orderable" => false"searchable" => false"className" => "colonne_id""targets" => [2], "visible" => true];
  237.                 $this->datatableCaisse($datatable$translator$objet$type);
  238.             }
  239.             return $this->render('Rangements/CaisseEmplacement/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  240.         } else {
  241.             $this->datatable($datatable$translator);
  242.             return $this->render('Rangements/CaisseEmplacement/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  243.         }
  244.     }
  245.     /**
  246.      * set datatable configs
  247.      *
  248.      * @return \App\Library\Datatable\Util\Datatable
  249.      */
  250.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  251.     {
  252.         $datatable->setDatatableId('dta-condition-vente')
  253.                   ->setEntity(CaisseEmplacement::class, "x")
  254.                   ->setFields(
  255.                       [
  256.                           $translator->trans("ID")      => 'x.id',
  257.                           $translator->trans("Libellé") => 'x.libelle',
  258.                           $translator->trans("Mini")    => 'x.debut',
  259.                           $translator->trans("Maxi")    => 'x.fin',
  260.                           $translator->trans("Prix")    => 'x.prix',
  261.                           //$translator->trans("Libelle") =>  'x.libelle',                                                                                                                                                                                             
  262.                           $translator->trans("Actions") => 'x.id',
  263.                           "_identifier_"                => 'x.id',
  264.                       ]
  265.                   )
  266.             //->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)         
  267.             /*->setWhere(                                                     
  268.                     $type_jointure.' = :objet',
  269.                     array('objet' => $objet)
  270.                )
  271.               */
  272.                   ->setRenderers(
  273.                 [
  274.                     => [
  275.                         'view'   => 'FO/DataTable/actions.html.twig',
  276.                         'params' => [
  277.                             //'edit_route'  => 'dtc_garantie_modifier', 
  278.                             //'supprimer_route'  => 'dtc_garantie_supprimer', 
  279.                             'entite' => 'garantie',
  280.                             'objet'  => CaisseEmplacement::class,
  281.                         ],
  282.                     ],
  283.                 ]
  284.             )
  285.                   ->setOrder("x.id""desc")
  286.                   ->setSearch(true)
  287.                   ->setSearchFields([]);
  288.         return $datatable;
  289.     }
  290.     /**
  291.      * set datatable configs
  292.      *
  293.      * @return \App\Library\Datatable\Util\Datatable
  294.      */
  295.     private function datatableCaisse(Datatable $datatableTranslatorInterface $translator$objet$type "")
  296.     {
  297.         $type_jointure 'x.'.$type;
  298.         $datatable->setDatatableId('dta-caisse-emplacement')
  299.                   ->setEntity(CaisseEmplacement::class, "x")
  300.                   ->setFields(
  301.                       [
  302.                           $translator->trans("ID")         => 'x.id',
  303.                           $translator->trans("Code barre") => 'x.ean',
  304.                           $translator->trans("Actions") => 'x.id',
  305.                           "_identifier_"                => 'x.id',
  306.                       ]
  307.                   )
  308.             //->addJoin('x.categorieClient', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)                         
  309.             /*->setWhere(                                                     
  310.                     $type_jointure.' = :objet',
  311.                     array('objet' => $objet)
  312.                )
  313.               */
  314.                   ->setWhere(
  315.                 'x.caisse = :objet',
  316.                 ['objet' => $objet]
  317.             )
  318.                   ->setRenderers(
  319.                       [
  320.                           => [
  321.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  322.                               'params' => [
  323.                                   'edit_route'      => 'dtc_caisse_emplacement_modifier',
  324.                                   'supprimer_route' => 'dtc_caisse_emplacement_supprimer',
  325.                                   'id'              => $objet->getId(),
  326.                                   'type'            => $type,
  327.                                   'entite'          => 'garantie',
  328.                                   'table'           => 'dta-caisse-emplacement',
  329.                                   'objet'           => CaisseEmplacement::class,
  330.                                   'width_modal'     => 800,
  331.                               ],
  332.                           ],
  333.                       ]
  334.                   )
  335.                   ->setOrder("x.id""desc")
  336.                   ->setSearch(true)//->setSearchFields(array(1,2))
  337.         ;
  338.         return $datatable;
  339.     }
  340.     /**
  341.      * Grid action
  342.      * @return Response
  343.      */
  344.     /**
  345.      * @Route("/caisse-emplacement/grid/{id}/{type}", name="dtc_caisse_emplacement_liste_grid")
  346.      */
  347.     public function gridAction(Request $request$id ""$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  348.     {
  349.         if ($type == "caisse") {
  350.             $repo_objet $em->getRepository(Caisse::class);
  351.         }
  352.         $objet $repo_objet->find($id);
  353.         if (is_object($objet) and $type == "caisse") {
  354.             return $this->datatableCaisse($datatable$translator$objet$type)->execute();
  355.         } else {
  356.             return $this->datatable($datatable$translator)->execute();
  357.         }
  358.     }
  359. }