src/Controller/ergonomie/AnalyseErgonomieController.php line 183

Open in your IDE?
  1. <?php
  2. namespace App\Controller\ergonomie;
  3. use App\Entity\bilan\Mission;
  4. use App\Entity\bilan\Job;
  5. use App\Entity\User;
  6. use App\Entity\Processus;
  7. use App\Entity\Ergonomie;
  8. use App\Repository\ErgonomieRepository;
  9. use App\Utils\Utility;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Symfony\Component\Filesystem\Filesystem;
  17. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  18. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  19. use Symfony\Component\Mime\FileinfoMimeTypeGuesser;
  20. use Dompdf\Dompdf;
  21. use Dompdf\Options;
  22. use App\Repository\bilan\JobRepository;
  23. use App\Repository\ProcessusRepository;
  24. /**
  25.  * @Route("/analyseErgo")
  26.  */
  27. class AnalyseErgonomieController extends AbstractController
  28. {
  29.     private ProcessusRepository $processusRepository;
  30.     private JobRepository $jobRepository;
  31.     public function __construct(ProcessusRepository $processusRepositoryJobRepository $jobRepository)
  32.     {
  33.         $this->processusRepository $processusRepository;
  34.         $this->jobRepository $jobRepository;
  35.     }
  36.     private function getYearsList(): array
  37.     {
  38.         $currentYear = (int)date('Y');
  39.         $years = [];
  40.         for ($year $currentYear$year >= 2020$year--) {
  41.             $years[] = $year;
  42.         }
  43.         return $years;
  44.     }
  45.     /**
  46.      * @Route("/", name="analyse_ergonomie", methods={"GET"})
  47.      */
  48.     public function AllAnalysesErgo(Request $requestErgonomieRepository $ergonomieRepository): Response
  49.     {
  50.         $processus $this->processusRepository->findProcessusInternal();
  51.         $jobs $this->jobRepository->findByUserEntity();
  52.         $missions $this->getDoctrine()->getRepository(Mission::class)->findAll();
  53.         // Fetch all ergonomie records with details
  54.         $analysesErgo $ergonomieRepository->findAllWithDetails();
  55.         $years $this->getYearsList();
  56.         $users=[];
  57.         foreach($processus as $proc)
  58.         {
  59.             $user $proc->getPilote();
  60.             if(!in_array($user,$users) && (!is_null($user))){
  61.                 $users[]=$user;
  62.             }
  63.         }
  64.         
  65.         $menu="evaluate";
  66.         $left_menu="analyse_ergonomie";
  67.         return $this->render('ergonomie/analyse/index.html.twig', [
  68.             'menu' => $menu,
  69.             'left_menu' => $left_menu,
  70.             'processus' => $processus,
  71.             'users' => $users,
  72.             'jobs' => $jobs,
  73.             'missions' => $missions,
  74.             'analyses' => $analysesErgo,
  75.             'years' => $years
  76.         ]);
  77.         /*$missions = $this->getDoctrine()->getRepository(Mission::class)->findAll();
  78.         $processuses = $this->getDoctrine()->getRepository(Processus::class)->findAll();
  79.         $jobs = $this->getDoctrine()->getRepository(Job::class)->findAll();
  80.         $users = $this->getDoctrine()->getRepository(User::class)->findAll();
  81.         //$analysesErgo = $this->getDoctrine()->getRepository(Ergonimie::class)->findAll();
  82.         // Fetch all ergonomie records with details
  83.         $analysesErgo = $ergonomieRepository->findAllWithDetails();
  84.         $menu="evaluate";
  85.         $left_menu="analyse_ergonomie";
  86.         return $this->render('ergonomie/analyse/index.html.twig',[
  87.             'menu' => $menu,
  88.             'left_menu' => $left_menu,
  89.             'missions' => $missions,
  90.             'processuses' => $processuses,
  91.             'jobs' => $jobs,
  92.             'users' => $users,
  93.             'analyses' => $analysesErgo
  94.         ]);*/
  95.     }
  96.     /**
  97.      * @Route("/create", name="ergonomie_create", methods={"GET", "POST"})
  98.      */
  99.     public function create(Request $request/*EntityManagerInterface $em, */ ErgonomieRepository $ergonomieRepository): Response
  100.     {
  101.         /*if (!$request->isXmlHttpRequest()) {
  102.             return new JsonResponse(array('status' => 'error','message' => 'Access forbidden!'), 400);
  103.         }*/
  104.         if(isset($request->request))
  105.         {
  106.             $em $this->getDoctrine()->getManager();
  107.             $loggedin_user $this->getUser();
  108.             // Create a new Ergonomie entity
  109.             $ergonomie = new Ergonomie();
  110.             // Create a new Utility entity
  111.             $utility = new Utility;
  112.             
  113.             /* genretate ref */
  114.             $oldRef $ergonomieRepository->findLastRef(Ergonomie::PREFIX);
  115.             $newRef $utility->generateNewRef($oldRefErgonomie::PREFIX);
  116.             $ergonomie->setRef($newRef ?? null);
  117.             // Set all fields from the request data
  118.             $ergonomie->setDateAnalyse(new \DateTime($request->get('date_analyse')));
  119.             $ergonomie->setJob($em->getRepository(Job::class)->find($request->get('job_id')));
  120.             $ergonomie->setProcessus($em->getRepository(Processus::class)->find($request->get('processus_id')));
  121.             $ergonomie->setMission($em->getRepository(Mission::class)->find($request->get('mission_id')));
  122.             $ergonomie->setCreatedBy($loggedin_user);
  123.             // Set all string fields (nullable)
  124.             $ergonomie->setResponsible($request->get('responsible') ?? null);
  125.             $ergonomie->setFonction($request->get('fonction') ?? null);
  126.             $ergonomie->setUpperArmRight($request->get('upperArmRight') ?? null);
  127.             $ergonomie->setUpperArmLeft($request->get('upperArmLeft') ?? null);
  128.             $ergonomie->setShoulderRaised($request->get('shoulderRaised') ?? null);
  129.             $ergonomie->setUpperArmAbducted($request->get('upperArmAbducted') ?? null);
  130.             $ergonomie->setArmSupported($request->get('armSupported') ?? null);
  131.             $ergonomie->setLowerArmRight($request->get('lowerArmRight') ?? null);
  132.             $ergonomie->setLowerArmLeft($request->get('lowerArmLeft') ?? null);
  133.             $ergonomie->setEitherArmWorking($request->get('eitherArmWorking') ?? null);
  134.             $ergonomie->setWristRight($request->get('wristRight') ?? null);
  135.             $ergonomie->setWristLeft($request->get('wristLeft') ?? null);
  136.             $ergonomie->setWristBent($request->get('wristBent') ?? null);
  137.             $ergonomie->setWristTwistRange($request->get('wristTwistRange') ?? null);
  138.             $ergonomie->setMusculeUseScore($request->get('musculeUseScore') ?? null);
  139.             $ergonomie->setLoadScore($request->get('loadScore') ?? null);
  140.             $ergonomie->setNeckPos($request->get('neckPos') ?? null);
  141.             $ergonomie->setNeckTwisted($request->get('neckTwisted') ?? null);
  142.             $ergonomie->setNeckBending($request->get('neckBending') ?? null);
  143.             $ergonomie->setTrunkPos($request->get('trunkPos') ?? null);
  144.             $ergonomie->setTrunkTwisted($request->get('trunkTwisted') ?? null);
  145.             $ergonomie->setTrunkBending($request->get('trunkBending') ?? null);
  146.             $ergonomie->setLegsSupported($request->get('legsSupported') ?? null);
  147.             $ergonomie->setLegsMusculeScore($request->get('legsMusculeScore') ?? null);
  148.             $ergonomie->setLoadScoreLegs($request->get('loadScoreLegs') ?? null);
  149.             // Set all integer fields
  150.             $ergonomie->setScorePoignetBras($request->get('scorePoignetBras'));
  151.             $ergonomie->setScoreTroncNuqueJambes($request->get('scoreTroncNuqueJambes'));
  152.             $ergonomie->setScoreFinal($request->get('scoreFinal'));
  153.             // Persist and save the entity
  154.             $em->persist($ergonomie);
  155.             $em->flush();
  156.             // Return the ID of the created entity
  157.             $response = array('status' => 'success''id' => $ergonomie->getId());
  158.         }
  159.         return new JsonResponse($response,200);
  160.     }
  161.     /**
  162.      * @Route("/analyseErgoData", name="analyse_ergo_data", methods={"GET", "POST"})
  163.      */
  164.     public function analyseErgoData(Request $requestErgonomieRepository $ergonomieRepository): Response
  165.     {
  166.         $niveaux = array(
  167.             array('ACCEPTABLE''#40a103'),
  168.             array('ACCEPTABLE''#40a103'),
  169.             array('CONTRAIGNANTE''#e1e508'),
  170.             array('CONTRAIGNANTE''#e1e508'),
  171.             array('TRES CONTRAIGNANTE''#fe9200'),
  172.             array('TRES CONTRAIGNANTE''#fe9200'),
  173.             array('INNACEPTABLE''#e32f07'),
  174.         );
  175.         $listErgonomie $ergonomieRepository->findAllWithDetails();
  176.         $data = [];
  177.         foreach ($listErgonomie as $ergo) {
  178.             $data[] = [
  179.                 'id'=> $ergo['id'],
  180.                 'ref'=> $ergo['ref'],
  181.                 'show_item' => $ergo['id'],
  182.                 'date_analyse'=> $ergo['date_analyse']->format('d-m-Y'),
  183.                 'job_name'=> $ergo['job_name'],
  184.                 'mission_name' => $ergo['mission_name'],
  185.                 'scorePoignetBras' => $ergo['scorePoignetBras'],
  186.                 'scoreTroncNuqueJambes' => $ergo['scoreTroncNuqueJambes'],
  187.                 'scoreFinal' => '<span class="label" style="background:'.$niveaux[(int)$ergo['scoreFinal']-1][1].';">'.$niveaux[(int)$ergo['scoreFinal']-1][0].'</span>',
  188.                 'processus_id' => '<a class="label btn-indicator" style="cursor:pointer" href="/action/new?sr='.$ergo['mission_id'].'&pr='.$ergo['processus_id'].'">Planifier ?</a>',
  189.                 'responsible_name' => $ergo['responsible'],
  190.                 'processus_name' => $ergo['processus_name'],
  191.                 'action' => $ergo['id'],
  192.                 'processus' => $ergo['processus_name'],
  193.                 'job'=> $ergo['job_name'],
  194.                 'mission' => $ergo['mission_name'],
  195.                 'responsible' => $ergo['responsible'],
  196.                 'yearErgo'=> $ergo['date_analyse']->format('Y'),
  197.             ];
  198.         }
  199.         return new JsonResponse(['data' => $data]);
  200.     }
  201.     /**
  202.      * @Route("/delete/{id}", name="ergonomie_delete", methods={"GET"})
  203.      */
  204.     public function delete(Request $requestErgonomie $ergonomie): Response
  205.     {
  206.         $em $this->getDoctrine()->getManager();
  207.         if($ergonomie){
  208.             $em->remove($ergonomie);
  209.             $em->flush();
  210.         }
  211.         return $this->redirect($request->headers->get('referer'));
  212.     }
  213.     /**
  214.      * @Route("/show/{id}", name="analyse_ergonomie_show", methods={"GET"})
  215.      */
  216.     public function show(Request $requestErgonomie $ergonomie): Response
  217.     {
  218.         $em $this->getDoctrine()->getManager();
  219.         $menu="evaluate";
  220.         $left_menu="analyse_ergonomie";
  221.         return $this->render('ergonomie/show.html.twig',[
  222.             'menu' => $menu,
  223.             'left_menu' => $left_menu,
  224.             'ergo' => $ergonomie
  225.         ]);
  226.     }
  227. }