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