<?php
namespace App\Controller\bilanControllers;
use App\Entity\bilan\Job;
use App\Entity\bilan\Location;
use App\Entity\bilan\Mission;
use App\Entity\bilan\Task;
use App\Entity\bilan\Zone;
use App\Entity\Processus;
use App\Entity\User;
use App\Repository\bilan\SituationRisqueRepository;
use App\Repository\bilan\JobRepository;
use App\Repository\Configuration\CompanyEntityRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Repository\ProcessusRepository;
/**
* @Route("/analyseSST")
*/
class AnalyseSSTController extends AbstractController
{
private ProcessusRepository $processusRepository;
private JobRepository $jobRepository;
private CompanyEntityRepository $companyEntityRepository;
public function __construct(ProcessusRepository $processusRepository, JobRepository $jobRepository, CompanyEntityRepository $companyEntityRepository)
{
$this->processusRepository = $processusRepository;
$this->jobRepository = $jobRepository;
$this->companyEntityRepository = $companyEntityRepository;
}
private function getYearsList(): array
{
$currentYear = (int)date('Y');
$years = [];
for ($year = $currentYear; $year >= 2020; $year--) {
$years[] = $year;
}
return $years;
}
/**
* @Route("/", name="analyseSST")
*/
public function index(): Response
{
$entities = $this->companyEntityRepository->findBy([], ['nom' => 'ASC']);
$processus = $this->processusRepository->findProcessusInternal();
$jobs = $this->jobRepository->findByUserEntity();
$missions = $this->getDoctrine()->getRepository(Mission::class)->findAll();
$locations = $this->getDoctrine()->getRepository(Location::class)->findAll();
$zones = $this->getDoctrine()->getRepository(Zone::class)->findAll();
$years = $this->getYearsList();
$users = $this->getDoctrine()->getRepository(User::class)->findBy([], ['lastname' => 'ASC']);
// Filter users with 'evrp' in their modules
$usersWithEvrp = array_filter($users, function(User $user) {
$modules = $user->getModules() ?? [];
return in_array('Bilan SST', $modules);
});
// $users= $this->getDoctrine()->getRepository(User::class)->findAll();
//// foreach($processus as $proc)
//// {
//// $user = $proc->getPilote();
//// if(!in_array($user,$users) && (!is_null($user))){
//// $users[]=$user;
//// }
//// }
// usort($users, function($a, $b) {
// return strcmp($a->getLastname(), $b->getLastname());
// });
$menu="evaluate";
$left_menu="analyseSST";
return $this->render('bilanTemplates/analyse_sst/index.html.twig', [
'menu' => $menu,
'left_menu' => $left_menu,
'processus' => $processus,
'users' => $usersWithEvrp,
'jobs' => $jobs,
'missions' => $missions,
'locations' => $locations,
'zones' => $zones,
'years' => $years,
'entities' => $entities,
]);
}
/**
* @Route("/analyseSSTData", name="analyseSSTData", methods={"GET"})
*/
public function analyseSSTData(Request $request, SituationRisqueRepository $situationRisqueRepository): Response
{
$field = $request->query->get('field');
$situationRisqueData = $situationRisqueRepository->transformAll($field);
return new JsonResponse($situationRisqueData);
}
// /**
// * @Route("/datatableJobFilter", name="datatableJobFilter", methods={"GET"})
// */
// public function datatableJobFilter(Request $request): Response
// {
// $em=$this->getDoctrine();
// $processus_id= intval($request->query->get('processus_id'));
// $job_id= intval($request->query->get('job_id'));
// $mission_id= intval($request->query->get('mission_id'));
// $user_id= intval($request->query->get('user_id'));
// $user_data='';
// $processus_list=[];
// $processus_data=[];
// $jobs_list=[];
// $jobs_data=[];
// $missions_list=[];
// $missions_data=[];
// /*
// if($user_id){
// $user_data = $user_id;
// $user=$em->getRepository(User::class)->find($user_id);
// $processus_list=$em->getRepository(Processus::class)->findBy(['pilote'=>$user]);
// foreach($processus_list as $processus) {
// }
// }*/
// if($user_id){
// $user_data = $user_id;
// $user=$em->getRepository(User::class)->find($user_id);
// $processus_list=$em->getRepository(Processus::class)->findBy(['pilote'=>$user]);
// foreach($processus_list as $proc){
// if($proc->getPilote()==$user){
// $selected_processus = false;
// if($proc->getId()==$processus_id){
// $selected_processus=true;
// }
// $processus_data[][$proc->getId()]=[
// "id"=>$proc->getId(),
// "title"=>$proc->getTitle(),
// "selected"=>$selected_processus
// ];
// }
// }
// }else {
// $processus_list=$em->getRepository(Processus::class)->findAll();
// foreach($processus_list as $proc){
// $selected_processus = false;
// if($proc->getId()==$processus_id){
// $selected_processus=true;
// }
// $processus_data[][$proc->getId()]=[
// "id"=>$proc->getId(),
// "title"=>$proc->getTitle(),
// "selected"=>$selected_processus
// ];
// }
// }
// if($processus_id){
// $processus=$em->getRepository(Processus::class)->find($processus_id);
// $user_data = $processus->getPilote()->getId();
// $jobs_list=$em->getRepository(Job::class)->findBy(['processus'=>$processus]);
// foreach($jobs_list as $job){
// if($job->getProcessus()==$processus){
// $selected_job = false;
// if($job->getId()==$job_id){
// $selected_job=true;
// }
// $jobs_data[][$job->getId()]=[
// "id"=>$job->getId(),
// 'title'=>$job->getTitle(),
// 'selected'=>$selected_job
// ];
// }
// }
// }else if($user_id){
// foreach($processus_list as $processus) {
// $jobs_list=$em->getRepository(Job::class)->findBy(['processus'=>$processus]);
// foreach($jobs_list as $job){
// if($job->getProcessus()==$processus){
// $selected_job = false;
// if($job->getId()==$job_id){
// $selected_job=true;
// }
// $jobs_data[][$job->getId()]=[
// "id"=>$job->getId(),
// 'title'=>$job->getTitle(),
// 'selected'=>$selected_job
// ];
// }
// }
// }
// }
// else {
// $jobs_list=$em->getRepository(Job::class)->findAll();
// foreach($jobs_list as $job){
// $selected_job = false;
// if($job->getId()==$job_id){
// $selected_job=true;
// }
// $jobs_data[][$job->getId()]=[
// "id"=>$job->getId(),
// 'title'=>$job->getTitle(),
// 'selected'=>$selected_job
// ];
// }
// }
// if($job_id){
// $job=$em->getRepository(Job::class)->find($job_id);
// $user_data = $job->getProcessus()->getPilote()->getId();
// if(!$processus_id)
// {
// $processus_id=$job->getProcessus()->getId();
// foreach($processus_data as $key=>$proc_data){
// if(array_key_exists($processus_id,$proc_data)){
// $proc_data[$processus_id]['selected']=true;
// $processus_data[$key] = $proc_data;
// }
// }
// }
// $missions_list=$em->getRepository(Mission::class)->findBy(['job'=>$job]);
// foreach($missions_list as $mission){
// if($mission->getJob()==$job){
// $selected_mission = false;
// if($mission->getId()==$mission_id){
// $selected_mission=true;
// }
// $missions_data[][$mission->getId()]=[
// "id"=>$mission->getId(),
// 'title'=>$mission->getTitle(),
// 'selected'=>$selected_mission
// ];
// }
// }
// }else {
// foreach($jobs_list as $job)
// {
// $missions_list=$em->getRepository(Mission::class)->findBy(['job'=>$job]);
// foreach($missions_list as $mission){
// if($mission->getJob()==$job){
// $selected_mission = false;
// if($mission->getId()==$mission_id){
// $selected_mission=true;
// }
// $missions_data[][$mission->getId()]=[
// "id"=>$mission->getId(),
// 'title'=>$mission->getTitle(),
// 'selected'=>$selected_mission
// ];
// }
// }
// }
// }
// if($mission_id && !$job_id && !$processus_id && !$user_id){
// $mission = $em->getRepository(Mission::class)->find($mission_id);
// $job = $mission->getJob();
// $processus = $job->getProcessus();
// $user = $processus->getPilote();
// $user_data = $user->getId();
// foreach($processus_data as $key=>$proc_data){
// if(array_key_exists($processus->getId(),$proc_data)){
// $proc_data[$processus->getId()]['selected']=true;
// $processus_data[$key] = $proc_data;
// }
// }
// foreach($jobs_data as $key=>$job_data){
// if(array_key_exists($job->getId(),$job_data)){
// $job_data[$job->getId()]['selected']=true;
// $jobs_data[$key] = $job_data;
// }
// }
// }
// $filters=[
// 'user_data'=>$user_data,
// 'processus_data'=>$processus_data,
// 'jobs_data'=>$jobs_data,
// 'missions_data'=>$missions_data,
// ];
// return new JsonResponse($filters);
// }
// /**
// * @Route("/datatableLocationFilter", name="datatableLocationFilter", methods={"POST"})
// */
// public function datatableLocationFilter(Request $request): Response
// {
// $em=$this->getDoctrine();
// $processus_id= intval($request->request->get('processus_id'));
// $location_id= intval($request->request->get('location_id'));
// $zone_id= intval($request->request->get('zone_id'));
// $user_id= intval($request->request->get('user_id'));
// $user_data='';
// $processus_list=[];
// $processus_data=[];
// $locations_list=[];
// $locations_data=[];
// $zones_list=[];
// $zones_data=[];
// if($user_id){
// $user_data = $user_id;
// $user=$em->getRepository(User::class)->find($user_id);
// $processus_list=$em->getRepository(Processus::class)->findBy(['pilote'=>$user]);
// foreach($processus_list as $proc){
// if($proc->getPilote()==$user){
// $selected_processus = false;
// if($proc->getId()==$processus_id){
// $selected_processus=true;
// }
// $processus_data[][$proc->getId()]=[
// "id"=>$proc->getId(),
// "title"=>$proc->getTitle(),
// "selected"=>$selected_processus
// ];
// }
// }
// }else {
// $processus_list=$em->getRepository(Processus::class)->findAll();
// foreach($processus_list as $proc){
// $selected_processus = false;
// if($proc->getId()==$processus_id){
// $selected_processus=true;
// }
// $processus_data[][$proc->getId()]=[
// "id"=>$proc->getId(),
// "title"=>$proc->getTitle(),
// "selected"=>$selected_processus
// ];
// }
// }
// if($processus_id){
// $processus=$em->getRepository(Processus::class)->find($processus_id);
// $user_data = $processus->getPilote()->getId();
// $locations_list=$em->getRepository(Location::class)->findBy(['processus'=>$processus]);
// foreach($locations_list as $location){
// if($location->getProcessus()==$processus){
// $selected_location = false;
// if($location->getId()==$location_id){
// $selected_location=true;
// }
// $locations_data[][$location->getId()]=[
// "id"=>$location->getId(),
// 'title'=>$location->getName(),
// 'selected'=>$selected_location
// ];
// }
// }
// }else if($user_id){
// foreach($processus_list as $processus) {
// $locations_list=$em->getRepository(Location::class)->findBy(['processus'=>$processus]);
// foreach($locations_list as $location){
// if($location->getProcessus()==$processus){
// $selected_location = false;
// if($location->getId()==$location_id){
// $selected_location=true;
// }
// $locations_data[][$location->getId()]=[
// "id"=>$location->getId(),
// 'title'=>$location->getName(),
// 'selected'=>$selected_location
// ];
// }
// }
// }
// }
// else {
// $locations_list=$em->getRepository(Location::class)->findAll();
// foreach($locations_list as $location){
// $selected_location = false;
// if($location->getId()==$location_id){
// $selected_location=true;
// }
// $locations_data[][$location->getId()]=[
// "id"=>$location->getId(),
// 'title'=>$location->getName(),
// 'selected'=>$selected_location
// ];
// }
// }
// if($location_id){
// $location=$em->getRepository(Location::class)->find($location_id);
// $user_data = $location->getProcessus()->getPilote()->getId();
// if(!$processus_id)
// {
// $processus_id=$location->getProcessus()->getId();
// foreach($processus_data as $key=>$proc_data){
// if(array_key_exists($processus_id,$proc_data)){
// $proc_data[$processus_id]['selected']=true;
// $processus_data[$key] = $proc_data;
// }
// }
// }
// $zones_list=$em->getRepository(Zone::class)->findBy(['location'=>$location]);
// foreach($zones_list as $zone){
// if($zone->getLocation()==$location){
// $selected_zone = false;
// if($zone->getId()==$zone_id){
// $selected_zone=true;
// }
// $zones_data[][$zone->getId()]=[
// "id"=>$zone->getId(),
// 'title'=>$zone->getName(),
// 'selected'=>$selected_zone
// ];
// }
// }
// }else {
// foreach($locations_list as $location)
// {
// $zones_list=$em->getRepository(Zone::class)->findBy(['location'=>$location]);
// foreach($zones_list as $zone){
// if($zone->getLocation()==$location){
// $selected_zone = false;
// if($zone->getId()==$zone_id){
// $selected_zone=true;
// }
// $zones_data[][$zone->getId()]=[
// "id"=>$zone->getId(),
// 'title'=>$zone->getName(),
// 'selected'=>$selected_zone
// ];
// }
// }
// }
// }
// if($zone_id && !$location_id && !$processus_id && !$user_id){
// $zone = $em->getRepository(Zone::class)->find($zone_id);
// $location = $zone->getLocation();
// $processus = $location->getProcessus();
// $user = $processus->getPilote();
// $user_data = $user->getId();
// foreach($processus_data as $key=>$proc_data){
// if(array_key_exists($processus->getId(),$proc_data)){
// $proc_data[$processus->getId()]['selected']=true;
// $processus_data[$key] = $proc_data;
// }
// }
// foreach($locations_data as $key=>$location_data){
// if(array_key_exists($location->getId(),$location_data)){
// $location_data[$location->getId()]['selected']=true;
// $locations_data[$key] = $location_data;
// }
// }
// }
// $filters=[
// 'user_data'=>$user_data,
// 'processus_data'=>$processus_data,
// 'locations_data'=>$locations_data,
// 'zones_data'=>$zones_data,
// ];
// return new JsonResponse($filters);
// }
}