src/Controller/bilanControllers/AnalyseSSTController.php line 178

Open in your IDE?
  1. <?php
  2. namespace App\Controller\bilanControllers;
  3. use App\Entity\bilan\Criticite;
  4. use App\Entity\bilan\Frequence;
  5. use App\Entity\bilan\Gravite;
  6. use App\Entity\bilan\Job;
  7. use App\Entity\bilan\Location;
  8. use App\Entity\bilan\Mission;
  9. use App\Entity\bilan\MOG;
  10. use App\Entity\bilan\SituationRisque;
  11. use App\Entity\bilan\Task;
  12. use App\Entity\bilan\Zone;
  13. use App\Entity\Processus;
  14. use App\Entity\User;
  15. use App\Repository\bilan\SituationRisqueRepository;
  16. use App\Repository\bilan\JobRepository;
  17. use App\Repository\bilan\TaskRepository;
  18. use App\Repository\Configuration\CompanyEntityRepository;
  19. use Doctrine\ORM\EntityManagerInterface;
  20. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  21. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  22. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  23. use Symfony\Component\HttpFoundation\JsonResponse;
  24. use Symfony\Component\HttpFoundation\Request;
  25. use Symfony\Component\HttpFoundation\Response;
  26. use Symfony\Component\HttpFoundation\StreamedResponse;
  27. use Symfony\Component\Routing\Annotation\Route;
  28. use App\Repository\ProcessusRepository;
  29. /**
  30.  * @Route("/analyseSST")
  31.  */
  32. class AnalyseSSTController extends AbstractController
  33. {
  34.     private ProcessusRepository $processusRepository;
  35.     private JobRepository $jobRepository;
  36.     private CompanyEntityRepository $companyEntityRepository;
  37.     public function __construct(ProcessusRepository $processusRepositoryJobRepository $jobRepositoryCompanyEntityRepository $companyEntityRepository)
  38.     {
  39.         $this->processusRepository $processusRepository;
  40.         $this->jobRepository $jobRepository;
  41.         $this->companyEntityRepository $companyEntityRepository;
  42.     }
  43.     private function getYearsList(): array
  44.     {
  45.         $currentYear = (int)date('Y');
  46.         $years = [];
  47.         for ($year $currentYear$year >= 2020$year--) {
  48.             $years[] = $year;
  49.         }
  50.         return $years;
  51.     }
  52.     /**
  53.      * @Route("/mission/{id}", name="analyseSST_mission_detail", methods={"GET"})
  54.      */
  55.     public function missionDetail(
  56.         Mission $mission,
  57.         TaskRepository $taskRepository,
  58.         EntityManagerInterface $em
  59.     ): Response {
  60.         $data $taskRepository->transformAllMision($mission);
  61.         // Group flat rows by task for easier template rendering
  62.         $grouped = [];
  63.         foreach ($data['data'] as $row) {
  64.             $taskId $row['idT'];
  65.             if (!isset($grouped[$taskId])) {
  66.                 $grouped[$taskId] = ['title' => $row['titleT'], 'rows' => []];
  67.             }
  68.             if ($row['idSR'] !== '') {
  69.                 $grouped[$taskId]['rows'][] = $row;
  70.             }
  71.         }
  72.         $frequences $em->getRepository(Frequence::class)->findBy([], ['note' => 'ASC']);
  73.         $gravites   $em->getRepository(Gravite::class)->findBy([], ['note' => 'ASC']);
  74.         $mogs       $em->getRepository(MOG::class)->findBy([], ['note' => 'ASC']);
  75.         return $this->render('bilanTemplates/analyse_sst/mission_detail.html.twig', [
  76.             'mission'   => $mission,
  77.             'grouped'   => $grouped,
  78.             'frequences' => $frequences,
  79.             'gravites'  => $gravites,
  80.             'mogs'      => $mogs,
  81.             'left_menu' => 'analyseSST',
  82.             'menu'      => 'evaluate',
  83.         ]);
  84.     }
  85.     /**
  86.      * @Route("/sr/{id}", name="analyseSST_sr_detail", methods={"GET"})
  87.      */
  88.     public function srDetail(SituationRisque $srEntityManagerInterface $em): Response
  89.     {
  90.         $criticite_array $em->getRepository(Criticite::class)->findBy([], ['valeur' => 'asc']);
  91.         $criticiteValue $sr->getCriticiteValue();
  92.         $criticite      '';
  93.         $criticite_color '#ccc';
  94.         if ($sr->getFrequence() && $sr->getGravite()) {
  95.             foreach ($criticite_array as $el) {
  96.                 if ($el->getType() === 'criticite' && $criticiteValue >= $el->getValeur()) {
  97.                     $criticite       $el->getLegende();
  98.                     $criticite_color $el->getCouleur();
  99.                 }
  100.             }
  101.         }
  102.         $rrValue  $sr->getRisqueResiduelValue();
  103.         $risqueR  '';
  104.         $rr_color '#ccc';
  105.         if ($sr->getFrequence() && $sr->getGravite() && $sr->getMog()) {
  106.             foreach ($criticite_array as $el) {
  107.                 if ($el->getType() === 'prevention' && $rrValue >= $el->getValeur()) {
  108.                     $risqueR  $el->getLegende();
  109.                     $rr_color $el->getCouleur();
  110.                 }
  111.             }
  112.         }
  113.         return $this->render('bilanTemplates/analyse_sst/sr_detail.html.twig', [
  114.             'sr'              => $sr,
  115.             'criticiteValue'  => $criticiteValue,
  116.             'criticite'       => $criticite,
  117.             'criticite_color' => $criticite_color,
  118.             'rrValue'         => $rrValue,
  119.             'risqueR'         => $risqueR,
  120.             'rr_color'        => $rr_color,
  121.             'left_menu'       => 'analyseSST',
  122.             'menu'            => 'evaluate',
  123.         ]);
  124.     }
  125.     /**
  126.      * @Route("/", name="analyseSST")
  127.      */
  128.     public function index(): Response
  129.     {
  130.         $entities $this->getUser()->getEntities();
  131.         $processus $this->processusRepository->findProcessusInternal();
  132.         $jobs $this->jobRepository->findByUserEntity();
  133.         $missions $this->getDoctrine()->getRepository(Mission::class)->findAll();
  134.         $locations $this->getDoctrine()->getRepository(Location::class)->findAll();
  135.         $zones $this->getDoctrine()->getRepository(Zone::class)->findAll();
  136.         $years $this->getYearsList();
  137.         $users $this->getDoctrine()->getRepository(User::class)->findBy([], ['lastname' => 'ASC']);
  138. // Filter users with 'evrp' in their modules
  139.         $usersWithEvrp array_filter($users, function(User $user) {
  140.             $modules $user->getModules() ?? [];
  141.             return in_array('Bilan SST'$modules);
  142.         });
  143.         $menu="evaluate";
  144.         $left_menu="analyseSST";
  145.         return $this->render('bilanTemplates/analyse_sst/index.html.twig', [
  146.             'menu' => $menu,
  147.             'left_menu' => $left_menu,
  148.             'processus' => $processus,
  149.             'users' => $usersWithEvrp,
  150.             'jobs' => $jobs,
  151.             'missions' => $missions,
  152.             'locations' => $locations,
  153.             'zones' => $zones,
  154.             'years' => $years,
  155.             'entities' => $entities,
  156.         ]);
  157.     }
  158.     /**
  159.      * @Route("/analyseSSTData", name="analyseSSTData", methods={"GET"})
  160.      */
  161.     public function analyseSSTData(Request $requestSituationRisqueRepository $situationRisqueRepository): Response
  162.     {
  163.         $field $request->query->get('field''job');
  164.         $draw = (int) $request->query->get('draw'1);
  165.         $start = (int) $request->query->get('start'0);
  166.         $length = (int) $request->query->get('length'11);
  167.         $searchValue $request->query->get('search')['value'] ?? '';
  168.         $filters = [
  169.             'user_entities' => $this->getUser()->getEntities()->toArray(),
  170.             'filter_entity' => $request->query->get('filter_entity'''),
  171.             'filter_processus' => $request->query->get('filter_processus'''),
  172.             'filter_responsible' => $request->query->get('filter_responsible'''),
  173.             'filter_year' => $request->query->get('filter_year'''),
  174.             'filter_criticite' => $request->query->get('filter_criticite'''),
  175.             'filter_risqueResiduel' => $request->query->get('filter_risqueResiduel'''),
  176.         ];
  177.         if ($field === 'job') {
  178.             $filters['filter_job'] = $request->query->get('filter_job''');
  179.             $filters['filter_mission'] = $request->query->get('filter_mission''');
  180.             $filters['filter_date'] = $request->query->get('filter_date''');
  181.             $filters['filter_task'] = $request->query->get('filter_task''');
  182.             $filters['filter_danger'] = $request->query->get('filter_danger''');
  183.             $filters['filter_risque'] = $request->query->get('filter_risque''');
  184.         } elseif ($field === 'location') {
  185.             $filters['filter_location'] = $request->query->get('filter_location''');
  186.             $filters['filter_zone'] = $request->query->get('filter_zone''');
  187.         }
  188.         $result $situationRisqueRepository->getServerSideData($field$start$length$searchValue$filters);
  189.         return new JsonResponse([
  190.             'draw' => $draw,
  191.             'recordsTotal' => $result['totalCount'],
  192.             'recordsFiltered' => $result['filteredCount'],
  193.             'data' => $result['data'],
  194.         ]);
  195.     }
  196.     /**
  197.      * @Route("/analyseSSTExport", name="analyseSSTExport", methods={"GET"})
  198.      */
  199.     public function analyseSSTExport(Request $requestSituationRisqueRepository $situationRisqueRepository): StreamedResponse
  200.     {
  201.         $field $request->query->get('field''job');
  202.         $searchValue $request->query->get('search''');
  203.         $filters = [
  204.             'user_entities' => $this->getUser()->getEntities()->toArray(),
  205.             'filter_entity' => $request->query->get('filter_entity'''),
  206.             'filter_processus' => $request->query->get('filter_processus'''),
  207.             'filter_responsible' => $request->query->get('filter_responsible'''),
  208.             'filter_year' => $request->query->get('filter_year'''),
  209.             'filter_criticite' => $request->query->get('filter_criticite'''),
  210.             'filter_risqueResiduel' => $request->query->get('filter_risqueResiduel'''),
  211.         ];
  212.         if ($field === 'job') {
  213.             $filters['filter_job'] = $request->query->get('filter_job''');
  214.             $filters['filter_mission'] = $request->query->get('filter_mission''');
  215.             $filters['filter_date'] = $request->query->get('filter_date''');
  216.             $filters['filter_task'] = $request->query->get('filter_task''');
  217.             $filters['filter_danger'] = $request->query->get('filter_danger''');
  218.             $filters['filter_risque'] = $request->query->get('filter_risque''');
  219.         } elseif ($field === 'location') {
  220.             $filters['filter_location'] = $request->query->get('filter_location''');
  221.             $filters['filter_zone'] = $request->query->get('filter_zone''');
  222.         }
  223.         $data $situationRisqueRepository->getFilteredDataForExport($field$searchValue$filters);
  224.         $response = new StreamedResponse(function () use ($data$field) {
  225.             ini_set('display_errors''0');
  226.             $spreadsheet = new Spreadsheet();
  227.             $sheet $spreadsheet->getActiveSheet();
  228.             if ($field === 'job') {
  229.                 $headers = ['Entité''Métier''Mission''Date''Tâche''Situation dangereuse''Risque''Criticité''Risque résiduel''Fréquence''Gravité''Maitrise H+O+T''Actions'];
  230.             } elseif ($field === 'location') {
  231.                 $headers = ['Entité''Lieu''Zone''Date''Tâche''Situation dangereuse''Risque''Criticité''Risque résiduel''Fréquence''Gravité''MOP''MOG''Actions'];
  232.             } else {
  233.                 $headers = ['Entité''Date''Tâche''Situation dangereuse''Risque''Criticité''Risque résiduel''Fréquence''Gravité''MOP''MOG''Actions'];
  234.             }
  235.             $col 1;
  236.             foreach ($headers as $header) {
  237.                 $sheet->setCellValueByColumnAndRow($col++, 1$header);
  238.             }
  239.             $row 2;
  240.             foreach ($data as $item) {
  241.                 $col 1;
  242.                 $sheet->setCellValueByColumnAndRow($col++, $row$item['entity'] ?? '');
  243.                 if ($field === 'job') {
  244.                     $sheet->setCellValueByColumnAndRow($col++, $row$item['job'] ?? '');
  245.                     $sheet->setCellValueByColumnAndRow($col++, $row$item['mission'] ?? '');
  246.                 } elseif ($field === 'location') {
  247.                     $sheet->setCellValueByColumnAndRow($col++, $row$item['location'] ?? '');
  248.                     $sheet->setCellValueByColumnAndRow($col++, $row$item['zone'] ?? '');
  249.                 }
  250.                 $sheet->setCellValueByColumnAndRow($col++, $row$item['dateEnregistrement'] ?? '');
  251.                 $sheet->setCellValueByColumnAndRow($col++, $row$item['task'] ?? '');
  252.                 $sheet->setCellValueByColumnAndRow($col++, $row$item['danger'] ?? '');
  253.                 $sheet->setCellValueByColumnAndRow($col++, $row$item['risque'] ?? '');
  254.                 $sheet->setCellValueByColumnAndRow($col++, $row$item['criticity'] ?? '');
  255.                 $sheet->setCellValueByColumnAndRow($col++, $row$item['risqueResiduel'] ?? '');
  256.                 $sheet->setCellValueByColumnAndRow($col++, $rowstrip_tags($item['frequenceNote'] ?? ''));
  257.                 $sheet->setCellValueByColumnAndRow($col++, $rowstrip_tags($item['gravityNote'] ?? ''));
  258. //                $sheet->setCellValueByColumnAndRow($col++, $row, strip_tags($item['mesureOPNote'] ?? ''));
  259.                 $sheet->setCellValueByColumnAndRow($col++, $rowstrip_tags($item['mesureORGNote'] ?? ''));
  260.                 $sheet->setCellValueByColumnAndRow($col++, $row$item['actionsRefs'] ?? '');
  261.                 $row++;
  262.             }
  263.             $writer = new Xlsx($spreadsheet);
  264.             $writer->save('php://output');
  265.         });
  266.         $filename 'analyse_sst_' $field '_' date('Y-m-d') . '.xlsx';
  267.         $response->headers->set('Content-Type''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  268.         $response->headers->set('Content-Disposition''attachment; filename="' $filename '"');
  269.         $response->headers->set('Cache-Control''max-age=0');
  270.         return $response;
  271.     }
  272.     // /**
  273.     //  * @Route("/datatableJobFilter", name="datatableJobFilter", methods={"GET"})
  274.     //  */
  275.     // public function datatableJobFilter(Request $request): Response
  276.     // {
  277.         
  278.     //     $em=$this->getDoctrine();
  279.     //     $processus_id= intval($request->query->get('processus_id'));
  280.     //     $job_id= intval($request->query->get('job_id'));
  281.     //     $mission_id= intval($request->query->get('mission_id'));
  282.     //     $user_id= intval($request->query->get('user_id'));
  283.         
  284.         
  285.     //     $user_data='';
  286.     //     $processus_list=[];
  287.     //     $processus_data=[];
  288.     //     $jobs_list=[];
  289.     //     $jobs_data=[];
  290.     //     $missions_list=[];
  291.     //     $missions_data=[];
  292.     //     /*
  293.     //     if($user_id){
  294.     //         $user_data = $user_id;
  295.     //         $user=$em->getRepository(User::class)->find($user_id);
  296.     //         $processus_list=$em->getRepository(Processus::class)->findBy(['pilote'=>$user]);
  297.     //         foreach($processus_list as $processus) {
  298.     //         }
  299.     //     }*/
  300.     //     if($user_id){
  301.     //         $user_data = $user_id;
  302.     //         $user=$em->getRepository(User::class)->find($user_id);
  303.     //         $processus_list=$em->getRepository(Processus::class)->findBy(['pilote'=>$user]);
  304.     //         foreach($processus_list as $proc){
  305.                 
  306.     //             if($proc->getPilote()==$user){
  307.     //                 $selected_processus = false;
  308.     //                 if($proc->getId()==$processus_id){
  309.     //                     $selected_processus=true;
  310.     //                 }
  311.     //                 $processus_data[][$proc->getId()]=[
  312.     //                     "id"=>$proc->getId(),
  313.     //                     "title"=>$proc->getTitle(),
  314.     //                     "selected"=>$selected_processus
  315.     //                 ];
  316.     //             }
  317.     //         }
  318.     //     }else {
  319.     //         $processus_list=$em->getRepository(Processus::class)->findAll();
  320.     //         foreach($processus_list as $proc){
  321.     //             $selected_processus = false;
  322.     //             if($proc->getId()==$processus_id){
  323.     //                 $selected_processus=true;
  324.     //             }
  325.     //             $processus_data[][$proc->getId()]=[
  326.     //                 "id"=>$proc->getId(),
  327.     //                 "title"=>$proc->getTitle(),
  328.     //                 "selected"=>$selected_processus
  329.     //             ];
  330.     //         }
  331.     //     }
  332.         
  333.     //     if($processus_id){
  334.             
  335.     //         $processus=$em->getRepository(Processus::class)->find($processus_id);
  336.     //         $user_data = $processus->getPilote()->getId();
  337.     //         $jobs_list=$em->getRepository(Job::class)->findBy(['processus'=>$processus]);
  338.     //         foreach($jobs_list as $job){
  339.     //             if($job->getProcessus()==$processus){
  340.     //                 $selected_job = false;
  341.     //                 if($job->getId()==$job_id){
  342.     //                     $selected_job=true;
  343.     //                 }
  344.     //                 $jobs_data[][$job->getId()]=[
  345.     //                     "id"=>$job->getId(),
  346.     //                     'title'=>$job->getTitle(),
  347.     //                     'selected'=>$selected_job
  348.     //                 ];
  349.     //             }
  350.     //         }
  351.     //     }else if($user_id){
  352.     //         foreach($processus_list as $processus) {
  353.     //             $jobs_list=$em->getRepository(Job::class)->findBy(['processus'=>$processus]);
  354.     //             foreach($jobs_list as $job){
  355.     //                 if($job->getProcessus()==$processus){
  356.     //                     $selected_job = false;
  357.     //                     if($job->getId()==$job_id){
  358.     //                         $selected_job=true;
  359.     //                     }
  360.     //                     $jobs_data[][$job->getId()]=[
  361.     //                         "id"=>$job->getId(),
  362.     //                         'title'=>$job->getTitle(),
  363.     //                         'selected'=>$selected_job
  364.     //                     ];
  365.     //                 }
  366.     //             }
  367.     //         }
  368.     //     }
  369.     //     else {
  370.     //         $jobs_list=$em->getRepository(Job::class)->findAll();
  371.     //         foreach($jobs_list as $job){
  372.     //             $selected_job = false;
  373.     //             if($job->getId()==$job_id){
  374.     //                 $selected_job=true;
  375.     //             }
  376.     //             $jobs_data[][$job->getId()]=[
  377.     //                 "id"=>$job->getId(),
  378.     //                 'title'=>$job->getTitle(),
  379.     //                 'selected'=>$selected_job
  380.     //             ];
  381.     //         }
  382.     //     }
  383.         
  384.     //     if($job_id){
  385.             
  386.     //         $job=$em->getRepository(Job::class)->find($job_id);
  387.     //         $user_data = $job->getProcessus()->getPilote()->getId();
  388.     //         if(!$processus_id)
  389.     //         {
  390.     //             $processus_id=$job->getProcessus()->getId();
  391.     //             foreach($processus_data as $key=>$proc_data){
  392.     //                 if(array_key_exists($processus_id,$proc_data)){
  393.                         
  394.     //                     $proc_data[$processus_id]['selected']=true;
  395.     //                     $processus_data[$key] = $proc_data;
  396.     //                 }
  397.     //             }
  398.     //         }
  399.     //         $missions_list=$em->getRepository(Mission::class)->findBy(['job'=>$job]);
  400.     //         foreach($missions_list as $mission){
  401.                 
  402.     //             if($mission->getJob()==$job){
  403.     //                 $selected_mission = false;
  404.     //                 if($mission->getId()==$mission_id){
  405.     //                     $selected_mission=true;
  406.     //                 }
  407.     //                 $missions_data[][$mission->getId()]=[
  408.     //                     "id"=>$mission->getId(),
  409.     //                     'title'=>$mission->getTitle(),
  410.     //                     'selected'=>$selected_mission
  411.     //                 ];
  412.     //             }
  413.     //         }
  414.     //     }else {
  415.             
  416.     //         foreach($jobs_list as $job)
  417.     //         {
  418.     //             $missions_list=$em->getRepository(Mission::class)->findBy(['job'=>$job]);
  419.     //             foreach($missions_list as $mission){
  420.     //                 if($mission->getJob()==$job){
  421.     //                     $selected_mission = false;
  422.     //                     if($mission->getId()==$mission_id){
  423.     //                         $selected_mission=true;
  424.     //                     }
  425.     //                     $missions_data[][$mission->getId()]=[
  426.     //                         "id"=>$mission->getId(),
  427.     //                         'title'=>$mission->getTitle(),
  428.     //                         'selected'=>$selected_mission
  429.     //                     ];
  430.     //                 }
  431.     //             }
  432.     //         }
  433.             
  434.     //     }
  435.     //     if($mission_id && !$job_id && !$processus_id && !$user_id){
  436.     //         $mission = $em->getRepository(Mission::class)->find($mission_id);
  437.     //         $job = $mission->getJob();
  438.     //         $processus = $job->getProcessus();
  439.     //         $user = $processus->getPilote();
  440.     //         $user_data = $user->getId();
  441.             
  442.     //         foreach($processus_data as $key=>$proc_data){
  443.     //             if(array_key_exists($processus->getId(),$proc_data)){
  444.     //                 $proc_data[$processus->getId()]['selected']=true;
  445.     //                 $processus_data[$key] = $proc_data;
  446.     //             }
  447.     //         }
  448.     //         foreach($jobs_data as $key=>$job_data){
  449.     //             if(array_key_exists($job->getId(),$job_data)){
  450.     //                 $job_data[$job->getId()]['selected']=true;
  451.     //                 $jobs_data[$key] = $job_data;
  452.     //             }
  453.     //         }
  454.             
  455.     //     }
  456.         
  457.         
  458.     //     $filters=[
  459.     //         'user_data'=>$user_data,
  460.     //         'processus_data'=>$processus_data,
  461.     //         'jobs_data'=>$jobs_data,
  462.     //         'missions_data'=>$missions_data,
  463.     //     ];
  464.         
  465.     //     return new JsonResponse($filters);
  466.     // }
  467.     // /**
  468.     //  * @Route("/datatableLocationFilter", name="datatableLocationFilter", methods={"POST"})
  469.     //  */
  470.     // public function datatableLocationFilter(Request $request): Response
  471.     // {
  472.         
  473.     //     $em=$this->getDoctrine();
  474.     //     $processus_id= intval($request->request->get('processus_id'));
  475.     //     $location_id= intval($request->request->get('location_id'));
  476.     //     $zone_id= intval($request->request->get('zone_id'));
  477.     //     $user_id= intval($request->request->get('user_id'));
  478.         
  479.     //     $user_data='';
  480.     //     $processus_list=[];
  481.     //     $processus_data=[];
  482.     //     $locations_list=[];
  483.     //     $locations_data=[];
  484.     //     $zones_list=[];
  485.     //     $zones_data=[];
  486.     //     if($user_id){
  487.     //         $user_data = $user_id;
  488.     //         $user=$em->getRepository(User::class)->find($user_id);
  489.     //         $processus_list=$em->getRepository(Processus::class)->findBy(['pilote'=>$user]);
  490.     //         foreach($processus_list as $proc){
  491.                 
  492.     //             if($proc->getPilote()==$user){
  493.     //                 $selected_processus = false;
  494.     //                 if($proc->getId()==$processus_id){
  495.     //                     $selected_processus=true;
  496.     //                 }
  497.     //                 $processus_data[][$proc->getId()]=[
  498.     //                     "id"=>$proc->getId(),
  499.     //                     "title"=>$proc->getTitle(),
  500.     //                     "selected"=>$selected_processus
  501.     //                 ];
  502.     //             }
  503.     //         }
  504.     //     }else {
  505.     //         $processus_list=$em->getRepository(Processus::class)->findAll();
  506.     //         foreach($processus_list as $proc){
  507.     //             $selected_processus = false;
  508.     //             if($proc->getId()==$processus_id){
  509.     //                 $selected_processus=true;
  510.     //             }
  511.     //             $processus_data[][$proc->getId()]=[
  512.     //                 "id"=>$proc->getId(),
  513.     //                 "title"=>$proc->getTitle(),
  514.     //                 "selected"=>$selected_processus
  515.     //             ];
  516.     //         }
  517.     //     }
  518.         
  519.     //     if($processus_id){
  520.             
  521.     //         $processus=$em->getRepository(Processus::class)->find($processus_id);
  522.     //         $user_data = $processus->getPilote()->getId();
  523.     //         $locations_list=$em->getRepository(Location::class)->findBy(['processus'=>$processus]);
  524.     //         foreach($locations_list as $location){
  525.     //             if($location->getProcessus()==$processus){
  526.     //                 $selected_location = false;
  527.     //                 if($location->getId()==$location_id){
  528.     //                     $selected_location=true;
  529.     //                 }
  530.     //                 $locations_data[][$location->getId()]=[
  531.     //                     "id"=>$location->getId(),
  532.     //                     'title'=>$location->getName(),
  533.     //                     'selected'=>$selected_location
  534.     //                 ];
  535.     //             }
  536.     //         }
  537.     //     }else if($user_id){
  538.     //         foreach($processus_list as $processus) {
  539.     //             $locations_list=$em->getRepository(Location::class)->findBy(['processus'=>$processus]);
  540.     //             foreach($locations_list as $location){
  541.     //                 if($location->getProcessus()==$processus){
  542.     //                     $selected_location = false;
  543.     //                     if($location->getId()==$location_id){
  544.     //                         $selected_location=true;
  545.     //                     }
  546.     //                     $locations_data[][$location->getId()]=[
  547.     //                         "id"=>$location->getId(),
  548.     //                         'title'=>$location->getName(),
  549.     //                         'selected'=>$selected_location
  550.     //                     ];
  551.     //                 }
  552.     //             }
  553.     //         }
  554.     //     }
  555.     //     else {
  556.     //         $locations_list=$em->getRepository(Location::class)->findAll();
  557.     //         foreach($locations_list as $location){
  558.     //             $selected_location = false;
  559.     //             if($location->getId()==$location_id){
  560.     //                 $selected_location=true;
  561.     //             }
  562.     //             $locations_data[][$location->getId()]=[
  563.     //                 "id"=>$location->getId(),
  564.     //                 'title'=>$location->getName(),
  565.     //                 'selected'=>$selected_location
  566.     //             ];
  567.     //         }
  568.     //     }
  569.         
  570.     //     if($location_id){
  571.             
  572.     //         $location=$em->getRepository(Location::class)->find($location_id);
  573.     //         $user_data = $location->getProcessus()->getPilote()->getId();
  574.     //         if(!$processus_id)
  575.     //         {
  576.     //             $processus_id=$location->getProcessus()->getId();
  577.     //             foreach($processus_data as $key=>$proc_data){
  578.     //                 if(array_key_exists($processus_id,$proc_data)){
  579.                         
  580.     //                     $proc_data[$processus_id]['selected']=true;
  581.     //                     $processus_data[$key] = $proc_data;
  582.     //                 }
  583.     //             }
  584.     //         }
  585.     //         $zones_list=$em->getRepository(Zone::class)->findBy(['location'=>$location]);
  586.     //         foreach($zones_list as $zone){
  587.                 
  588.     //             if($zone->getLocation()==$location){
  589.     //                 $selected_zone = false;
  590.     //                 if($zone->getId()==$zone_id){
  591.     //                     $selected_zone=true;
  592.     //                 }
  593.     //                 $zones_data[][$zone->getId()]=[
  594.     //                     "id"=>$zone->getId(),
  595.     //                     'title'=>$zone->getName(),
  596.     //                     'selected'=>$selected_zone
  597.     //                 ];
  598.     //             }
  599.     //         }
  600.     //     }else {
  601.             
  602.     //         foreach($locations_list as $location)
  603.     //         {
  604.     //             $zones_list=$em->getRepository(Zone::class)->findBy(['location'=>$location]);
  605.     //             foreach($zones_list as $zone){
  606.     //                 if($zone->getLocation()==$location){
  607.     //                     $selected_zone = false;
  608.     //                     if($zone->getId()==$zone_id){
  609.     //                         $selected_zone=true;
  610.     //                     }
  611.     //                     $zones_data[][$zone->getId()]=[
  612.     //                         "id"=>$zone->getId(),
  613.     //                         'title'=>$zone->getName(),
  614.     //                         'selected'=>$selected_zone
  615.     //                     ];
  616.     //                 }
  617.     //             }
  618.     //         }
  619.             
  620.     //     }
  621.     //     if($zone_id && !$location_id && !$processus_id && !$user_id){
  622.     //         $zone = $em->getRepository(Zone::class)->find($zone_id);
  623.     //         $location = $zone->getLocation();
  624.     //         $processus = $location->getProcessus();
  625.     //         $user = $processus->getPilote();
  626.     //         $user_data = $user->getId();
  627.             
  628.     //         foreach($processus_data as $key=>$proc_data){
  629.     //             if(array_key_exists($processus->getId(),$proc_data)){
  630.     //                 $proc_data[$processus->getId()]['selected']=true;
  631.     //                 $processus_data[$key] = $proc_data;
  632.     //             }
  633.     //         }
  634.     //         foreach($locations_data as $key=>$location_data){
  635.     //             if(array_key_exists($location->getId(),$location_data)){
  636.     //                 $location_data[$location->getId()]['selected']=true;
  637.     //                 $locations_data[$key] = $location_data;
  638.     //             }
  639.     //         }
  640.             
  641.     //     }
  642.         
  643.         
  644.     //     $filters=[
  645.     //         'user_data'=>$user_data,
  646.     //         'processus_data'=>$processus_data,
  647.     //         'locations_data'=>$locations_data,
  648.     //         'zones_data'=>$zones_data,
  649.     //     ];
  650.         
  651.     //     return new JsonResponse($filters);
  652.     // }
  653. }