src/Controller/GestionComerciale/CommandeNumeroSuiviController.php line 174

Open in your IDE?
  1. <?php
  2. namespace App\Controller\GestionComerciale;
  3. use App\Entity\GestionComerciale\Commande;
  4. use App\Entity\GestionComerciale\CommandeNumeroSuivi;
  5. use App\Form\GestionComerciale\CommandeNumeroSuiviType;
  6. use App\Form\MarketPlace\ProfilType;
  7. use App\Library\Datatable\Util\Datatable;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\Form\FormError;
  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 CommandeNumeroSuiviController extends AbstractController
  18. {
  19.     /**
  20.      * @Route("/numero-suivi-commande/{id}/{type}", name="dtc_numero_suivi_commande_liste")
  21.      */
  22.     public function listerAction(Request $request$id$type ""$objet ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  23.     {
  24.         if ($type == 'commande') {
  25.             $repo_objet $em->getRepository(Commande::class);
  26.             $objet      $repo_objet->find($id);
  27.         }
  28.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [0], "visible" => true"orderable" => true"searchable" => true];
  29.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-center""targets" => [1], "visible" => true"orderable" => true"searchable" => true];
  30.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [2], "visible" => true"orderable" => true"searchable" => true];
  31.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-center""targets" => [3], "visible" => true"orderable" => true"searchable" => true];
  32.         $this->datatable($objet$type$datatable$translator);
  33.         return $this->render('GestionComerciale/CommandeNumeroSuivi/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  34.     }
  35.     /**
  36.      * set datatable configs
  37.      *
  38.      * @return \App\Library\Datatable\Util\Datatable
  39.      */
  40.     private function datatable($objet$type ""Datatable $datatableTranslatorInterface $translator)
  41.     {
  42.         $type_jointure 'x.'.$type;
  43.         $datatable->setDatatableId('dta-numero-suivi-commande')
  44.             ->setEntity(CommandeNumeroSuivi::class, "x")
  45.             ->setFields(
  46.                 [
  47.                     $translator->trans("id")           => 'x.id',
  48.                     $translator->trans("Date")         => 'x.date',
  49.                     $translator->trans("Colisage")     => 'x.id',
  50.                     $translator->trans("Transporteur") => 't.libelle',
  51.                     $translator->trans("Numéro")       => 'x.numeroSuivi',
  52.                     $translator->trans("Actions")      => 'x.id',
  53.                     "_identifier_"                                  => 'x.id',
  54.                 ]
  55.             )
  56.             ->addJoin('x.transporteur''t'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  57.             ->addJoin('x.bp''bp'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  58.             ->addJoin('x.colisage''c'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  59.             ->addJoin('c.parent''p'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  60.             ->addJoin('c.colisageArticleCommande''cac'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  61.             ->addJoin('cac.articleCommande''ac'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  62.             ->setWhere(
  63.                 'ac.commande = :objet',
  64.                 ['objet' => $objet]
  65.             )
  66.             ->setRenderers(
  67.                 [
  68.                     => [
  69.                         'view'   => 'FO/DataTable/heure.html.twig',
  70.                         'params' => [],
  71.                     ],
  72.                     => [
  73.                         'view'   => 'FO/DataTable/reference-colisage.html.twig',
  74.                         'params' => [],
  75.                     ],
  76.                     => [
  77.                         'view'   => 'FO/DataTable/actions.html.twig',
  78.                         'params' => [
  79.                             'chemin_etiquette' => true,
  80.                         ],
  81.                     ],
  82.                 ]
  83.             )
  84.             ->setGroupBy("x.id")
  85.             ->setOrder("x.id""asc")
  86.             ->setSearch(true)
  87.             ->setSearchFields([]);
  88.         return $datatable;
  89.     }
  90.     /**
  91.      * set datatable configs
  92.      *
  93.      * @return \App\Library\Datatable\Util\Datatable
  94.      */
  95.     private function __datatable($objet$type ""Datatable $datatableTranslatorInterface $translator)
  96.     {
  97.         $type_jointure 'x.'.$type;
  98.         $datatable->setDatatableId('dta-numero-suivi-commande')
  99.                   ->setEntity(CommandeNumeroSuivi::class, "x")
  100.                   ->setFields(
  101.                       [
  102.                          $translator->trans("id")           => 'x.id',
  103.                          $translator->trans("Date")         => 't.date',
  104.                          $translator->trans("BP")           => 'bp.reference',
  105.                          $translator->trans("Colisage")     => 'x.id',
  106.                          $translator->trans("Transporteur") => 't.libelle',
  107.                          $translator->trans("Numéro")       => 'x.numeroSuivi',
  108.                          $translator->trans("Actions")      => 'x.id',
  109.                           "_identifier_"                                  => 'x.id',
  110.                       ]
  111.                   )
  112.                   ->addJoin('x.transporteur''t'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  113.                   ->addJoin('x.bp''bp'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  114.                   ->setWhere(
  115.                       $type_jointure.' = :objet',
  116.                       ['objet' => $objet]
  117.                   )
  118.                   ->setRenderers(
  119.                       [
  120.                           => [
  121.                               'view'   => 'FO/DataTable/heure.html.twig',
  122.                               'params' => [],
  123.                           ],
  124.                           => [
  125.                               'view'   => 'FO/DataTable/reference-colisage.html.twig',
  126.                               'params' => [],
  127.                           ],
  128.                           => [
  129.                               'view'   => 'FO/DataTable/actions.html.twig',
  130.                               'params' => [
  131.                                   'chemin_etiquette' => true,
  132.                               ],
  133.                           ],
  134.                       ]
  135.                   )
  136.                   ->setOrder("x.id""asc")
  137.                   ->setSearch(true)
  138.                   ->setSearchFields([]);
  139.         return $datatable;
  140.     }
  141.     /**
  142.      * @Route("/numero-suivi-commande/grid/{id}/{type}", name="dtc_numero_suivi_commande_liste_grid")
  143.      */
  144.     public function gridAction(Request $request$id ""$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  145.     {
  146.         if ($type == 'commande') {
  147.             $em         $em;
  148.             $repo_objet $em->getRepository(Commande::class);
  149.             $objet      $repo_objet->find($id);
  150.         }
  151.         return $this->datatable($objet$type$datatable$translator)->execute();
  152.     }
  153.     /**
  154.      * @Route("/numero-suivi-commande/charger-tableau/{id}/{type}", name="dtc_commande_numero_suivi_charger_tableau")
  155.      */
  156.     public function chargerTableauAction(Request $request,  $id "0"$type ""EntityManagerInterface $em)
  157.     {
  158.         if ($type == 'commande') {
  159.             $repo_objet $em->getRepository(Commande::class);
  160.             $objet      $repo_objet->find($id);
  161.         }
  162.         $rendu $this->renderView('GestionComerciale/CommandeNumeroSuivi/charger_tableau.html.twig', ["id" => $id"type" => $type"objet" => $objet]);
  163.         return new JsonResponse(['rendu' => $rendu]);
  164.     }
  165.     /**
  166.      * @Route("/numero-suivi-commande/nouveau/{id}", name="dtc_commande_numero_suivi_ajouter")
  167.      */
  168.     public function ajouterAction(Request $request$id$type ""EntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  169.     {
  170.         $titre_modal         =$translator->trans("Nouvelle numéro de suivi");
  171.         $repo_objet          $em->getRepository(Commande::class);
  172.         $get                 $request->query->all();
  173.         $commandeNumeroSuivi = new CommandeNumeroSuivi;
  174.         $objet $repo_objet->find($id);
  175.         if (is_object($objet)) {
  176.             $commandeNumeroSuivi->setBp($objet);
  177.             if (is_object($objet->getCommande())) {
  178.                 $commandeNumeroSuivi->setCommande($objet->getCommande());
  179.             }
  180.         }
  181.         $user $this->getUser();
  182.         //$commandeNumeroSuivi->setUtilisateur($user);
  183.         $form      $this->createForm(CommandeNumeroSuiviType::class, $commandeNumeroSuivi);
  184.         $errors    "";
  185.         $form->handleRequest($request);
  186.         if ($form->isSubmitted()) {
  187.             if ($commandeNumeroSuivi->getNumeroSuivi() == "") {
  188.                 $error = new FormError("Numéro de suivi obligatoire");
  189.                 $form->get('numeroSuivi')->addError($error);
  190.             }
  191.             if ( ! is_object($commandeNumeroSuivi->getTransporteur())) {
  192.                 $error = new FormError("Transporteur obligatoire");
  193.                 $form->get('numeroSuivi')->addError($error);
  194.             }
  195.             if ($form->isValid()) {
  196.                 $em->persist($commandeNumeroSuivi);
  197.                 $em->persist($objet);
  198.                 $em->flush();
  199.                 $url "";
  200.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  201.                     return new Response(
  202.                         json_encode(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]),
  203.                         200,
  204.                         ['Content-Type' => 'application/json']
  205.                     );
  206.                 } else {
  207.                     $this->addFlash('notice',$translator->trans('Numéro de suivi ajouté avec succès !'));
  208.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  209.                 }
  210.             } else {
  211.                 $errors $validator->validate($commandeNumeroSuivi);
  212.                 $rendu  $this->renderView(
  213.                     'GestionComerciale/CommandeNumeroSuivi/ajouter.html.twig',
  214.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'commandeNumeroSuivi' => $commandeNumeroSuivi]
  215.                 );
  216.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  217.             }
  218.         }
  219.         $rendu $this->renderView(
  220.             'GestionComerciale/CommandeNumeroSuivi/ajouter.html.twig',
  221.             ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'commandeNumeroSuivi' => $commandeNumeroSuivi]
  222.         );
  223.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  224.         //return $this->render('Articles/ConditionVente/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type));
  225.     }
  226. }