src/Controller/DepartementController.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use App\Entity\Region;
  7. use App\Entity\Pays;
  8. use App\Entity\Departement;
  9. use App\Repository\AdministrateursRepository;
  10. use App\Repository\GroupeRestrictionRepository;
  11. use App\Repository\GroupeRestrictionPageRepository;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\JsonResponse;
  14. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  15. use Symfony\Component\DependencyInjection\ContainerInterface as Container;
  16. use Doctrine\ORM\EntityManagerInterface;
  17. use DateTime;
  18. class DepartementController extends AbstractController
  19. {
  20.     public function __construct(SessionInterface $session Container $container EntityManagerInterface $em )
  21.     {
  22.         $this->em $em ;
  23.         $this->session $session ;
  24.     }
  25.     #[Route('/configuration_departement'name'app_departement')]
  26.     public function index(Request $request,GroupeRestrictionRepository $groupeRestrictionRepository,
  27.     GroupeRestrictionPageRepository $grouprestrictionpageRepository,
  28.     AdministrateursRepository $AdministrateursRepository): Response
  29.     {
  30.         $accessArray=[];
  31.         $niveauAcessPages = [];
  32.         $groupeRestrictions = [];
  33.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  34.             $admin $this->session->get('supAdT9m2XJzn4');
  35.         }else if(($this->session->get('supAdT9m2XJzn4') != null) && ($request->hasSession())){
  36.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  37.             $adminId $admin->getId();
  38.             $groupeRestrictions $groupeRestrictionRepository->findByAdminId($adminId);
  39.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
  40.             $accessArray $restrictionPages[0]->getAccess();
  41.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  42.             $niveauAcessPagesCollection->initialize();
  43.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  44.         }else {
  45.             return $this->redirectToRoute('connexion');
  46.         }
  47.         $pays $this->em->getRepository(Pays::class)->findAll();
  48.         $region $this->em->getRepository(Region::class)->findAll(); 
  49.         return $this->render('departement/departement.html.twig', [
  50.             'admin' => $admin,
  51.             'pays' => $pays,
  52.             'access' => $accessArray,
  53.             'pages' => $niveauAcessPages,
  54.             'regions' => $region,
  55.         ]);
  56.     }
  57.     /**
  58.      * @Route("/serverDepartement", name="serverDepartement", methods={"GET","POST"}, options = {"expose" = true})
  59.      */
  60.     public function serverDepartement(Request $request): Response
  61.     {
  62.         
  63.         $sql_where "" ;
  64.         if($request->get('search')['value']!=""){
  65.             $sql_where .= ' AND ( u.numero LIKE \'%'.$request->get('search')['value'].'%\' )' ;     
  66.             $sql_where .= ' OR ( u.nom LIKE \'%'.$request->get('search')['value'].'%\' )'
  67.             $sql_where .= ' OR ( u.id LIKE \'%'.$request->get('search')['value'].'%\' )';   
  68.             $sql_where .= ' OR ( u.cp LIKE \'%'.$request->get('search')['value'].'%\' )';    
  69.         }
  70.          
  71.         $user_array = [] ;
  72.         
  73.         $limit =  $request->get('length') ;
  74.             
  75.         $offset $request->get('start') ;
  76.         
  77.         $array_search = array();
  78.         
  79.         $columns = ['u.id','u.nom','u.numero','u.cp'];
  80.         
  81.         $orders = [] ;
  82.         
  83.         
  84.         for($i=$i<count($request->get('order')) ;$i++ ){
  85.             
  86.              $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  87.             
  88.         }
  89.         
  90.         
  91.         if( count($orders)>0){
  92.         $order " ORDER BY ".implode(' , ',$orders) ;
  93.         }
  94.         else{
  95.         $order "" ;  
  96.         }
  97.         
  98.         $total_departement = [];
  99.         
  100.         $total_departement $this->em->createQuery(
  101.             'SELECT u 
  102.             FROM App\Entity\Departement u
  103.             
  104.             
  105.             WHERE 1=1 '.$sql_where.'
  106.              
  107.             '
  108.             )
  109.                 
  110.             ->getResult()  ;
  111.       
  112.                 
  113.         
  114.         $I_nbResultatsTotal count$total_departement ) ;
  115.         
  116.         
  117.         $departements $this->em->createQuery(
  118.                 'SELECT u 
  119.                 FROM App\Entity\Departement u
  120.                
  121.                 
  122.                 WHERE 1=1 '.$sql_where.' '.$order.'
  123.                  
  124.                 '
  125.                 )
  126.                 ->setMaxResults($limit)
  127.                 ->setFirstResult($offset)
  128.                 ->getResult()  ;
  129.         
  130.         
  131.         $output = [] ; 
  132.         $etat '';
  133.                
  134.         foreach($departements as $departement){
  135.         $output[] = [
  136.                 
  137.                 'id'=>$departement->getId() ,
  138.                 'numero'=>$departement->getNumero(),
  139.                 'nom'=>$departement->getNom(),
  140.                 'cp'=>$departement->getCp(),
  141.                 'pays'=>$departement->getPays()->getNomFrFr(),
  142.                 'region' => $departement->getRegion()->getTitre(),
  143.                 'dateCreation'=> date_format$departement->getDateCreation() , 'd/m/Y H:i'),
  144.                 'dateUpdate' => $departement->getDateUpdate() !== null date_format($departement->getDateUpdate(), 'd/m/Y H:i') : '--'
  145.         ];
  146.          
  147.         }
  148.         
  149.         $JSON json_encode($output);
  150.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  151.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  152.         return $response;
  153.         
  154.     }
  155.     /**
  156.      * @Route("/ajout_departement", name="ajout_departement" , options = {"expose"=true})
  157.      */
  158.     public function ajout_departement(Request $request): Response
  159.     {
  160.        
  161.         $departement = new Departement();
  162.         $departement->setNumero($request->get('numero'));
  163.         $departement->setNom($request->get('nom'));
  164.         $departement->setCp($request->get('cp'));
  165.         $paysId $request->get('pays');
  166.         $pays $this->em->getRepository(Pays::class)->find($paysId);
  167.         $departement->setPays($pays);
  168.         $regionId $request->get('region');
  169.         $region $this->em->getRepository(Region::class)->find($regionId);
  170.         $departement->setRegion($region);
  171.         $departement->setDateCreation(\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  172.         try {
  173.             $this->em->persist($departement);
  174.             $this->em->flush();
  175.             return new JsonResponse(['status' => 'OK']);
  176.         } catch (\Exception $e) {
  177.             return new JsonResponse(['status' => 'KOO','message' => $e->getMessage()]);
  178.         } 
  179.     }
  180.     /**
  181.      * @Route("/modif_departement/{id}", name="modif_departement" , methods={"POST"}, options = {"expose"=true})
  182.      */
  183.     public function modif_departement(int $idRequest $request): Response
  184.     {   
  185.         $departement $this->em->getRepository(Departement::class)->find($id);
  186.         if (!$departement) {
  187.             return new JsonResponse(['status' => 'KOO''message' => 'Region non trouvé !']);
  188.         }
  189.         
  190.         $departement->setNumero($request->get('numero_edit'));
  191.         $departement->setNom($request->get('nom_edit'));
  192.         $departement->setCp($request->get('cp_edit'));
  193.         $paysId $request->get('pays_edit');
  194.         $pays $this->em->getRepository(Pays::class)->find($paysId);
  195.         $departement->setPays($pays);
  196.         $regionId $request->get('region_edit');
  197.         $region $this->em->getRepository(Region::class)->find($regionId);
  198.         $departement->setRegion($region);
  199.         $currentDateTime = new DateTime();
  200.         $departement->setDateUpdate($currentDateTime);
  201.         try {
  202.             $this->em->persist($region);
  203.             $this->em->flush();
  204.             return new JsonResponse(['status' => 'OK''message' => 'Departement mis à jour avec succès !']);
  205.         } catch (\Exception $e) {
  206.             return new JsonResponse(['status' => 'error''message' => 'Erreur lors de la modification du departement : ' $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
  207.         }
  208.     }
  209.     /**
  210.     * @Route("/delete_departement/{id}", name="delete_departement" , methods={"DELETE"}, options = {"expose"=true})
  211.     */
  212.     public function delete_departement(int $idRequest $request): Response
  213.     {   
  214.         $departement $this->em->getRepository(Departement::class)->find($id);
  215.         if (!$departement) {
  216.             return new Response('Departement not found!'Response::HTTP_NOT_FOUND);
  217.         };
  218.         try {
  219.             $this->em->remove($departement);
  220.             $this->em->flush();
  221.             return new JsonResponse(['status' => 'OK']);
  222.         } catch (\Exception $e) {
  223.             return new Response('Error deleting departement: ' $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
  224.         }
  225.     }
  226.     /**
  227.     * @Route("/get_pays_departements/{idPays}", name="get_pays_departements" , methods={"GET"}, options = {"expose"=true})
  228.     */
  229.     public function get_departements_by_paysIdRequest $request,$idPays ): Response
  230.     
  231.         if (!$idPays) {
  232.             $msg = ['msg'=>'KOO']  ;
  233.         
  234.             $JSON json_encode($msg);
  235.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  236.             return $response;
  237.         }
  238.         $departements $this->em->getRepository(Departement::class)->findBy(['pays' => $idPays]);
  239.         $res =[];
  240.         //dd($departements);
  241.         foreach ($departements as $departement) {
  242.             
  243.         
  244.         $res[] = [
  245.             'id' => $departement->getId(),
  246.             'nom'=>$departement->getNom()
  247.            
  248.         ];
  249.     
  250.         }
  251.         $JSON json_encode($res);
  252.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  253.         return $response;
  254.         
  255.     }
  256.     /**
  257.     * @Route("/get_numero_departements/{id}", name="get_numero_departements" , methods={"GET"}, options = {"expose"=true})
  258.     */
  259.     public function get_numero_departements(Request $request$id): Response
  260.     {
  261.         if (!$id) {
  262.             $msg = ['msg' => 'KOO'];
  263.             return new JsonResponse($msg200);
  264.         }
  265.         $departement $this->em->getRepository(Departement::class)->find($id);
  266.         if (!$departement) {
  267.             return new JsonResponse(['msg' => 'Department not found'], 404);
  268.         }
  269.         $res $departement->getNumero();
  270.         $maxLenght $departement->getCp();
  271.         return new JsonResponse(['numero' => $res,'maxLength'=>$maxLenght], 200);
  272.     }
  273. }