src/Controller/Utilisateurs/UtilisateurController.php line 650

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