src/Controller/EntreprisesController.php line 1600

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Agent;
  4. use App\Entity\Filiale;
  5. use App\Entity\GestionnaireFiliale;
  6. use App\Entity\Etat ;
  7. use App\Entity\Formules;
  8. use App\Entity\User;
  9. use App\Entity\Evenement;
  10. use App\Entity\SocialLinks;
  11. use App\Entity\PiecesEvenement;
  12. use App\Entity\Region;
  13. use App\Entity\Pays;
  14. use App\Entity\Langue;
  15. use App\Entity\TailleEntreprise;
  16. use App\Entity\Ape;
  17. use App\Entity\Departement;
  18. use App\Entity\PieceJointeProfessionnel
  19. use App\Entity\Publicite
  20. use App\Entity\PiecesPublicite
  21. use App\Entity\CommMedia ;
  22. use App\Entity\Competences;
  23. use DateTime;
  24. use Symfony\Component\Filesystem\Filesystem;
  25. use App\Repository\UserRepository
  26. use App\Repository\ConfigSmtpRepository;
  27. use App\Repository\AdministrateursRepository;
  28. use App\Repository\ConnexionGestionnaireEntrepriseRepository;
  29. use App\Repository\DepartementRepository;
  30. use App\Repository\NiveauRepository;
  31. use App\Repository\PartenariatRepository;
  32. use App\Repository\EtatRepository;
  33. use App\Repository\CompetencesRepository;
  34. use App\Repository\GestionnaireEntrepriseRepository;
  35. use App\Repository\EntrepriseRepository;
  36. use App\Repository\GestionnaireFilialeRepository;
  37. use App\Repository\PaysRepository;
  38. use App\Repository\AgentRepository;
  39. use App\Repository\PieceJointeProfessionnelRepository;
  40. use App\Repository\FormulesRepository;
  41. use App\Repository\FilialeRepository;
  42. use App\Repository\ProfessionnelRepository;
  43. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  44. use Symfony\Component\HttpFoundation\Request;
  45. use Symfony\Component\HttpFoundation\Response;
  46. use Symfony\Component\Routing\Annotation\Route;
  47. use App\Repository\GroupeRestrictionRepository;
  48. use App\Repository\GroupeRestrictionPageRepository;
  49. use Symfony\Component\HttpFoundation\JsonResponse;
  50. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  51. use Symfony\Component\DependencyInjection\ContainerInterface as Container;
  52. use Doctrine\ORM\EntityManagerInterface;
  53. class EntreprisesController extends AbstractController
  54. {
  55.     public function __construct(SessionInterface $session Container $container EntityManagerInterface $em )
  56.     {
  57.         
  58.         $this->em $em ;
  59.         $this->session $session ;
  60.     }
  61.     function genererCode($length){
  62.         
  63.         $chars '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  64.         $string '';
  65.         for($i=0$i<$length$i++){
  66.             $string .= $chars[rand(0strlen($chars)-1)];
  67.         }
  68.             
  69.         return $string;
  70.             
  71.     }
  72.     public function setSaltMdp($mdp)
  73.     {
  74.         
  75.         $salt1 ='kgH94zHr927J3zjT4VvC' ;
  76.         $salt2 'jA9q52MuFj4u2DxQ9m5X' ;
  77.         
  78.         return sha1($salt1.$mdp.$salt2) ;
  79.         
  80.     }
  81.     private function getAdressIp(){
  82.         $ip_expediteur '' ;
  83.             
  84.         if(!empty($_SERVER['HTTP_CLIENT_IP'])){
  85.           $ip_expediteur $_SERVER['HTTP_CLIENT_IP'];
  86.         }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
  87.           $ip_expediteur $_SERVER['HTTP_X_FORWARDED_FOR'];
  88.         }else{
  89.           $ip_expediteur $_SERVER['REMOTE_ADDR'];
  90.         }
  91.         return $ip_expediteur ;
  92.     }
  93.     /**
  94.      * @Route("/entreprises", name="entreprises", methods={"GET","POST"} , options={"expose"=true})
  95.      */
  96.     public function entreprises(Request $request AdministrateursRepository $AdministrateursRepository EtatRepository $EtatRepository EntrepriseRepository $EntrepriseRepository,GroupeRestrictionRepository $groupeRestrictionRepository,
  97.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
  98.     {
  99.         $accessArray=[];
  100.         $niveauAcessPages = [];
  101.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  102.             $admin $this->session->get('supAdT9m2XJzn4');
  103.             
  104.         }else if(($this->session->get('supAdT9m2XJzn4') != null) && ($request->hasSession())){
  105.             //return $this->redirectToRoute('connexion');
  106.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  107.             $adminId $admin->getId();
  108.             $groupeRestrictions $groupeRestrictionRepository->findByAdminId($adminId);
  109.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
  110.             $accessArray $restrictionPages[0]->getAccess();
  111.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  112.             $niveauAcessPagesCollection->initialize();
  113.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  114.         }else {
  115.             return $this->redirectToRoute('connexion');
  116.         }
  117.         $etat $EtatRepository->findAll(); 
  118.         $entreprises $EntrepriseRepository->findAll();  
  119.         return $this->render('entreprises/entreprises.html.twig',[
  120.             'admin' => $admin,
  121.             'etat' => $etat,
  122.             'entreprises'=>$entreprises
  123.             //'access' => $accessArray,
  124.             //'pages' => $niveauAcessPages
  125.         ]);
  126.     }
  127.      /**
  128.      * @Route("/serverEntreprise", name="serverEntreprise", methods={"GET","POST"}, options = {"expose" = true})
  129.      */
  130.     public function serverEntreprise(Request $requestPaysRepository $paysRepositoryAdministrateursRepository $AdministrateursRepositoryPieceJointeProfessionnelRepository $PieceJointeProfessionnelRepository): Response
  131.     {
  132.         
  133.         $sql_where_geo '';
  134.         $conditions = [];
  135.         if (($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession())) {
  136.             $admin $this->session->get('supAdT9m2XJzn4');
  137.             $sql_where_geo '';
  138.         } else {
  139.             $admin $AdministrateursRepository->findOneBy(['email' => $this->session->get('supAdT9m2XJzn4')['email']]);
  140.             $adminCodesGeo $admin->getGeo();
  141.             if (!empty($adminCodesGeo) && $adminCodesGeo[0] !== "") {
  142.                 foreach ($adminCodesGeo as $code) {
  143.                     if (str_ends_with($code'*')) {
  144.                         $conditions[] = "u.code_pays_dep LIKE '" rtrim($code'*') . "%'";
  145.                     } else {
  146.                         $conditions[] = "u.code_pays_dep = '$code'";
  147.                     }
  148.                 }
  149.                 $sql_where_geo implode(' OR '$conditions);
  150.             } else {
  151.                 $sql_where_geo '';
  152.             }
  153.         }
  154.         
  155.         $sql_where "";
  156.         if ($request->get('search')['value'] != "") {
  157.             $sql_where .= ' AND (u.nom_entreprise LIKE \'%' $request->get('search')['value'] . '%\'';
  158.              }
  159.         $limit $request->get('length');
  160.         $offset $request->get('start');
  161.         $columns = ['u.id''u.date_creation_entreprise''u.nom_entreprise''u.taille''u.etat'];
  162.         $orders = [];
  163.         for ($i 0$i count($request->get('order')); $i++) {
  164.             $orders[] = $columns[$request->get('order')[$i]['column']] . ' ' $request->get('order')[$i]['dir'];
  165.         }
  166.         $order count($orders) > " ORDER BY " implode(' , '$orders) : "";
  167.         $total_entreprises $this->em->createQuery(
  168.             'SELECT u 
  169.             FROM App\Entity\Entreprise u
  170.             WHERE 1=1 ' . ($sql_where_geo ' AND (' $sql_where_geo ')' '') . $sql_where
  171.         )->getResult();
  172.         $I_nbResultatsTotal count($total_entreprises);
  173.         $selectedStatusId $request->get('status_id');
  174.         $whereClause $selectedStatusId !== null " AND u.etat = '$selectedStatusId'" " AND u.etat = '4'";
  175.         
  176.         if (($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession())) {
  177.            /*  $entreprises = $this->em->createQuery(
  178.                 'SELECT u 
  179.                 FROM App\Entity\Entreprise u
  180.                 WHERE 1=1 ' . ($sql_where_geo ? ' AND (' . $sql_where_geo . ')' : '') . $sql_where . $whereClause . ' ' . $order
  181.             )
  182.             ->setMaxResults($limit)
  183.             ->setFirstResult($offset)
  184.             ->getResult(); */
  185.             
  186.             $entreprises $this->em->createQuery(
  187.                 'SELECT u 
  188.                 FROM App\Entity\Entreprise u
  189.                 WHERE 1=1 '  
  190.                 $sql_where 
  191.                 $whereClause 
  192.                 ' ' $order
  193.             )
  194.             ->setMaxResults($limit)
  195.             ->setFirstResult($offset)
  196.             ->getResult();
  197.         } else {
  198.             // Récupérer les pays géographiques de l'administrateur
  199.             $paysGeo $admin->getPaysGeo();
  200.             // Initialisation de $entreprises
  201.             $entreprises = [];
  202.             // Si $paysGeo est null, ne pas filtrer par pays
  203.             if ($paysGeo !== null) {
  204.                 // Récupérer les entités Pays par leurs noms
  205.                 $paysEntities $paysRepository->createQueryBuilder('p')
  206.                     ->where('p.id IN (:id)')
  207.                     ->setParameter('id'$paysGeo)
  208.                     ->getQuery()
  209.                     ->getResult();
  210.                 // Récupérer les IDs des pays
  211.                 $paysIds array_map(fn($pays) => $pays->getId(), $paysEntities);
  212.                 // Construire le SQL WHERE pour filtrer par pays
  213.                 $sql_where_geo_pays '';
  214.                 if (!empty($paysIds)) {
  215.                     $sql_where_geo_pays ' AND u.Pays IN (:paysIds)';
  216.                 } else {
  217.                     $sql_where_geo_pays ' AND 1 = 0';
  218.                 }
  219.                 if ($sql_where_geo == "") {
  220.                     $entreprises $this->em->createQuery(
  221.                         'SELECT u 
  222.                         FROM App\Entity\Entreprise u
  223.                         WHERE 1=1 '  
  224.                         $sql_where 
  225.                         $whereClause 
  226.                         $sql_where_geo_pays
  227.                         ' ' $order
  228.                     )
  229.                     ->setParameter('paysIds'$paysIds)
  230.                     ->setMaxResults($limit)
  231.                     ->setFirstResult($offset)
  232.                     ->getResult();
  233.                 } else {
  234.                     $entreprises $this->em->createQuery(
  235.                         'SELECT u 
  236.                         FROM App\Entity\Entreprise u
  237.                         WHERE 1=1 ' 
  238.                         . ($sql_where_geo ' AND (' $sql_where_geo ')' ''
  239.                         . $sql_where 
  240.                         $whereClause 
  241.                         $sql_where_geo_pays
  242.                         ' ' $order
  243.                     )
  244.                     ->setParameter('paysIds'$paysIds)
  245.                     ->setMaxResults($limit)
  246.                     ->setFirstResult($offset)
  247.                     ->getResult();
  248.                 }
  249.             } else {
  250.                 // Si $paysGeo est null, ne filtrer que par $sql_where_geo
  251.                 if ($sql_where_geo == "") {
  252.                     $entreprises $this->em->createQuery(
  253.                         'SELECT u 
  254.                         FROM App\Entity\Entreprise u
  255.                         WHERE 1=1 '  
  256.                         $sql_where 
  257.                         $whereClause 
  258.                         ' ' $order
  259.                     )
  260.                     ->setMaxResults($limit)
  261.                     ->setFirstResult($offset)
  262.                     ->getResult();
  263.                 } else {
  264.                     $entreprises $this->em->createQuery(
  265.                         'SELECT u 
  266.                         FROM App\Entity\Entreprise u
  267.                         WHERE 1=1 ' 
  268.                         . ($sql_where_geo ' AND (' $sql_where_geo ')' ''
  269.                         . $sql_where 
  270.                         $whereClause 
  271.                         ' ' $order
  272.                     )
  273.                     ->setMaxResults($limit)
  274.                     ->setFirstResult($offset)
  275.                     ->getResult();
  276.                 }
  277.             }
  278.         }
  279.         
  280.         $output = [];
  281.         $outputDocuments = [];
  282.         $etat '';
  283.         
  284.         foreach ($entreprises as $entreprise) {
  285.             $outputDocuments = [];
  286.             $EntrepriseDocuments $PieceJointeProfessionnelRepository->findBy(['entreprise' => $entreprise->getId()]);
  287.             foreach ($EntrepriseDocuments as $EntrepriseDocument) {
  288.                 $outputDocuments[] = [
  289.                     'EntrepriseDocumentsNom' => $EntrepriseDocument->getNomDocument(),
  290.                     'EntrepriseDocumentsDir' => $EntrepriseDocument->getDirectory(),
  291.                 ];
  292.             }
  293.             $output[] = [
  294.                 'id' => $entreprise->getId(),
  295.                 'dateCreation' => $entreprise->getDateCreationCompte() !== null date_format($entreprise->getDateCreationCompte(), 'd/m/Y H:i') : '--',
  296.                 'nom' => $entreprise->getNomEntreprise(),
  297.                 'taille' => $entreprise->getTaille(),
  298.                 'status' => $entreprise->getEtat()->getEtat(),
  299.                 'idCrypter' => sha1($entreprise->getId()),
  300.                 'EntrepriseDocumentsNom' => $outputDocuments,
  301.             ];
  302.         }
  303.         $JSON json_encode($output);
  304.         $JSON '{"draw": ' $request->get('draw') . ',"recordsTotal":' $I_nbResultatsTotal ',"recordsFiltered":' $I_nbResultatsTotal ',"data":' $JSON '}';
  305.         $response = new Response($JSON200, ['Content-Type' => 'application/json']);
  306.         return $response;
  307.     }
  308.     /**
  309.      * @Route("/modif_entreprise/{id}", name="modif_entreprise" , methods={"POST"}, options = {"expose"=true})
  310.      */
  311.     public function modif_entreprise(int $idRequest $request,EntrepriseRepository $EntrepriseRepository): Response
  312.     {   
  313.         $entreprises $EntrepriseRepository->find($id);
  314.         if (!$entreprises) {
  315.             return new JsonResponse(['status' => 'KOO''message' => 'Entreprise non trouvé !']);
  316.         }
  317.         
  318.         $etatId $request->get('etat_edit');
  319.         $etat $this->em->getRepository(Etat::class)->find($etatId);
  320.         $entreprises->setEtat($etat);
  321.         try {
  322.             $this->em->persist($entreprises);
  323.             $this->em->flush();
  324.             return new JsonResponse(['status' => 'OK''message' => 'Entreprise mis à jour avec succès !']);
  325.         } catch (\Exception $e) {
  326.             return new JsonResponse(['status' => 'error''message' => 'Erreur lors de la modification du entreprise : ' $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
  327.         }
  328.     }
  329.        /**
  330.      * @Route("/edit_competence_entreprise", name="edit_competence_entreprise", methods={"GET","POST"} , options={"expose"=true})
  331.      */
  332.     public function edit_competence_entreprise(Request $request,AgentRepository $AgentRepository,CompetencesRepository $CompetencesRepository,FilialeRepository $FilialeRepository,FormulesRepository $FormulesRepository,ProfessionnelRepository $ProfessionnelRepositoryPaysRepository $PaysRepository,GestionnaireEntrepriseRepository $GestionnaireEntrepriseRepositoryAdministrateursRepository $AdministrateursRepository  EtatRepository $EtatRepository EntrepriseRepository $EntrepriseRepository,GroupeRestrictionRepository $groupe_restrictionRepository,
  333.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response{
  334.         $accessArray=[];
  335.         $niveauAcessPages = [];
  336.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  337.             $admin $this->session->get('supAdT9m2XJzn4');
  338.         }else{
  339.             
  340.             if (($this->session->get('supAdT9m2XJzn4') == null)) {
  341.                 return $this->redirectToRoute('connexion');
  342.             }
  343.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  344.             $adminId $admin['userId'];
  345.             $groupeRestrictions $groupe_restrictionRepository->findByAdminId($adminId);
  346.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]['id']);
  347.             $accessArray $restrictionPages[0]->getAccess();
  348.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  349.             $niveauAcessPagesCollection->initialize();
  350.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  351.         } 
  352.         $entreprise $EntrepriseRepository->find($request->get('idEntreprise'));
  353.         if (!$entreprise) {
  354.             $msg = ['msg'=>'KOO']  ;
  355.             $JSON json_encode($msg);
  356.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  357.             return $response ;
  358.         }
  359.         
  360.         $entreprise->setCompetences($request->get('competencesEntreprise'));
  361.         $entreprise->setDateUpdate(DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ));
  362.    
  363.         $this->em->persist($entreprise);
  364.         $this->em->flush();
  365.         $msg = ['msg'=>'OK']  ;
  366.         
  367.         $JSON json_encode($msg);
  368.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  369.         
  370.         
  371.         return $response ;
  372.         
  373.         
  374.     } 
  375.     /**
  376.      * @Route("/edit_themes_entreprise", name="edit_themes_entreprise", methods={"GET","POST"} , options={"expose"=true})
  377.      */
  378.     public function edit_themes_entreprise(Request $request,AgentRepository $AgentRepository,CompetencesRepository $CompetencesRepository,FilialeRepository $FilialeRepository,FormulesRepository $FormulesRepository,ProfessionnelRepository $ProfessionnelRepositoryPaysRepository $PaysRepository,GestionnaireEntrepriseRepository $GestionnaireEntrepriseRepositoryAdministrateursRepository $AdministrateursRepository  EtatRepository $EtatRepository EntrepriseRepository $EntrepriseRepository,GroupeRestrictionRepository $groupe_restrictionRepository,GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response 
  379.     {
  380.         $accessArray=[];
  381.         $niveauAcessPages = [];
  382.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  383.             $admin $this->session->get('supAdT9m2XJzn4');
  384.         }else{
  385.             
  386.             if (($this->session->get('supAdT9m2XJzn4') == null)) {
  387.                 return $this->redirectToRoute('connexion');
  388.             }
  389.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  390.             $adminId $admin['userId'];
  391.             $groupeRestrictions $groupe_restrictionRepository->findByAdminId($adminId);
  392.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]['id']);
  393.             $accessArray $restrictionPages[0]->getAccess();
  394.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  395.             $niveauAcessPagesCollection->initialize();
  396.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  397.         } 
  398.         $entreprise $EntrepriseRepository->find($request->get('idEntrepriseTheme'));
  399.         if (!$entreprise) {
  400.             $msg = ['msg'=>'KOO']  ;
  401.             $JSON json_encode($msg);
  402.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  403.             return $response ;
  404.         }
  405.         
  406.         $entreprise->setThemes($request->get('themesEntreprise'));
  407.         $entreprise->setDateUpdate(DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ));
  408.    
  409.         $this->em->persist($entreprise);
  410.         $this->em->flush();
  411.         $msg = ['msg'=>'OK']  ;
  412.         
  413.         $JSON json_encode($msg);
  414.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  415.         
  416.         
  417.         return $response ;
  418.         
  419.         
  420.     } 
  421.     /**
  422.      * @Route("/edit_entreprise_formule", name="edit_entreprise_formule", methods={"GET","POST"} , options={"expose"=true})
  423.      */
  424.     public function edit_entreprise_formule(Request $request,EntrepriseRepository $EntrepriseRepository,FormulesRepository $FormulesRepository,GestionnaireEntrepriseRepository $GestionnaireEntrepriseRepository): Response
  425.     {
  426.        //dd($request->request->all());
  427.         //$gestionnaire = $GestionnaireEntrepriseRepository->find($request->get('GestionnaireId'));
  428.         $entreprise$EntrepriseRepository->find($request->get('entrepriseId'));
  429.         if (!$entreprise) {
  430.             $msg = ['msg'=>'KOO']  ;
  431.             $JSON json_encode($msg);
  432.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  433.             return $response ;
  434.         }
  435.        
  436.       // $formule = $FormulesRepository->find($request->get('NewFormuleId'));
  437.       $formule $FormulesRepository->find($request->get('FormuleId'));
  438.        $entreprise->setFormule($formule); 
  439.        if($formule->getPrix()){
  440.         $entreprise->setPrixFormuleHt($formule->getPrix());
  441.         if($formule->getRegimeTva()=="Autoliquidation"){
  442.             $entreprise->setTvaFormule("0");
  443.             $entreprise->setPrixFormuleTtc($formule->getPrix());
  444.             
  445.         }
  446.         else
  447.         {
  448.             $entreprise->setTvaFormule($entreprise->getPays()->getTva());
  449.             if($entreprise->getPays()->getTva()){
  450.                 $prix = (float) $formule->getPrix();
  451.             $tva = (float) $entreprise->getPays()->getTva();
  452.             $prixFormuleTtc $prix + ( $prix * ($tva 100));
  453.             $prixFormuleTtcString = (string) $prixFormuleTtc;
  454.             
  455.             $entreprise->setPrixFormuleTtc($prixFormuleTtcString); 
  456.             }
  457.             else{
  458.                 $entreprise->setPrixFormuleTtc($formule->getPrix());
  459.            
  460.             }
  461.         }
  462.         
  463.         }
  464.         $entreprise->setDateUpdate(DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ));
  465.    
  466.         $this->em->persist($entreprise);
  467.         $this->em->flush();
  468.         $msg = ['msg'=>'OK']  ;
  469.         
  470.         $JSON json_encode($msg);
  471.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  472.         
  473.         
  474.         return $response ;
  475.         
  476.         
  477.     } 
  478.       /**
  479.      * @Route("/edit_entreprise", name="edit_entreprise", methods={"GET","POST"} , options={"expose"=true})
  480.      */
  481.     public function edit_entreprise(Request $request,AgentRepository $AgentRepository,CompetencesRepository $CompetencesRepository,FilialeRepository $FilialeRepository,FormulesRepository $FormulesRepository,ProfessionnelRepository $ProfessionnelRepositoryPaysRepository $PaysRepository,GestionnaireEntrepriseRepository $GestionnaireEntrepriseRepositoryAdministrateursRepository $AdministrateursRepository  EtatRepository $EtatRepository EntrepriseRepository $EntrepriseRepository,GroupeRestrictionRepository $groupe_restrictionRepository,
  482.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response{
  483.         $accessArray=[];
  484.         $niveauAcessPages = [];
  485.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  486.             $admin $this->session->get('supAdT9m2XJzn4');
  487.         }else{
  488.             if (($this->session->get('supAdT9m2XJzn4') == null)) {
  489.                 return $this->redirectToRoute('connexion');
  490.             }
  491.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  492.         }
  493.         $entreprise $EntrepriseRepository->find($request->get('idEntreprise'));
  494.         if (!$entreprise) {
  495.             $msg = ['msg'=>'KOO']  ;
  496.             $JSON json_encode($msg);
  497.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  498.             return $response ;
  499.         }
  500.         $entreprise->setNomEntreprise($request->get('nomEntreprise'));
  501.         $entreprise->setDescription($request->get('descriptionEntreprise'));
  502.         $entreprise->setDateUpdate(DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ));
  503.     if($request->get('etatEntreprise')){
  504.         $etat $EtatRepository->find($request->get('etatEntreprise'));
  505.         $entreprise->setEtat($etat );
  506.     }
  507.         $entreprise->setTaille($request->get('tailleEntreprise'));
  508.         $entreprise->setApe($request->get('apeEntreprise'));
  509.         $entreprise->setSiren($request->get('sirenEntreprise'));
  510.         $entreprise->setAdresse($request->get('adresseEntreprise'));
  511.         $pays $this->em->getRepository(Pays::class)->find($request->request->get('paysEntreprise'));
  512.         //$adresse = $request->request->get('adresse');
  513.         //$email = $request->request->get('email');
  514.     
  515.         
  516.         $entreprise->setVille($request->get('villeEntreprise'));
  517.         $entreprise->setPays($pays);
  518.         $dep=$this->em->getRepository(Departement::class)->find($request->get('DepartementEntreprise'));
  519.         $entreprise->setDepartement($dep);
  520.                  
  521.         $code_pays_dep=$pays->getAlpha2().$dep->getNumero();
  522.          
  523.         $entreprise->setCodePaysDep($code_pays_dep);
  524.         
  525.         $entreprise->setNomVoie($request->get('nomVoieEntreprise'));
  526.         $entreprise->setNumVoie($request->get('numVoieEntreprise'));
  527.         $entreprise->setTypeVoie($request->get('typeVoieEntreprise'));
  528.         $entreprise->setCodePostal($request->get('cpEntreprise'));
  529.         $entreprise->setTelephone($request->get('telephoneEntreprise'));
  530.         
  531.        /*$imgEntreprise=$request->files->get('imageEntreprise');
  532.         if( $imgEntreprise!=null){
  533.        $uploadDirRoot = $this->getParameter('uploads_directory') ;
  534.         $filesystem = new Filesystem();
  535.         $imgName = $imgEntreprise->getClientOriginalName();          
  536.         $imgDir = $uploadDirRoot.'/entreprises/'.$entreprise->getId().'/siege'  ;   
  537.             if( $filesystem->exists($imgDir ) == false ){
  538.                 $filesystem->mkdir($imgDir , 0777, true);
  539.             }      
  540.            
  541.             $imgEntreprise->move($imgDir, $imgName);
  542.             $imgEntreprise->setImage($imgName);
  543.             $imgEntreprise->setDir('/uploads/entreprise/'.$entreprise->getId().'/siege');
  544.         }*/
  545.         $imageEntreprise=$request->files->get('imageEntreprise');
  546.         if( $imageEntreprise!=null){
  547.             
  548.             $uploadDirRoot $this->getParameter('uploads_directory') ;
  549.             if( $entreprise->getImage()!=null)
  550.             { 
  551.                 $filesystem = new Filesystem();
  552.                 $filePath $uploadDirRoot.'/entreprises/'.$entreprise->getId().'/siege' '/' $entreprise->getImage();
  553.         
  554.             
  555.                 $filesystem->remove($filePath);
  556.             }
  557.         
  558.         
  559.             
  560.             $filesystem = new Filesystem();
  561.             $imgName $imageEntreprise->getClientOriginalName();    
  562.             $imgDir $uploadDirRoot.'/entreprises/'.$entreprise->getId().'/siege'  ;     
  563.                      
  564.             if( $filesystem->exists($imgDir ) == false ){
  565.                 $filesystem->mkdir($imgDir 0777true);
  566.             }      
  567.         
  568.             $imageEntreprise->move($imgDir$imgName);
  569.             $entreprise->setImage($imgName);
  570.             $entreprise->setDir('/uploads/entreprises/'.$entreprise->getId().'/siege');;
  571.         
  572.         }
  573.         $this->em->persist($entreprise);
  574.         $this->em->flush();
  575.         $msg = ['msg'=>'OK']  ;
  576.         
  577.         $JSON json_encode($msg);
  578.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  579.         
  580.         
  581.         return $response ;
  582.         
  583.         
  584.     } 
  585.          /**
  586.      * @Route("/edit_gestionnaire_entreprise", name="edit_gestionnaire_entreprise", methods={"GET","POST"} , options={"expose"=true})
  587.      */
  588.     public function edit_gestionnaire_entreprise(Request $request,UserRepository $UserRepository,AgentRepository $AgentRepository,CompetencesRepository $CompetencesRepository,FilialeRepository $FilialeRepository,FormulesRepository $FormulesRepository,ProfessionnelRepository $ProfessionnelRepositoryPaysRepository $PaysRepository,GestionnaireEntrepriseRepository $GestionnaireEntrepriseRepositoryAdministrateursRepository $AdministrateursRepository  EtatRepository $EtatRepository EntrepriseRepository $EntrepriseRepository,GroupeRestrictionRepository $groupe_restrictionRepository,
  589.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response{
  590.         $accessArray=[];
  591.         $niveauAcessPages = [];
  592.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  593.             $admin $this->session->get('supAdT9m2XJzn4');
  594.         }else{
  595.             if (($this->session->get('supAdT9m2XJzn4') == null)) {
  596.                 return $this->redirectToRoute('connexion');
  597.             }
  598.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  599.         } 
  600.         $gestionnaire$GestionnaireEntrepriseRepository->find($request->get('idGestionnaire'));
  601.         if (!$gestionnaire) {
  602.             $msg = ['msg'=>'KOO']  ;
  603.             $JSON json_encode($msg);
  604.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  605.             return $response ;
  606.         }
  607.         $existingGestionnaire $GestionnaireEntrepriseRepository->findOneBy(['email' => $request->get('emailGestionnaire')]);
  608.         $existingUser $UserRepository->findOneBy(['email' => $request->get('emailGestionnaire')]);
  609.         $gUser=$gestionnaire->getUser();
  610.         
  611.         if(($existingUser && $existingUser->getId()!=$gUser->getId())||($existingGestionnaire &&$existingGestionnaire->getId()!=$gestionnaire->getId()))
  612.         
  613.            {  $msg = ['msg'=>'email error']  ;
  614.             $JSON json_encode($msg);
  615.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  616.             return $response ;
  617.             }
  618.         else
  619.         {
  620.            $gestionnaire->setEmail($request->get('emailGestionnaire'));
  621.            $gUser->setEmail($request->get('emailGestionnaire'));
  622.         
  623.         }
  624.         $date_naisance \DateTime::createFromFormat('d/m/Y'$request->get('date_naisance'));
  625.         
  626.         $pays $this->em->getRepository(Pays::class)->find($request->get('paysGestionnaire'));
  627.         $langue $this->em->getRepository(Langue::class)->find($request->get('langueGestionnaire'));
  628.         $gestionnaire->setCivilite($request->get('civilite'));
  629.         $gestionnaire->setNom($request->get('nomGestionnaire'));
  630.         $gestionnaire->setPrenom($request->get('prenomGestionnaire'));
  631.         $gestionnaire->setTelephone($request->get('telephoneGestionnaire'));
  632.         $gestionnaire->setPortable($request->get('portableGestionnaire'));
  633.         $gestionnaire->setVille($request->get('villeGestionnaire'));
  634.         $gestionnaire->setAdress($request->get('adressGestionnaire'));
  635.         $gestionnaire->setNumVoie($request->get('numVoieGestionnaire'));
  636.         $gestionnaire->setTypeVoie($request->get('typeVoieGestionnaire'));
  637.         $gestionnaire->setNomVoie($request->get('nomVoieGestionnaire'));
  638.         $gestionnaire->setCodePostal($request->get('cpGestionnaire'));
  639.         $gestionnaire->setPays($pays);
  640.         $dep=$this->em->getRepository(Departement::class)->find($request->get('DepartementGestionnaire'));
  641.         $gestionnaire->setDepartement($dep);
  642.                  
  643.         $code_pays_dep=$pays->getAlpha2().$dep->getNumero();
  644.          
  645.         $gestionnaire->setCodePaysDep($code_pays_dep);
  646.         $gestionnaire->setLangue($langue);
  647.         $gestionnaire->setDateNaissance($date_naisance);
  648.         if($request->get('agentGestionnaire')){
  649.         $gestionnaire->setAgent(1);
  650.         }
  651.         else
  652.         {
  653.             $gestionnaire->setAgent(0);
  654.         }
  655.         $gestionnaire->setDateUpdate(DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ));
  656.         
  657.         if($request->get('etatGestionnaire')){
  658.             $etat $EtatRepository->find($request->get('etatGestionnaire'));
  659.             $gestionnaire->setEtat($etat);
  660.         }
  661.         if($request->get('PassGestionnaire')!=""){
  662.             $gestionnaire->setPassword($this->setSaltMdp($request->get('PassGestionnaire')));
  663.             $gUser->setPassword($this->setSaltMdp($request->get('PassGestionnaire')));
  664.             
  665.     
  666.         }
  667.         /* if($request->get('formuleGestionnaire')){
  668.             $formuleGestionnaire = $FormuleRepository->find($request->get('formuleGestionnaire'));
  669.            
  670.             $gestionnaire->setFormule($formuleGestionnaire);
  671.         }
  672.         */
  673.         $this->em->persist($gestionnaire);
  674.         $this->em->persist($gUser);
  675.         $this->em->flush();
  676.         $msg = ['msg'=>'OK']  ;
  677.         
  678.         $JSON json_encode($msg);
  679.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  680.         
  681.         
  682.         return $response ;
  683.         
  684.         
  685.     } 
  686.     /**
  687.      * @Route("/fiche_entreprise/{id}", name="fiche_entreprise", methods={"GET","POST"} , options={"expose"=true})
  688.      */
  689.     public function fiche_enreprise(Request $request,$id,NiveauRepository $NiveauRepository,AgentRepository $AgentRepository,CompetencesRepository $CompetencesRepository,FilialeRepository $FilialeRepository,FormulesRepository $FormulesRepository,ProfessionnelRepository $ProfessionnelRepositoryPaysRepository $PaysRepository,GestionnaireEntrepriseRepository $GestionnaireEntrepriseRepositoryAdministrateursRepository $AdministrateursRepository  EtatRepository $EtatRepository EntrepriseRepository $EntrepriseRepository,GroupeRestrictionRepository $groupe_restrictionRepository,
  690.     GroupeRestrictionPageRepository $grouprestrictionpageRepository,PieceJointeProfessionnelRepository $PieceJointeProfessionnelRepository ): Response{
  691.         
  692.         $accessArray=[];
  693.         $niveauAcessPages = [];
  694.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  695.             $admin $this->session->get('supAdT9m2XJzn4');
  696.         }else{
  697.             if (($this->session->get('supAdT9m2XJzn4') == null)) {
  698.                 return $this->redirectToRoute('connexion');
  699.             }
  700.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  701.             
  702.         } 
  703.         $entreprise =  $this->em->createQuery(
  704.         'SELECT c
  705.         FROM App\Entity\Entreprise c
  706.         
  707.         WHERE SHA1(c.id) = \''.$id.'\' 
  708.         '
  709.         )
  710.         ->getOneOrNullResult()  ; 
  711.         if(!$entreprise){
  712.             return $this->redirectToRoute('entreprises');
  713.         }
  714.         //$entreprise = $EntrepriseRepository->find($id);
  715.         /* 
  716.         $etats = $EtatRepository->findAll();
  717.         $pays=$PaysRepository->findAll();
  718.         $formules=$FormulesRepository->findAll();
  719.         $profetionnels=$ProfessionnelRepository->findAll();
  720.         $filiales = $FilialeRepository->findBy(['entreprise' => $entreprise->getId()]);
  721.         $competences=$CompetencesRepository->findAll();
  722.         $niveaux=$NiveauRepository->findAll(); */
  723.         //dd($filiales);
  724.         //$agents= $AgentRepository->findAll();
  725.         //dd($agents);
  726.         //$agents = $AgentRepository->findBy(['entreprise'=>$id]);
  727.         //dd($profetionnels);
  728.         //dd($entreprise->getGestionnaireEntreprise(),$gest);
  729.         $gestionnaire =  $this->em->createQuery(
  730.             'SELECT c
  731.             FROM App\Entity\GestionnaireEntreprise c
  732.             
  733.             WHERE SHA1(c.id) = \''.sha1($entreprise->getGestionnaireEntreprise()->getId()).'\' 
  734.             '
  735.             )
  736.             ->getOneOrNullResult()  ;
  737.         //$entreprise = $this->entityManager->getRepository(Entreprise::class)->findOneBy(['gestionnaire_entreprise' => $gestionnaire->getId()]);
  738.         $competences $CompetencesRepository->findBy(['etat'=>1]);
  739.         $filiales $FilialeRepository->findBy(['entreprise'=>$entreprise->getId()]);
  740.         $regions $this->em->getRepository(Region::class)->findAll();
  741.        // $agents = $AgentRepository->findBy(['entreprise'=>$entreprise->getId()]);
  742.        $formules $this->em->getRepository(Formules::class)->findAll();
  743.     
  744.        $EntrepriseDocuments=$PieceJointeProfessionnelRepository->findBy(['entreprise'=>$entreprise->getId()]);
  745.     
  746.        $gPays$entreprise->getPays()->getId();//les formules sont basé sur le cpl'entreprise
  747.        $codePaysDep=$entreprise->getCodePaysDep();
  748.        $codePostal=$entreprise->getPays()->getAlpha2().$entreprise->getCodePostal();
  749.        
  750.         $professionnelFormules = [];
  751.         foreach ($formules as $formule) {
  752.             if ($formule->getDestination() !== null && in_array('professionnel'$formule->getDestination()) && $formule->getEtat() == "1") {
  753.                 
  754.                 //$paysMatches = empty($formule->getPaysCibles()) || in_array($gPays, $formule->getPaysCibles());
  755.                 
  756.                 $cpCibles $formule->getCpCibles();
  757.                 $cpMatches false;
  758.        
  759.                 if (empty($cpCibles) && !empty($formule->getPaysCibles()) && in_array($gPays$formule->getPaysCibles())) {
  760.                    
  761.                     $professionnelFormules[] = $formule;
  762.                 }
  763.                 if($formule->getCpCibles()&&(in_array($entreprise->getPays()->getAlpha2().'*'$formule->getCpCibles()) || in_array($codePaysDep.'*'$formule->getCpCibles()) || in_array($codePaysDep$formule->getCpCibles()) ||in_array(substr($codePaysDep03) .'*'$formule->getCpCibles()) ||in_array($codePostal$formule->getCpCibles())))
  764.                 {
  765.                     
  766.                     $professionnelFormules[] = $formule;
  767.                 }
  768.     
  769.         
  770.             }
  771.         }
  772.         usort($professionnelFormules, function ($a$b) {
  773.             $aPrix $a->getPrix() ?: 0
  774.             $bPrix $b->getPrix() ?: 0;
  775.         
  776.             if ($aPrix == $bPrix) {
  777.                 return 0;
  778.             }
  779.             return ($aPrix $bPrix) ? -1;
  780.         });
  781.         //dd($professionnelFormules,$formulesWithOptions);
  782.         $arr_competence_filiale=[];
  783.         foreach($filiales as $filiale){
  784.             //$agents_filiale = $AgentRepository->findBy(['entreprise'=>$entreprise->getId(),'filiale'=>$filiale->getId()]);
  785.          
  786.                 $arr_competence_filiale[$filiale->getId()]= $filiale->getCompetences();
  787.             
  788.         }
  789.         $pays $this->em->getRepository(Pays::class)->findAll();
  790.         $langues $this->em->getRepository(Langue::class)->findAll();
  791.         $tailles $this->em->getRepository(TailleEntreprise::class)->findAll();
  792.         $Apes $this->em->getRepository(Ape::class)->findAll();
  793.         $paysDepartement $this->em->getRepository(Pays::class)->findOneBy(['alpha2' => 'FR']);
  794.         $departements $this->em->getRepository(Departement::class)->findBy(['pays' => $entreprise->getPays()->getId()]);
  795.       
  796.         $imageNames json_decode($entreprise->getImage(), true);
  797.         $depEntreprise $this->em->getRepository(Departement::class)->findBy(['id' => $entreprise->getDepartement()]);
  798.         $maxlengthEntreprise $depEntreprise[0]->getCp();
  799.         $prefixEntreprise $depEntreprise[0]->getNumero();
  800.         $depGestionnaire $this->em->getRepository(Departement::class)->findBy(['id' => $gestionnaire->getDepartement()]);
  801.         $maxlengthGestionnaire $depGestionnaire[0]->getCp();
  802.         $prefixGestionnaire $depGestionnaire[0]->getNumero();
  803.         $query $this->em->createQuery(
  804.             'SELECT cj
  805.             FROM App\Entity\CoutJournalier cj
  806.             JOIN cj.type tc
  807.             WHERE tc.nom = \'Publicité\'
  808.             '
  809.         );
  810.         $coutsJournaliers $query->getResult();
  811.         
  812.         //dd($imageNames);
  813.        /*  if (!$langueExist) {
  814.             throw $this->createNotFoundException('La langue spécifiée n\'existe pas.');
  815.         } */
  816.         $etats $EtatRepository->findAll();
  817.         $niveaux=$NiveauRepository->findAll();
  818.          // Récupération de tous les métiers
  819.          // Récupération de tous les services
  820.          $tous_les_services $this->em->getRepository(Competences::class)->findBy(['etat' => 1]);
  821.          $moyens_comm $this->em->getRepository(CommMedia::class)->findBy(['status' => 'Actif']);
  822.          
  823.          // Récupération des services de l'entreprise
  824.          $services_entreprise = [];
  825.          $mes_services = [];
  826.          $services $entreprise->getServices();
  827.          if ($services !== null && (is_array($services) || $services instanceof \Countable) && count($services) > 0) {
  828.              foreach ($services as $service_id) {
  829.                  $service $this->em->getRepository(Competences::class)->find($service_id);
  830.                  if ($service) {
  831.                      $mes_services[] = [
  832.                          'id' => $service->getId(),
  833.                          'nom' => $service->getNomFr(),
  834.                          'type' => ($service->getParents()) ? 'child' :'parent' ,
  835.                      ];
  836.                  }
  837.              }
  838.          }
  839.         // dd($mes_services);
  840.          // Récupération des services APE
  841.          $services_ape = [];
  842.          $ape_entreprise $this->em->getRepository(Ape::class)->findOneBy(['ape' => $entreprise->getApe()]);
  843.          if ($ape_entreprise) {
  844.              $services_ape $this->em->getRepository(Competences::class)->findBy(['ape' => $ape_entreprise->getId()]);
  845.          }
  846.          
  847.          // Identification des services parents et enfants par super_parents
  848.          $services_parents = [];
  849.          $services_enfants = [];
  850.          
  851.          foreach ($tous_les_services as $service) {
  852.              if (is_null($service->getParents())) {
  853.                  $services_parents[] = $service;
  854.              } else {
  855.                  foreach ($service->getSuperParents() as $superParentId) {
  856.                      // Ajouter enfant sous son super parent
  857.                      $services_enfants[$superParentId][] = $service;
  858.                  }
  859.              }
  860.          }
  861.          
  862.          // Conversion des listes en tableaux d'identifiants pour faciliter la comparaison
  863.          $ids_services_ape array_map(function($service) {
  864.              return $service->getId();
  865.          }, $services_ape);
  866.          
  867.          // Filtrage des services pour obtenir les services autres que ceux de l'APE
  868.          $autre_service array_filter($tous_les_services, function($service) use ($ids_services_ape) {
  869.              return !in_array($service->getId(), $ids_services_ape);
  870.          });
  871.          
  872.          // Structurer les résultats
  873.          $competences_principales array_values($services_parents); // Liste des parents
  874.          $competences_secondaires $services_enfants;
  875.           
  876.          
  877.               
  878.         
  879.         $EntreprisePubArr = [];
  880.         $eventsArr = [];
  881.        
  882.             $EntreprisePub $this->em->getRepository(Publicite::class)->findBy(['entreprise' => $entreprise->getId()]);
  883.             $EntrepriseEvents =  $this->em->getRepository(Evenement::class)->findBy(['proprietaire' => $gestionnaire->getUser()]);
  884.      
  885.         foreach ($EntreprisePub as $pub) {
  886.             $piecesJointes $this->em->getRepository(PiecesPublicite::class)->findBy(['publicite' => $pub->getId()]);
  887.             $description_html $pub->getContenu();
  888.                         $description_propre strip_tags($description_html);
  889.                         $description_pub_courte substr($description_propre0140);
  890.             $pubData = [
  891.                 'id' => $pub->getId(),
  892.                 'titre' => $pub->getTitre(),
  893.                 'contenu' => $pub->getMetaDescription()!=null?$pub->getMetaDescription():$description_pub_courte,
  894.                 'dateDebut'=>$pub->getDateDebut(),
  895.                 'dateFin'=>$pub->getDateFin(),
  896.                 'departement'=>$pub->getDepartement()->getNom(),
  897.                 'etat' => [
  898.                     'id' => $pub->getEtat()->getId(),
  899.                     'etat' => $pub->getEtat()->getEtat(),
  900.                 ],
  901.                 'piecesJointes' => [],
  902.             ];
  903.             foreach ($piecesJointes as $piece) {
  904.                 $pubData['piecesJointes'][] = [
  905.                     'principale' => $piece->isPrincipale(),
  906.                     'dir' => '/uploadsFront/'.$gestionnaire->getUser()->getId().'/publicites/'.$pub->getId(),
  907.                        
  908.                     'nom' => $piece->getNom(),
  909.                 ];
  910.             }
  911.             $EntreprisePubArr[] = $pubData;
  912.         }
  913.                 
  914.         foreach ($EntrepriseEvents as $event) {
  915.             $piecesJointes =  $this->em->getRepository(PiecesEvenement::class)->findBy(['evenement' => $event->getId()]);
  916.             $description_html $event->getContenu();
  917.                         $description_propre strip_tags($description_html);
  918.                         $description_pub_courte substr($description_propre0140);
  919.             $eventdata = [
  920.                 'id' => $event->getId(),
  921.                 'titre' => $event->getTitre(),
  922.                 'contenu' => $event->getMetaDescription()!=null?$event->getMetaDescription():$description_pub_courte,
  923.                 'etat' => [
  924.                     'id' => $event->getEtat()->getId(),
  925.                     'etat' => $event->getEtat()->getEtat(),
  926.                 ],
  927.                 'departement'=>$event->getDepartement()->getNom(),
  928.                 'duree'=>$event->getDuree(),
  929.                 'dateEvenement'=>$event->getDateEvenement(),
  930.                 'dateDebutDiffusion'=>$event->getDateDebutDiffusion(),
  931.                 'dateFinDiffusion'=>$event->getDateFinDiffusion(),
  932.                 
  933.                 'piecesJointes' => [],
  934.             ];
  935.             foreach ($piecesJointes as $piece) {
  936.                 $eventdata['piecesJointes'][] = [
  937.                     'principale' => $piece->getPrincipale(),
  938.                     'dir' => '/uploadsFront/'.$gestionnaire->getUser()->getId().'/events/'.$event->getId(),
  939.                     'nom' => $piece->getNom(),
  940.                 ];
  941.             }
  942.             $eventsArr[] = $eventdata;
  943.         }
  944.        //dd($eventsArr,$EntreprisePubArr);
  945.        $activeSocialLinks $this->em->getRepository(SocialLinks::class)
  946.        ->findBy(['status' => 'Actif']);
  947.        $socialsLinks = [];
  948.         foreach ($activeSocialLinks as $socialLink) {
  949.             $positions $socialLink->getDisplayPosition();
  950.             if (is_array($positions)) {
  951.                 // Si `display_position` est un tableau
  952.                 if (in_array('header'$positions)) {
  953.                     $socialsLinks[] = $socialLink;
  954.                 }
  955.             } 
  956.             else {
  957.                 // Si `display_position` est une chaîne unique
  958.                     if ($positions === 'header') {
  959.                     $socialsLinks[] = $socialLink;
  960.                 
  961.                     }
  962.             }  
  963.         }  
  964.         return $this->render('entreprises/fiche_entreprise.html.twig', ['admin' => $admin,
  965.             'gestionnaire' => $gestionnaire,
  966.             'CoutJournalier'=>$coutsJournaliers[0],
  967.             'entreprise' => $entreprise,
  968.             'maxlengthEntreprise' => $maxlengthEntreprise,
  969.             'maxlengthGestionnaire' => $maxlengthGestionnaire,
  970.             'competences' => $competences,//C
  971.             'prefixEntreprise' => $prefixEntreprise,
  972.             'prefixGestionnaire' => $prefixGestionnaire,
  973.             'filiale0'=>$entreprise->getNomEntreprise(),
  974.             'filiale0_id'=> $gestionnaire->getId(),
  975.             'filiale'=>null,
  976.             'etats'=>$etats,
  977.             'filiales'=>$filiales,
  978.             'agents'=>'$agents',
  979.             'arr_competence_filiale2'=>$arr_competence_filiale,
  980.             'agents_filiale'=>'$agents_filiale',
  981.             'langue' => $langues,
  982.             'pays' => $pays,
  983.             'niveaux'=>$niveaux,
  984.             'regions'=>$regions,
  985.             'Departements'=>$departements,
  986.             'numero'=>$departements[0]->getNumero(),
  987.             'maxlength'=>$departements[0]->getCp(),
  988.             'tailles'=>$tailles,
  989.             'apes'=>$Apes,
  990.            // 'formuleOptions'=>$formuleOptions,
  991.             'formuleOptions'=>[],
  992.             'imageNames' => $imageNames,
  993.             'formules'=>$professionnelFormules,
  994.             'EntrepriseDocuments'=>$EntrepriseDocuments,
  995.             'pubArr' => $EntreprisePubArr,
  996.             'eventsArr' => $eventsArr,
  997.             
  998.             'services_ape' => $services_ape,
  999.             'autre_service' => $autre_service,
  1000.             'tous_les_services'=>$tous_les_services,
  1001.             //'mes_services'=>$mes_services,
  1002.             'competences_principales' => $competences_principales,
  1003.             'competences_secondaires' => $competences_secondaires,
  1004.             'liste_competences' => $mes_services,
  1005.             'moyens_comm'=>$moyens_comm,
  1006.             'socialsLinks'=>$socialsLinks
  1007.         ]);
  1008.       
  1009.     }
  1010.      
  1011.      /**
  1012.      * @Route("/getEntrepriseAgents", name="getEntrepriseAgents", methods={"GET","POST"}, options = {"expose" = true})
  1013.      */
  1014.     public function getEntrepriseAgents(Request $request,PaysRepository $PaysRepository,EtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepository,CompetencesRepository $CompetencesRepository,AgentRepository $AgentRepository,FilialeRepository $FilialeRepository,EntrepriseRepository $EntrepriseRepository): Response
  1015.     {
  1016.                     
  1017.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  1018.             $admin $this->session->get('supAdT9m2XJzn4');
  1019.         }else{
  1020.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  1021.             
  1022.         } 
  1023.         
  1024.         $sql_where "" ;
  1025.         if($request->get('search')['value']!=""){
  1026.             $sql_where .= ' AND ( u.nom_entreprise LIKE \'%'.$request->get('search')['value'].'%\' )';
  1027.             $sql_where .= ' OR ( u.prenom LIKE \'%'.$request->get('search')['value'].'%\' )';
  1028.             $sql_where .= ' OR ( u.email LIKE \'%'.$request->get('search')['value'].'%\' )';     
  1029.        }
  1030.          
  1031.         $user_array = [] ;
  1032.         
  1033.         $limit =  $request->get('length') ;
  1034.             
  1035.         $offset $request->get('start') ;
  1036.         
  1037.         $array_search = array();
  1038.         
  1039.         $columns = ['u.nom','u.prenom','u.email''u.telephone''u.pays','u.etat','u.type'];
  1040.        
  1041.         $orders = [] ;
  1042.         
  1043.         
  1044.         for($i=$i<count($request->get('order')) ;$i++ ){
  1045.             
  1046.              $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  1047.             
  1048.         }
  1049.         
  1050.         
  1051.         if( count($orders)>0){
  1052.         $order " ORDER BY ".implode(' , ',$orders) ;
  1053.         }
  1054.         else{
  1055.         $order "" ;  
  1056.         }
  1057.         
  1058.         $entrepriseAgents $this->em->createQuery(
  1059.             'SELECT u 
  1060.             FROM App\Entity\Agent u
  1061.            
  1062.             
  1063.             WHERE u.entreprise = \'' $request->get('id') . '\' ' $sql_where.' '.$order.'
  1064.              
  1065.             '
  1066.             )
  1067.             ->setMaxResults($limit)
  1068.             ->setFirstResult($offset)
  1069.             ->getResult()  ;
  1070.          $out=[];
  1071.         if(!empty($entrepriseAgents))
  1072.             {
  1073.                 foreach ($entrepriseAgents as $agent) {
  1074.                     $pays=$PaysRepository->findOneBy(['id' => $agent->getPays()]);
  1075.                      $etat=$EtatRepository->findOneBy(['id' =>$agent->getEtat()]);
  1076.                    
  1077.                         $out[] = [
  1078.                             'id' => $agent->getId(),
  1079.                             'Nom' => $agent->getNom(),
  1080.                             'prenom'=>$agent->getPrenom(),
  1081.                             'portable'=>$agent->getPortable(),
  1082.                             'telephone'=>$agent->getTelephone(),
  1083.                             'pays'=>$pays->getNomFrFr(),
  1084.                             'paysId'=>$pays->getId(),
  1085.                             'etat'=>$etat->getEtat(),
  1086.                             'type'=>$agent->getType(),
  1087.                             'mail'=>$agent->getEmail(),
  1088.                             'ville'=>$agent->getVille(),
  1089.                             'cp'=>$agent->getCodePostal(),
  1090.                             'adresse'=>$agent->getAdresse(),
  1091.                             'competences'=>$agent->getCompetences(),
  1092.                         ];
  1093.                     
  1094.                 }
  1095.             }
  1096.         $I_nbResultatsTotal count$out ) ;
  1097.         
  1098.         
  1099.         $JSON json_encode($out);
  1100.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  1101.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1102.         return $response;
  1103.         
  1104.     }
  1105.      /**
  1106.      * @Route("/getEntreprisepartenariats", name="getEntreprisepartenariats", methods={"GET","POST"}, options = {"expose" = true})
  1107.      */
  1108.     public function getEntreprisepartenariats(Request $request,AdministrateursRepository $AdministrateursRepositoryPartenariatRepository $PartenariatRepository,CompetencesRepository $CompetencesRepository,AgentRepository $AgentRepository,FilialeRepository $FilialeRepository,EntrepriseRepository $EntrepriseRepository): Response
  1109.     {
  1110.                     
  1111.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  1112.             $admin $this->session->get('supAdT9m2XJzn4');
  1113.         }else{
  1114.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  1115.             
  1116.         } 
  1117.         
  1118.         $sql_where "";
  1119.         if($request->get('search')['value']!=""){
  1120.             $sql_where .= ' AND ( u.type_partenariat LIKE \'%'.$request->get('search')['value'].'%\' )' ;   
  1121.             $sql_where .= ' OR ( u.date_debut LIKE \'%'.$request->get('search')['value'].'%\' )';   
  1122.             $sql_where .= ' OR ( u.date_fin LIKE \'%'.$request->get('search')['value'].'%\' )';  
  1123.             $sql_where .= ' OR ( u.date_creation LIKE \'%'.$request->get('search')['value'].'%\' )'
  1124.             $sql_where .= ' OR ( u.date_update LIKE \'%'.$request->get('search')['value'].'%\' )'
  1125.             $sql_where .= ' OR ( u.status LIKE \'%'.$request->get('search')['value'].'%\' )';  
  1126.             $sql_where .= ' OR ( u.etat LIKE \'%'.$request->get('search')['value'].'%\' )';  
  1127.         }
  1128.          
  1129.         $user_array = [] ;
  1130.         
  1131.         $limit =  $request->get('length') ;
  1132.             
  1133.         $offset $request->get('start') ;
  1134.         
  1135.         $array_search = array();
  1136.         
  1137.         $columns = ['u.id''u.type_partenariat''u.date_debut''u.date_fin''u.date_creation''u.date_update''u.etat''u.status''u.demandeur''u.reception'];
  1138.         
  1139.         $orders = [] ;
  1140.         
  1141.         
  1142.         for($i=$i<count($request->get('order')) ;$i++ ){
  1143.             
  1144.              $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  1145.             
  1146.         }
  1147.         
  1148.         
  1149.         if( count($orders)>0){
  1150.         $order " ORDER BY ".implode(' , ',$orders) ;
  1151.         }
  1152.         else{
  1153.         $order "" ;  
  1154.         }
  1155.         
  1156.         $total_partenariats = [];
  1157.         
  1158.         $total_partenariats$this->em->createQuery(
  1159.             'SELECT u 
  1160.             FROM App\Entity\Partenariat u
  1161.             
  1162.             
  1163.             WHERE u.demandeur = \'' $request->get('id') . '\' ' $sql_where
  1164.    
  1165.             )
  1166.                 
  1167.             ->getResult()  ;
  1168.       
  1169.                 
  1170.         
  1171.         $I_nbResultatsTotal count$total_partenariats ) ;
  1172.         
  1173.         
  1174.         $partenariats $this->em->createQuery(
  1175.                 'SELECT u 
  1176.                 FROM App\Entity\Partenariat u
  1177.                
  1178.                 
  1179.                 WHERE u.demandeur = \'' $request->get('id') . '\' ' $sql_where.' '.$order.'
  1180.                  
  1181.                 '
  1182.                 )
  1183.                 ->setMaxResults($limit)
  1184.                 ->setFirstResult($offset)
  1185.                 ->getResult()  ;
  1186.                 $par $this->em->createQuery(
  1187.                     'SELECT u 
  1188.                     FROM App\Entity\Partenariat u
  1189.                    
  1190.                     
  1191.                     WHERE u.demandeur = \'' $request->get('id') . '\' ' 
  1192.                     )
  1193.                     ->getResult()  ;
  1194.         $output = [] ; 
  1195.         $etat '';
  1196.                
  1197.         foreach($partenariats as $partenariat){
  1198.             $additionalData = [];
  1199.             if($partenariat->getEtat() == 1){
  1200.                 $etat '<span class="badge bg-success">Actif</span>';
  1201.             }else if($partenariat->getEtat() == 0){
  1202.                 $etat '<span class="badge bg-danger">Inactif</span>';
  1203.             };
  1204.             if($partenariat->getStatus()  == 'Activer'){
  1205.                 $status '<span class="badge bg-success">Activer</span>';
  1206.             }else if($partenariat->getStatus() == 'Désactiver'){
  1207.                 $status '<span class="badge bg-danger">Désactiver</span>';
  1208.             };
  1209.             if ($partenariat->getTypePartenariat() === 'Externe') {
  1210.                 $agentId $partenariat->getReception()->getGestionnaire()->getAgent();
  1211.                 $agent $AgentRepository->find($agentId);
  1212.          
  1213.                 $competencesArrayAgent $agent->getCompetences();
  1214.                 $competenceNamesAgent = [];
  1215.                 foreach ($competencesArrayAgent as $competenceAgent) {
  1216.                     $competenceNamesAgent[] = $CompetencesRepository->find($competenceAgent)->getCompetence();
  1217.                 }
  1218.                 $competencesArray $partenariat->getReception()->getCompetences();
  1219.                 $competenceNames = [];
  1220.         
  1221.                 foreach ($competencesArray as $competence) {
  1222.                     $competenceNames[] = $CompetencesRepository->find($competence)->getCompetence();
  1223.                 }
  1224.                 
  1225.                 //'parentFiliale' => $partenariat->getReception()->getFilialeParent()->getNom() !== null ?  $partenariat->getReception()->getFilialeParent()->getNom() : '',
  1226.         
  1227.                 $additionalData = [
  1228.                     'idNov' => $partenariat->getReception()->getId()  !== null $partenariat->getReception()->getId() : 0,
  1229.                     'idAgent' => $partenariat->getReception()->getGestionnaire()->getAgent() !== null $partenariat->getReception()->getGestionnaire()->getAgent() : 0,
  1230.                     'idGestionnaire' => $partenariat->getReception()->getGestionnaire()->getId() !== null $partenariat->getReception()->getGestionnaire()->getId() : 0,
  1231.                     'nom' => $partenariat->getReception()->getNom() !== null $partenariat->getReception()->getNom() : '',
  1232.                     'nom_gestionnaire' => $partenariat->getReception()->getGestionnaire()->getNom() !== null $partenariat->getReception()->getGestionnaire()->getNom() : '',
  1233.                     'prenom_gestionnaire' => $partenariat->getReception()->getGestionnaire()->getPrenom() !== null $partenariat->getReception()->getGestionnaire()->getPrenom() : '',
  1234.                     'email_gestionnaire' => $partenariat->getReception()->getGestionnaire()->getEmail() !== null $partenariat->getReception()->getGestionnaire()->getEmail() : '',
  1235.                     'telephone_gestionnaire' => $partenariat->getReception()->getGestionnaire()->getTelephone() !== null $partenariat->getReception()->getGestionnaire()->getTelephone() : '',
  1236.                     'portable_gestionnaire' => $partenariat->getReception()->getGestionnaire()->getPortable() !== null $partenariat->getReception()->getGestionnaire()->getPortable() : '',
  1237.                     'ville_gestionnaire' => $partenariat->getReception()->getGestionnaire()->getVille() !== null $partenariat->getReception()->getGestionnaire()->getVille() : '',
  1238.                     'pays_gestionnaire' => $partenariat->getReception()->getGestionnaire()->getPays() !== null $partenariat->getReception()->getGestionnaire()->getPays() : '',
  1239.                     'cp_gestionnaire' => $partenariat->getReception()->getGestionnaire()->getCp() !== null $partenariat->getReception()->getGestionnaire()->getCp() : '',
  1240.                     'etat_gestionnaire' => $partenariat->getReception()->getGestionnaire()->getEtat() !== null $partenariat->getReception()->getGestionnaire()->getEtat() : '',
  1241.                     'adresse_gestionnaire' => $partenariat->getReception()->getGestionnaire()->getAdresse() !== null $partenariat->getReception()->getGestionnaire()->getAdresse() : '',
  1242.                     'nom_agent' => $agent->getNom() !== null $agent->getNom() : '',
  1243.                     'prenom_agent' => $agent->getPrenom() !== null $agent->getPrenom() : '',
  1244.                     'email_agent' => $agent->getEmail() !== null $agent->getEmail() : '',
  1245.                     'telephone_agent' => $agent->getTelephone() !== null $agent->getTelephone() : '',
  1246.                     'portable_agent' => $agent->getPortable() !== null $agent->getPortable() : '',
  1247.                     'ville_agent' => $agent->getVille() !== null $agent->getVille() : '',
  1248.                     'pays_agent' => $agent->getPays() !== null $agent->getPays() : '',
  1249.                     'cp_agent' => $agent->getCodePostal() !== null $agent->getCodePostal() : '',
  1250.                     'etat_agent' => $agent->getEtat() !== null $agent->getEtat() : '',
  1251.                     'adresse_agent' => $agent->getAdresse() !== null $agent->getAdresse() : '',
  1252.                     'type_agent' => $agent->getType() !== null $agent->getType() : '',
  1253.                     'competenceAgent' => implode(' '$competenceNamesAgent),
  1254.                     'type' => $partenariat->getReception()->getType()  !== null $partenariat->getReception()->getType()  : '',
  1255.                     'competenceFiliale' => implode(' '$competenceNames),
  1256.                     'descriptionFiliale' => $partenariat->getReception()->getDescription() !== null $partenariat->getReception()->getDescription() : '',
  1257.                 ];
  1258.             }
  1259.             
  1260.             $output[] = [
  1261.                     
  1262.                     'id'=>$partenariat->getId() ,
  1263.                     'type_partenariat'=>$partenariat->getTypePartenariat()  ,
  1264.                     'demandeur'=>$partenariat->getDemandeur()->getNom()  !== null ?$partenariat->getDemandeur()->getNom() : '',
  1265.                     'entrepriseDemandeur'=>$partenariat->getDemandeur()->getEntreprise()->getNomEntreprise()  !== null ?$partenariat->getDemandeur()->getEntreprise()->getNomEntreprise(): '' ,
  1266.                     'status'=>$status ,
  1267.                     'reception'=>$partenariat->getReception()->getNom() !== null ?$partenariat->getReception()->getNom(): '',
  1268.                     'entrepriseReception'=>$partenariat->getReception()->getEntreprise()->getNomEntreprise() !== null ?$partenariat->getReception()->getEntreprise()->getNomEntreprise(): '',
  1269.                     'etat'=>$etat ,
  1270.                     'note'=>$partenariat->getNote() ,
  1271.                     'date_fin'=> date_format$partenariat->getDateFin(), 'd/m/Y'),
  1272.                     'date_debut'=> date_format$partenariat->getDateDebut(), 'd/m/Y'),
  1273.                     'date_creation'=> date_format$partenariat->getDateCreation(), 'd/m/Y H:i')
  1274.             ]+ $additionalData;
  1275.          
  1276.         }
  1277.         
  1278.         $JSON json_encode($output);
  1279.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  1280.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1281.         return $response;
  1282.         
  1283.     }
  1284.     /**
  1285.      * @Route("/add_entreprise_agent", name="add_entreprise_agent", methods={"GET","POST"} , options={"expose"=true})
  1286.      */
  1287.     public function add_entreprise_agent(Request $request,UserRepository $UserRepository,GestionnaireFilialeRepository $GestionnaireFilialeRepository,NiveauRepository $NiveauRepository,AgentRepository $AgentRepository,CompetencesRepository $CompetencesRepository,FilialeRepository $FilialeRepository,FormulesRepository $FormulesRepository,ProfessionnelRepository $ProfessionnelRepositoryPaysRepository $PaysRepository,GestionnaireEntrepriseRepository $GestionnaireEntrepriseRepositoryAdministrateursRepository $AdministrateursRepository  EtatRepository $EtatRepository EntrepriseRepository $EntrepriseRepository,GroupeRestrictionRepository $groupe_restrictionRepository): Response{
  1288.         $accessArray=[];
  1289.         $niveauAcessPages = [];
  1290.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  1291.             $admin $this->session->get('supAdT9m2XJzn4');
  1292.         }
  1293.         else{
  1294.             if (($this->session->get('supAdT9m2XJzn4') == null)) {
  1295.                 return $this->redirectToRoute('connexion');
  1296.             }
  1297.             
  1298.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);    
  1299.         } 
  1300.         $existingAgentWithMail $AgentRepository->findOneBy(['email' => $request->get('emailAgent')]);
  1301.         $existingAgent $AgentRepository->findOneBy(['id'=>$request->get('id')]);
  1302.         $existingUser $UserRepository->findOneBy(['email' => $request->get('emailAgent')]);
  1303.         if($existingAgent!=null){
  1304.             $agent=$existingAgent;
  1305.             $user=$agent->getUser();
  1306.             //$agent->setDateUpdate(DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ));
  1307.             if($existingAgentWithMail!=null && $existingAgentWithMail->getId() != $existingAgent->getId()||($existingUser!=null &&$existingUser->getId() != $user->getId()))
  1308.             {
  1309.             $msg = ['msg'=>'email error']  ;
  1310.             $JSON json_encode($msg);
  1311.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1312.             return $response ;
  1313.        
  1314.             }
  1315.             else
  1316.             {
  1317.                 $agent->setEmail($request->get('emailAgent'));
  1318.                 $user->setEmail($request->get('emailAgent'));
  1319.         
  1320.             }
  1321.         }
  1322.         else
  1323.         {
  1324.             $agent=new Agent();
  1325.             
  1326.             $user = new User();
  1327.             //$agent->setDateCreation(DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ));
  1328.             if($existingAgentWithMail!=null||$existingUser )
  1329.             {
  1330.                 $msg = ['msg'=>'email error']  ;
  1331.                 $JSON json_encode($msg);
  1332.                 $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1333.                 return $response ;
  1334.             }
  1335.             else
  1336.             {
  1337.                 $agent->setEmail($request->get('emailAgent'));
  1338.                 $user->setEmail($request->get('emailAgent'));
  1339.                 $user->setRoles(["ROLE_AGENT"]);
  1340.                 $agent->setUser($user);
  1341.                 $etat=$EtatRepository->findOneBy(['id' =>4]);
  1342.                 $agent->setEtat($etat);
  1343.             }  
  1344.             /*
  1345.             if($request->get('confirmPassAgent')!=$request->get('PassAgent') &&  $request->get('PassAgent')!=""){
  1346.                 $mdp = $this->setSaltMdp($request->get('PassAgent'));
  1347.                 $agent->setPassword($mdp);
  1348.             }
  1349.             else { 
  1350.                 $msg = ['msg'=>'password error']  ;
  1351.                 $JSON = json_encode($msg);
  1352.                 $response   = new Response($JSON, 200, ['Content-Type' => 'application/json']);
  1353.                 return $response ;
  1354.             }*/
  1355.         }
  1356.         
  1357.       if($request->get('PassAgent')!="")
  1358.         {
  1359.             $mdp $this->setSaltMdp($request->get('PassAgent'));
  1360.             $agent->setPassword($mdp);
  1361.         $user->setPassword($mdp);
  1362.         }
  1363.         $agent->setNom($request->get('nomAgent'));
  1364.         $agent->setPrenom($request->get('prenomAgent'));
  1365.         
  1366.         $agent->setTelephone($request->get('telephoneAgent'));
  1367.         $agent->setPortable($request->get('portableAgent'));
  1368.         $agent->setVille($request->get('villeAgent'));
  1369.         $agent->setPays($request->get('paysAgent'));
  1370.         $agent->setAdresse($request->get('adressAgent'));
  1371.         
  1372.         $agent->setCodePostal($request->get('cpAgent'));
  1373.         //$agent->setEtat($request->get('etatAgent'));
  1374.         $agent->setCompetences($request->get('competencesAgent'));
  1375.         if($request->get('entrepriseId')!="")
  1376.         {
  1377.             $entreprise=  $EntrepriseRepository->find($request->get('entrepriseId'));
  1378.         $agent->setEntreprise($entreprise);
  1379.         }  
  1380.         if($request->get('filialeId')!="")
  1381.         {
  1382.             $filiale=  $FilialeRepository->find($request->get('filialeId'));
  1383.             $agent->setFilialeId($filiale);
  1384.         }  
  1385.         $agent->setType('Interne');
  1386.         $date_naisance \DateTime::createFromFormat('d/m/Y'$request->get('date_naisance'));
  1387.         
  1388.         //dd($date_naisance,$request->get('date_naisance'));
  1389.         $agent->setDateNaissance($date_naisance);
  1390.         
  1391.         $langue $this->em->getRepository(Langue::class)->find($request->get('langueAgent'));
  1392.         $agent->setCivilite($request->get('civilite'));
  1393.         $agent->setNumVoie($request->get('numVoieAgent'));
  1394.         $agent->setTypeVoie($request->get('typeVoieAgent'));
  1395.         $agent->setNomVoie($request->get('nomVoieAgent'));
  1396.         $dep=$this->em->getRepository(Departement::class)->find($request->get('DepartementAgent'));
  1397.         $pays=$this->em->getRepository(Pays::class)->find($request->get('paysAgent'));
  1398.              
  1399.         $code_pays_dep=$pays->getAlpha2().$dep->getNumero();
  1400.          
  1401.         $agent->setDepartement($dep);
  1402.         $agent->setCodePaysDep($code_pays_dep);
  1403.         $agent->setLangue($langue);
  1404.         
  1405.         
  1406.         
  1407.         $this->em->persist($user);
  1408.    
  1409.         $this->em->persist($agent);
  1410.         $this->em->flush();
  1411.        
  1412.         $msg = ['msg'=>'OK']  ;
  1413.         
  1414.         $JSON json_encode($msg);
  1415.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1416.         
  1417.         
  1418.         return $response ;
  1419.         
  1420.         
  1421.     } 
  1422.      /**
  1423.      * @Route("/edit_etat_entreprise", name="edit_etat_entreprise", methods={"GET","POST"} , options={"expose"=true})
  1424.      */
  1425.     public function edit_etat_entreprise(Request $request ConfigSmtpRepository $ConfigSmtpRepository,NiveauRepository $NiveauRepository,AgentRepository $AgentRepository,CompetencesRepository $CompetencesRepository,FilialeRepository $FilialeRepository,FormulesRepository $FormulesRepository,ProfessionnelRepository $ProfessionnelRepositoryPaysRepository $PaysRepository,GestionnaireEntrepriseRepository $GestionnaireEntrepriseRepositoryAdministrateursRepository $AdministrateursRepository  EtatRepository $EtatRepository EntrepriseRepository $EntrepriseRepository,GroupeRestrictionRepository $groupe_restrictionRepository,
  1426.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response{
  1427.         $entreprise $EntrepriseRepository->find($request->get('id_entreprise'));
  1428.         if (!$entreprise) {
  1429.             return new JsonResponse(['status' => 'KOO''message' => 'Entreprise non trouvé !']);
  1430.         }
  1431.         $etatId $request->get('etat_edit');
  1432.         $etat $this->em->getRepository(Etat::class)->find($etatId);
  1433.         //if($prevEntrepriseEtat==4 &&$etatId==1){
  1434.             $entrepriseFiliale=$this->em->getRepository(Filiale::class)->findBy(['entreprise'=>$entreprise->getId()]);
  1435.             if(!empty($entrepriseFiliale)){
  1436.                 foreach($entrepriseFiliale as $f){
  1437.                     $f->setEtat($etat);
  1438.                     $this->em->persist($f);
  1439.                 }
  1440.             }
  1441.             $entrepriseAgent=$this->em->getRepository(Agent::class)->findBy(['entreprise'=>$entreprise->getId()]);
  1442.             if(!empty($entrepriseAgent)){
  1443.                 foreach($entrepriseAgent as $a){
  1444.                     $a->setEtat($etat);
  1445.                     $this->em->persist($a);
  1446.                 }
  1447.             }
  1448.             
  1449.        // }
  1450.         $entreprise->setEtat($etat);
  1451.         try {
  1452.             $this->em->persist($entreprise);
  1453.             $this->em->flush();
  1454.             $EntrepriseEtat=$entreprise->getEtat()->getETat();
  1455.             $msg'';
  1456.             $emails $ConfigSmtpRepository->findOneBy([],['id'=>'desc']) ;
  1457.            /*  $email_arr = [];
  1458.             foreach($emails->getDestinataires() as $email){
  1459.                 $email_arr[] = $email ;
  1460.             }
  1461.             foreach($emails->getDestinatairesTransaction() as $email){
  1462.                 $email_arr[] = $email ;
  1463.             } */
  1464.             $transport = (new \Swift_SmtpTransport($emails->getHost() , $emails->getPort() , $emails->getTypeConnexion()  ))
  1465.                     ->setUsername($emails->getUser())
  1466.                     ->setPassword($emails->getMdp())
  1467.                     ;
  1468.                     $mailer = new \Swift_Mailer($transport);
  1469.                     $sender $emails->getUser() ;
  1470.                     $message = (new \Swift_Message('Modification Etat Entreprise ')) ;
  1471.                     
  1472.                     $message->setFrom($sender)
  1473.                     ->setTo$entreprise->getGestionnaireEntreprise()->getEmail() )
  1474.                     ->setBody(
  1475.                         $this->renderView(
  1476.                             'emails/modification_etat_entreprise.html.twig',[
  1477.                                 'etat'=>$EntrepriseEtat,
  1478.                                 'entreprise'=>$entreprise,
  1479.                                 
  1480.                             ]
  1481.                         ), 'text/html'
  1482.                     );
  1483.                     try{
  1484.                         
  1485.                         $mailer->send($message);
  1486.                         $msg 'OK message envoyé' ;
  1487.                         
  1488.                     }
  1489.                     catch (\Swift_TransportException $e) {   
  1490.                         
  1491.                         $msg $e->getMessage() ;
  1492.                     }
  1493.             return new JsonResponse(['status' => 'OK''message' => 'Entreprise mis à jour avec succès !','msg'=>$msg]);
  1494.         } catch (\Exception $e) {
  1495.             return new JsonResponse(['status' => 'error''message' => 'Erreur lors de la modification du entreprise : ' $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
  1496.         }
  1497.      
  1498.     }
  1499.     /**
  1500.      * @Route("/get_document_entreprise", name="get_document_entreprise", methods={"GET","POST"} , options={"expose"=true})
  1501.      */
  1502.     public function get_document_entreprise(Request $request,NiveauRepository $NiveauRepository,AgentRepository $AgentRepository,CompetencesRepository $CompetencesRepository,FilialeRepository $FilialeRepository,FormulesRepository $FormulesRepository,ProfessionnelRepository $ProfessionnelRepositoryPaysRepository $PaysRepository,GestionnaireEntrepriseRepository $GestionnaireEntrepriseRepositoryAdministrateursRepository $AdministrateursRepository  EtatRepository $EtatRepository EntrepriseRepository $EntrepriseRepository,GroupeRestrictionRepository $groupe_restrictionRepository,
  1503.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response{
  1504.         
  1505.         //$files = glob('/home/mitih/public_html/mitih-front-v2.synexta-developpement.fr/public/uploads/'..'/*.docx');
  1506.         $n $request->get('entrepriseNom');
  1507.         $nom str_replace(' ''_'$n);
  1508.         $url 'http://mitih-front-v2.synexta-developpement.fr/public/uploads/'.$nom.'/';
  1509.         $ch curl_init();
  1510.         curl_setopt($chCURLOPT_URL$url);
  1511.         curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
  1512.         $result curl_exec($ch);
  1513.         curl_close($ch);
  1514.         echo $result;
  1515.         return false;
  1516.         dd($documents);
  1517.    
  1518.     }
  1519.     /**
  1520.      * @Route("/verif_existing_mail", name="verif_existing_mail", methods={"GET","POST"} , options={"expose"=true})
  1521.      */
  1522.     public function verif_existing_mail(Request $request): Response
  1523.     {
  1524.         $value $request->get('mail');
  1525.        // dd($value);
  1526.         $exists $this->em->getRepository(User::class)->findOneBy(['email' => $value]);
  1527.        
  1528.           
  1529.         
  1530.         return new JsonResponse([
  1531.             'exists' => $exists true false,
  1532.         ]);
  1533.     }
  1534.     /**
  1535.      * @Route("/add_filiale", name="add_filiale", methods={"GET","POST"} , options={"expose"=true})
  1536.      */
  1537.     public function add_filiale(Request $request,UserRepository $UserRepository,NiveauRepository $NiveauRepository,AgentRepository $AgentRepository,CompetencesRepository $CompetencesRepository,FilialeRepository $FilialeRepository,FormulesRepository $FormulesRepository,ProfessionnelRepository $ProfessionnelRepositoryPaysRepository $PaysRepository,GestionnaireEntrepriseRepository $GestionnaireEntrepriseRepositoryAdministrateursRepository $AdministrateursRepository  EtatRepository $EtatRepository EntrepriseRepository $EntrepriseRepository,GroupeRestrictionRepository $groupe_restrictionRepository,
  1538.     GestionnaireFilialeRepository $GestionnaireFilialeRepository): Response{
  1539.         $accessArray=[];
  1540.         $niveauAcessPages = [];
  1541.         //dd($request->request->all());
  1542.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  1543.             $admin $this->session->get('supAdT9m2XJzn4');
  1544.         }
  1545.         else{
  1546.             if (($this->session->get('supAdT9m2XJzn4') == null)) {
  1547.                 return $this->redirectToRoute('connexion');
  1548.             }
  1549.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  1550.             $adminId $admin['userId'];
  1551.             $groupeRestrictions $groupe_restrictionRepository->findByAdminId($adminId);
  1552.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]['id']);
  1553.             $accessArray $restrictionPages[0]->getAccess();
  1554.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  1555.             $niveauAcessPagesCollection->initialize();
  1556.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  1557.         } 
  1558.         //dd($request->request->all());
  1559.         $existingGestionnaire $GestionnaireFilialeRepository->findOneBy(['email' => $request->get('emailGestionnaireFiliale')]);
  1560.         $existingUser=$UserRepository->findOneBy(['email' => $request->get('emailGestionnaireFiliale')]);
  1561.        // dd($existingGestionnaire,$existingUser);
  1562.         if ($existingGestionnaire|| $existingUser
  1563.            { 
  1564.             $msg = ['msg'=>'email error']  ;
  1565.             $JSON json_encode($msg);
  1566.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1567.             return $response ;
  1568.         }
  1569.         $entreprise $EntrepriseRepository->findOneBy(['id' => $request->get('entrepriseMere')]);
  1570.        
  1571.         $gestionnaire= new GestionnaireFiliale();
  1572.         $pays $this->em->getRepository(Pays::class)->find($request->get('paysGestionnaireFiliale'));
  1573.         $langue $this->em->getRepository(Langue::class)->find($request->get('langueGestionnaireFiliale'));
  1574.         $gestionnaire->setCivilite($request->get('civilite'));
  1575.         $gestionnaire->setNom($request->get('nomGestionnaireFiliale'));
  1576.         $gestionnaire->setPrenom($request->get('prenomGestionnaireFiliale'));
  1577.         $gestionnaire->setTelephone($request->get('telephoneGestionnaireFiliale'));
  1578.         $gestionnaire->setPortable($request->get('PortableGestionnaireFiliale'));
  1579.         $gestionnaire->setEmail($request->get('emailGestionnaireFiliale'));
  1580.         $gestionnaire->setVille($request->get('villeGestionnaireFiliale'));
  1581.         $gestionnaire->setAdresse($request->get('adressGestionnaireFiliale'));
  1582.         $gestionnaire->setCp($request->get('cpGestionnaireFiliale'));
  1583.         $gestionnaire->setNumVoie($request->get('numVoieGestionnaireFiliale'));
  1584.         $gestionnaire->setTypeVoie($request->get('typeVoieGestionnaireFiliale'));
  1585.         $gestionnaire->setNomVoie($request->get('nomVoieGestionnaireFiliale'));
  1586.         $departement $this->em->getRepository(Departement::class)->find($request->get('DepartementGestionnaireFiliale'));
  1587.         
  1588.         $gestionnaire->setDepartement($departement);
  1589.         $gestionnaire->setPays($pays);
  1590.         $code_pays_depG=$pays->getAlpha2().$departement->getNumero();
  1591.          
  1592.         $gestionnaire->setCodePaysDep($code_pays_depG);
  1593.         $gestionnaire->setLangue($langue);
  1594.         $gestionnaire->setEntreprise($entreprise);
  1595.        // $gestionnaire->setEtat($request->get('etatGestionnaireFiliale'));
  1596.         
  1597.         $date_naisance \DateTime::createFromFormat('d/m/Y'$request->get('date_naisance'));
  1598.         
  1599.         //dd($date_naisance,$request->get('date_naisance'));
  1600.         $gestionnaire->setDateNaissance($date_naisance);
  1601.         
  1602.         $gestionnaire->setDateCreation(DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ));
  1603.         
  1604.         /*if($request->get('etatGestionnaire')){
  1605.             $etat = $EtatRepository->find($request->get('etatGestionnaire'));
  1606.             $gestionnaire->setEtat($etat);
  1607.         }*/
  1608.         
  1609.         //$etat=$EtatRepository->findOneBy(['id' =>4]);
  1610.         //$gestionnaire->setEtat($etat);
  1611.         
  1612.         $mdp $this->setSaltMdp($request->get('passGestionnaireFiliale'));
  1613.         $gestionnaire->setPassword($mdp);
  1614.             
  1615.         $this->em->persist($gestionnaire);
  1616.         $user = new User();
  1617.         $user->setEmail($request->get('emailGestionnaireFiliale'));
  1618.         $user->setRoles(["ROLE_GESTIONNAIRE_FILIALE"]);
  1619.         $gestionnaire->setDateCreation(DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ));
  1620.         
  1621.         $user->setPassword($mdp);
  1622.        
  1623.         $this->em->persist($user);
  1624.         $gestionnaire->setUser($user);
  1625.         
  1626.  
  1627.         $paysF $this->em->getRepository(Pays::class)->find($request->get('paysFiliale'));
  1628.         
  1629.         $filiale=new Filiale();
  1630.         $filiale->setNom($request->get('nomFiliale'));
  1631.         $filiale->setGestionnaire($gestionnaire);
  1632.         $filiale->setDateCreation(DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ));
  1633.         $filiale->setType('Interne');
  1634.         if($request->get('parentFiliale'))
  1635.         {
  1636.             $parentfiliale $FilialeRepository->find($request->get('parentFiliale'));
  1637.             $filiale->setFilialeParent($parentfiliale);
  1638.         }
  1639.         $filiale->setCompetences($request->get('competencesFiliale'));
  1640.         /*if($request->get('niveauFiliale')){
  1641.             $niveau = $NiveauRepository->find($request->get('niveauFiliale'));
  1642.             $filiale->setNiveau($niveau);
  1643.         }*/
  1644.         
  1645.        $imgFiliale=$request->files->get('imageFiliale');
  1646.        //dd($imgFiliale); à ajouter dans entreprise controller
  1647.       
  1648.        
  1649.         $filiale->setDescription($request->get('descriptionFiliale'));
  1650.         $filiale->setEntreprise($entreprise);
  1651.         $filiale->setVille($request->get('villeFiliale'));
  1652.         $filiale->setAdresse($request->get('adressFiliale'));
  1653.         $filiale->setCodePostal($request->get('cpFiliale'));
  1654.         $filiale->setNumVoie($request->get('numVoieFiliale'));
  1655.         $filiale->setTypeVoie($request->get('typeVoieFiliale'));
  1656.         $filiale->setNomVoie($request->get('nomVoieFiliale'));
  1657.         $departement $this->em->getRepository(Departement::class)->find($request->get('DepartementFiliale'));
  1658.         $filiale->setDepartement($departement);
  1659.         $filiale->setPays($paysF);
  1660.         $code_pays_depF=$paysF->getAlpha2().$departement->getNumero();
  1661.          
  1662.         $filiale->setCodePaysDep($code_pays_depF);
  1663.         $this->em->persist($filiale);
  1664.         $this->em->flush();
  1665.         //dd($filiale->getId() );
  1666.         
  1667.         if( $imgFiliale!=null){
  1668.             $uploadDirRoot $this->getParameter('uploads_directory') ;
  1669.             $filesystem = new Filesystem();
  1670.             $imgName $imgFiliale->getClientOriginalName();          
  1671.             $imgDir $uploadDirRoot.'/entreprises/'.$request->get('entrepriseMere').'/Filiales/'.$filiale->getId()  ;   
  1672.                 if( $filesystem->exists($imgDir ) == false ){
  1673.                     $filesystem->mkdir($imgDir 0777true);
  1674.                 }      
  1675.             
  1676.                 $imgFiliale->move($imgDir$imgName);
  1677.                 $filiale->setImage($imgName);
  1678.                 $filiale->setDir('/uploads/entreprises/'.$request->get('entrepriseMere').'/Filiales/'.$filiale->getId());
  1679.         }
  1680.         $this->em->persist($filiale);
  1681.         
  1682.         $this->em->flush();
  1683.         $msg = ['msg'=>'OK','id'=>$filiale->getId()]  ;
  1684.         
  1685.         $JSON json_encode($msg);
  1686.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1687.         
  1688.         
  1689.         return $response ;
  1690.         
  1691.         
  1692.     } 
  1693.         /**
  1694.      * @Route("/delete_agent/{id}", name="delete_agent",methods={"DELETE"}, options = {"expose"=true})
  1695.      */
  1696.     public function delete_agent(Request $request,$id,AgentRepository $AgentRepository): Response
  1697.     {
  1698.         $agent $AgentRepository->findOneBy(['id'=>$id]);
  1699.         
  1700.         if (!$agent) {
  1701.             $msg = ['msg'=>'KOO']  ;
  1702.         
  1703.             $JSON json_encode($msg);
  1704.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1705.             return $response;
  1706.         }
  1707.         $this->em->remove($agent);
  1708.         $this->em->flush();
  1709.         $msg = ['msg'=>'OK']  ;
  1710.         
  1711.         $JSON json_encode($msg);
  1712.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1713.        
  1714.         return $response;
  1715.     }
  1716.     // Nouveau code 
  1717.     /**
  1718.      * @Route("/get_filiale/{id}", name="get_filiale",methods={"GET"}, options = {"expose"=true})
  1719.      */
  1720.     public function get_filiale(Request $request ,$idDepartementRepository $DepartementRepositoryFilialeRepository $FilialeRepository ,CompetencesRepository $CompetencesRepositoryGestionnaireFilialeRepository $GestionnaireFilialeRepository){
  1721.         $output=[];
  1722.         $arr_competence = [];       
  1723.         $arr_c_filiale = [];
  1724.         $filiale $FilialeRepository->find($id);
  1725.         $gestionnaire =($filiale->getGestionnaire())? $GestionnaireFilialeRepository->find($filiale->getGestionnaire()):null;
  1726.         $arr_competence_filiale $filiale->getCompetences();
  1727.         foreach($arr_competence_filiale as $cf){
  1728.             $arr_c_filiale []= (int)$cf;
  1729.         }
  1730.         $competences $CompetencesRepository->findBy(['etat'=>1]);
  1731.         foreach($competences as $competence){
  1732.             $arr_competence []= $competence->getId();
  1733.         }
  1734.         $departementsFiliale $DepartementRepository->findBy(['pays' => $filiale->getPays()->getId()]);
  1735.         $departementsGestionnaire =$gestionnaire$DepartementRepository->findBy(['pays' => $filiale->getGestionnaire()->getPays()->getId()]):[];
  1736.         
  1737.         $competences $CompetencesRepository->findBy(['etat'=>1]);
  1738.         $arr_departementGestionnaire=[];
  1739.         $arr_departementsFiliale=[];
  1740.         foreach ($departementsFiliale as $departementFiliale) {
  1741.             $arr_departementsFiliale[] = [
  1742.                 'id' => $departementFiliale->getId(),
  1743.                 'nom' => $departementFiliale->getNom()
  1744.             ];
  1745.         }
  1746.         foreach ($departementsGestionnaire as $departementGestionnaire) {
  1747.             $arr_departementGestionnaire[] = [
  1748.                 'id' => $departementGestionnaire->getId(),
  1749.                 'nom' => $departementGestionnaire->getNom()
  1750.             ];
  1751.         }
  1752.         $depF $DepartementRepository->findOneBy(['id' => $filiale->getDepartement()!=null?$filiale->getDepartement()->getId():null]);
  1753.         $depG $gestionnaire?$DepartementRepository->findOneBy(['id' => $gestionnaire->getDepartement()!=null?$gestionnaire->getDepartement()->getId():null]):null;
  1754.          
  1755.         $maxlengthG $depG?$depG->getCp():'';
  1756.         $prefixG $depG?$depG->getNumero():'';
  1757.         $maxlengthF $depF->getCp();
  1758.         $prefixF $depF->getNumero();
  1759.         $emailMasque="";
  1760.         if($gestionnaire && $gestionnaire->getEmail())
  1761.         {
  1762.             $atPos strpos($gestionnaire->getEmail(), '@');
  1763.             if ($atPos !== false && $atPos 3) {
  1764.                 $emailName substr($gestionnaire->getEmail(), 0$atPos);
  1765.                 $maskedName substr($emailName03) . str_repeat('*'strlen($emailName) - 3);
  1766.                 
  1767.                 $emailDomain substr($gestionnaire->getEmail(), $atPos 1);
  1768.                 
  1769.                 $dotPos strpos($emailDomain'.');
  1770.                 if ($dotPos !== false && $dotPos 3) {
  1771.                     $maskedDomain =  str_repeat('*'$dotPos) . substr($emailDomain$dotPos);
  1772.                     
  1773.                     $emailMasque $maskedName '*' $maskedDomain;
  1774.                 } else {
  1775.                     $emailMasque $maskedName '*' $emailDomain;
  1776.                 }
  1777.             }
  1778.         }
  1779.         $filialeFormule=[];
  1780.         if($filiale->getFormule()!=null)
  1781.         {$filialeF=$filiale->getFormule();
  1782.             $filialeFormule=[
  1783.             'nom'=>$filialeF->getNomFormule(),
  1784.             'dure'=>$filialeF->getDure()?$filialeF->getDure():null,
  1785.             'prix'=>$filialeF->getType()=='gratuite'?'Gratuite':$filialeF->getPrix() . $filialeF->getUnite().' / '.$filialeF->getPeriodicite(),
  1786.             'description'=>$filialeF->getDescription(),
  1787.             'bonnusGeo'=>$filialeF->getBonnusGeo()?'Disponible sur :'.$filialeF->getBonnusGeo():null,
  1788.             'bonnusEvent'=>$filialeF->getBonnusEvent()? $filialeF->getBonnusEvent().' événements / '$filialeF->getDureeBonnusEvent(). ' jours':null,
  1789.             'bonnusPub'=>$filialeF->getBonnusPub()? $filialeF->getBonnusPub().' publicités / '$filialeF->getDureeBonnusPub(). ' jours':null,
  1790.             
  1791.         ];
  1792.         }
  1793.         
  1794.         $filialePubArr = [];
  1795.         $filialeEventsArr = [];
  1796.         if($gestionnaire!=null)
  1797.         {
  1798.             $filialeEvents =  $this->em->getRepository(Evenement::class)->findBy(['proprietaire' => $gestionnaire->getUser()]);
  1799.         
  1800.                     
  1801.             foreach ($filialeEvents as $event) {
  1802.                 $piecesJointes =  $this->em->getRepository(PiecesEvenement::class)->findBy(['evenement' => $event->getId()]);
  1803.                 $description_html $event->getContenu();
  1804.                             $description_propre strip_tags($description_html);
  1805.                             $description_pub_courte substr($description_propre0140);
  1806.                 $eventdata = [
  1807.                     'id' => $event->getId(),
  1808.                     'titre' => $event->getTitre(),
  1809.                     'contenu' => $event->getMetaDescription()!=null?$event->getMetaDescription():$description_pub_courte,
  1810.                     'etat' => [
  1811.                         'id' => $event->getEtat()->getId(),
  1812.                         'etat' => $event->getEtat()->getEtat(),
  1813.                     ],
  1814.                     'departement'=>$event->getDepartement()->getNom(),
  1815.                     'duree'=>$event->getDuree(),
  1816.                     'dateEvenement'=>$event->getDateEvenement(),
  1817.                     'dateDebutDiffusion'=>$event->getDateDebutDiffusion(),
  1818.                     'dateFinDiffusion'=>$event->getDateFinDiffusion(),
  1819.                     
  1820.                     'piecesJointes' => [],
  1821.                 ];
  1822.                 foreach ($piecesJointes as $piece) {
  1823.                     $eventdata['piecesJointes'][] = [
  1824.                         'principale' => $piece->getPrincipale(),
  1825.                         'dir' => '/uploadsFront/'.$gestionnaire->getUser()->getId().'/events/'.$event->getId(),
  1826.                         'nom' => $piece->getNom(),
  1827.                     ];
  1828.                 }
  1829.                 $filialeEventsArr[] = $eventdata;
  1830.             }
  1831.         }
  1832.         $filialePub $this->em->getRepository(Publicite::class)->findBy(['filiale' => $filiale->getId()]);
  1833.         foreach ($filialePub as $pub) {
  1834.                 $piecesJointes $this->em->getRepository(PiecesPublicite::class)->findBy(['publicite' => $pub->getId()]);
  1835.                 $description_html $pub->getContenu();
  1836.                             $description_propre strip_tags($description_html);
  1837.                             $description_pub_courte substr($description_propre0140);
  1838.                 $pubData = [
  1839.                     'id' => $pub->getId(),
  1840.                     'titre' => $pub->getTitre(),
  1841.                     'contenu' => $pub->getMetaDescription()!=null?$pub->getMetaDescription():$description_pub_courte,
  1842.                     'dateDebut'=>$pub->getDateDebut(),
  1843.                     'dateFin'=>$pub->getDateFin(),
  1844.                     'departement'=>$pub->getDepartement()->getNom(),
  1845.                     'etat' => [
  1846.                         'id' => $pub->getEtat()->getId(),
  1847.                         'etat' => $pub->getEtat()->getEtat(),
  1848.                     ],
  1849.                     'piecesJointes' => [],
  1850.                 ];
  1851.                 foreach ($piecesJointes as $piece) {
  1852.                     $pubData['piecesJointes'][] = [
  1853.                         'principale' => $piece->isPrincipale(),
  1854.                         'dir' => '/uploadsFront/'.$gestionnaire->getUser()->getId().'/publicites/'.$pub->getId(),
  1855.                         
  1856.                         'nom' => $piece->getNom(),
  1857.                     ];
  1858.                 }
  1859.                 $filialePubArr[] = $pubData;
  1860.         }
  1861.         $output = [
  1862.             'filialeEventsArr'=>$filialeEventsArr,
  1863.             'filialePubArr'=>$filialePubArr,
  1864.             'id'=> $filiale->getId(),
  1865.             'nom'=>$filiale->getNom(),
  1866.             'type'=>$filiale->getType(),
  1867.             'niveau'=>$filiale->getNiveau()!=null?$filiale->getNiveau()->getId():null,
  1868.             'description'=>$filiale->getDescription(),
  1869.             'numVoieFiliale'=>$filiale->getNumVoie(),
  1870.             'typeVoieFiliale'=>$filiale->gettypeVoie(),
  1871.             'siteFiliale'=>$filiale->getSite(),
  1872.             'telephoneFiliale'=>$filiale->getTelephone(),
  1873.             'portableFiliale'=>$filiale->getPortable(),
  1874.             'dateCreationFiliale'=>$filiale->getDateCreationFiliale()?$filiale->getDateCreationFiliale()->format('d/m/Y'):null,
  1875.             'nomVoieFiliale'=>$filiale->getNomVoie(),
  1876.             'villeFiliale'=>$filiale->getVille(),
  1877.             'pays'=>$filiale->getPays()->getId(),
  1878.             'departementFiliale'=>$filiale->getDepartement()!=null?$filiale->getDepartement()->getId():null,
  1879.             'adressFiliale'=>$filiale->getAdresse(),
  1880.             'cpFiliale'=>$filiale->getCodePostal(),
  1881.             'imgFiliale' => $filiale->getImage() ?  '/uploadsFront/entreprises/'.$filiale->getEntreprise()->getId().'/Filiales/'.$filiale->getId().'/' $filiale->getImage() : null,
  1882.             'parentFiliale'=>$filiale->getFilialeParent()!=null?$filiale->getFilialeParent()->getId():null,
  1883.             'parentFilialeNom'=>$filiale->getFilialeParent()!=null?$filiale->getFilialeParent()->getNom():null,
  1884.             'arr_c_filiale'=>$arr_c_filiale,  
  1885.             'arr_competence_filiale'=>$arr_c_filiale,
  1886.             'competences'=>$arr_competence,
  1887.             'id_entreprise'=>$filiale->getEntreprise()->getId(), 
  1888.             'nomGestionnaire'=>$gestionnaire?($gestionnaire->getNom()?substr($gestionnaire->getNom() , 03) . str_repeat('*'strlen($gestionnaire->getNom() ) - 3):''):'',
  1889.             'pseudoGestionnaire'=>$gestionnaire?$gestionnaire->getPseudo():'',
  1890.             'prenomGestionnaire'=>$gestionnaire?($gestionnaire->getNom()?substr($gestionnaire->getPrenom() , 03) . str_repeat('*'strlen($gestionnaire->getPrenom() ) - 3):''):'',
  1891.             'emailGestionnaire'=>$gestionnaire?$emailMasque:'',
  1892.             'telephoneGestionnaire'=>$gestionnaire?($gestionnaire->getTelephone()?substr($gestionnaire->getTelephone() , 03) . str_repeat('*'strlen($gestionnaire->getTelephone() ) - 3):''):'',
  1893.             'portableGestionnaire'=>$gestionnaire?($gestionnaire->getPortable()?substr($gestionnaire->getPortable() , 03) . str_repeat('*'strlen($gestionnaire->getPortable() ) - 3):''):'',
  1894.             'villeGestionnaire'=>$gestionnaire?($gestionnaire->getVille()?substr($gestionnaire->getVille() , 03) . str_repeat('*'strlen($gestionnaire->getVille() ) - 3):''):'',
  1895.             'paysGestionnaire'=>$gestionnaire?$gestionnaire->getPays()->getId():'',
  1896.             'numVoieGestionnaire'=>$gestionnaire?($gestionnaire->getNumVoie()?substr($gestionnaire->getNumVoie() , 03) . str_repeat('*'strlen($gestionnaire->getNumVoie() ) - 3):''):'',
  1897.             'typeVoieGestionnaire'=>$gestionnaire?$gestionnaire->getTypeVoie():'',
  1898.             'nomVoieGestionnaire'=>$gestionnaire?($gestionnaire->getNomVoie()?substr($gestionnaire->getNomVoie() , 03) . str_repeat('*'strlen($gestionnaire->getNomVoie() ) - 3):''):'',
  1899.             'departementGestionnaire'=>$gestionnaire && $gestionnaire->getDepartement()!=null?$gestionnaire->getDepartement()->getId():null,
  1900.             'adressGestionnaire'=>$gestionnaire?($gestionnaire->getAdresse()?substr($gestionnaire->getAdresse() , 03) . str_repeat('*'strlen($gestionnaire->getAdresse() ) - 3):''):'',
  1901.             'cpGestionnaire'=>$gestionnaire?($gestionnaire->getCp()?substr($gestionnaire->getCp() , 02) . str_repeat('*'strlen($gestionnaire->getCp() ) - 3):''):'',
  1902.             'langue'=>$gestionnaire?$gestionnaire->getLangue()->getId():'',
  1903.             'idGestionnaire'=>$gestionnaire?$gestionnaire->getId():'',
  1904.             'civilite'=>$gestionnaire?$gestionnaire->getCivilite():'',
  1905.             'arr_departementsFiliale'=>$arr_departementsFiliale,
  1906.             'arr_departementGestionnaire'=>$arr_departementGestionnaire,
  1907.             'maxlengthG'=>$maxlengthG ,
  1908.             'prefixG'=>$prefixG,
  1909.             'maxlengthF'=>$maxlengthF,
  1910.             'prefixF'=>$prefixF
  1911.             'dateNaissance'=>$gestionnaire?($gestionnaire->getDateNaissance()?substr($gestionnaire->getDateNaissance()->format('d/m/Y') , 03) . str_repeat('*'strlen($gestionnaire->getDateNaissance()->format('d/m/Y') ) - 3):''):'',
  1912.            
  1913.             'competencesEntreprise'=>$filiale->getEntreprise()->getServices(),
  1914.             'servicesFiliale'=>$filiale->getServices(),
  1915.             'moyensCommFiliale'=>$filiale->getMoyensCommunication(),
  1916.             'sameParentManager'=>$filiale->isUseParentManager(),
  1917.             'hasManager'=>$gestionnaire?true:false,
  1918.             'filialeFormule'=>$filialeFormule,
  1919.             'filialeEventsArr'=>$filialeEventsArr,
  1920.             'filialePubArr'=>$filialePubArr,
  1921.             'emailFiliale'=>$filiale->getEmail(),
  1922.             'socialsFiliale'=>$filiale->getSocialLinks()??[],
  1923.                 
  1924.               
  1925.           ];
  1926.         $JSON json_encode($output);
  1927.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1928.         return $response;
  1929.     
  1930.     }
  1931.     public function get_competence_filiale(Request $request FilialeRepository $FilialeRepository ,CompetencesRepository $CompetencesRepositoryGestionnaireFilialeRepository $GestionnaireFilialeRepository){
  1932.         $output=[];
  1933.         $arr_competence = [];       
  1934.         $arr_c_filiale = [];
  1935.         $filiale $FilialeRepository->find($request->get('id_filiale'));
  1936.         $gestionnaire $GestionnaireFilialeRepository->find($filiale->getGestionnaire());
  1937.         $arr_competence_filiale $filiale->getCompetences();
  1938.         foreach($arr_competence_filiale as $cf){
  1939.             $arr_c_filiale []= (int)$cf;
  1940.         }
  1941.         $competences $CompetencesRepository->findBy(['etat'=>1]);
  1942.         foreach($competences as $competence){
  1943.             $arr_competence []= $competence->getId();
  1944.         }
  1945.         $output = [
  1946.             
  1947.             'arr_cf'=>$arr_c_filiale,
  1948.             'competences'=>$arr_competence,
  1949.             
  1950.               
  1951.           ];
  1952.         $JSON json_encode($output);
  1953.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1954.         return $response;
  1955.     
  1956.     }
  1957.     /**
  1958.      * @Route("/edit_entreprise_documents", name="edit_entreprise_documents",methods={"POST"}, options = {"expose"=true})
  1959.      */
  1960.     public function edit_entreprise_documents(Request $request,AgentRepository $AgentRepository,CompetencesRepository $CompetencesRepository,FilialeRepository $FilialeRepository,FormulesRepository $FormulesRepository,ProfessionnelRepository $ProfessionnelRepositoryPaysRepository $PaysRepository,GestionnaireEntrepriseRepository $GestionnaireEntrepriseRepositoryAdministrateursRepository $AdministrateursRepository  EtatRepository $EtatRepository EntrepriseRepository $EntrepriseRepository,GroupeRestrictionRepository $groupe_restrictionRepository,
  1961.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response{
  1962.        
  1963.         $entreprise $EntrepriseRepository->find($request->get('idEntreprise'));
  1964.         if (!$entreprise) {
  1965.             $msg = ['msg'=>'KOO']  ;
  1966.             $JSON json_encode($msg);
  1967.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1968.             return $response ;
  1969.         }
  1970.         //dd($kbis ,$pdf_entreprise2_files,$pdf_entreprise3_files);
  1971.         $kbisFiles $request->files->get('pdf_entreprise1');
  1972.         $pdf_entreprise2_files $request->files->get('pdf_entreprise2');
  1973.         $pdf_entreprise3_files $request->files->get('pdf_entreprise3');
  1974.         $uploadDirRoot $this->getParameter('uploads_directory') ;
  1975.         
  1976.             if (!empty($kbisFiles)){
  1977.                 foreach($kbisFiles as $f)
  1978.                 
  1979.                  {
  1980.                 $filesystem = new Filesystem();
  1981.                 $piece=new PieceJointeProfessionnel();
  1982.                 $fileName $f->getClientOriginalName();          
  1983.                  $fileDir $uploadDirRoot.'/entreprises/'.$entreprise->getId().'/siege'  ;     
  1984.                      if( $filesystem->exists($fileDir ) == false ){
  1985.                          $filesystem->mkdir($fileDir 0777true);
  1986.                      }      
  1987.                     
  1988.                      $f->move($fileDir$fileName);
  1989.                      $piece->setNomDocument($fileName);
  1990.                      $piece->setDirectory('/uploads/entreprises/'.$entreprise->getId().'/siege');
  1991.                      $piece->setTitre('Kbis');
  1992.                      $piece->setDateCreation(new \DateTime());
  1993.                     // $piece->setDateUpdate(new \DateTime());
  1994.          
  1995.                      $piece->setEntreprise($entreprise);
  1996.                      $this->em->persist($piece);
  1997.                  }
  1998.          
  1999.          
  2000.                  }
  2001.             if (!empty($pdf_entreprise2_files)){
  2002.                     foreach($pdf_entreprise2_files as $f)
  2003.                     
  2004.                      {
  2005.                     $filesystem = new Filesystem();
  2006.                     $piece=new PieceJointeProfessionnel();
  2007.                     $fileName $f->getClientOriginalName();          
  2008.                     $fileDir $uploadDirRoot.'/entreprises/'.$entreprise->getId().'/siege'  ;     
  2009.                          if( $filesystem->exists($fileDir ) == false ){
  2010.                              $filesystem->mkdir($fileDir 0777true);
  2011.                          }      
  2012.                         
  2013.                          $f->move($fileDir$fileName);
  2014.                          $piece->setNomDocument($fileName);
  2015.                          $piece->setDirectory('/uploads/entreprises/'.$entreprise->getId().'/siege');
  2016.                          $piece->setTitre('identite responsable 1');
  2017.                          $piece->setDateCreation(new \DateTime());
  2018.                         // $piece->setDateUpdate(new \DateTime());
  2019.              
  2020.                          $piece->setEntreprise($entreprise);
  2021.                          $this->em->persist($piece);
  2022.                      }
  2023.              
  2024.              
  2025.             }
  2026.             if (!empty($pdf_entreprise3_files)){
  2027.                 foreach($pdf_entreprise3_files as $f)
  2028.                 
  2029.                  {
  2030.                 $filesystem = new Filesystem();
  2031.                 $piece=new PieceJointeProfessionnel();
  2032.                 $fileName $f->getClientOriginalName();          
  2033.                 $fileDir $uploadDirRoot.'/entreprises/'.$entreprise->getId().'/siege'  ;     
  2034.                      if( $filesystem->exists($fileDir ) == false ){
  2035.                          $filesystem->mkdir($fileDir 0777true);
  2036.                      }      
  2037.                     
  2038.                      $f->move($fileDir$fileName);
  2039.                      $piece->setNomDocument($fileName);
  2040.                      $piece->setDirectory('/uploads/entreprises/'.$entreprise->getId().'/siege');
  2041.                      $piece->setTitre('identite responsable 2');
  2042.                      $piece->setDateCreation(new \DateTime());
  2043.                     // $piece->setDateUpdate(new \DateTime());
  2044.          
  2045.                      $piece->setEntreprise($entreprise);
  2046.                      $this->em->persist($piece);
  2047.                  }
  2048.          
  2049.          
  2050.         }
  2051.        
  2052.        
  2053.         $this->em->flush();
  2054.         $msg = ['msg'=>'OK']  ;
  2055.         
  2056.         $JSON json_encode($msg);
  2057.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2058.         
  2059.         
  2060.         return $response ;
  2061.         
  2062.         
  2063.     }
  2064.     /**
  2065.      * @Route("/delete_entreprise_document/{id}", name="delete_entreprise_document",methods={"DELETE"}, options = {"expose"=true})
  2066.      */
  2067.     public function delete_entreprise_document(Request $request,$id,PieceJointeProfessionnelRepository $PieceJointeProfessionnelRepository): Response
  2068.     {
  2069.         $document $PieceJointeProfessionnelRepository->findOneBy(['id'=>$id]);
  2070.         
  2071.         if (!$document) {
  2072.             $msg = ['msg'=>'KOO']  ;
  2073.         
  2074.             $JSON json_encode($msg);
  2075.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2076.             return $response;
  2077.         }
  2078.         $filesystem = new Filesystem();
  2079.         $uploadDirRoot $this->getParameter('uploads_directory') ;
  2080.        
  2081.         $filePath $uploadDirRoot $document->getDirectory() . '/' $document->getNomDocument();
  2082.         
  2083.         try {
  2084.             $filesystem->remove($filePath);
  2085.         } catch (\Exception $e) {
  2086.             $msg = ['msg' => 'Erreur lors de la suppression du fichier'];
  2087.             return new JsonResponse($msg500);
  2088.         }
  2089.         $this->em->remove($document);
  2090.         $this->em->flush();
  2091.         $msg = ['msg'=>'OK']  ;
  2092.         
  2093.         $JSON json_encode($msg);
  2094.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2095.        
  2096.         return $response;
  2097.     }
  2098.     
  2099.     
  2100.     /**
  2101.      * @Route("/edit_gestionnaire_formule", name="edit_gestionnaire_formule",methods={"GET","POST"}, options = {"expose"=true})
  2102.      */
  2103.     public function edit_gestionnaire_formule(Request $request,FormulesRepository $FormulesRepository,GestionnaireEntrepriseRepository $GestionnaireEntrepriseRepository): Response{
  2104.          $gestionnaire $GestionnaireEntrepriseRepository->find($request->get('GestionnaireId'));
  2105.          if (!$gestionnaire) {
  2106.              $msg = ['msg'=>'KOO']  ;
  2107.              $JSON json_encode($msg);
  2108.              $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2109.              return $response ;
  2110.          }
  2111.         
  2112.         $formule $FormulesRepository->find($request->get('NewFormuleId'));
  2113.  
  2114.              
  2115.         $gestionnaire->setFormule($formule); 
  2116.          $gestionnaire->setDateUpdate(DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ));
  2117.     
  2118.          $this->em->persist($gestionnaire);
  2119.          $this->em->flush();
  2120.          $msg = ['msg'=>'OK']  ;
  2121.          
  2122.          $JSON json_encode($msg);
  2123.          $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2124.          
  2125.          
  2126.          return $response ;
  2127.          
  2128.          
  2129.      } 
  2130.     /**
  2131.      * @Route("/delete_entreprise/{id}", name="delete_entreprise", methods={"DELETE"} , options={"expose"=true})
  2132.      */
  2133.     public function delete_entreprise($id,userRepository $userRepository,EntrepriseRepository $EntrepriseRepository,ConnexionGestionnaireEntrepriseRepository $ConnexionGestionnaireEntrepriseRepository): JsonResponse{
  2134.         $entreprise $EntrepriseRepository->find($id);
  2135.         if (!$entreprise) {
  2136.             return new JsonResponse(['status' => 'KOO''message' => 'entreprise non trouvée !']);
  2137.         }
  2138.         
  2139.         
  2140.         try {
  2141.             $gestionnaire=$entreprise->getGestionnaireEntreprise();
  2142.             $connexions $ConnexionGestionnaireEntrepriseRepository->findBy(['gestionnaire_entreprise' => $gestionnaire->getId()]);
  2143.             foreach ($connexions as $connexion) {
  2144.                 $this->em->remove($connexion);
  2145.             }
  2146.     
  2147.             // 2. Supprimer le particulier
  2148.             $this->em->remove($gestionnaire);
  2149.     
  2150.             // 3. Supprimer l'utilisateur associé au particulier
  2151.             $user $userRepository->find($gestionnaire->getUser()->getId());
  2152.             if ($user) {
  2153.                 $this->em->remove($user);
  2154.             }
  2155.             $this->em->remove($entreprise);
  2156.     
  2157.             $this->em->flush();
  2158.     
  2159.             return new JsonResponse(['status' => 'OK''message' => 'Entreprise supprimée avec succès !']);
  2160.         } catch (\Exception $e) {
  2161.             return new JsonResponse(['status' => 'error''message' => 'Erreur lors de la suppression de l\'entreprise : ' $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
  2162.         }
  2163.      
  2164.     }
  2165. }