src/Controller/Utilisateurs/UtilisateurController.php line 379

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Utilisateurs;
  3. use App\Entity\Bureau;
  4. use App\Entity\Facture;
  5. use App\Entity\FactureFournisseur;
  6. use App\Entity\Notifications;
  7. use App\Entity\PointageUser;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use App\Entity\Utilisateur
  14. use App\Entity\Profil
  15. use App\Entity\Role
  16. use App\Entity\ProfilRole
  17. use App\Entity\UtilisateurProfil
  18. use App\Entity\TimeWork
  19. use App\Service\ValidateService;
  20. use App\Service\BaseService;
  21. use Symfony\Component\HttpFoundation\File\UploadedFile;
  22. use Symfony\Component\HttpFoundation\Session\Session;
  23. use App\Repository\UtilisateurRepository;
  24. use App\Entity\BureauUtilisateur
  25. use App\Entity\LogUser
  26. use App\Entity\Marche
  27. use App\Repository\MarcheRepository;
  28. use App\Repository\PointageUserRepository;
  29. use Symfony\Component\HttpFoundation\JsonResponse;
  30. class UtilisateurController extends AbstractController
  31. {
  32.     public $baseService;
  33.     public function __construct(BaseService $baseService
  34.         )
  35.     {
  36.         $this->baseService $baseService;
  37.     }
  38.     #[Route('/addUtilisateur'name'addUtilisateur')]
  39.     public function addUtilisateur(Request $requestEntityManagerInterface $entityManager,ValidateService $validateService,BaseService $baseService): Response
  40.     {
  41.         $chckAccess $this->baseService->Role(9);
  42.         if($chckAccess == 0){
  43.             return $this->redirectToRoute('login');
  44.         }else if ($chckAccess == 2){
  45.             return $this->redirectToRoute('infoUtilisateur');
  46.         }
  47.         $session = new Session;
  48.         $user $session->get('user');
  49.         // $check =  $baseService->checkAcces('AJOUUTIL');
  50.         // if($check == 1)
  51.         // {
  52.         //     $session->remove('user');
  53.         //     $session->set('isConnected',false);
  54.     
  55.         //     return $this->redirectToRoute('login'); // Redirect to 'listBureaux' route
  56.         // }
  57.         // else if ( $check == 2 )
  58.         // {
  59.         //     return $this->redirectToRoute('listBureaux'); // Redirect to 'listBureaux' route
  60.         // }
  61.         
  62.         $bureauSelected $session->get('bureauSelected');
  63.         $response ""
  64.         $nom "";
  65.         $prenom "";
  66.         $tele "";
  67.         $email "";
  68.         $dateCrea = new \DateTime();
  69.         $profils $entityManager->getRepository(Profil::class)->findAll();
  70.         $roles $entityManager->getRepository(Role::class)->findAll();
  71.         $groupedRoles = [];
  72.         foreach ($roles as $role) {
  73.             $category $role->getCategorieRole();
  74.             if (!isset($groupedRoles[$category])) {
  75.                 $groupedRoles[$category] = [];
  76.             }
  77.             $groupedRoles[$category][] = $role;
  78.         }
  79.         if($request->getMethod()=='POST')
  80.         {
  81.             $nom=$request->get('nom');
  82.             $prenom=$request->get('prenom');
  83.             $tele=$request->get('tele');
  84.             $email=$request->get('email');
  85.             $type=$request->get('agent');
  86.             $active=$request->get('active');
  87.             $password=$request->get('password');
  88.             $pass2=$request->get('Confpass');
  89.             $file $request->files->get('picture');
  90.             $profil=$request->get('profil');
  91.             $rolesChecked=$request->get('roles');
  92.             $ifPerso=$request->get('ifPerso');
  93.             $libelle=$request->get('libelle');
  94.             $utilisateur $entityManager->getRepository(Utilisateur::class)->findByEmaiUtil($email);
  95.             
  96.                 if($utilisateur)
  97.                 {
  98.                     $response 'L\'email existe déjà, veuillez essayer avec un autre email !';
  99.                 }
  100.                 else
  101.                 {
  102.                     $contraintes = array(
  103.                         "nom" => array("val" => $nom"length" => 255"type" => "string""isBlank" => true),
  104.                         "prenom" => array("val" => $prenom"length" => 1000"type" => "string" "isBlank" => true),
  105.                         "tele" => array("val" => $tele"length" => 255"type" => "string" "isBlank" => true),
  106.                         "email" => array("val" => $email"length" => 255"type" => "string" "isBlank" => true),
  107.                         "password" => array("val" => $password"length" => 255"type" => "string" "isBlank" => true),
  108.                         "file" => array("val" => $file"type" => "file" "isBlank" => false),
  109.                     );
  110.                     $valideBureau $validateService->validateur($contraintes);
  111.                     if($valideBureau === true)
  112.                     {
  113.                         if (!filter_var($emailFILTER_VALIDATE_EMAIL)) {
  114.                             $response 'Email incorrect';
  115.                         } elseif (!preg_match('#^0[0-9]([ .-]?[0-9]{2}){4}$#'$tele)) {
  116.                             $response 'Numero de téléphone incorrect';
  117.                         } elseif (strlen($password) < || strlen($password) > 16) {
  118.                             $response 'Le mot de passe doit comprendre entre 8 et 16 caractéres';
  119.                         } elseif ($password !== $pass2) {
  120.                             $response 'Les deux mots de passe ne sont pas identiques';
  121.                         }
  122.                         else{
  123.                             if($ifPerso != && !$profil)
  124.                             {
  125.                                 $response 'Veuillez selectionner au moins un profil !';
  126.                             }
  127.                             else
  128.                             {
  129.                                 $utilisateur = new utilisateur();
  130.                                 $utilisateur->setNomUtil($nom);
  131.                                 $utilisateur->setPrenUtil($prenom);
  132.                                 $utilisateur->setEmaiUtil($email);
  133.                                 $utilisateur->setTeleUtil($tele);
  134.                                 $utilisateur->setPassUtil(sha1($password));
  135.                                 if($type === 'on')
  136.                                 {
  137.                                     $utilisateur->setTypeUtil(2);
  138.                                 }
  139.                                 else
  140.                                 {
  141.                                     $utilisateur->setTypeUtil(1);
  142.                                 }
  143.                                 if($active === 'on'){
  144.                                     $utilisateur->setActive(1);
  145.                                 }else{
  146.                                     $utilisateur->setActive(0);
  147.                                 }
  148.                                 if ($file instanceof UploadedFile) {
  149.                                 
  150.                                     $fileName $baseService->generateUniqueFileName() . '.' $file->guessExtension();
  151.                                     
  152.                                     // Move the file to the desired directory
  153.                                     $file->move(
  154.                                         $this->getParameter('imagesUserUploadPath'),
  155.                                         $fileName
  156.                                     );
  157.                     
  158.                                     $utilisateur->setLogoUtil($fileName); // Set the file name in the entity
  159.                                 }
  160.                                 else
  161.                                 {
  162.                                     $utilisateur->setLogoUtil('user.png');
  163.                                 }
  164.                     
  165.                                 // Persist the Bureau entity and flush it to the database
  166.                                 $entityManager->persist($utilisateur);
  167.                                 $entityManager->flush();
  168.                                 if($ifPerso == 1)
  169.                                 {
  170.                                     $profil = new Profil();
  171.                                     $profil->setLibeProf($libelle);
  172.                                     $profil->setDescProf('Profil personalisé');
  173.                                     $profil->setDateCrea($dateCrea);
  174.                                     if($type === 'on')
  175.                                     {
  176.                                         $profil->setTypeProf(2);
  177.                                     }
  178.                                     else
  179.                                     {
  180.                                         $profil->setTypeProf(1);
  181.                                     }
  182.                                     // Persist the Bureau entity and flush it to the database
  183.                                     $entityManager->persist($profil);
  184.                                     $entityManager->flush();
  185.                                     if($profil)
  186.                                     {
  187.                                         foreach ($roles as $role)
  188.                                         {
  189.                                             $profilRole = new ProfilRole();
  190.                                             $profilRole->setLibeProf($libelle);
  191.                                             $profilRole->setidProf($profil->getId());
  192.                                             $profilRole->setidRole($role->getId());
  193.                                             // if (is_array($rolesChecked) && in_array($role->getId(), $rolesChecked))
  194.                                             if(isset($_POST['roles'][$role->getCodeRole()]))
  195.                                             {
  196.                                                 $profilRole->setRoleProf(true);
  197.                                             }
  198.                                             else
  199.                                             {
  200.                                                 $profilRole->setRoleProf(false);
  201.                                             }
  202.                         
  203.                                             $entityManager->persist($profilRole);
  204.                         
  205.                                         }
  206.                                         $utilisateurRole = new UtilisateurProfil();
  207.                                         $utilisateurRole->setidUtil($utilisateur->getId());
  208.                                         $utilisateurRole->setidProf($profil->getId());
  209.                     
  210.                                         $entityManager->persist($utilisateurRole);
  211.                                         $entityManager->flush();
  212.                                     
  213.                                     }
  214.                     
  215.                                 }
  216.                                 else
  217.                                 {
  218.                                     foreach ($profil as $p)
  219.                                     {
  220.                     
  221.                                         $utilisateurRole = new UtilisateurProfil();
  222.                                         $utilisateurRole->setidUtil($utilisateur->getId());
  223.                                         $utilisateurRole->setidProf($p);
  224.                     
  225.                                         $entityManager->persist($utilisateurRole);
  226.                                         $entityManager->flush();
  227.                                     }
  228.                                 }
  229.                                 if($bureauSelected != 0)
  230.                                 {
  231.                                     $bureauUtilisateur = new BureauUtilisateur();
  232.                                     $bureauUtilisateur->setidUtil($utilisateur->getId());
  233.                                     $bureauUtilisateur->setidBure($bureauSelected);
  234.                 
  235.                                     $entityManager->persist($bureauUtilisateur);
  236.                                     $entityManager->flush();
  237.                 
  238.                                 }
  239.                                 $baseService->addLogAction($user->getId(),'Ajouter un utilisateur',$bureauSelected);
  240.                                 $response 'ok';
  241.                             }
  242.                         }
  243.                     }
  244.                     else
  245.                     {
  246.                         $response 'Veuillez vérifier vos informations, un des champs est vide ou incorrect !';
  247.                         
  248.                     }
  249.                 }
  250.             }
  251.         if($response == 'ok')
  252.         {
  253.             return $this->redirectToRoute('listUtilisateurs'); // Redirect to 'listBureaux' route
  254.         }
  255.         
  256.         return $this->render('utilisateur/addUtilisateur.html.twig', [
  257.             'controller_name' => 'UtilisateurController',
  258.             'response' => $response,
  259.             'nom' => $nom,
  260.             'prenom' => $prenom,
  261.             'email' => $email,
  262.             'tele' => $tele,
  263.             'profils' => $profils,
  264.             'roles' => $roles,
  265.             'groupedRoles'=>$groupedRoles
  266.         ]);
  267.     }
  268.     #[Route('/listUtilisateurs'name'listUtilisateurs')]
  269.     public function listUtilisateurs(Request $requestEntityManagerInterface $entityManager,BaseService $baseService): Response
  270.     {
  271.         $chckAccess $this->baseService->Role(8);
  272.         if($chckAccess == 0){
  273.             return $this->redirectToRoute('login');
  274.         }else if ($chckAccess == 2){
  275.             return $this->redirectToRoute('infoUtilisateur');
  276.         }
  277.         $session = new Session;
  278.         $bureauSelected $session->get('bureauSelected');
  279.         // $check =  $baseService->checkAcces('CONSUTIL');
  280.         // if($check == 1)
  281.         // {
  282.         //     $session->remove('user');
  283.         //     $session->set('isConnected',false);
  284.     
  285.         //     return $this->redirectToRoute('login'); // Redirect to 'listBureaux' route
  286.         // }
  287.         // else if ( $check == 2 )
  288.         // {
  289.         //     return $this->redirectToRoute('listBureaux'); // Redirect to 'listBureaux' route
  290.         // }
  291.         $users = [];
  292.         if($bureauSelected == 0)
  293.         {
  294.             $utilisateurs $entityManager->getRepository(Utilisateur::class)->findAll();
  295.         }
  296.         else
  297.         {
  298.             $bureauUtilisateurs $entityManager->getRepository(BureauUtilisateur::class)->findByIdBure($bureauSelected);
  299.         
  300.             // Extract the user IDs from BureauUtilisateur
  301.             $userIds = [];
  302.             foreach ($bureauUtilisateurs as $bureauUtilisateur) {
  303.                 $userIds[] = $bureauUtilisateur->getIdUtil(); // Assuming there's a getUserId method
  304.             }
  305.     
  306.             // Fetch the corresponding Utilisateur data
  307.             $utilisateurs $entityManager->getRepository(Utilisateur::class)->findBy(['id' => $userIds]);
  308.         }
  309.         foreach($utilisateurs as $a)
  310.         {
  311.             $profils = [];
  312.             $utilisateurProfil $entityManager->getRepository(UtilisateurProfil::class)->findByIdUtil($a->getId());
  313.             for($i=0;$i<count($utilisateurProfil);$i++)
  314.             {
  315.                 $profil $entityManager->getRepository(Profil::class)->find($utilisateurProfil[$i]->getIdProf());
  316.                 if($profil)
  317.                 {
  318.                     $profilName $profil->getLibeProf();
  319.                     $profils[$i] = $profilName;
  320.                 }
  321.             }
  322.             // Créez un tableau associatif contenant toutes les informations de l'utilisateur, y compris les profils
  323.             $user = [
  324.                 'id' => $a->getId(),
  325.                 'nom' => $a->getNomUtil(),
  326.                 'prenom' => $a->getPrenUtil(),
  327.                 'tele' => $a->getTeleUtil(),
  328.                 'email' => $a->getEmaiUtil(),
  329.                 'type' => $a->getTypeUtil(),
  330.                 'profils' => $profils,
  331.             ];
  332.             // Ajoutez l'utilisateur au tableau $users
  333.             $users[] = $user;
  334.         }
  335.         
  336.         
  337.         return $this->render('utilisateur/listUtilisateurs.html.twig', [
  338.             'controller_name' => 'UtilisateurController',
  339.             'utilisateurs' => $users,
  340.         ]);
  341.     }
  342.     #[Route('/updateUtilisateur'name'updateUtilisateur')]
  343.     public function updateUtilisateur(Request $requestEntityManagerInterface $entityManager,ValidateService $validateService,BaseService $baseService): Response
  344.     {
  345.         $chckAccess $this->baseService->Role(10);
  346.         if($chckAccess == 0){
  347.             return $this->redirectToRoute('login');
  348.         }else if ($chckAccess == 2){
  349.             return $this->redirectToRoute('infoUtilisateur');
  350.         }
  351.         $session = new Session;
  352.         $userS $session->get('user');
  353.         $bureauSelected $session->get('bureauSelected');
  354.         // $check =  $baseService->checkAcces('MODIUTIL');
  355.         // if($check == 1)
  356.         // {
  357.         //     $session->remove('user');
  358.         //     $session->set('isConnected',false);
  359.     
  360.         //     return $this->redirectToRoute('login'); // Redirect to 'listBureaux' route
  361.         // }
  362.         // else if ( $check == 2 )
  363.         // {
  364.         //     return $this->redirectToRoute('listBureaux'); // Redirect to 'listBureaux' route
  365.         // }
  366.         $response '';
  367.         $id $request->get('id');
  368.         $dateCrea = new \DateTime();
  369.         $user $entityManager->getRepository(Utilisateur::class)->find($id);
  370.         $profils $entityManager->getRepository(Profil::class)->findAll();
  371.         $roles $entityManager->getRepository(Role::class)->findAll();
  372.         $utilisateurProfil $entityManager->getRepository(UtilisateurProfil::class)->findByIdUtil($id);
  373.         if($request->getMethod()=='POST')
  374.         {
  375.             $nom=$request->get('nom');
  376.             $prenom=$request->get('prenom');
  377.             $tele=$request->get('tele');
  378.             $email=$request->get('email');
  379.             $type=$request->get('agent');
  380.             $active=$request->get('active');
  381.             $file $request->files->get('picture');
  382.             $profil=$request->get('profil');
  383.             $rolesChecked=$request->get('roles');
  384.             $ifPerso=$request->get('ifPerso');
  385.             $libelle=$request->get('libelle');
  386.             $utilisateur $entityManager->getRepository(Utilisateur::class)->findByEmaiUtil($email);
  387.             if($utilisateur && $user->getEmaiUtil() != $email)
  388.             {
  389.                 $response 'L\'email existe déjà, veuillez essayer avec un autre email !';
  390.             }
  391.             else
  392.             {
  393.                 $contraintes = array(
  394.                     "nom" => array("val" => $nom"length" => 255"type" => "string""isBlank" => true),
  395.                     "prenom" => array("val" => $prenom"length" => 1000"type" => "string" "isBlank" => true),
  396.                     "tele" => array("val" => $tele"length" => 255"type" => "string" "isBlank" => true),
  397.                     "email" => array("val" => $email"length" => 255"type" => "string" "isBlank" => true),
  398.                     "file" => array("val" => $file"type" => "file" "isBlank" => false),
  399.                 );
  400.     
  401.                 $valideBureau $validateService->validateur($contraintes);
  402.     
  403.                 if($valideBureau === true)
  404.                 {
  405.                     if (!filter_var($emailFILTER_VALIDATE_EMAIL)) {
  406.                         $response 'Email incorrect';
  407.                     } elseif (!preg_match('#^0[0-9]([ .-]?[0-9]{2}){4}$#'$tele)) {
  408.                         $response 'Numero de téléphone incorrect';
  409.                     }
  410.                     else{
  411.                         if($ifPerso != && !$profil)
  412.                         {
  413.                             $response 'Veuillez selectionner au moins un profil !';
  414.                         }
  415.                         else
  416.                         {
  417.                             $user->setNomUtil($nom);
  418.                             $user->setPrenUtil($prenom);
  419.                             $user->setEmaiUtil($email);
  420.                             $user->setTeleUtil($tele);
  421.                             $user->setPassUtil($user->getPassUtil());
  422.                             
  423.                             if($user->getTypeUtil() != 0)
  424.                             {
  425.                                 if($type === 'on')
  426.                                 {
  427.                                     $user->setTypeUtil(2);
  428.                                 }
  429.                                 else
  430.                                 {
  431.                                     $user->setTypeUtil(1);
  432.                                 }
  433.                                 
  434.                                 if($active === 'on')
  435.                                 {
  436.                                     $user->setActive(1);
  437.                                 }
  438.                                 else
  439.                                 {
  440.                                     $user->setActive(0);
  441.                                 }
  442.                                 
  443.                             }
  444.             
  445.                             if ($file instanceof UploadedFile) {
  446.                             
  447.                                 $fileName $baseService->generateUniqueFileName() . '.' $file->guessExtension();
  448.                                 
  449.                                 // Move the file to the desired directory
  450.                                 $file->move(
  451.                                     $this->getParameter('imagesUserUploadPath'),
  452.                                     $fileName
  453.                                 );
  454.                                 
  455.                                 $user->setLogoUtil($fileName); // Set the file name in the entity
  456.                             }
  457.                             else
  458.                             {
  459.                                 $user->setLogoUtil('user.png');
  460.                             }
  461.                 
  462.                             // Persist the Bureau entity and flush it to the database
  463.                             $entityManager->flush();
  464.                             if($userS->getId() == $user->getId())
  465.                             $session->set('user'$user);
  466.         
  467.                             foreach ($utilisateurProfil as $pu)
  468.                             {
  469.                                 $entityManager->remove($pu);
  470.         
  471.                             }
  472.         
  473.                             if( $ifPerso == 1)
  474.                             {
  475.                                 $profil = new Profil();
  476.                                 $profil->setLibeProf($libelle);
  477.                                 $profil->setDescProf('Profil personalisé');
  478.                                 $profil->setDateCrea($dateCrea);
  479.                                 if($type === 'on')
  480.                                 {
  481.                                     $profil->setTypeProf(2);
  482.                                 }
  483.                                 else
  484.                                 {
  485.                                     $profil->setTypeProf(1);
  486.                                 }
  487.                                 // Persist the Bureau entity and flush it to the database
  488.                                 $entityManager->persist($profil);
  489.                                 $entityManager->flush();
  490.         
  491.                                 if($profil)
  492.                                 {
  493.         
  494.                                     foreach ($roles as $role)
  495.                                     {
  496.                                         $profilRole = new ProfilRole();
  497.                                         $profilRole->setLibeProf($libelle);
  498.                                         $profilRole->setidProf($profil->getId());
  499.                                         $profilRole->setidRole($role->getId());
  500.                                         if (is_array($rolesChecked) && in_array($role->getId(), $rolesChecked)) 
  501.                                         {
  502.                                             $profilRole->setRoleProf(true);
  503.                                         }
  504.                                         else
  505.                                         {
  506.                                             $profilRole->setRoleProf(false);
  507.                                         }
  508.                     
  509.                                         $entityManager->persist($profilRole);
  510.                     
  511.                                     }
  512.         
  513.                                     $utilisateurRole = new UtilisateurProfil();
  514.                                     $utilisateurRole->setidUtil($user->getId());
  515.                                     $utilisateurRole->setidProf($profil->getId());
  516.                 
  517.                                     $entityManager->persist($utilisateurRole);
  518.                                     $entityManager->flush();
  519.                                 
  520.                                 }
  521.                 
  522.                             }
  523.                             else
  524.                             {
  525.                                 foreach ($profil as $p)
  526.                                 {
  527.                 
  528.                                     $utilisateurRole = new UtilisateurProfil();
  529.                                     $utilisateurRole->setidUtil($user->getId());
  530.                                     $utilisateurRole->setidProf($p);
  531.                 
  532.                                     $entityManager->persist($utilisateurRole);
  533.                                     $entityManager->flush();
  534.         
  535.                                 }
  536.                             }
  537.         
  538.                             $response 'ok';
  539.                             $baseService->addLogAction($user->getId(),'Modifier un utilisateur',$bureauSelected);
  540.                         }
  541.                     }
  542.                 }
  543.                 else
  544.                 {
  545.     
  546.                     $response 'Veuillez vérifier vos informations, un des champs est vide ou incorrect !';
  547.                 }
  548.             }
  549.         }
  550.         
  551.         if($response == 'ok')
  552.         {
  553.             return $this->redirectToRoute('listUtilisateurs'); // Redirect to 'listBureaux' route
  554.         }
  555.         return $this->render('utilisateur/updateUtilisateur.html.twig', [
  556.             'controller_name' => 'UtilisateurController',
  557.             'utilisateur' => $user,
  558.             'response' => $response,
  559.             'profils' => $profils,
  560.             'utilisateurProfil' => $utilisateurProfil,
  561.             'roles' => $roles
  562.             
  563.         ]);
  564.     }
  565.     #[Route('/deleteUtilisateur/{id}/'name'deleteUtilisateur')]
  566.     public function deleteUtilisateur(Request $requestEntityManagerInterface $entityManager,$id,BaseService $baseService): Response
  567.     {
  568.         $chckAccess $this->baseService->Role(11);
  569.         $response "";
  570.         if($chckAccess == 0){
  571.             $response "Vous n'avez pas accès à cette opération";
  572.         }else if ($chckAccess == 2){
  573.             $response "Vous n'avez pas accès à cette opération";
  574.         }
  575.         if( $response == ""){ 
  576.             $session = new Session;
  577.             $user $session->get('user');
  578.             $utilisateur $entityManager->getRepository(Utilisateur::class)->find($id);
  579.             if (!$utilisateur
  580.             {
  581.             
  582.                 $response 'Desolé, ce utilisateur est introuvable !';
  583.             } 
  584.             else 
  585.             {
  586.                 $utilisateurProfils $entityManager->getRepository(UtilisateurProfil::class)->findByIdUtil($utilisateur->getId());
  587.                 foreach($utilisateurProfils as $up)
  588.                 {
  589.                     $entityManager->remove($up);
  590.                 }
  591.                 // Remove the utilisateur
  592.                 $entityManager->remove($utilisateur);
  593.                 $entityManager->flush();
  594.                 if ($user->getId() == $id )
  595.                 {
  596.                     // Clear the user-related session data
  597.                     $session->remove('user');
  598.                     $session->set('isConnected',false);
  599.             
  600.                 }
  601.                 
  602.                 $response "ok";
  603.                 
  604.             }
  605.         }
  606.         return new Response($response);
  607.     }
  608.     #[Route('/')]
  609.     #[Route('/login'name'login')]
  610.     public function login(Request $requestEntityManagerInterface $entityManager,
  611.     UtilisateurRepository $UtilisateurRepository,BaseService $baseService): Response
  612.     {
  613.         
  614.         $session = new Session;
  615.         // Check if user is connected and exists in the session
  616.         $isConnected $session->get('isConnected');
  617.         $user $session->get('user');
  618.         if ($isConnected == true && $user) {
  619.             return $this->redirectToRoute('listBureaux'); // Redirect to 'listBureaux' route
  620.         }
  621.         $response "";
  622.         $email "";
  623.         $password "";
  624.         if($request->getMethod()=='POST')
  625.         {
  626.             $email=$request->get('email');
  627.             $password=$request->get('password');
  628.             if( trim($email) == "" || trim($password) == "" )
  629.             {
  630.                 $response "L'email ou le mot de passe est vide";
  631.             }
  632.             else
  633.             {
  634.                 $utilisateur $entityManager->getRepository(Utilisateur::class)->findOneBy(array("emaiUtil" => $email,"passUtil" => sha1($password)));
  635.                 if($utilisateur)
  636.                 {
  637.                     if($utilisateur->getActive() != 1)
  638.                     {
  639.                         $response="Votre compte n'est pas actif !";
  640.                     }else{
  641.                         $findBureau $entityManager->getRepository(BureauUtilisateur::class)->findBy(['idUtil'=>$utilisateur->getId()]);
  642.                         if($findBureau || $utilisateur->getTypeUtil() == 0){
  643.                             // Store user data in the session
  644.                             $session->set('user'$utilisateur);
  645.                             $session->set('isConnected'true);
  646.         
  647.                             $bureaux $UtilisateurRepository->getUserBureaux($utilisateur->getId());
  648.                             $allBureaux $entityManager->getRepository(Bureau::class)->findByEtatBure(1);
  649.                             $session->set('allBureaux'$allBureaux);
  650.         
  651.                             if($bureaux)
  652.                             {
  653.                                 $session->set('bureaux'$bureaux);
  654.                                 $session->set('bureauSelected'$bureaux[0]['id']);    
  655.                             }
  656.                             else
  657.                             {
  658.                                 $session->set('bureauSelected'0);    
  659.                             }
  660.                             $bureauSelected $session->get('bureauSelected');
  661.                             $baseService->addLogAction($utilisateur->getId(),'Connexion',$bureauSelected);
  662.                             $utilisateur->setLastConn(new \DateTime());
  663.                             $baseService->verifierNotification();
  664.                             return $this->redirectToRoute('dashboard'); // Replace 'dashboard_route' with your actual route name
  665.                         }else{
  666.                             $response="Votre compte n'est pas accessible pour le travail !";
  667.                         }
  668.                     }
  669.                 }
  670.                 else
  671.                 {
  672.                     $response "L'email ou le mot de passe est incorrect";
  673.                 }
  674.             }
  675.         }
  676.         
  677.         return $this->render('utilisateur/login.html.twig', [
  678.             'controller_name' => 'UtilisateurController',
  679.             'response' => $response
  680.         ]);
  681.     }
  682.     #[Route('/logout'name'logout')]
  683.     public function logout(Request $requestEntityManagerInterface $entityManager,BaseService $baseService): Response
  684.     {
  685.         $session = new Session;
  686.         $bureauSelected $session->get('bureauSelected');
  687.         $user $session->get('user');
  688.         $baseService->addLogAction($user->getId(),'Connexion',$bureauSelected);
  689.         // Clear the user-related session data
  690.         $session->remove('user');
  691.         $session->set('isConnected',false);
  692.         // Redirect to the login page
  693.         return $this->redirectToRoute('login'); // Replace 'login' with your actual login route name
  694.     }
  695.     
  696.     #[Route('/chnagerMotDePasse/'name'chnagerMotDePasse')]
  697.     public function chnagerMotDePasse(Request $requestEntityManagerInterface $entityManager,BaseService $baseService): Response
  698.     {
  699.         $session = new Session;
  700.         $user $session->get('user');
  701.         $bureauSelected $session->get('bureauSelected');
  702.         $response '';
  703.         $chckAccess $this->baseService->Role(94);
  704.         if($chckAccess == 0){
  705.             $response "Vous n'avez pas accès à cette opération";
  706.         }else if ($chckAccess == 2){
  707.             $response "Vous n'avez pas accès à cette opération";
  708.         }
  709.         if( $response == ""){
  710.             $id $request->get('id');
  711.             $ancienPassword $request->get('ancienPassword');
  712.             $password $request->get('password');
  713.             $confirmPassword $request->get('confirmPassword');
  714.             $utilisateur $entityManager->getRepository(Utilisateur::class)->find($id);
  715.     
  716.             if (!$utilisateur
  717.             {
  718.                 $response "Désolé, ce utilisateur n'a pas été trouvé !";
  719.             }
  720.             else if(sha1($ancienPassword) != $utilisateur->getPassutil() )
  721.             {
  722.                 $response 'L’ancien mot de passe saisi est incorrect. Veuillez réessayer.';
  723.             }
  724.             else if($password == "" || $password == null)
  725.             {
  726.                 $response 'Désolé, le champ du mot de passe est vide. Veuillez le renseigner !';
  727.             }
  728.             else if(strlen($password) < 6)
  729.             {
  730.                 $response 'Désolé, le mot de passe doit contenir plus de 6 caractères !';
  731.             }
  732.             else if($password != $confirmPassword)
  733.             {
  734.                 $response 'Désolé, la confirmation du mot de passe ne correspond pas au mot de passe saisi. Veuillez vérifier et réessayer';
  735.             }
  736.             else if($password == $utilisateur->getPassutil())
  737.             {
  738.                 $response "Désolé, veuillez choisir un nouveau mot de passe différent de l'ancien pour des raisons de sécurité.";
  739.             } 
  740.             else 
  741.             {
  742.     
  743.     
  744.                 // Remove the utilisateur
  745.                 $utilisateur->setPassUtil(sha1($password));
  746.                 $entityManager->flush();
  747.                 $baseService->addLogAction($user->getId(),'Modifier un mot de passe utilisateur',$bureauSelected);
  748.     
  749.                 $response "ok";
  750.                 
  751.             }
  752.         }
  753.         return new Response($response);
  754.     }
  755.     #[Route('/chnagerBureau/'name'chnagerBureau')]
  756.     public function chnagerBureau(Request $requestEntityManagerInterface $entityManager,BaseService $baseService): Response
  757.     {
  758.         $session = new Session;
  759.         // Check if user is connected and exists in the session
  760.         $isConnected $session->get('isConnected');
  761.         $user $session->get('user');
  762.         $response '';
  763.         $id $request->get('id');
  764.         $session->set('bureauSelected'$id);
  765.         $response 'ok';
  766.         $baseService->verifierNotification();
  767.         $baseService->addLogAction($user->getId(),'Connexion',$id);
  768.         return new Response($response);
  769.     }
  770.     #[Route('/redirectToNotif/'name'redirectToNotif')]
  771.     public function redirectToNotif(Request $requestEntityManagerInterface $entityManager,BaseService $baseService): Response
  772.     {
  773.         $session = new Session;
  774.         // Check if user is connected and exists in the session
  775.         $isConnected $session->get('isConnected');
  776.         $user $session->get('user');
  777.         $response '';
  778.         $id $request->get('id');
  779.         $notif $entityManager->getRepository(Notifications::class)->find($id);
  780.         $notif->setEtat(0);
  781.         $entityManager->flush();
  782.         if($notif->getType() == 1){
  783.             $response '/taches';
  784.         }else if($notif->getType() == 2){
  785.             $response '/listMissions?tab=1';
  786.         }else if($notif->getType() == 3){
  787.             $fact1 $entityManager->getRepository(Facture::class)->find($notif->getIdObject());
  788.             
  789.             $response '/viewFacture?id='.$fact1->getId();
  790.         }else if($notif->getType() == 4){
  791.             $fact $entityManager->getRepository(FactureFournisseur::class)->find($notif->getIdObject());
  792.             $response '/assets/images/archive/FactureFournisseur/'.$fact->getImagFacr();
  793.         }
  794.         $baseService->verifierNotification();
  795.         return new Response($response);
  796.     }
  797.     #[Route('/isShowNotif/'name'isShowNotif')]
  798.     public function isShowNotif(Request $requestEntityManagerInterface $entityManager,BaseService $baseService): Response
  799.     {
  800.         $session = new Session;
  801.         // Check if user is connected and exists in the session
  802.         $isConnected $session->get('isConnected');
  803.         $user $session->get('user');
  804.         $response '';
  805.         $id $request->get('id');
  806.         $listeNotif $session->get('notification');
  807.         for ($i=0$i $listeNotif$i++) { 
  808.             $baseService->updateStatusNotif($listeNotif[$i]['id']);
  809.         }
  810.         $baseService->verifierNotification();
  811.         return new Response($response);
  812.     }
  813.     
  814.     
  815.     #[Route('/logsUtilisateurs')]
  816.     public function logsUtilisateurs(Request $request,UtilisateurRepository $userRepo ,EntityManagerInterface $entityManager,BaseService $baseService,
  817.     MarcheRepository $marcheRepository): Response
  818.     {
  819.         $chckAccess $this->baseService->Role(7);
  820.         if($chckAccess == 0){
  821.             return $this->redirectToRoute('login');
  822.         }else if ($chckAccess == 2){
  823.             return $this->redirectToRoute('infoUtilisateur');
  824.         }
  825.         $session = new Session;
  826.         $bureauSelected $session->get('bureauSelected');
  827.         $currentDate = new \DateTime();
  828.         $date_debut $currentDate->format('Y-m-d');
  829.         $date_fin $currentDate->format('Y-m-d');
  830.         $marc 0;
  831.         $user 0;
  832.         $logs $userRepo->getLogs($bureauSelected $date_debut $date_fin $marc $user);
  833.         
  834.         if($bureauSelected == 0){
  835.             $marche $entityManager->getRepository(Marche::class)->findAll();
  836.             $users $entityManager->getRepository(Utilisateur::class)->findAll();
  837.         }else{
  838.             //$marche = $entityManager->getRepository(Marche::class)->findBy(['idBure'=>$bureauSelected]);
  839.          
  840.             $marche $marcheRepository->getMarches($bureauSelected);
  841.             $users $userRepo->getBureauUsers($bureauSelected);
  842.         }
  843.         if($request->getMethod() == 'POST')
  844.         {
  845.             $date_debut $request->get('date_debut');
  846.             $date_fin $request->get('date_fin');
  847.             $marc $request->get('idMarche');
  848.             $user $request->get('idUtilisateurs');
  849.             $logs $userRepo->getLogs($bureauSelected $date_debut $date_fin $marc $user);
  850.         }
  851.         //dd($logs);
  852.         return $this->render('utilisateur/logs.html.twig', [
  853.             'controller_name' => 'UtilisateurController',
  854.             'logs'=>$logs,
  855.             'marche'=>$marche,
  856.             'users'=>$users,
  857.             'date_debut'=>$date_debut,
  858.             'date_fin'=>$date_fin,
  859.             'user'=>$user,
  860.             'marc'=>$marc,
  861.         ]);
  862.     }
  863.     #[Route('/infoUtilisateur'name'infoUtilisateur')]
  864.     public function InfoUtilisateur(Request $requestEntityManagerInterface $entityManager,ValidateService $validateService,BaseService $baseService): Response
  865.     {
  866.         $session = new Session;
  867.         $user $session->get('user');
  868.         if ($user) {
  869.             $id $user->getId();
  870.         }
  871.         $response '';
  872.         $dateCrea = new \DateTime();
  873.         $user $entityManager->getRepository(Utilisateur::class)->find($id);
  874.         $profils $entityManager->getRepository(Profil::class)->findAll();
  875.         $roles $entityManager->getRepository(Role::class)->findAll();
  876.         $utilisateurProfil $entityManager->getRepository(UtilisateurProfil::class)->findByIdUtil($id);
  877.         return $this->render('utilisateur/infoUtilisateur.html.twig', [
  878.             'controller_name' => 'UtilisateurController',
  879.             'utilisateur' => $user,
  880.             'response' => $response,
  881.             'profils' => $profils,
  882.             'utilisateurProfil' => $utilisateurProfil,
  883.             'roles' => $roles
  884.             
  885.         ]);
  886.     }
  887.     #[Route('/pointage'name'pointage')]
  888.     public function pointage(Request $request BaseService $baseService PointageUserRepository $PointageUserRepository): Response
  889.     {
  890.         $chckAccess $this->baseService->Role(128);
  891.         if($chckAccess == 0){
  892.             return $this->redirectToRoute('login');
  893.         }else if ($chckAccess == 2){
  894.             return $this->redirectToRoute('infoUtilisateur');
  895.         }
  896.         $response "";
  897.         $currentDate = new \DateTime();
  898.         $session = new Session;
  899.         $bureauSelected $session->get('bureauSelected');
  900.         $currentDate->modify('first day of this month');
  901.         $date_debut $currentDate->format('Y-m-d');
  902.         $currentDate->modify('last day of this month');
  903.         $date_fin $currentDate->format('Y-m-d');
  904.         $year date('Y');
  905.         $month date('m');
  906.         // Create a DateTime object for the first day of the specified month and year
  907.         $firstDay = new \DateTime("$year-$month-01");
  908.         // Get the last day of the month by modifying the first day
  909.         $lastDay = clone $firstDay;
  910.         $lastDay->modify('last day of this month');
  911.         // Format the dates as strings in 'Y-m-d' format
  912.         $dateDay date('Y-m-d');
  913.         $date_debut $dateDay ;
  914.         $date_fin $dateDay;
  915.         $listPointage $PointageUserRepository->workTimeListeByDate($date_debut $date_fin);
  916.         if($request->getMethod() == 'POST'){
  917.             $date_debut $request->get("date_debut");
  918.             $date_fin $request->get("date_fin");
  919.             if($date_fin $date_debut){
  920.                 $response="Veuillez vérifier date saisie !!";
  921.                 $currentDate->modify('first day of this month');
  922.                 $date_debut $currentDate->format('Y-m-d');
  923.                 $currentDate->modify('last day of this month');
  924.                 $date_fin $currentDate->format('Y-m-d');
  925.             }else{
  926.                 $listPointage $PointageUserRepository->workTimeListeByDate($date_debut $date_fin);
  927.             }
  928.         }
  929.         return $this->render('utilisateur/pointage.html.twig', [
  930.             'controller_name' => 'UtilisateurController',
  931.             'date_debut' => $date_debut,
  932.             'date_fin' => $date_fin,
  933.             'response'=>$response,
  934.             'pointage'=>$listPointage,
  935.             'dateDay'=>$dateDay
  936.         ]);
  937.     }
  938.     #[Route('/workPointageBackOffice'name'workPointageBackOffice')]
  939.     public function workPointageBackOffice(Request $requestEntityManagerInterface $entityManager,PointageUserRepository $PointageUserRepository): Response
  940.     {
  941.         $session = new Session;
  942.         // Check if user is connected and exists in the session
  943.         $isConnected $session->get('isConnected');
  944.         $user $session->get('user');
  945.         $response '';
  946.         $dateDay date('Y-m-d');
  947.         $idUser $request->get('idUser');
  948.         $data $PointageUserRepository->workTimeListeByUser($dateDay $idUser);
  949.         return new JsonResponse(['data' => $data]);
  950.     }
  951.     #[Route('/deletePointage/{id}'name'deletePointage')]
  952.     public function deletePointage(Request $request$id EntityManagerInterface $entityManager,PointageUserRepository $PointageUserRepository): Response
  953.     {
  954.         $session = new Session;
  955.         // Check if user is connected and exists in the session
  956.         $isConnected $session->get('isConnected');
  957.         $user $session->get('user');
  958.         $response '';
  959.         $dateDay date('Y-m-d');
  960.         $pointageUser $entityManager->getRepository(PointageUser::class)->find($id);
  961.         if($pointageUser->getIdUser() == $user->getId() || $user->getTypeUtil() == ){
  962.             if($pointageUser){
  963.                 $result $PointageUserRepository->checkForDeletePointage($pointageUser->getIdUser() , $pointageUser->getTypePointage());
  964.                 if($result == "OK"){
  965.                     $entityManager->remove($pointageUser);
  966.                     $date \DateTime::createFromFormat('Y-m-d H:i:s'$dateDay'00:00:00');
  967.                     $time_work $entityManager->getRepository(TimeWork::class)->findOneBy(['date'=>$date'id_user'=>$pointageUser->getIdUser()]);
  968.                     if($pointageUser->getTypePointage() == 4){
  969.                         $time_work->setTime(00);
  970.                     }else if ($pointageUser->getTypePointage() == 1){
  971.                         $entityManager->remove($time_work);
  972.                     }
  973.                     $entityManager->flush();
  974.                     $response "OK"
  975.                 }else{
  976.                     $response $result;
  977.                 }
  978.             }
  979.         }else{
  980.             $response 'Vous n\'êtes pas le pointeur !';
  981.         }
  982.         return new JsonResponse(['response' => $response]);
  983.     }
  984.     
  985. }