src/Controller/HomeController.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\PDossier;
  4. use App\Entity\Pemploye;
  5. use App\Entity\PNotification;
  6. use App\Entity\UsModule;
  7. use App\Entity\UsSousModule;
  8. use App\Entity\UserOperationDossier;
  9. use App\Entity\Users;
  10. use Doctrine\Persistence\ManagerRegistry;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Notifier\Notification\Notification;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Symfony\Component\HttpFoundation\JsonResponse;
  16. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  17. class HomeController extends AbstractController
  18. {
  19.     private $em;
  20.     public function __construct(ManagerRegistry $doctrine)
  21.     {
  22.         $this->em $doctrine->getManager();
  23.         
  24.     }
  25.     #[Route('/phpinfo'name'phpinfo'options:['expose' => true])]
  26.     public function phpinfo(Request $request ManagerRegistry $doctrine): Response
  27.     {
  28.         ob_start();
  29.         phpinfo();
  30.         $phpinfo ob_get_clean();
  31.         return new Response($phpinfo);
  32.       
  33.     }
  34.     
  35.     #[Route('/'name'app_site'options:['expose' => true])]
  36.     public function site(Request $request ManagerRegistry $doctrine): Response
  37.     {
  38.         // dd('amine');
  39.         // dd($this->getUser());
  40.         if($this->getUser() instanceof Pemploye) {
  41.             if($this->getUser()->isIsFirstLogin()) {
  42.                 return $this->redirectToRoute('app_register_changepassword');
  43.             }
  44.             return $this->redirectToRoute('app_espace_personnel_demande_conge');
  45.         }
  46.         if(in_array('ROLE_ADMIN'$this->getUser()->getRoles())){
  47.             $dossiers $doctrine->getManager()->getRepository(PDossier::class)->findAll();
  48.         }
  49.         else if(in_array('ROLE_RESPONSABLE'$this->getUser()->getRoles())){
  50.             return $this->redirectToRoute('app_redirect'); 
  51.         } else {
  52.             $dossiers $doctrine->getManager()->getRepository(UserOperationDossier::class)->finddossier($this->getUser()->getId());        
  53.         }
  54.         // if($request->getSession()->get('dossier')) {
  55.         //     // dd($request->getSession()->get('dossier'));
  56.         //     $request->getSession()->remove('dossier');
  57.         //     return $this->redirectToRoute('app_logout');
  58.         // }
  59.         // dd('amine');
  60.        
  61.         return $this->render('security/site.html.twig', [
  62.             'dossiers' => $dossiers
  63.         ]);
  64.       
  65.     }
  66.     #[Route('/404'name'app_404'options:['expose' => true])]
  67.     public function app_404(Request $request ManagerRegistry $doctrine): Response
  68.     {
  69.        dd('vous ne pouvez pas change le site!');
  70.     }
  71.     #[Route('/app_view_all'name'app_view_all'options:['expose' => true])]
  72.     public function app_view_all(Request $request ManagerRegistry $doctrine): Response
  73.     {
  74.        $notifications $doctrine->getManager()->getRepository(PNotification::class)->findBy(['user' => $this->getUser(), 'seen' => false]);
  75.        foreach($notifications as $notification) {
  76.            $notification->setSeen(true);
  77.        }
  78.        $doctrine->getManager()->flush();
  79.        return new JsonResponse('ok');
  80.     }
  81.     #[Route('/redirect'name'app_redirect'options:['expose' => true])]
  82.     public function redirectsite(Request $request): Response
  83.     {
  84.         if(in_array('ROLE_RESPONSABLE'$this->getUser()->getRoles())){
  85.             $user $this->em->getRepository(Users::class)->find($this->getUser());
  86.             $dossier $user->getDossierResponsable();
  87.         } else {
  88.             $dossier $this->em->getRepository(PDossier::class)->find($request->get('site_id'));
  89.         }
  90.         $request->getSession()->set('dossier'$dossier);
  91.         if(in_array('ROLE_ADMIN'$this->getUser()->getRoles())){
  92.             $sousModules $this->em->getRepository(UsSousModule::class)->findAll();
  93.         } else {
  94.             $sousModules $this->em->getRepository(UsSousModule::class)->findByUserOperations($this->getUser(), $dossier);
  95.         }
  96.         $modules $this->em->getRepository(UsModule::class)->getModuleBySousModule($sousModules);
  97.         $data = [];
  98.         // dd($sousModules);
  99.         foreach($modules as $module) {
  100.             $sousModuleArray = [];
  101.             foreach ($sousModules as $sousModule) {
  102.                 if($sousModule->getModule()->getId() == $module->getId()) {
  103.                     $sousModuleArray[] = $sousModule;
  104.                 }
  105.             }
  106.             $data[] = [
  107.                 'module' => $module,
  108.                 'sousModule' => $sousModuleArray
  109.             ];
  110.             
  111.         }
  112.         // dd($data);
  113.         $request->getSession()->set('modules'$data);
  114.         if(count($sousModules) < 1) {
  115.             die("Vous n'avez aucun prévilege pour continue cette operation. veuillez contacter votre chef!");
  116.         } 
  117.         $redirectUrl =  $sousModules[0]->getlink();
  118.         if($this->isGranted('ROLE_RESPONSABLE')){
  119.             return $this->redirectToRoute($redirectUrl); 
  120.         }
  121.         
  122.         return new JsonResponse(['redirect_url' => $redirectUrl]);
  123.     }
  124. }