src/Controller/Salarie/SalarienoactiverController.php line 71

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Salarie;
  3. use App\Entity\Diplome;
  4. use App\Entity\Pbareme;
  5. use App\Entity\PDossier;
  6. use App\Entity\Pemploye;
  7. use App\Entity\LContract;
  8. use App\Entity\Pfonction;
  9. use App\Entity\PnatureContract;
  10. use App\Controller\ApiController;
  11. use App\Entity\PNaturesalarieCab;
  12. use App\Entity\LmatriculationCoti;
  13. use App\Entity\PsituationFamiliale;
  14. use Doctrine\Persistence\ManagerRegistry;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use Symfony\Component\HttpFoundation\JsonResponse;
  19. use Symfony\Component\Finder\Exception\AccessDeniedException;
  20. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  21. #[Route('/salarie/salarienoactiver')]
  22. class SalarienoactiverController extends AbstractController
  23. {
  24.     private $em;
  25.     private $api;
  26.     
  27.     public function __construct(ManagerRegistry $doctrineApiController $api)
  28.     {
  29.         $this->em $doctrine->getManager();
  30.         $this->api $api;
  31.         
  32.     }
  33.     #[Route('/'name'app_salarie_salarienoactiver')]
  34.     public function index(Request $request): Response
  35.     {
  36.         $operations $this->api->check($this->getUser(), 'app_salarie_salarie'$this->em$request);
  37.         if(!is_array($operations)) {
  38.             return $this->redirectToRoute('app_site');  
  39.         }elseif(count($operations) == 0) {
  40.             return $this->render('includes/404.html.twig');
  41.         }
  42.         $natureSalarieCabs $this->em->getRepository(PNaturesalarieCab::class)->findAll();
  43.         $situationFamiliales $this->em->getRepository(PsituationFamiliale::class)->findAll();
  44.         $fonctions $this->em->getRepository(Pfonction::class)->findAll();
  45.         // // $pemployes = $this->em->getRepository(Pemploye::class)->findBy(['active'=> 0]);
  46.         // $pemployes = $this->em->getRepository(Pemploye::class)->findEmployeesNotInLContract();
  47.         // // dd($pemployes);
  48.         $naturecontract $this->em->getRepository(PnatureContract::class)->findBy(['active' => true]);
  49.         $dossiers $this->em->getRepository(PDossier::class)->findBy(['active' => true]);
  50.         $pbaremes $this->em->getRepository(Pbareme::class)->findAll();
  51.         // $contract = $this->em->getRepository(LContract::class)->findBy(['active'=> 1]);
  52.         
  53.         return $this->render('salarie/salarienoactiver/index.html.twig', [
  54.             'operations' => $operations,
  55.             'natureSalarieCabs' => $natureSalarieCabs,
  56.             'situationFamiliales' => $situationFamiliales,
  57.             'fonctions' => $fonctions,
  58.             'dossiers' => $dossiers,
  59.             // 'pemployes' => $pemployes,
  60.             // 'contracts' => $contract,
  61.             'naturecontract' => $naturecontract,
  62.             'baremes' => $pbaremes,
  63.         ]);  
  64.     }
  65.     #[Route('/app_salarienoactive_list'name'app_salarienoactive_list'options: ['expose' => true])]
  66.     public function app_salarie_salarie_list(Request $request): Response
  67.     {
  68.         
  69.         $draw $request->query->get('draw');
  70.         $start $request->query->get('start') ?? 0;
  71.         $length $request->query->get('length') ?? 10;
  72.         $search $request->query->all('search')["value"];
  73.         $orderColumnIndex $request->query->all('order')[0]['column'];
  74.         $orderColumn $request->query->all("columns")[$orderColumnIndex]['name'];
  75.         $orderDir $request->query->all('order')[0]['dir'] ?? 'asc';
  76.         $dossier $request->getSession()->get('dossier');
  77.         // dd($dossier);
  78.         // $qb = $this->createQueryBuilder('pe');
  79.         $qb $this->em->createQueryBuilder();
  80.    
  81.         $subQuery $this->em->createQueryBuilder();
  82.         $subQuery
  83.             ->select('employe.id')
  84.             ->from('App\Entity\LContract''lcontract')
  85.             ->innerJoin('lcontract.employe''employe')
  86.             ->where('lcontract.active = 1');
  87.  
  88.     
  89.         // $qb
  90.         //     ->where($qb->expr()->notIn('pe.id', $subQuery->getDQL()))
  91.         //     ->orderBy('pe.id', 'ASC');
  92.     
  93.         // return $qb->getQuery()->getResult();
  94.         
  95.         // $queryBuilder = $this->em->createQueryBuilder()
  96.        $qb ->select('p.id as employe_id, p.email as nature, p.sexe as contract,p.cin, p.nom as nom, p.matricule as matricule , p.prenom')
  97.         ->from(Pemploye::class, 'p')   
  98.         // ->where('p.active = 0')
  99.         ->andWhere($qb->expr()->notIn('p.id'$subQuery->getDQL()))
  100.         ->orderBy('p.id''ASC');
  101.         if (!empty($search)) {
  102.             $qb->andWhere('(p.cin LIKE :search OR p.matricule LIKE :search OR  p.nom LIKE :search OR p.prenom LIKE :search)')
  103.                 ->setParameter('search'"%$search%");
  104.         }
  105.         if (!empty($orderColumn)) {
  106.             $qb->orderBy("$orderColumn"$orderDir);
  107.         }
  108.         // Paginate results
  109.         $qb->setFirstResult($start)
  110.             ->setMaxResults($length);
  111.         $results $qb->getQuery()->getResult();
  112.     
  113.         
  114.         // dd($results);
  115.         $totalRecords $this->em->createQueryBuilder()
  116.         ->select('COUNT(p.id)')
  117.         ->from(Pemploye::class, 'p')
  118.         // ->where('p.active = 1')
  119.         ->andWhere($qb->expr()->notIn('p.id'$subQuery->getDQL()))
  120.         ->getQuery()
  121.         ->getSingleScalarResult();
  122.         return new JsonResponse([
  123.             'draw' => $draw,
  124.             'recordsTotal' => $totalRecords,
  125.             'recordsFiltered' => $totalRecords,
  126.             'data' => $results,
  127.         ]);
  128.     }
  129. }