src/Controller/bilanControllers/JobEvalKanbanController.php line 381

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\Mission;
  8. use App\Entity\bilan\MOG;
  9. use App\Entity\bilan\MOP;
  10. use App\Entity\bilan\Risque;
  11. use App\Entity\bilan\Situation;
  12. use App\Entity\bilan\SituationRisque;
  13. use App\Entity\bilan\Task;
  14. use App\Entity\Group;
  15. use App\Entity\Configuration\CompanyEntity;
  16. use App\Repository\bilan\JobRepository;
  17. use App\Repository\bilan\TaskRepository;
  18. use App\Service\SelectedEntityService;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. use Symfony\Component\HttpFoundation\JsonResponse;
  21. use Symfony\Component\HttpFoundation\Request;
  22. use Symfony\Component\HttpFoundation\Response;
  23. use Symfony\Component\HttpFoundation\RequestStack;
  24. use Symfony\Component\Routing\Annotation\Route;
  25. use Symfony\Component\Security\Core\Security;
  26. use App\Entity\User;
  27. /**
  28.  * @Route("/eval/job")
  29.  */
  30. class JobEvalKanbanController extends AbstractController
  31. {
  32.     private $jobRepository;
  33.     private $security;
  34.     private $requestStack;
  35.     private $selectedEntityService;
  36.     public function __construct(JobRepository $jobRepositorySecurity $securityRequestStack $requestStackSelectedEntityService $selectedEntityService)
  37.     {
  38.         $this->jobRepository $jobRepository;
  39.         $this->security $security;
  40.         $this->requestStack $requestStack;
  41.         $this->selectedEntityService $selectedEntityService;
  42.     }
  43.     /**
  44.      * @Route("/list",  name="evalJob_list", methods={"GET","POST"})
  45.      */
  46.     public function list(Request $requestTaskRepository $taskRepository):Response
  47.     {
  48.         if (!$request->isXmlHttpRequest()) {
  49.             return new JsonResponse(array('status' => 'error','message' => 'Access forbidden!'), 400);
  50.         }
  51.         
  52.         if ($request->request->has('missionId')) {
  53.             $entityManager $this->getDoctrine()->getManager();
  54.             $missionId $request->request->get('missionId');
  55.             $mission $entityManager->getRepository(Mission::class)->findOneBy(['id'=>$missionId]);
  56.             
  57.             if (!$mission) {
  58.                 return new JsonResponse(array('status' => 'error''message' => 'Mission not found'), 404);
  59.             }
  60.             
  61.             $taskRepositoryData $taskRepository->transformAllMision($mission);
  62.             return new JsonResponse($taskRepositoryData);
  63.         }
  64.         
  65.         return new JsonResponse(array('status' => 'error''message' => 'Missing missionId parameter'), 400);
  66.     }
  67.     /**
  68.     * @Route("/new", name="save_TS",methods={"POST"})
  69.     */
  70.     public function new(Request $request): Response
  71.     {
  72.         if (!$request->isXmlHttpRequest()) {
  73.             return new JsonResponse(array('status' => 'error','message' => 'Access forbidden!'), 400);
  74.         }
  75.         if (isset($request->request)) {
  76.             $user $this->getUser();
  77.             $entityManager $this->getDoctrine()->getManager();
  78.             
  79.             if (!$entityManager->isOpen()) {
  80.                 $entityManager->create(
  81.                     $entityManager->getConnection(),
  82.                     $entityManager->getConfiguration()
  83.                 );
  84.             }
  85.             $task_id='';
  86.             $situation_id='';
  87.             $entityId $request->request->get('entity_id');
  88.             $situationTitle $request->request->get('situation');
  89.             $risques$request->request->get('risques');
  90.             $type_save$request->request->get('type_save');
  91.             //
  92.             if ($type_save=='saveTS') {
  93.                 $missionId $request->request->get('missionId');
  94.                 $taskTitle $request->request->get('task');
  95.                 $mission $entityManager->getRepository(Mission::class)->findOneBy(['id'=>$missionId]);
  96.                
  97.                 $task = new Task();
  98.                 $task->setMission($mission);
  99.                 $task->setTitle($taskTitle);
  100.                 $task->setCreatedBy($user->getId());
  101.                 $task->setCreatedAt(new \DateTime('now'));
  102.                 $entityManager->persist($task);
  103.                 try {
  104.                     $entityManager->flush();
  105.                     $task_id=$task->getId();
  106.                     $dataT['task'] = [
  107.                     'idTask'=>$task->getId(),
  108.                     'titleTask'=>$task->getTitle(),
  109.                    /* 'date'=>$mission->getCreatedAt()->format('d/m/Y'),
  110.                     'job'=>$job_title,
  111.                     'mission'=>$mission_title,
  112.                     'processus'=>$processus_ref,
  113.                     'responsible'=>$responsible->getFullName()*/
  114.                 ];
  115.                     $data[] =$dataT;
  116.                 } catch (\Exception $e) {
  117.                     $data = array('status' => 'error''message' => $e->getMessage());
  118.                 }
  119.             } else {
  120.                 $task_id =  $request->request->get('idTask');
  121.                 $task $entityManager->getRepository(Task::class)->findOneBy(['id'=>$task_id]);
  122.                 $dataT['task'] = [
  123.                     'idTask'=>$task->getId(),
  124.                     'titleTask'=>$task->getTitle(),
  125.                 ];
  126.                 $data[] =$dataT;
  127.             }
  128.                 
  129.             
  130.                
  131.             // dd( $mission);
  132.             $situation = new Situation();
  133.             $situation->setTask($task);
  134.             $situation->setTitle($situationTitle);
  135.             $situation->setCreatedBy($user->getId());
  136.             $situation->setCreatedAt(new \DateTime('now'));
  137.             $entityManager->persist($situation);
  138.             try {
  139.                 $entityManager->flush();
  140.                 $dataS['situation'] = [
  141.                     'idSituation'=>$situation->getId(),
  142.                     'titleSituation'=>$situation->getTitle(),
  143.                    /* 'date'=>$mission->getCreatedAt()->format('d/m/Y'),
  144.                     'job'=>$job_title,
  145.                     'mission'=>$mission_title,
  146.                     'processus'=>$processus_ref,
  147.                     'responsible'=>$responsible->getFullName()*/
  148.                 ];
  149.                 $data[] =$dataS;
  150.                 foreach ($risques as $id) {
  151.                     $risque $entityManager->getRepository(Risque::class)->findOneBy(['id'=>$id]);
  152.                     $situation_risque = new SituationRisque();
  153.                     $situation_risque->setSituation($situation);
  154.                     $situation_risque->setRisque($risque);
  155.                     $companyEntity null;
  156.                     if ($entityId) {
  157.                         $companyEntity $entityManager
  158.                             ->getRepository(CompanyEntity::class)
  159.                             ->find($entityId);
  160.                     } else {
  161.                         $companyEntity $this->selectedEntityService->getSelectedEntity();
  162.                     }
  163.                     $situation_risque->setCompanyEntity($companyEntity);
  164.                     $entityManager->persist($situation_risque);
  165.                     $entityManager->flush();
  166.                     $dataSR['situation_R'][] = [
  167.                     'idSR'=>$situation_risque->getId(),
  168.                     'titlerisque'=>$risque->getNom(),
  169.                     'idRisque'=>$risque->getId(),
  170.                     'idSituation'=>$situation->getId(),
  171.                    /* 'date'=>$mission->getCreatedAt()->format('d/m/Y'),
  172.                     'job'=>$job_title,
  173.                     'mission'=>$mission_title,
  174.                     'processus'=>$processus_ref,
  175.                     'responsible'=>$responsible->getFullName()*/
  176.                     ];
  177.                 }
  178.                 $data[] =$dataSR;
  179.             } catch (\Exception $e) {
  180.                 $data = array('status' => 'error''message' => $e->getMessage());
  181.             }
  182.         }
  183.         $response =$data;
  184.         return new JsonResponse($response200);
  185.     }
  186.     /**
  187.     * @Route("/situation/{id}/edit", name="edit_situation", methods={"GET","POST"})
  188.     */
  189.     public function editSituation(Request $requestSituation $situation): Response
  190.     {
  191.         if (!$request->isXmlHttpRequest()) {
  192.             return new JsonResponse(array('status' => 'error','message' => 'Access forbidden!'), 400);
  193.         }
  194.         if (isset($request->request)) {
  195.             $entityId $request->request->get('entity_id');
  196.             $situationTitle $request->request->get('situation');
  197.             $risques$request->request->get('risques');
  198.             $risques_selected$request->request->get('risques_selected');
  199.          
  200.             
  201.             // Récupération de l'utilisateur connecté
  202.             $user $this->getUser();
  203.            
  204.             $risques_add array_diff($risques$risques_selected);
  205.            
  206.             $risques_deleted array_diff($risques_selected$risques);
  207.             $entityManager $this->getDoctrine()->getManager();
  208.                
  209.             $situation->setTitle($situationTitle);
  210.               
  211.             try {
  212.                 $entityManager->flush();
  213.                 $dataS['situation'] = [
  214.                     'idSituation'=>$situation->getId(),
  215.                     'titleSituation'=>$situation->getTitle(),
  216.                  
  217.                     ];
  218.                 $data[] =$dataS;
  219.                 $situations_risques $entityManager->getRepository(SituationRisque::class)->findBy(['situation'=>$situation->getId()]);
  220.                 foreach ($situations_risques as $situation_risque) {
  221.                     if (in_array($situation_risque->getRisque()->getId(), $risques_deleted)) {
  222.                         $entityManager->remove($situation_risque);
  223.                         $entityManager->flush();
  224.                     }
  225.                 }
  226.                 foreach ($risques_add as $id) {
  227.                     $risque $entityManager->getRepository(Risque::class)->findOneBy(['id'=>$id]);
  228.                     $situation_risque = new SituationRisque();
  229.                     $situation_risque->setSituation($situation);
  230.                     $situation_risque->setRisque($risque);
  231.                     $entityManager->persist($situation_risque);
  232.                     $entityManager->flush();
  233.                 }
  234.                 // Déterminer l'entité Ã  filtrer pour la réponse
  235.                 $selectedEntity $this->selectedEntityService->getSelectedEntity();
  236.                 
  237.                 $situations_risques $entityManager->getRepository(SituationRisque::class)->findBy(['situation'=>$situation->getId()]);
  238.                 $dataSR['situation_R'] = []; // Initialisation du tableau
  239.                 foreach ($situations_risques as $situation_risque) {
  240.                     // Filtrer par entité sélectionnée ou montrer tout si aucune entité sélectionnée
  241.                     if (
  242.                         !$selectedEntity ||
  243.                         !$situation_risque->getCompanyEntity() ||
  244.                         $situation_risque->getCompanyEntity()->getId() === $selectedEntity->getId()
  245.                     ) {
  246.                         $dataSR['situation_R'][] = [
  247.                         'idSR'=>$situation_risque->getId(),
  248.                         'titlerisque'=>$situation_risque->getRisque()->getNom(),
  249.                         'idRisque'=>$situation_risque->getRisque()->getId(),
  250.                         'idSituation'=>$situation->getId(),
  251.                         ];
  252.                     }
  253.                 }
  254.                 $data[] =$dataSR;
  255.             } catch (\Exception $e) {
  256.                 $data = array('status' => 'error''message' => $e->getMessage());
  257.             }
  258.         }
  259.          
  260.         $response =$data;
  261.         return new JsonResponse($response200);
  262.     }
  263.      /**
  264.     * @Route("/task/{id}/edit", name="editJob_task", methods={"GET","POST"})
  265.     */
  266.     public function editTask(Request $requestTask $task): Response
  267.     {
  268.          if (!$request->isXmlHttpRequest()) {
  269.             return new JsonResponse(array('status' => 'error','message' => 'Access forbidden!'), 400);
  270.         }
  271.         if (isset($request->request)) {
  272.             $taskTitle $request->request->get('valeur');
  273.             $entityManager $this->getDoctrine()->getManager();
  274.             $task->setTitle($taskTitle);
  275.             try {
  276.                 $entityManager->flush();
  277.                 $data=['update'=>1,'title'=>$taskTitle];
  278.             } catch (\Exception $e) {
  279.                 $data = array('status' => 'error''message' => $e->getMessage());
  280.             }
  281.         }
  282.             $response =$data;
  283.             return new JsonResponse($response200);
  284.     }
  285.     /**
  286.      * @Route("/situation/{id}/get", name="situation_get", methods={"GET","POST"})
  287.      */
  288.     public function getSituation(Request $requestSituation $situation): Response
  289.     {
  290.         if (isset($request->request)) {
  291.             $entityManager $this->getDoctrine()->getManager();
  292.             $risque =$entityManager->getRepository(Risque::class)->findAll();
  293.             
  294.             // Déterminer l'entité Ã  filtrer
  295.             $selectedEntity $this->selectedEntityService->getSelectedEntity();
  296.             $situations_risques $situation->getSituationRisques();
  297.             $data = [];
  298.             
  299.             foreach ($situations_risques as $situation_risque) {
  300.                 // Filtrer par entité sélectionnée ou montrer tout si aucune entité sélectionnée
  301.                 if (
  302.                     !$selectedEntity ||
  303.                     !$situation_risque->getCompanyEntity() ||
  304.                     $situation_risque->getCompanyEntity()->getId() === $selectedEntity->getId()
  305.                 ) {
  306.                     $data[] = [
  307.                         'idSR'=>$situation_risque->getId(),
  308.                         'titlerisque'=>$situation_risque->getRisque()->getNom(),
  309.                         'idRisque'=>$situation_risque->getRisque()->getId(),
  310.                         'idSituation'=>$situation->getId(),
  311.                     ];
  312.                 }
  313.             }
  314.             $response =$data;
  315.             return new JsonResponse($response200);
  316.         }
  317.     }
  318.     /**
  319.      * @Route("/task/{id}/delete", name="task_delete", methods={"GET","POST"})
  320.      */
  321.     public function deleteT(Request $requestTask $tache): Response
  322.     {
  323.         return $this->deletedata($request$tache'T');
  324.     }
  325.     /**
  326.      * @Route("/situation/{id}/delete", name="situation_delete", methods={"GET","POST"})
  327.      */
  328.     public function deleteS(Request $requestSituation $situation): Response
  329.     {
  330.         return $this->deletedata($request$situation'S');
  331.     }
  332.     public function deletedata($request$data$type): Response
  333.     {
  334.         if (isset($request->request)) {
  335.             $entityManager $this->getDoctrine()->getManager();
  336.             if ($type=='T') {
  337.                 $situations $entityManager->getRepository(Situation::class)->findBy(['task'=>$data->getId()]);
  338.                 foreach ($situations as $situation) {
  339.                     $situations_risques $entityManager->getRepository(SituationRisque::class)->findBy(['situation'=>$situation->getId()]);
  340.                     foreach ($situations_risques as $situation_risque) {
  341.                         $actions $situation_risque->getActions();
  342.                         foreach ($actions as $action) {
  343.                             $entityManager->remove($action);
  344.                         }
  345.                         $entityManager->remove($situation_risque);
  346.                         $entityManager->flush();
  347.                     }
  348.                     $entityManager->remove($situation);
  349.                     $entityManager->flush();
  350.                 }
  351.             } elseif ($type=='S') {
  352.                 $situations_risques $entityManager->getRepository(SituationRisque::class)->findBy(['situation'=>$data->getId()]);
  353.                 foreach ($situations_risques as $situation_risque) {
  354.                     $entityManager->remove($situation_risque);
  355.                     $entityManager->flush();
  356.                 }
  357.             }
  358.             $entityManager->remove($data);
  359.             $entityManager->flush();
  360.             $response =['deleted'=>1];
  361.                     
  362.             return new JsonResponse($response200);
  363.         }
  364.     }
  365.     /**
  366.      * @Route("/criticite/{id}/edit", name="edit_criticite", methods={"GET","POST"})
  367.      */
  368.     public function editCriticite(Request $requestSituationRisque $situationRisque): Response
  369.     {
  370.         if (!$request->isXmlHttpRequest()) {
  371.             return new JsonResponse(array('status' => 'error','message' => 'Access forbidden!'), 400);
  372.         }
  373.         if (isset($request->request)) {
  374.             $entityManager $this->getDoctrine()->getManager();
  375.             $listF$entityManager->getRepository(Frequence::class)->findAll();
  376.             $listG$entityManager->getRepository(Gravite::class)->findAll();
  377.             // dd($situationRisque);
  378.             $frequenceId=0;
  379.             $graviteId =0;
  380.              if ($situationRisque->getFrequence())
  381.             $frequenceId=$situationRisque->getFrequence()->getId();
  382.             if ($situationRisque->getGravite())
  383.             $graviteId=$situationRisque->getGravite()->getId();
  384.             $commentaire=$situationRisque->getCommentCR();
  385.             $idSR=$situationRisque->getId();
  386.             return $this->render('bilanTemplates/identification_sst/_formCR.html.twig', [
  387.             'frequenceId' => $frequenceId,
  388.             'graviteId' => $graviteId,
  389.             'commentaire'=> $commentaire,
  390.             'id'=>$idSR,
  391.             'frequences'=>$listF,
  392.             'gravites'=>$listG,
  393.             'type'=>'SSTmetier',
  394.         ]);
  395.         }
  396.     }
  397.     /**
  398.      * @Route("/prevention/{id}/edit", name="edit_prevention", methods={"GET","POST"})
  399.      */
  400.     public function editPrevention(Request $requestSituationRisque $situationRisque): Response
  401.     {
  402.         if (!$request->isXmlHttpRequest()) {
  403.             return new JsonResponse(array('status' => 'error','message' => 'Access forbidden!'), 400);
  404.         }
  405.         if (isset($request->request)) {
  406.             $entityManager $this->getDoctrine()->getManager();
  407.             $listMOG$entityManager->getRepository(MOG::class)->findAll();
  408.             $mogId =0;
  409.             if ($situationRisque->getMOG())
  410.             $mogId=$situationRisque->getMOG()->getId();
  411.             $commentaire=$situationRisque->getCommentRR();
  412.             $idSR=$situationRisque->getId();
  413.             return $this->render('bilanTemplates/identification_sst/_formRR.html.twig', [
  414.             'mogId' => $mogId,
  415.             'commentaire'=> $commentaire,
  416.             'id'=>$idSR,
  417.             'mogs'=>$listMOG,
  418.             'type'=>'SSTmetier',
  419.         ]);
  420.         }
  421.     }
  422.     /**
  423.      * @Route("/saveCrticite", name="saveCrticite", methods={"GET","POST"})
  424.      */
  425.     public function saveCrticite(Request $request,TaskRepository $taskRepository): Response
  426.     {
  427.         if (!$request->isXmlHttpRequest()) {
  428.             return new JsonResponse(array('status' => 'error','message' => 'Access forbidden!'), 400);
  429.         }
  430.         if (isset($request->request)) {
  431.             $idSR $request->request->get('id');
  432.             $evaluer =  $request->request->get('evaluer');
  433.            
  434.             $commentaire$request->request->get('commentaire');
  435.             $entityManager $this->getDoctrine()->getManager();
  436.             $situation_risque $entityManager->getRepository(SituationRisque::class)->findOneBy(['id'=>$idSR]);
  437.             if ($evaluer=='criticite') {
  438.                 $idF$request->request->get('frequence');
  439.                 $idG$request->request->get('gravite');
  440.                 $frequence $entityManager->getRepository(Frequence::class)->findOneBy(['id'=> substr($idFstrpos($idF"_") + 1)]);
  441.            
  442.                 $gravite $entityManager->getRepository(Gravite::class)->findOneBy(['id'=>substr($idGstrpos($idG"_") + 1)]);
  443.                 //old
  444.                 //$criticite_array = $entityManager->getRepository(Criticite::class)->findBy(['type'=>'criticite']);
  445.                 //updated by Chiheb
  446.                 $criticite_array $entityManager->getRepository(Criticite::class)->findBy(['type'=>'criticite'],['valeur'=>'asc']);
  447.                 $situation_risque->setFrequence($frequence);
  448.                 $situation_risque->setGravite($gravite);
  449.                 $situation_risque->setCommentCR($commentaire);
  450.               
  451.                 try {
  452.                     $entityManager->flush();
  453.                     $noteF=$frequence->getNote();
  454.                     $noteG=$gravite->getNote();
  455.                     $criticiteValue=$noteF*$noteG;
  456.                     //old
  457.                     // usort($criticite_array, function ($a, $b) {
  458.                     //     return strcmp($a->getValeur(), $b->getValeur());
  459.                     // });
  460.                      $criticite='';
  461.                      $criticite_color='#fff';
  462.                     foreach ($criticite_array as $criticite_element) {
  463.                         if ($criticiteValue  >=$criticite_element->getValeur()) {
  464.                             $criticite=$criticite_element->getLegende();
  465.                             $criticite_valeur=$criticite_element->getValeur();
  466.                             $criticite_color=$criticite_element->getCouleur();
  467.                         }
  468.                     }
  469.                     
  470.                     $data =array('id' => $situation_risque->getId(),'frequence'=>$noteF,'gravite'=>$noteG,'criticiteVal'=> $criticiteValue,'criticiteLegende'=>$criticite,'criticiteColor'=>$criticite_color);
  471.                 } catch (\Exception $e) {
  472.                     $data = array('status' => 'error''message' => $e->getMessage());
  473.                 }
  474.             }
  475.              if ($evaluer=='prevention') {
  476.                 $idmog$request->request->get('mog');
  477.                 $mog $entityManager->getRepository(MOG::class)->findOneBy(['id'=> substr($idmogstrpos($idmog"_") + 1)]);
  478.                 $prevention_array $entityManager->getRepository(Criticite::class)->findBy(['type'=>'prevention'],['valeur'=>'asc']);
  479.               
  480.                 $situation_risque->setMOG($mog);
  481.                 $situation_risque->setCommentRR($commentaire);
  482.               
  483.                 try {
  484.                     $entityManager->flush();
  485.                     $noteMog=$mog->getNote();
  486.                     $noteF =  $situation_risque->getFrequence()->getNote();
  487.                     $noteG =  $situation_risque->getGravite()->getNote();
  488.                    
  489.                     $preventionVal=$taskRepository->calculRR(0$noteMog$noteF$noteG);
  490.                      $prevention='';
  491.                      $prevention_color='#fff';
  492.                     foreach ($prevention_array as $prevention_element) {
  493.                         if ($preventionVal  >=$prevention_element->getValeur()) {
  494.                             $prevention=$prevention_element->getLegende();
  495.                             $prevention_valeur=$prevention_element->getValeur();
  496.                             $prevention_color=$prevention_element->getCouleur();
  497.                         }
  498.                     }
  499.                     $data =array('id' => $situation_risque->getId(),'mog'=>$noteMog,'preventionVal'=> $preventionVal,'preventionLegende'=>$prevention,'preventionColor'=>$prevention_color);
  500.                 } catch (\Exception $e) {
  501.                     $data = array('status' => 'error''message' => $e->getMessage());
  502.                 }
  503.             }
  504.         }
  505.             $response =$data;
  506.             return new JsonResponse($response200);
  507.     }
  508.      /**
  509.     * @Route("/mEtudier", name="metier_etudier",methods={"POST"})
  510.     */
  511.     public function mEtudier(Request $request,JobRepository $jobRepository): Response
  512.     {
  513.          
  514.          if (!$request->isXmlHttpRequest()) {
  515.             return new JsonResponse(array('status' => 'error','message' => 'Access forbidden!'), 400);
  516.         }
  517.         if (isset($request->request)) {
  518.             $entityManager $this->getDoctrine()->getManager();
  519.             $metiers $jobRepository->countAll();
  520.             $metierST$jobRepository->countMEtudier();
  521.             $mEtudiers=($metierST/$metiers)*100;
  522.             $data =array('mEtudiers'=>$mEtudiers);
  523.             $response =$data;
  524.             return new JsonResponse($response200);
  525.         }
  526.     }
  527. }