- <?php
- 
- namespace App\Controller\Utilisateurs;
- 
- use App\Entity\Bureau;
- use App\Entity\Facture;
- use App\Entity\FactureFournisseur;
- use App\Entity\Notifications;
- use App\Entity\PointageUser;
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\Routing\Annotation\Route;
- use Symfony\Component\HttpFoundation\Request;
- use Doctrine\ORM\EntityManagerInterface;
- use App\Entity\Utilisateur; 
- use App\Entity\Profil; 
- use App\Entity\Role; 
- use App\Entity\ProfilRole; 
- use App\Entity\UtilisateurProfil; 
- use App\Entity\TimeWork; 
- use App\Service\ValidateService;
- use App\Service\BaseService;
- use Symfony\Component\HttpFoundation\File\UploadedFile;
- use Symfony\Component\HttpFoundation\Session\Session;
- use App\Repository\UtilisateurRepository;
- use App\Entity\BureauUtilisateur; 
- use App\Entity\LogUser; 
- use App\Entity\Marche; 
- use App\Repository\MarcheRepository;
- use App\Repository\PointageUserRepository;
- use Symfony\Component\HttpFoundation\JsonResponse;
- 
- class UtilisateurController extends AbstractController
- {
-     public $baseService;
- 
-     public function __construct(BaseService $baseService
-         )
-     {
-         $this->baseService = $baseService;
-     }
-     #[Route('/addUtilisateur', name: 'addUtilisateur')]
-     public function addUtilisateur(Request $request, EntityManagerInterface $entityManager,ValidateService $validateService,BaseService $baseService): Response
-     {
-         $chckAccess = $this->baseService->Role(9);
-         if($chckAccess == 0){
-             return $this->redirectToRoute('login');
-         }else if ($chckAccess == 2){
-             return $this->redirectToRoute('infoUtilisateur');
-         }
-         $session = new Session;
-         $user = $session->get('user');
-         // $check =  $baseService->checkAcces('AJOUUTIL');
-         // if($check == 1)
-         // {
-         //     $session->remove('user');
-         //     $session->set('isConnected',false);
-     
-         //     return $this->redirectToRoute('login'); // Redirect to 'listBureaux' route
-         // }
-         // else if ( $check == 2 )
-         // {
-         //     return $this->redirectToRoute('listBureaux'); // Redirect to 'listBureaux' route
-         // }
-         
-         $bureauSelected = $session->get('bureauSelected');
- 
-         $response = ""; 
-         $nom = "";
-         $prenom = "";
-         $tele = "";
-         $email = "";
-         $dateCrea = new \DateTime();
-         $profils = $entityManager->getRepository(Profil::class)->findAll();
-         $roles = $entityManager->getRepository(Role::class)->findAll();
-         $groupedRoles = [];
-         foreach ($roles as $role) {
-             $category = $role->getCategorieRole();
-             if (!isset($groupedRoles[$category])) {
-                 $groupedRoles[$category] = [];
-             }
-             $groupedRoles[$category][] = $role;
-         }
-         if($request->getMethod()=='POST')
-         {
- 
-             $nom=$request->get('nom');
-             $prenom=$request->get('prenom');
-             $tele=$request->get('tele');
-             $email=$request->get('email');
-             $type=$request->get('agent');
-             $active=$request->get('active');
-             $password=$request->get('password');
-             $pass2=$request->get('Confpass');
-             $file = $request->files->get('picture');
-             $profil=$request->get('profil');
-             $rolesChecked=$request->get('roles');
-             $ifPerso=$request->get('ifPerso');
-             $libelle=$request->get('libelle');
- 
-             $utilisateur = $entityManager->getRepository(Utilisateur::class)->findByEmaiUtil($email);
- 
-             
-                 if($utilisateur)
-                 {
-                     $response = 'L\'email existe déjà, veuillez essayer avec un autre email !';
- 
-                 }
-                 else
-                 {
- 
-                     $contraintes = array(
-                         "nom" => array("val" => $nom, "length" => 255, "type" => "string", "isBlank" => true),
-                         "prenom" => array("val" => $prenom, "length" => 1000, "type" => "string" , "isBlank" => true),
-                         "tele" => array("val" => $tele, "length" => 255, "type" => "string" , "isBlank" => true),
-                         "email" => array("val" => $email, "length" => 255, "type" => "string" , "isBlank" => true),
-                         "password" => array("val" => $password, "length" => 255, "type" => "string" , "isBlank" => true),
-                         "file" => array("val" => $file, "type" => "file" , "isBlank" => false),
-                     );
- 
-                     $valideBureau = $validateService->validateur($contraintes);
- 
-                     if($valideBureau === true)
-                     {
-                         if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
-                             $response = 'Email incorrect';
-                         } elseif (!preg_match('#^0[0-9]([ .-]?[0-9]{2}){4}$#', $tele)) {
-                             $response = 'Numero de téléphone incorrect';
-                         } elseif (strlen($password) < 8 || strlen($password) > 16) {
-                             $response = 'Le mot de passe doit comprendre entre 8 et 16 caractéres';
-                         } elseif ($password !== $pass2) {
-                             $response = 'Les deux mots de passe ne sont pas identiques';
-                         }
-                         else{
-                             if($ifPerso != 1 && !$profil)
-                             {
-                                 $response = 'Veuillez selectionner au moins un profil !';
-                             }
-                             else
-                             {
-                                 $utilisateur = new utilisateur();
-                                 $utilisateur->setNomUtil($nom);
-                                 $utilisateur->setPrenUtil($prenom);
-                                 $utilisateur->setEmaiUtil($email);
-                                 $utilisateur->setTeleUtil($tele);
-                                 $utilisateur->setPassUtil(sha1($password));
-                                 if($type === 'on')
-                                 {
-                                     $utilisateur->setTypeUtil(2);
-                                 }
-                                 else
-                                 {
-                                     $utilisateur->setTypeUtil(1);
-                                 }
-                                 if($active === 'on'){
-                                     $utilisateur->setActive(1);
-                                 }else{
-                                     $utilisateur->setActive(0);
-                                 }
- 
-                                 if ($file instanceof UploadedFile) {
-                                 
-                                     $fileName = $baseService->generateUniqueFileName() . '.' . $file->guessExtension();
-                                     
-                                     // Move the file to the desired directory
-                                     $file->move(
-                                         $this->getParameter('imagesUserUploadPath'),
-                                         $fileName
-                                     );
-                     
-                                     $utilisateur->setLogoUtil($fileName); // Set the file name in the entity
-                                 }
-                                 else
-                                 {
-                                     $utilisateur->setLogoUtil('user.png');
-                                 }
-                     
-                                 // Persist the Bureau entity and flush it to the database
-                                 $entityManager->persist($utilisateur);
-                                 $entityManager->flush();
- 
-                                 if($ifPerso == 1)
-                                 {
-                                     $profil = new Profil();
-                                     $profil->setLibeProf($libelle);
-                                     $profil->setDescProf('Profil personalisé');
-                                     $profil->setDateCrea($dateCrea);
-                                     if($type === 'on')
-                                     {
-                                         $profil->setTypeProf(2);
-                                     }
-                                     else
-                                     {
-                                         $profil->setTypeProf(1);
-                                     }
-                                     // Persist the Bureau entity and flush it to the database
-                                     $entityManager->persist($profil);
-                                     $entityManager->flush();
- 
-                                     if($profil)
-                                     {
- 
-                                         foreach ($roles as $role)
-                                         {
-                                             $profilRole = new ProfilRole();
-                                             $profilRole->setLibeProf($libelle);
-                                             $profilRole->setidProf($profil->getId());
-                                             $profilRole->setidRole($role->getId());
-                                             // if (is_array($rolesChecked) && in_array($role->getId(), $rolesChecked))
-                                             if(isset($_POST['roles'][$role->getCodeRole()]))
-                                             {
-                                                 $profilRole->setRoleProf(true);
-                                             }
-                                             else
-                                             {
-                                                 $profilRole->setRoleProf(false);
-                                             }
-                         
-                                             $entityManager->persist($profilRole);
-                         
-                                         }
- 
-                                         $utilisateurRole = new UtilisateurProfil();
-                                         $utilisateurRole->setidUtil($utilisateur->getId());
-                                         $utilisateurRole->setidProf($profil->getId());
-                     
-                                         $entityManager->persist($utilisateurRole);
-                                         $entityManager->flush();
-                                     
-                                     }
-                     
-                                 }
-                                 else
-                                 {
-                                     foreach ($profil as $p)
-                                     {
-                     
-                                         $utilisateurRole = new UtilisateurProfil();
-                                         $utilisateurRole->setidUtil($utilisateur->getId());
-                                         $utilisateurRole->setidProf($p);
-                     
-                                         $entityManager->persist($utilisateurRole);
-                                         $entityManager->flush();
- 
-                                     }
-                                 }
- 
-                                 if($bureauSelected != 0)
-                                 {
-                                     $bureauUtilisateur = new BureauUtilisateur();
-                                     $bureauUtilisateur->setidUtil($utilisateur->getId());
-                                     $bureauUtilisateur->setidBure($bureauSelected);
-                 
-                                     $entityManager->persist($bureauUtilisateur);
-                                     $entityManager->flush();
-                 
-                                 }
-                                 $baseService->addLogAction($user->getId(),'Ajouter un utilisateur',$bureauSelected);
- 
-                                 $response = 'ok';
- 
-                             }
-                         }
-                     }
-                     else
-                     {
- 
-                         $response = 'Veuillez vérifier vos informations, un des champs est vide ou incorrect !';
-                         
-                     }
-                 }
-             }
- 
-         if($response == 'ok')
-         {
-             return $this->redirectToRoute('listUtilisateurs'); // Redirect to 'listBureaux' route
- 
-         }
-         
- 
-         return $this->render('utilisateur/addUtilisateur.html.twig', [
-             'controller_name' => 'UtilisateurController',
-             'response' => $response,
-             'nom' => $nom,
-             'prenom' => $prenom,
-             'email' => $email,
-             'tele' => $tele,
-             'profils' => $profils,
-             'roles' => $roles,
-             'groupedRoles'=>$groupedRoles
- 
-         ]);
-     }
- 
- 
-     #[Route('/listUtilisateurs', name: 'listUtilisateurs')]
-     public function listUtilisateurs(Request $request, EntityManagerInterface $entityManager,BaseService $baseService): Response
-     {
-         $chckAccess = $this->baseService->Role(8);
-         if($chckAccess == 0){
-             return $this->redirectToRoute('login');
-         }else if ($chckAccess == 2){
-             return $this->redirectToRoute('infoUtilisateur');
-         }
-         $session = new Session;
-         $bureauSelected = $session->get('bureauSelected');
- 
-         // $check =  $baseService->checkAcces('CONSUTIL');
-         // if($check == 1)
-         // {
-         //     $session->remove('user');
-         //     $session->set('isConnected',false);
-     
-         //     return $this->redirectToRoute('login'); // Redirect to 'listBureaux' route
-         // }
-         // else if ( $check == 2 )
-         // {
-         //     return $this->redirectToRoute('listBureaux'); // Redirect to 'listBureaux' route
-         // }
-         $users = [];
-         if($bureauSelected == 0)
-         {
-             $utilisateurs = $entityManager->getRepository(Utilisateur::class)->findAll();
-         }
-         else
-         {
-             $bureauUtilisateurs = $entityManager->getRepository(BureauUtilisateur::class)->findByIdBure($bureauSelected);
-         
-             // Extract the user IDs from BureauUtilisateur
-             $userIds = [];
-             foreach ($bureauUtilisateurs as $bureauUtilisateur) {
-                 $userIds[] = $bureauUtilisateur->getIdUtil(); // Assuming there's a getUserId method
-             }
-     
-             // Fetch the corresponding Utilisateur data
-             $utilisateurs = $entityManager->getRepository(Utilisateur::class)->findBy(['id' => $userIds]);
- 
-         }
-         foreach($utilisateurs as $a)
-         {
-             $profils = [];
-             $utilisateurProfil = $entityManager->getRepository(UtilisateurProfil::class)->findByIdUtil($a->getId());
-             for($i=0;$i<count($utilisateurProfil);$i++)
-             {
-                 $profil = $entityManager->getRepository(Profil::class)->find($utilisateurProfil[$i]->getIdProf());
-                 if($profil)
-                 {
-                     $profilName = $profil->getLibeProf();
-                     $profils[$i] = $profilName;
-                 }
- 
-             }
- 
-             // Créez un tableau associatif contenant toutes les informations de l'utilisateur, y compris les profils
-             $user = [
-                 'id' => $a->getId(),
-                 'nom' => $a->getNomUtil(),
-                 'prenom' => $a->getPrenUtil(),
-                 'tele' => $a->getTeleUtil(),
-                 'email' => $a->getEmaiUtil(),
-                 'type' => $a->getTypeUtil(),
-                 'profils' => $profils,
-             ];
- 
-             // Ajoutez l'utilisateur au tableau $users
-             $users[] = $user;
-         }
- 
-         
-         
-         return $this->render('utilisateur/listUtilisateurs.html.twig', [
-             'controller_name' => 'UtilisateurController',
-             'utilisateurs' => $users,
-         ]);
-     }
- 
- 
-     #[Route('/updateUtilisateur', name: 'updateUtilisateur')]
-     public function updateUtilisateur(Request $request, EntityManagerInterface $entityManager,ValidateService $validateService,BaseService $baseService): Response
-     {
-         $chckAccess = $this->baseService->Role(10);
-         if($chckAccess == 0){
-             return $this->redirectToRoute('login');
-         }else if ($chckAccess == 2){
-             return $this->redirectToRoute('infoUtilisateur');
-         }
-         $session = new Session;
-         $userS = $session->get('user');
-         $bureauSelected = $session->get('bureauSelected');
- 
-         // $check =  $baseService->checkAcces('MODIUTIL');
-         // if($check == 1)
-         // {
-         //     $session->remove('user');
-         //     $session->set('isConnected',false);
-     
-         //     return $this->redirectToRoute('login'); // Redirect to 'listBureaux' route
-         // }
-         // else if ( $check == 2 )
-         // {
-         //     return $this->redirectToRoute('listBureaux'); // Redirect to 'listBureaux' route
-         // }
-         $response = '';
-         $id = $request->get('id');
-         $dateCrea = new \DateTime();
- 
-         $user = $entityManager->getRepository(Utilisateur::class)->find($id);
-         $profils = $entityManager->getRepository(Profil::class)->findAll();
-         $roles = $entityManager->getRepository(Role::class)->findAll();
-         $utilisateurProfil = $entityManager->getRepository(UtilisateurProfil::class)->findByIdUtil($id);
- 
-         if($request->getMethod()=='POST')
-         {
- 
-             $nom=$request->get('nom');
-             $prenom=$request->get('prenom');
-             $tele=$request->get('tele');
-             $email=$request->get('email');
-             $type=$request->get('agent');
-             $active=$request->get('active');
-             $file = $request->files->get('picture');
-             $profil=$request->get('profil');
-             $rolesChecked=$request->get('roles');
-             $ifPerso=$request->get('ifPerso');
-             $libelle=$request->get('libelle');
- 
- 
-             $utilisateur = $entityManager->getRepository(Utilisateur::class)->findByEmaiUtil($email);
- 
-             if($utilisateur && $user->getEmaiUtil() != $email)
-             {
-                 $response = 'L\'email existe déjà, veuillez essayer avec un autre email !';
- 
-             }
-             else
-             {
- 
-                 $contraintes = array(
-                     "nom" => array("val" => $nom, "length" => 255, "type" => "string", "isBlank" => true),
-                     "prenom" => array("val" => $prenom, "length" => 1000, "type" => "string" , "isBlank" => true),
-                     "tele" => array("val" => $tele, "length" => 255, "type" => "string" , "isBlank" => true),
-                     "email" => array("val" => $email, "length" => 255, "type" => "string" , "isBlank" => true),
-                     "file" => array("val" => $file, "type" => "file" , "isBlank" => false),
-                 );
-     
-                 $valideBureau = $validateService->validateur($contraintes);
-     
-                 if($valideBureau === true)
-                 {
- 
-                     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
-                         $response = 'Email incorrect';
-                     } elseif (!preg_match('#^0[0-9]([ .-]?[0-9]{2}){4}$#', $tele)) {
-                         $response = 'Numero de téléphone incorrect';
-                     }
-                     else{
-                         if($ifPerso != 1 && !$profil)
-                         {
-                             $response = 'Veuillez selectionner au moins un profil !';
-                         }
-                         else
-                         {
-                             $user->setNomUtil($nom);
-                             $user->setPrenUtil($prenom);
-                             $user->setEmaiUtil($email);
-                             $user->setTeleUtil($tele);
-                             $user->setPassUtil($user->getPassUtil());
-                             
-                             if($user->getTypeUtil() != 0)
-                             {
-                                 if($type === 'on')
-                                 {
-                                     $user->setTypeUtil(2);
-                                 }
-                                 else
-                                 {
-                                     $user->setTypeUtil(1);
-                                 }
-                                 
-                                 if($active === 'on')
-                                 {
-                                     $user->setActive(1);
-                                 }
-                                 else
-                                 {
-                                     $user->setActive(0);
-                                 }
- 
-                                 
-                             }
-             
-                             if ($file instanceof UploadedFile) {
-                             
-                                 $fileName = $baseService->generateUniqueFileName() . '.' . $file->guessExtension();
-                                 
-                                 // Move the file to the desired directory
-                                 $file->move(
-                                     $this->getParameter('imagesUserUploadPath'),
-                                     $fileName
-                                 );
-                                 
-                                 $user->setLogoUtil($fileName); // Set the file name in the entity
-                             }
-                             else
-                             {
-                                 $user->setLogoUtil('user.png');
-                             }
-                 
-                             // Persist the Bureau entity and flush it to the database
-                             $entityManager->flush();
-                             if($userS->getId() == $user->getId())
-                             $session->set('user', $user);
-         
-                             foreach ($utilisateurProfil as $pu)
-                             {
-                                 $entityManager->remove($pu);
-         
-                             }
-         
-                             if( $ifPerso == 1)
-                             {
-                                 $profil = new Profil();
-                                 $profil->setLibeProf($libelle);
-                                 $profil->setDescProf('Profil personalisé');
-                                 $profil->setDateCrea($dateCrea);
-                                 if($type === 'on')
-                                 {
-                                     $profil->setTypeProf(2);
-                                 }
-                                 else
-                                 {
-                                     $profil->setTypeProf(1);
-                                 }
-                                 // Persist the Bureau entity and flush it to the database
-                                 $entityManager->persist($profil);
-                                 $entityManager->flush();
-         
-                                 if($profil)
-                                 {
-         
-                                     foreach ($roles as $role)
-                                     {
-                                         $profilRole = new ProfilRole();
-                                         $profilRole->setLibeProf($libelle);
-                                         $profilRole->setidProf($profil->getId());
-                                         $profilRole->setidRole($role->getId());
-                                         if (is_array($rolesChecked) && in_array($role->getId(), $rolesChecked)) 
-                                         {
-                                             $profilRole->setRoleProf(true);
-                                         }
-                                         else
-                                         {
-                                             $profilRole->setRoleProf(false);
-                                         }
-                     
-                                         $entityManager->persist($profilRole);
-                     
-                                     }
-         
-                                     $utilisateurRole = new UtilisateurProfil();
-                                     $utilisateurRole->setidUtil($user->getId());
-                                     $utilisateurRole->setidProf($profil->getId());
-                 
-                                     $entityManager->persist($utilisateurRole);
-                                     $entityManager->flush();
-                                 
-                                 }
-                 
-                             }
-                             else
-                             {
-                                 foreach ($profil as $p)
-                                 {
-                 
-                                     $utilisateurRole = new UtilisateurProfil();
-                                     $utilisateurRole->setidUtil($user->getId());
-                                     $utilisateurRole->setidProf($p);
-                 
-                                     $entityManager->persist($utilisateurRole);
-                                     $entityManager->flush();
-         
-                                 }
-                             }
-         
-                             $response = 'ok';
-                             $baseService->addLogAction($user->getId(),'Modifier un utilisateur',$bureauSelected);
- 
-                         }
-                     }
-                 }
-                 else
-                 {
-     
-                     $response = 'Veuillez vérifier vos informations, un des champs est vide ou incorrect !';
-                 }
- 
-             }
- 
-         }
-         
-         if($response == 'ok')
-         {
-             return $this->redirectToRoute('listUtilisateurs'); // Redirect to 'listBureaux' route
-         }
- 
-         return $this->render('utilisateur/updateUtilisateur.html.twig', [
-             'controller_name' => 'UtilisateurController',
-             'utilisateur' => $user,
-             'response' => $response,
-             'profils' => $profils,
-             'utilisateurProfil' => $utilisateurProfil,
-             'roles' => $roles
-             
-         ]);
-     }
- 
-     #[Route('/deleteUtilisateur/{id}/', name: 'deleteUtilisateur')]
-     public function deleteUtilisateur(Request $request, EntityManagerInterface $entityManager,$id,BaseService $baseService): Response
-     {
-         $chckAccess = $this->baseService->Role(11);
-         $response = "";
-         if($chckAccess == 0){
-             $response = "Vous n'avez pas accès à cette opération";
-         }else if ($chckAccess == 2){
-             $response = "Vous n'avez pas accès à cette opération";
-         }
-         if( $response == ""){ 
-             $session = new Session;
-             $user = $session->get('user');
-             $utilisateur = $entityManager->getRepository(Utilisateur::class)->find($id);
- 
-             if (!$utilisateur) 
-             {
-             
-                 $response = 'Desolé, ce utilisateur est introuvable !';
- 
-             } 
-             else 
-             {
-                 $utilisateurProfils = $entityManager->getRepository(UtilisateurProfil::class)->findByIdUtil($utilisateur->getId());
-                 foreach($utilisateurProfils as $up)
-                 {
-                     $entityManager->remove($up);
-                 }
-                 // Remove the utilisateur
-                 $entityManager->remove($utilisateur);
-                 $entityManager->flush();
-                 if ($user->getId() == $id )
-                 {
-                     // Clear the user-related session data
-                     $session->remove('user');
-                     $session->set('isConnected',false);
-             
-                 }
-                 
-                 $response = "ok";
-                 
-             }
-         }
-         return new Response($response);
- 
-     }
- 
-     #[Route('/')]
-     #[Route('/login', name: 'login')]
-     public function login(Request $request, EntityManagerInterface $entityManager,
-     UtilisateurRepository $UtilisateurRepository,BaseService $baseService): Response
-     {
-         
-         $session = new Session;
-         // Check if user is connected and exists in the session
-         $isConnected = $session->get('isConnected');
-         $user = $session->get('user');
- 
-         if ($isConnected == true && $user) {
-             return $this->redirectToRoute('listBureaux'); // Redirect to 'listBureaux' route
-         }
- 
-         $response = "";
-         $email = "";
-         $password = "";
- 
-         if($request->getMethod()=='POST')
-         {
- 
-             $email=$request->get('email');
-             $password=$request->get('password');
- 
-             if( trim($email) == "" || trim($password) == "" )
-             {
-                 $response = "L'email ou le mot de passe est vide";
-             }
-             else
-             {
-                 $utilisateur = $entityManager->getRepository(Utilisateur::class)->findOneBy(array("emaiUtil" => $email,"passUtil" => sha1($password)));
-                 if($utilisateur)
-                 {
-                     if($utilisateur->getActive() != 1)
-                     {
-                         $response="Votre compte n'est pas actif !";
-                     }else{
-                         $findBureau = $entityManager->getRepository(BureauUtilisateur::class)->findBy(['idUtil'=>$utilisateur->getId()]);
-                         if($findBureau || $utilisateur->getTypeUtil() == 0){
-                             // Store user data in the session
-                             $session->set('user', $utilisateur);
-                             $session->set('isConnected', true);
-         
-                             $bureaux = $UtilisateurRepository->getUserBureaux($utilisateur->getId());
-                             $allBureaux = $entityManager->getRepository(Bureau::class)->findByEtatBure(1);
-                             $session->set('allBureaux', $allBureaux);
-         
-                             if($bureaux)
-                             {
-                                 $session->set('bureaux', $bureaux);
-                                 $session->set('bureauSelected', $bureaux[0]['id']);    
-                             }
-                             else
-                             {
-                                 $session->set('bureauSelected', 0);    
-                             }
-                             $bureauSelected = $session->get('bureauSelected');
-                             $baseService->addLogAction($utilisateur->getId(),'Connexion',$bureauSelected);
-                             $utilisateur->setLastConn(new \DateTime());
-                             $baseService->verifierNotification();
-                             return $this->redirectToRoute('dashboard'); // Replace 'dashboard_route' with your actual route name
-                         }else{
-                             $response="Votre compte n'est pas accessible pour le travail !";
-                         }
-                     }
-                 }
-                 else
-                 {
-                     $response = "L'email ou le mot de passe est incorrect";
-                 }
-             }
-         }
-         
-         return $this->render('utilisateur/login.html.twig', [
-             'controller_name' => 'UtilisateurController',
-             'response' => $response
-         ]);
-     }
- 
-     #[Route('/logout', name: 'logout')]
-     public function logout(Request $request, EntityManagerInterface $entityManager,BaseService $baseService): Response
-     {
-         $session = new Session;
-         $bureauSelected = $session->get('bureauSelected');
-         $user = $session->get('user');
- 
-         $baseService->addLogAction($user->getId(),'Connexion',$bureauSelected);
- 
-         // Clear the user-related session data
-         $session->remove('user');
-         $session->set('isConnected',false);
- 
- 
-         // Redirect to the login page
-         return $this->redirectToRoute('login'); // Replace 'login' with your actual login route name
- 
-     }
-     
-     #[Route('/chnagerMotDePasse/', name: 'chnagerMotDePasse')]
-     public function chnagerMotDePasse(Request $request, EntityManagerInterface $entityManager,BaseService $baseService): Response
-     {
-         $session = new Session;
-         $user = $session->get('user');
-         $bureauSelected = $session->get('bureauSelected');
- 
-         $response = '';
-         $chckAccess = $this->baseService->Role(94);
-         if($chckAccess == 0){
-             $response = "Vous n'avez pas accès à cette opération";
-         }else if ($chckAccess == 2){
-             $response = "Vous n'avez pas accès à cette opération";
-         }
-         if( $response == ""){
-             $id = $request->get('id');
-             $ancienPassword = $request->get('ancienPassword');
-             $password = $request->get('password');
-             $confirmPassword = $request->get('confirmPassword');
-             $utilisateur = $entityManager->getRepository(Utilisateur::class)->find($id);
-     
-             if (!$utilisateur) 
-             {
-                 $response = "Désolé, ce utilisateur n'a pas été trouvé !";
-             }
-             else if(sha1($ancienPassword) != $utilisateur->getPassutil() )
-             {
-                 $response = 'L’ancien mot de passe saisi est incorrect. Veuillez réessayer.';
-             }
-             else if($password == "" || $password == null)
-             {
-                 $response = 'Désolé, le champ du mot de passe est vide. Veuillez le renseigner !';
-             }
-             else if(strlen($password) < 6)
-             {
-                 $response = 'Désolé, le mot de passe doit contenir plus de 6 caractères !';
-             }
-             else if($password != $confirmPassword)
-             {
-                 $response = 'Désolé, la confirmation du mot de passe ne correspond pas au mot de passe saisi. Veuillez vérifier et réessayer';
-             }
-             else if($password == $utilisateur->getPassutil())
-             {
-                 $response = "Désolé, veuillez choisir un nouveau mot de passe différent de l'ancien pour des raisons de sécurité.";
-             } 
-             else 
-             {
-     
-     
-                 // Remove the utilisateur
-                 $utilisateur->setPassUtil(sha1($password));
-                 $entityManager->flush();
-                 $baseService->addLogAction($user->getId(),'Modifier un mot de passe utilisateur',$bureauSelected);
-     
-                 $response = "ok";
-                 
-             }
-         }
- 
-         return new Response($response);
- 
-     }
- 
-     #[Route('/chnagerBureau/', name: 'chnagerBureau')]
-     public function chnagerBureau(Request $request, EntityManagerInterface $entityManager,BaseService $baseService): Response
-     {
-         $session = new Session;
-         // Check if user is connected and exists in the session
-         $isConnected = $session->get('isConnected');
-         $user = $session->get('user');
-         $response = '';
-         $id = $request->get('id');
-         $session->set('bureauSelected', $id);
-         $response = 'ok';
-         $baseService->verifierNotification();
-         $baseService->addLogAction($user->getId(),'Connexion',$id);
- 
-         return new Response($response);
-     }
-     #[Route('/redirectToNotif/', name: 'redirectToNotif')]
-     public function redirectToNotif(Request $request, EntityManagerInterface $entityManager,BaseService $baseService): Response
-     {
-         $session = new Session;
-         // Check if user is connected and exists in the session
-         $isConnected = $session->get('isConnected');
-         $user = $session->get('user');
-         $response = '';
-         $id = $request->get('id');
-         $notif = $entityManager->getRepository(Notifications::class)->find($id);
-         $notif->setEtat(0);
-         $entityManager->flush();
-         if($notif->getType() == 1){
-             $response = '/taches';
-         }else if($notif->getType() == 2){
-             $response = '/listMissions?tab=1';
-         }else if($notif->getType() == 3){
-             $fact1 = $entityManager->getRepository(Facture::class)->find($notif->getIdObject());
-             
-             $response = '/viewFacture?id='.$fact1->getId();
-         }else if($notif->getType() == 4){
-             $fact = $entityManager->getRepository(FactureFournisseur::class)->find($notif->getIdObject());
-             $response = '/assets/images/archive/FactureFournisseur/'.$fact->getImagFacr();
-         }
-         $baseService->verifierNotification();
-         return new Response($response);
-     }
-     #[Route('/isShowNotif/', name: 'isShowNotif')]
-     public function isShowNotif(Request $request, EntityManagerInterface $entityManager,BaseService $baseService): Response
-     {
-         $session = new Session;
-         // Check if user is connected and exists in the session
-         $isConnected = $session->get('isConnected');
-         $user = $session->get('user');
-         $response = '';
-         $id = $request->get('id');
-         $listeNotif = $session->get('notification');
-         for ($i=0; $i < $listeNotif; $i++) { 
-             $baseService->updateStatusNotif($listeNotif[$i]['id']);
-         }
-         $baseService->verifierNotification();
-         return new Response($response);
-     }
-     
-     
-     #[Route('/logsUtilisateurs')]
-     public function logsUtilisateurs(Request $request,UtilisateurRepository $userRepo ,EntityManagerInterface $entityManager,BaseService $baseService,
-     MarcheRepository $marcheRepository): Response
-     {
-         $chckAccess = $this->baseService->Role(7);
-         if($chckAccess == 0){
-             return $this->redirectToRoute('login');
-         }else if ($chckAccess == 2){
-             return $this->redirectToRoute('infoUtilisateur');
-         }
- 
-         $session = new Session;
-         $bureauSelected = $session->get('bureauSelected');
-         $currentDate = new \DateTime();
-         $date_debut = $currentDate->format('Y-m-d');
-         $date_fin = $currentDate->format('Y-m-d');
-         $marc = 0;
-         $user = 0;
-         $logs = $userRepo->getLogs($bureauSelected , $date_debut , $date_fin , $marc , $user);
-         
-         if($bureauSelected == 0){
-             $marche = $entityManager->getRepository(Marche::class)->findAll();
-             $users = $entityManager->getRepository(Utilisateur::class)->findAll();
-         }else{
-             //$marche = $entityManager->getRepository(Marche::class)->findBy(['idBure'=>$bureauSelected]);
-          
-             $marche = $marcheRepository->getMarches($bureauSelected);
-             $users = $userRepo->getBureauUsers($bureauSelected);
- 
-         }
-         if($request->getMethod() == 'POST')
-         {
-             $date_debut = $request->get('date_debut');
-             $date_fin = $request->get('date_fin');
-             $marc = $request->get('idMarche');
-             $user = $request->get('idUtilisateurs');
-             $logs = $userRepo->getLogs($bureauSelected , $date_debut , $date_fin , $marc , $user);
-         }
- 
-         //dd($logs);
- 
-         return $this->render('utilisateur/logs.html.twig', [
-             'controller_name' => 'UtilisateurController',
-             'logs'=>$logs,
-             'marche'=>$marche,
-             'users'=>$users,
-             'date_debut'=>$date_debut,
-             'date_fin'=>$date_fin,
-             'user'=>$user,
-             'marc'=>$marc,
-         ]);
-     }
- 
- 
-     #[Route('/infoUtilisateur', name: 'infoUtilisateur')]
-     public function InfoUtilisateur(Request $request, EntityManagerInterface $entityManager,ValidateService $validateService,BaseService $baseService): Response
-     {
-         $session = new Session;
-         $user = $session->get('user');
-         if ($user) {
-             $id = $user->getId();
-         }
-         $response = '';
-         $dateCrea = new \DateTime();
- 
-         $user = $entityManager->getRepository(Utilisateur::class)->find($id);
-         $profils = $entityManager->getRepository(Profil::class)->findAll();
-         $roles = $entityManager->getRepository(Role::class)->findAll();
-         $utilisateurProfil = $entityManager->getRepository(UtilisateurProfil::class)->findByIdUtil($id);
- 
-         return $this->render('utilisateur/infoUtilisateur.html.twig', [
-             'controller_name' => 'UtilisateurController',
-             'utilisateur' => $user,
-             'response' => $response,
-             'profils' => $profils,
-             'utilisateurProfil' => $utilisateurProfil,
-             'roles' => $roles
-             
-         ]);
-     }
-     #[Route('/pointage', name: 'pointage')]
-     public function pointage(Request $request , BaseService $baseService , PointageUserRepository $PointageUserRepository): Response
-     {
-         $chckAccess = $this->baseService->Role(128);
-         if($chckAccess == 0){
-             return $this->redirectToRoute('login');
-         }else if ($chckAccess == 2){
-             return $this->redirectToRoute('infoUtilisateur');
-         }
-         $response = "";
-         $currentDate = new \DateTime();
-         $session = new Session;
-         $bureauSelected = $session->get('bureauSelected');
-         $currentDate->modify('first day of this month');
-         $date_debut = $currentDate->format('Y-m-d');
-         $currentDate->modify('last day of this month');
-         $date_fin = $currentDate->format('Y-m-d');
- 
-         $year = date('Y');
-         $month = date('m');
- 
-         // Create a DateTime object for the first day of the specified month and year
-         $firstDay = new \DateTime("$year-$month-01");
- 
-         // Get the last day of the month by modifying the first day
-         $lastDay = clone $firstDay;
-         $lastDay->modify('last day of this month');
- 
-         // Format the dates as strings in 'Y-m-d' format
-         $dateDay = date('Y-m-d');
-         $date_debut = $dateDay ;
-         $date_fin = $dateDay;
-         $listPointage = $PointageUserRepository->workTimeListeByDate($date_debut , $date_fin);
-         if($request->getMethod() == 'POST'){
-             $date_debut = $request->get("date_debut");
-             $date_fin = $request->get("date_fin");
-             if($date_fin < $date_debut){
-                 $response="Veuillez vérifier date saisie !!";
-                 $currentDate->modify('first day of this month');
-                 $date_debut = $currentDate->format('Y-m-d');
-                 $currentDate->modify('last day of this month');
-                 $date_fin = $currentDate->format('Y-m-d');
-             }else{
-                 $listPointage = $PointageUserRepository->workTimeListeByDate($date_debut , $date_fin);
-             }
-         }
-         return $this->render('utilisateur/pointage.html.twig', [
-             'controller_name' => 'UtilisateurController',
-             'date_debut' => $date_debut,
-             'date_fin' => $date_fin,
-             'response'=>$response,
-             'pointage'=>$listPointage,
-             'dateDay'=>$dateDay
-         ]);
-     }
- 
-     #[Route('/workPointageBackOffice', name: 'workPointageBackOffice')]
-     public function workPointageBackOffice(Request $request, EntityManagerInterface $entityManager,PointageUserRepository $PointageUserRepository): Response
-     {
-         $session = new Session;
-         // Check if user is connected and exists in the session
-         $isConnected = $session->get('isConnected');
-         $user = $session->get('user');
-         $response = '';
-         $dateDay = date('Y-m-d');
-         $idUser = $request->get('idUser');
- 
-         $data = $PointageUserRepository->workTimeListeByUser($dateDay , $idUser);
- 
-         return new JsonResponse(['data' => $data]);
-     }
-     #[Route('/deletePointage/{id}', name: 'deletePointage')]
-     public function deletePointage(Request $request, $id , EntityManagerInterface $entityManager,PointageUserRepository $PointageUserRepository): Response
-     {
-         $session = new Session;
-         // Check if user is connected and exists in the session
-         $isConnected = $session->get('isConnected');
-         $user = $session->get('user');
-         $response = '';
-         $dateDay = date('Y-m-d');
-         $pointageUser = $entityManager->getRepository(PointageUser::class)->find($id);
-         if($pointageUser->getIdUser() == $user->getId() || $user->getTypeUtil() == 0 ){
-             if($pointageUser){
-                 $result = $PointageUserRepository->checkForDeletePointage($pointageUser->getIdUser() , $pointageUser->getTypePointage());
-                 if($result == "OK"){
- 
-                     $entityManager->remove($pointageUser);
-                     $date = \DateTime::createFromFormat('Y-m-d H:i:s', $dateDay. '00:00:00');
-                     $time_work = $entityManager->getRepository(TimeWork::class)->findOneBy(['date'=>$date, 'id_user'=>$pointageUser->getIdUser()]);
- 
-                     if($pointageUser->getTypePointage() == 4){
-                         $time_work->setTime(00);
-                     }else if ($pointageUser->getTypePointage() == 1){
-                         $entityManager->remove($time_work);
-                     }
- 
-                     $entityManager->flush();
-                     $response = "OK"; 
-                 }else{
-                     $response = $result;
-                 }
-             }
-         }else{
-             $response = 'Vous n\'êtes pas le pointeur !';
-         }
-         return new JsonResponse(['response' => $response]);
-     }
-     
- }
-