src/Controller/Clients/ClientEnfantController.php line 251

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Clients;
  3. use App\Entity\Clients\Client;
  4. use App\Form\Clients\ClientEnfantType;
  5. use App\Form\Clients\SupprimerClientType;
  6. use App\Library\Datatable\Util\Datatable;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\JsonResponse;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use Symfony\Component\Validator\Validator\ValidatorInterface;
  14. use Symfony\Contracts\Translation\TranslatorInterface;
  15. class ClientEnfantController extends AbstractController
  16. {
  17.     
  18.     /**
  19.      * @Route("/client-enfants/nouveau/{id}/{type}", name="dtc_client_enfant_ajouter")
  20.      */
  21.     public function ajouterAction(Request $request$id,$type=""EntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  22.     {
  23.         $titre_modal =$translator->trans("Nouvelle entité client enfant");
  24.         $page $request->query->get('page');
  25.         $clientEnfant = new Client;
  26.         $clientEnfant->setNom("Vide");
  27.         $user $this->getUser();        
  28.         $get $request->query->all();                     
  29.         $form $this->createForm(ClientEnfantType::class, $clientEnfant);
  30.         $errors "";
  31.         $errorsSup = [];
  32.         $form->handleRequest($request);
  33.         
  34.         if ($form->isSubmitted()) {
  35.             $post $request->request->all();
  36.             if ($form->isValid() && is_object($clientEnfant->getParent())) {
  37.                                 
  38.                 if($type == 'client') {
  39.                     $repo_objet $em->getRepository(Client::class);
  40.                     $objet $repo_objet->find($id);
  41.                     $clientEnfant->getParent()->setParent($objet);
  42.                     $url $this->generateUrl('dtc_client_modifier', ['id' => $objet->getId(), 'tab' =>'enfant']);
  43.                 }                
  44.                 $em->persist($clientEnfant->getParent());
  45.                 $em->flush();
  46.                 
  47.                 if (array_key_exists('table'$get) && $get["table"]!="") {
  48.                       return new JsonResponse(['rendu' =>'''valide' =>'1''url' =>$url'type' =>'recharger_datatable''id_datatable' =>$get["table"]], 200, ['Content-Type' =>'application/json']
  49.                     );
  50.                 }
  51.                 else {
  52.                   $this->addFlash('notice',$translator->trans('Entité enfant ajoutée avec succès !'));
  53.                   return new JsonResponse(['rendu' =>'''valide' =>'1''url' =>$url], 200, ['Content-Type' =>'application/json']);
  54.                 }
  55.                
  56.             }
  57.             else {
  58.                 
  59.                 $errors $validator->validate($clientEnfant);
  60.                 
  61.                 if(!is_object($clientEnfant->getParent())) {
  62.                    $errorsSup[] = 'Merci de sélectionner un client';
  63.                 }
  64.                 
  65.                 $rendu $this->renderView('Clients/ClientEnfant/ajouter.html.twig', ['form' => $form->createView(), 'errors' =>$errors'id' =>$id'type' =>$type'errorsSup' =>$errorsSup]
  66.                 );
  67.                 return new JsonResponse(['rendu' =>$rendu'valide' =>'0''url' =>'''titre' =>$titre_modal], 200, ['Content-Type' =>'application/json']);
  68.   
  69.             }
  70.         }
  71.         
  72.         $repo_objet $em->getRepository(Client::class);
  73.         $client $repo_objet->find($id);
  74.                                    
  75.         $rendu $this->renderView('Clients/ClientEnfant/ajouter.html.twig', ['form' => $form->createView(), 'errors' =>$errors'id' =>$id'type' =>$type'client' =>$client'errorsSup' =>$errorsSup]
  76.         );
  77.         return new JsonResponse(['rendu' =>$rendu'valide' =>'0''url' =>'''titre' =>$titre_modal], 200, ['Content-Type' =>'application/json']);
  78.     }
  79.     
  80.     
  81.     
  82.     /**
  83.      * @Route("/client-enfants/supprimer/{objet}/{id}/{type}", name="dtc_client_enfant_supprimer")
  84.      */
  85.     public function supprimerAction(Request $requestClient $objet,$id,$typeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator) {
  86.         
  87.         $clientEnfant $objet;
  88.         $titre_modal =$translator->trans("Demande de confirmation");
  89.         $user $this->getUser();
  90.         $get $request->query->all(); 
  91.         $form $this->createForm(SupprimerClientType::class, $clientEnfant);
  92.         $errors "";
  93.         $form->handleRequest($request);
  94.         if ($form->isSubmitted()) {
  95.             
  96.             if ($form->isValid()) {
  97.                 $clientEnfant->setParent(NULL);
  98.                 $em->persist($clientEnfant);
  99.                 $em->flush();
  100.                                                     
  101.                 if($type == 'client') {
  102.                     $url $this->generateUrl('dtc_client_modifier', ['id' => $id'tab' =>'enfant']);
  103.                 }
  104.                                
  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"]], 200, ['Content-Type' =>'application/json']
  107.                     );
  108.                   }
  109.                   else {
  110.                   $this->addFlash('notice',$translator->trans('Entité enfant supprimée avec succès !'));
  111.                   return new JsonResponse(['rendu' =>'''valide' =>'1''url' =>$url], 200, ['Content-Type' =>'application/json']);
  112.                                                                 
  113.                   }                                                                            
  114.             }
  115.             else {     
  116.                 $errors $validator->validate($clientEnfant);
  117.                 $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' =>$errors'id' =>$id'type' =>$type'objet' =>$objet]);
  118.                 return new JsonResponse(['rendu' =>$rendu'valide' =>'0''url' =>'''titre' =>$titre_modal], 200, ['Content-Type' =>'application/json']);
  119.             
  120.             }
  121.         }
  122.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' =>$errors'id' =>$id'type' =>$type'objet' =>$objet]);
  123.         return new JsonResponse(['rendu' =>$rendu'valide' =>'0''url' =>'''titre' =>$titre_modal], 200, ['Content-Type' =>'application/json']);
  124.     }
  125.     
  126.     
  127.     /**
  128.      * @Route("", name="")
  129.      */
  130.     public function listerAction(Request $request$id,$type=""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  131.     {    
  132.         
  133.         if($type == 'client') {
  134.             $repo_objet $em->getRepository(Client::class);
  135.             $objet $repo_objet->find($id);  
  136.         }
  137.                 
  138.         
  139.         $tableau_class_cellule[]= ["className" =>"visible_export colonne_id""targets" => [0], "visible" =>true"orderable" =>true"searchable" => true];
  140.         $tableau_class_cellule[]= ["orderable" =>false"className" =>"colonne_id""targets" => [1], "visible" =>true"orderable" =>false];
  141.         
  142.         //$tableau_class_cellule = array();
  143.         
  144.            $this->datatable($objet,$type$datatable$translator);
  145.         return $this->render('Clients/ClientEnfant/lister.html.twig', ['tableauClassColonne' =>$tableau_class_cellule"id" =>$id"type" =>$type]);
  146.         
  147.     }    
  148.     
  149.     /**
  150.      * set datatable configs
  151.      *
  152.      * @return \App\Library\Datatable\Util\Datatable
  153.      */
  154.     private function datatable($objet,$type=""Datatable $datatableTranslatorInterface $translator)
  155.     {
  156.         //$type_jointure = 'x.'.$type;
  157.         $type_jointure 'x.parent';
  158.         $datatable  ->setDatatableId('dta-clients-enfants')
  159.                     ->setEntity(Client::class, "x")
  160.                     ->setFields(
  161.                         [
  162.                                 //$translator->trans("ID") =>  'x.id',                       
  163.                                 $translator->trans("Nom") =>  'x.nom',                       
  164.                                                   
  165.                                 $translator->trans("Actions") =>  'x.id',                                    
  166.                                 "_identifier_" => 'x.id'
  167.                         ]
  168.                             )
  169.                     //->addJoin('x.ville', 'v', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)      
  170.                     //->addJoin('x.codePostal', 'cp', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)      
  171.                     //->addJoin('x.pays', 'p', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)      
  172.                      ->setWhere(
  173.                         $type_jointure.' = :objet',
  174.                         ['objet' => $objet]
  175.                         )
  176.                     ->setRenderers(
  177.                         [
  178.                                 => [
  179.                                     'view' => 'FO/DataTable/actions_modal.html.twig',
  180.                                     'params' => [
  181.                                             //'edit_route'  => 'dtc_client_enfant_modifier', 
  182.                                             'supprimer_route'  => 'dtc_client_enfant_supprimer'
  183.                                             'id'    => $objet->getId(), 
  184.                                             'type'    => $type
  185.                                             'entite'    => 'clientEnfant'
  186.                                             'objet' => Client::class,
  187.                                             'table' => "dta-clients-enfants",
  188.                                     ],
  189.                                 ],
  190.                                 /*
  191.                                 8=> array(
  192.                                     'view' => 'FO/DataTable/booleen.html.twig',
  193.                                     'params' => array(
  194.                                             
  195.                                     ),
  196.                                 ),
  197.                                 9=> array(
  198.                                     'view' => 'FO/DataTable/booleen.html.twig',
  199.                                     'params' => array(
  200.                                             
  201.                                     ),
  202.                                 ),
  203.                                 10=> array(
  204.                                     'view' => 'FO/DataTable/booleen.html.twig',
  205.                                     'params' => array(
  206.                                             
  207.                                     ),
  208.                                 ),
  209.                                 11 => array(
  210.                                     'view' => 'FO/DataTable/actions_modal.html.twig',
  211.                                     'params' => array(
  212.                                             'edit_route'  => 'dtc_client_enfant_modifier', 
  213.                                             'supprimer_route'  => 'dtc_client_enfant_supprimer', 
  214.                                             'id'    => $objet->getId(), 
  215.                                             'type'    => $type, 
  216.                                             'entite'    => 'adresse', 
  217.                                             'objet' => "DTCClientsBundle:Client",
  218.                                             'table' => "dta-clients-enfants",
  219.                                             'history' => true,
  220.                                             'visualiser_route' => 'dtc_client_enfant_visualiser_map'
  221.                                         ), 
  222.                                 ),  
  223.                                 */
  224.                         ]
  225.                     )
  226.                     ->setOrder("x.id""asc")
  227.                     ->setSearch(true)
  228.                     ->setSearchFields([])
  229.                     ;   
  230.         return $datatable;                                    
  231.     }
  232.     
  233.     
  234.     /**
  235.      * Grid action 
  236.     
  237.      * @return Response
  238.      */
  239.     /**
  240.      * @Route("/client-enfants/grid/{id}/{type}", name="dtc_client_enfant_liste_grid")
  241.      */
  242.     public function gridAction(Request $request$id="",$type=""Datatable $datatableTranslatorInterface $translator)
  243.     {
  244.         if($type == 'client') {
  245.             $repo_objet $em->getRepository(Client::class);
  246.             $objet $repo_objet->find($id);  
  247.         }       
  248.         return $this->datatable($objet,$type$datatable$translator)->execute();
  249.     }    
  250.     
  251.  
  252.       
  253.         
  254.     
  255. }