src/Controller/bilanControllers/JobEvalKanbanController.php line 439

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