src/Controller/Parametre/UserController.php line 143

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Parametre;
  3. use App\Entity\Users;
  4. use App\Entity\PDossier;
  5. use App\Entity\UsModule;
  6. use App\Controller\ApiController;
  7. use App\Entity\PCounter;
  8. use App\Entity\PPiece;
  9. use App\Entity\UserOperationDossier;
  10. use App\Entity\UsOperation;
  11. use App\Entity\UsSousModule;
  12. use App\Service\CalculPaieService;
  13. use Doctrine\Persistence\ManagerRegistry;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\HttpFoundation\JsonResponse;
  18. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  19. #[Route('/parametre/user')]
  20. class UserController extends AbstractController
  21. {
  22.     private $em;
  23.     private $calculPaieService;
  24.     private $api;
  25.     public function __construct(ManagerRegistry $doctrineCalculPaieService $calculPaieServiceApiController $api)
  26.     {
  27.         $this->em $doctrine->getManager();
  28.         $this->calculPaieService $calculPaieService
  29.         $this->api $api
  30.     }
  31.     #[Route('/'name'app_parametre_user')]
  32.     public function index(Request $request): Response
  33.     {
  34.         $operations $this->api->check($this->getUser(), 'app_parametre_user'$this->em$request);
  35.         
  36.         if(!is_array($operations)) {
  37.             return $this->redirectToRoute('app_site');  
  38.         }elseif(count($operations) == 0) {
  39.             return $this->render('includes/404.html.twig');
  40.         }
  41.         $modules $this->em->getRepository(UsModule::class)->findAll();
  42.         $dossiers $this->em->getRepository(PDossier::class)->findAll();
  43.         return $this->render('parametre/user/index.html.twig', [
  44.             'operations' => $operations,
  45.             'modules' => $modules,
  46.             'dossiers' => $dossiers,
  47.         ]);
  48.     }
  49.     #[Route('/app_parametre_user_list'name'app_parametre_user_list'options:['expose' => true])]
  50.     public function app_parametre_user_list(Request $request): Response
  51.     {
  52.         
  53.         $draw $request->query->get('draw');
  54.         $start $request->query->get('start') ?? 0;
  55.         $length $request->query->get('length') ?? 10;
  56.         $search $request->query->all('search')["value"];
  57.         $orderColumnIndex $request->query->all('order')[0]['column'];
  58.         $orderColumn $request->query->all("columns")[$orderColumnIndex]['name'];
  59.         $orderDir $request->query->all('order')[0]['dir'] ?? 'asc';
  60.         $operations $this->api->check($this->getUser(), 'app_parametre_user'$this->em$request);
  61.         $queryBuilderInitital $this->em->createQueryBuilder()
  62.             ->from(Users::class, 'u')
  63.         ;
  64.         $records = clone $queryBuilderInitital;
  65.         $records->select('u.nom, u.id, u.prenom, u.email, u.roles, u.username, u.enable');
  66.         if (!empty($search)) {
  67.             $records->andWhere('(u.nom LIKE :search OR u.prenom LIKE :search OR u.email LIKE :search OR u.username LIKE :search)')
  68.                 ->setParameter('search'"%$search%");
  69.         }
  70.         if (!empty($orderColumn)) {
  71.             $records->orderBy("$orderColumn"$orderDir);
  72.         }
  73.         $filteredRecords count($records->getQuery()->getResult());
  74.         // Paginate results
  75.         $records->setFirstResult($start)
  76.             ->setMaxResults($length);
  77.         $results $records->getQuery()->getResult();
  78.         // dd($results);
  79.         foreach ($results as $key => $user) {
  80.             $results[$key]['actions'] = $this->renderView('parametre/user/pages/access.html.twig', ['operations' => $operations'id' => $user['id']]);
  81.             $results[$key]['roles'] = implode(","$user['roles']);
  82.         }
  83.         
  84.         $totalRecordsQuery = clone $queryBuilderInitital;
  85.         $totalRecords $totalRecordsQuery->select('COUNT(u.id)')
  86.         ->getQuery()
  87.         ->getSingleScalarResult();
  88.         
  89.         return new JsonResponse([
  90.             'draw' => $draw,
  91.             'recordsTotal' => $totalRecords,
  92.             'recordsFiltered' => $filteredRecords,
  93.             'data' => $results,
  94.         ]);
  95.     }
  96.     #[Route('/app_parametre_user_activer'name'app_parametre_user_activer'options: ['expose' => true])]
  97.     public function app_parametre_user_activer(Request $request): Response
  98.     {
  99.         $usersIds json_decode($request->get('usersIds'));
  100.         // dd($bordereauIds);
  101.         foreach ($usersIds as $key => $usersId) {
  102.             $user $this->em->getRepository(Users::class)->find($usersId);
  103.             $user->setEnable(true);
  104.         }
  105.         $this->em->flush();
  106.         return new JsonResponse("Bien enregistrer");
  107.     }
  108.     #[Route('/app_parametre_user_desactiver'name'app_parametre_user_desactiver'options: ['expose' => true])]
  109.     public function app_parametre_user_desactiver(Request $request): Response
  110.     {
  111.         $usersIds json_decode($request->get('usersIds'));
  112.         // dd($bordereauIds);
  113.         foreach ($usersIds as $key => $usersId) {
  114.             $user $this->em->getRepository(Users::class)->find($usersId);
  115.             $user->setEnable(false);
  116.         }
  117.         $this->em->flush();
  118.         return new JsonResponse("Bien enregistrer");
  119.     }
  120.     #[Route('/app_parametre_user_operation/{operation}/{userId}/{dossierId}/{type}'name'app_parametre_user_operation'options: ['expose' => true])]
  121.     public function app_parametre_user_operation(Request $requestUsOperation $operationUsers $userIdPDossier $dossierId$type): Response
  122.     {
  123.         if($type == 'add') {
  124.             $userOperationDossier = new UserOperationDossier();
  125.             $userOperationDossier->setUser($userId);
  126.             $userOperationDossier->setDossier($dossierId);
  127.             $userOperationDossier->setOperation($operation);
  128.             $this->em->persist($userOperationDossier);
  129.         } else {
  130.             $userOperationDossier $this->em->getRepository(UserOperationDossier::class)->findOneBy(['user' => $userId'dossier' => $dossierId'operation' => $operation]);
  131.             if($userOperationDossier) {
  132.                 $this->em->remove($userOperationDossier);
  133.             }
  134.         }
  135.         
  136.         $this->em->flush();
  137.         return new JsonResponse("Bien enregistrer");
  138.     }
  139.     #[Route('/app_parametre_user_sousmodule/{sous_module}/{userId}/{dossierId}/{type}'name'app_parametre_user_sousmodule'options: ['expose' => true])]
  140.     public function app_parametre_user_sousmodule(Request $requestUsSousModule $sous_moduleUsers $userIdPDossier $dossierId$type): Response
  141.     {
  142.         
  143.         if($type == 'add') {
  144.             foreach ($sous_module->getOperations() as $key => $operation) {
  145.                 $userOperationDossier = new UserOperationDossier();
  146.                 $userOperationDossier->setUser($userId);
  147.                 $userOperationDossier->setDossier($dossierId);
  148.                 $userOperationDossier->setOperation($operation);
  149.     
  150.                 $this->em->persist($userOperationDossier);
  151.             }
  152.         } else {
  153.             foreach ($sous_module->getOperations() as $key => $operation) {
  154.                 $userOperationDossier $this->em->getRepository(UserOperationDossier::class)->findOneBy(['user' => $userId'dossier' => $dossierId'operation' => $operation]);
  155.                 if($userOperationDossier) {
  156.                     $this->em->remove($userOperationDossier);
  157.                 }
  158.             }
  159.         }
  160.         
  161.         $this->em->flush();
  162.         return new JsonResponse("Bien enregistrer");
  163.     }
  164.     #[Route('/app_parametre_user_module/{module}/{userId}/{dossierId}/{type}'name'app_parametre_user_module'options: ['expose' => true])]
  165.     public function app_parametre_user_module(Request $requestUsModule $moduleUsers $userIdPDossier $dossierId$type): Response
  166.     {
  167.         if($type == 'add') {
  168.             foreach ($module->getSousModules() as $key => $sous_module) {
  169.                 foreach ($sous_module->getOperations() as $key => $operation) {
  170.                     $userOperationDossier = new UserOperationDossier();
  171.                     $userOperationDossier->setUser($userId);
  172.                     $userOperationDossier->setDossier($dossierId);
  173.                     $userOperationDossier->setOperation($operation);
  174.         
  175.                     $this->em->persist($userOperationDossier);
  176.                 }
  177.             }
  178.         } else {
  179.             foreach ($module->getSousModules() as $key => $sous_module) {
  180.                 foreach ($sous_module->getOperations() as $key => $operation) {
  181.                     $userOperationDossier $this->em->getRepository(UserOperationDossier::class)->findOneBy(['user' => $userId'dossier' => $dossierId'operation' => $operation]);
  182.                     if($userOperationDossier) {
  183.                         $this->em->remove($userOperationDossier);
  184.                     }
  185.                 }
  186.             }
  187.         }
  188.         $this->em->flush();
  189.         return new JsonResponse("Bien enregistrer");
  190.     }
  191.     #[Route('/app_parametre_user_all/{userId}/{dossierId}/{type}'name'app_parametre_user_all'options: ['expose' => true])]
  192.     public function app_parametre_user_all(Request $request,  Users $userIdPDossier $dossierId$type): Response
  193.     {
  194.         $modules $this->em->getRepository(UsModule::class)->findAll();
  195.         if($type == 'add') {
  196.             foreach ($modules as $key => $module) {
  197.                 foreach ($module->getSousModules() as $key => $sous_module) {
  198.                     foreach ($sous_module->getOperations() as $key => $operation) {
  199.                         $userOperationDossier = new UserOperationDossier();
  200.                         $userOperationDossier->setUser($userId);
  201.                         $userOperationDossier->setDossier($dossierId);
  202.                         $userOperationDossier->setOperation($operation);
  203.             
  204.                         $this->em->persist($userOperationDossier);
  205.                     }
  206.                 }
  207.             }
  208.         } else {
  209.             foreach ($modules as $key => $module) {
  210.                 foreach ($module->getSousModules() as $key => $sous_module) {
  211.                     foreach ($sous_module->getOperations() as $key => $operation) {
  212.                         $userOperationDossier $this->em->getRepository(UserOperationDossier::class)->findOneBy(['user' => $userId'dossier' => $dossierId'operation' => $operation]);
  213.                         if($userOperationDossier) {
  214.                             $this->em->remove($userOperationDossier);
  215.                         }
  216.                     }
  217.                 }
  218.             }
  219.         }
  220.         $this->em->flush();
  221.         return new JsonResponse("Bien enregistrer");
  222.     }
  223.     #[Route('/getoperations/{user}/{dossier}'name'app_parametre_user_operations'options: ['expose' => true])]
  224.     public function operations(Users $userPDossier $dossier): Response
  225.     {
  226.        $ids = [];
  227.        $userOperationDossiers $this->em->getRepository(UserOperationDossier::class)->findBy(['user' => $user'dossier' => $dossier]);
  228.        foreach ($userOperationDossiers as $userOperationDossier) {
  229.            array_push($ids, ["id" => $userOperationDossier->getOperation()->getId()]);
  230.        }
  231.        return new JsonResponse($ids);
  232.     }
  233.     #[Route('/app_parametre_user_all_user'name'app_parametre_user_all_user'options: ['expose' => true])]
  234.     public function app_parametre_user_all_user(Request $request): Response
  235.     {
  236.         $modules $this->em->getRepository(UsModule::class)->findBy(['id' => [71]]);
  237.         $dossiers $this->em->getRepository(PDossier::class)->findBy(['active' => true]);
  238.         $users $this->em->getRepository(Users::class)->findBy(['id' => [10]]);
  239.         // if($type == 'add') {
  240.         foreach ($users as $key => $user) {
  241.             foreach ($dossiers as $key => $dossier) {
  242.                 foreach ($modules as $key => $module) {
  243.                     foreach ($module->getSousModules() as $key => $sous_module) {
  244.                         foreach ($sous_module->getOperations() as $key => $operation) {
  245.                             if($operation->getId() != 22 and $module->getId() == 1) {
  246.                                 continue;
  247.                             }
  248.                             $userOperationDossier $this->em->getRepository(UserOperationDossier::class)->findBy(['user' => $user'dossier' => $dossier'operation' => $operation]);
  249.                             if(!$userOperationDossier) {
  250.                                 $userOperationDossier = new UserOperationDossier();
  251.                                 $userOperationDossier->setUser($user);
  252.                                 $userOperationDossier->setDossier($dossier);
  253.                                 $userOperationDossier->setOperation($operation);
  254.                     
  255.                                 $this->em->persist($userOperationDossier);
  256.                             }
  257.                         }
  258.                     }
  259.                 }
  260.                 # code...
  261.             }
  262.         }
  263.        
  264.         $this->em->flush();
  265.         return new JsonResponse("Bien enregistrer");
  266.     }
  267.     #[Route('/app_parametre_generer_piece'name'app_parametre_generer_piece'options: ['expose' => true])]
  268.     public function app_parametre_generer_piece(Request $request): Response
  269.     {
  270.        
  271.         $dossiers $this->em->getRepository(PDossier::class)->findBy(['active' => true]);
  272.         $annees = [24,25,26,27282930];
  273.         
  274.         foreach ($dossiers as $key => $dossier) {
  275.             $pieces $this->em->getRepository(PPiece::class)->findAll();
  276.             foreach ($pieces as $key => $piece) {
  277.                 foreach ($annees as $key => $annee) {
  278.                     $counter $this->em->getRepository(PCounter::class)->findOneBy(['dossier' => $dossier'piece' => $piece'annee' => $annee]);
  279.                     if(!$counter) {
  280.                         $counter = new PCounter();
  281.                         $counter->setDossier($dossier);
  282.                         $counter->setPiece($piece);
  283.                         $counter->setAnnee($annee);
  284.                         $counter->setCount(0);
  285.                         $counter->setDossierAbreviation($dossier->getAbreviation());
  286.                         $this->em->persist($counter);
  287.                     } else {
  288.                         $counter->setDossierAbreviation($dossier->getAbreviation());
  289.                     }
  290.                 }
  291.             }
  292.         }
  293.     
  294.        
  295.         $this->em->flush();
  296.         return new JsonResponse("Bien enregistrer");
  297.     }
  298.     #[Route('/user_dossier'name'user_dossier'options: ['expose' => true])]
  299.     public function user_dossier(Request $request): Response
  300.     {
  301.        
  302.         $dossiers $this->em->getRepository(PDossier::class)->findBy(['active' => true]);
  303.         $operations $this->em->getRepository(UsOperation::class)->findBy(['id' => [6566]]);
  304.         foreach ($dossiers as $key => $dossier) {
  305.            
  306.             $user $this->em->getRepository(Users::class)->findOneBy(['dossierResponsable' => $dossier]);
  307.             foreach ($operations as $key => $operation) {
  308.                 $userOperationDossier $this->em->getRepository(UserOperationDossier::class)->findBy(['user' => $user'dossier' => $dossier'operation' => $operation]);
  309.                 if(!$userOperationDossier) {
  310.                     $userOperationDossier = new UserOperationDossier();
  311.                     $userOperationDossier->setUser($user);
  312.                     $userOperationDossier->setDossier($dossier);
  313.                     $userOperationDossier->setOperation($operation);
  314.         
  315.                     $this->em->persist($userOperationDossier);
  316.                 }
  317.             }
  318.         }
  319.     
  320.        
  321.         $this->em->flush();
  322.         return new JsonResponse("Bien enregistrer");
  323.     }
  324. }