src/Controller/ProcessusController.php line 723

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Activity;
  4. use App\Entity\Comments;
  5. use App\Entity\Folder;
  6. use App\Entity\Indicator;
  7. use App\Entity\Processus;
  8. use App\Entity\Reunion;
  9. use App\Entity\Source;
  10. use App\Entity\Type;
  11. use App\Enum\StatusEnum;
  12. use App\Form\ConfigProcessusType;
  13. use App\Form\ProcessusType;
  14. use App\Repository\ActionRepository;
  15. use App\Repository\ReunionRepository;
  16. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use App\Utils\Utility;
  21. use App\Notification\SendNotification;
  22. use App\Repository\ActivityRepository;
  23. use App\Repository\DataRepository;
  24. use App\Repository\IndicatorRepository;
  25. use App\Security\ProcessusVoter;
  26. use Symfony\Component\Filesystem\Exception\IOExceptionInterface;
  27. use Symfony\Component\Filesystem\Filesystem;
  28. use Symfony\Component\HttpFoundation\JsonResponse;
  29. use Symfony\Component\Security\Core\Security;
  30. /**
  31.  * @Route("/processus")
  32.  */
  33. class ProcessusController extends AbstractController
  34. {
  35.     /**
  36.      * @var SendNotification
  37.      */
  38.     private $notify;
  39.     private $security;
  40.     public function __construct(SendNotification $notifySecurity $security)
  41.     {
  42.         $this->notify $notify;
  43.         $this->security $security;
  44.     }
  45.     /**
  46.      * @Route("/", name="processus_index", methods={"GET"})
  47.      */
  48.     public function index(): Response
  49.     {
  50.         $processuses $this->getDoctrine()
  51.             ->getRepository(Processus::class)
  52.             ->findAll();
  53.         //menu 
  54.         $menu="processus";
  55.         $left_menu="system_management";
  56.         
  57.         return $this->render('processus/index.html.twig', [
  58.             'processuses' => $processuses,
  59.             'menu'=>$menu,
  60.             'left_menu'=>$left_menu
  61.         ]);
  62.     }
  63.       /**
  64.      * @Route("/configuration", name="config_processus", methods={"GET"})
  65.      */
  66.     public function config_processus(Request $request): Response
  67.     {
  68.         $processuses $this->getDoctrine()
  69.             ->getRepository(Processus::class)
  70.             ->findAll();
  71.         $form $this->createForm(ConfigProcessusType::class);
  72.         $form->handleRequest($request);
  73.         if ($form->isSubmitted() && $form->isValid()) {
  74.         
  75.             return $this->redirectToRoute('processus_index');
  76.         }
  77.         //menu 
  78.         $menu="processus";
  79.         $left_menu="configuration";
  80.         
  81.         return $this->render('processus/configuration.html.twig', [
  82.             'processuses' => $processuses,
  83.             'menu'=>$menu,
  84.             'left_menu'=>$left_menu
  85.             'form' => $form->createView(),
  86.         ]);
  87.     }
  88.     /**
  89.      * @Route("/new/{type}", name="processus_new", methods={"GET","POST"})
  90.      */
  91.     public function new(Request $requestString $type): Response
  92.     {
  93.         $this->denyAccessUnlessGranted(ProcessusVoter::PROCESSUS_CRU);
  94.         
  95.         $processuss $this->getDoctrine()
  96.             ->getRepository(Processus::class)
  97.             ->findAll();
  98.         $array_ref=[];
  99.          foreach ($processuss as $proc) {
  100.            $array_ref[]=$proc->getRef();
  101.          }
  102.         
  103.         $processus = new Processus();
  104.         $user$this->getUser();
  105.         /* genretate ref */
  106.         /*$lastId=0;
  107.         $lastprocessus = $this->getDoctrine()->getRepository(processus::class)->findOneBy([], ['id' => 'desc']);
  108.         if(is_object($lastprocessus))
  109.         {
  110.             $lastId = $lastprocessus->getId();
  111.         }
  112.         $utility = new Utility;
  113.         $ref = $utility->generateRef($lastId,processus::PREFIX,'processus');
  114.         $processus->setRef($ref);*/
  115.         /* end genretate ref*/
  116.         
  117.         $processus ->setType($type);
  118.         $form $this->createForm(processusType::class, $processus);
  119.         $form->handleRequest($request);
  120.         if ($form->isSubmitted() && $form->isValid()) {
  121.             $ref_exsist $this->getDoctrine()->getRepository(Processus::class)->findOneBy(['ref'=>$processus->getRef()]);
  122.             if (empty($ref_exsist)) {
  123.                 $processus->setCreatedAt(new \DateTime('now'));
  124.                 
  125.                 $processus->setCreatedBy($user);
  126.                 $processus->addParticipant($user);
  127.                 if($processus->getPilote()) {
  128.                     $processus->addParticipant($processus->getPilote());
  129.                 }
  130.                 $processus->setRef($processus->getRef());
  131.                 $is_outsourced boolval($request->request->get('is_outsourced'));
  132.                 $processus->setIsOutsourced($is_outsourced);
  133.                 if($is_outsourced) {
  134.                     $processus->setPilote(null);
  135.                 }else {
  136.                     $processus->setExternalCompany('');
  137.                     $processus->setContactPerson('');
  138.                 }
  139.                 // add comment dashboard
  140.                 $comment =  new Comments();
  141.                 $comment->setCreatedBy($processus->getCreatedBy());
  142.                 $comment->setProcessus($processus);
  143.                 //create folder in ged directory
  144.                 $entityManager $this->getDoctrine()->getManager();
  145.                 $folderCommun $entityManager->getRepository(Folder::class)->findOneBy(["folderName"=>"Documents Communs","path"=>"/"]);
  146.             
  147.                 if (empty($folderCommun)) {
  148.                     $folderCommun = new Folder();
  149.                     $folderCommun->setFolderName("Documents Communs");
  150.                     $folderCommun->setFolderType("Documents Communs");
  151.                     $folderCommun->setPath("/");
  152.                 }
  153.                 $folder = new Folder();
  154.                 $folder->setFolderName($processus->getTitle()) ;
  155.                 $folder->setParentFolder($folderCommun) ;
  156.                 $folder->setFolderType("Documents Communs") ;
  157.                 $folder->setProcessus($processus);
  158.                 $folder->setPath("/Documents Communs/");
  159.                 /*$fsObject = new Filesystem();
  160.                 $current_dir_path = getcwd();
  161.                 try {
  162.                     $Commun_dir_path = $current_dir_path . "/Files/Ged_Files/".$folderCommun->getFolderName()."/".$folder->getFolderName();
  163.                     if (!$fsObject->exists($Commun_dir_path))
  164.                     {
  165.                         $old = umask(0);
  166.                         $fsObject->mkdir($Commun_dir_path, 0775);
  167.                         $fsObject->chown($Commun_dir_path, "www-data");
  168.                         $fsObject->chgrp($Commun_dir_path, "www-data");
  169.                         umask($old);
  170.                     }
  171.                 } catch (IOExceptionInterface $exception) {
  172.                     echo "Error creating directory at". $exception->getPath();
  173.                 }*/
  174.             
  175.             
  176.                 $entityManager->persist($processus);
  177.                 $entityManager->persist($comment);
  178.                 if (empty($folderCommun)) {
  179.                     $entityManager->persist($folderCommun);
  180.                 }
  181.                 $entityManager->persist($folder);
  182.                 $entityManager->flush();
  183.                 // $this->notify->notify(
  184.                 //     $processus->getCreatedBy()->getEmail(),
  185.                 //     $processus->getPilote()->getEmail(),
  186.                 //     $processus->getPilote()->getFullName(),
  187.                 //     $processus->getRef()
  188.                 // );
  189.             
  190.             
  191.                 $this->addFlash("success""Le processus a Ã©té créé avec succès");
  192.                 return $this->redirectToRoute('processus_index');
  193.             }else{
  194.                  $response = array('error' => 'Cette référence exsiste déjà !');
  195.                  return new JsonResponse($response,200); 
  196.                
  197.             }
  198.         }
  199.         return $this->render('processus/new.html.twig', [
  200.             'processuss'=>$array_ref,
  201.             'processus' => $processus,
  202.             'form' => $form->createView(),
  203.         ]);
  204.     }
  205.     /**
  206.      * @Route("/{id}", name="processus_show", methods={"GET"})
  207.      */
  208.     public function show(Processus $processus): Response
  209.     {
  210.         //menu 
  211.         $menu="processus";
  212.         $left_menu="system_management";
  213.         return $this->render('processus/show.html.twig', [
  214.             'processus' => $processus,
  215.             'menu' => $menu,
  216.             'left_menu' => $left_menu
  217.         ]);
  218.     }
  219.     /**
  220.      * @Route("/{id}/edit", name="processus_edit", methods={"GET","POST"})
  221.      */
  222.     public function edit(Request $requestProcessus $processus): Response
  223.     {   
  224.         
  225.          $processuss $this->getDoctrine()
  226.         ->getRepository(Processus::class)
  227.         ->findAll();
  228.         $array_ref=[];
  229.         foreach ($processuss as $proc) {
  230.                 $array_ref[]=$proc->getRef();
  231.                     }
  232.         $form $this->createForm(ProcessusType::class, $processus);
  233.         $form->handleRequest($request);
  234.         if ($form->isSubmitted() && $form->isValid()) {
  235.             $this->denyAccessUnlessGranted(ProcessusVoter::PROCESSUS_CRU);
  236.             $processus->setUpdatedAt(new \DateTime('now'));
  237.             $is_outsourced boolval($request->request->get('is_outsourced'));
  238.             
  239.             $processus->setIsOutsourced($is_outsourced);
  240.             if($is_outsourced) {
  241.                 $processus->setPilote(null);
  242.             }else {
  243.                 $processus->setExternalCompany('');
  244.                 $processus->setContactPerson('');
  245.             }
  246.             $this->getDoctrine()->getManager()->flush();
  247.             $this->addFlash("success","Le processus a Ã©té modifié avec succès");
  248.             return $this->redirectToRoute('processus_index');
  249.         }
  250.         return $this->render('processus/edit.html.twig', [
  251.             'processuss' => $array_ref,
  252.             'processus' => $processus,
  253.             'form' => $form->createView(),
  254.         ]);
  255.     }
  256.     /**
  257.      * @Route("/{id}/ficheedit", name="processus_fiche_edit", methods={"GET","POST"})
  258.      */
  259.     public function ficheedit(Request $requestProcessus $processus): Response
  260.     {
  261.         $this->denyAccessUnlessGranted(ProcessusVoter::PROCESSUS_CRU);
  262.         $form $this->createForm(ProcessusType::class, $processus);
  263.         $form->handleRequest($request);
  264.         if ($form->isSubmitted() && $form->isValid()) {
  265.             $processus->setUpdatedAt(new \DateTime('now'));
  266.             $this->getDoctrine()->getManager()->flush();
  267.             $this->addFlash("success","Le processus a Ã©té modifié avec succès");
  268.             return $this->redirectToRoute('processus_show',['id'=>$processus->getId()]);
  269.         }
  270.         return $this->render('processus/ficheedit.html.twig', [
  271.             'processus' => $processus,
  272.             'form' => $form->createView(),
  273.         ]);
  274.     }
  275.     /**
  276.      * @Route("/{id}", name="processus_delete", methods={"POST"})
  277.      */
  278.     public function delete(Request $requestProcessus $processus): Response
  279.     {
  280.         $this->denyAccessUnlessGranted(ProcessusVoter::PROCESSUS_D);
  281.         if ($this->isCsrfTokenValid('delete'.$processus->getId(), $request->request->get('_token'))) {
  282.             $entityManager $this->getDoctrine()->getManager();
  283.             $entityManager->remove($processus);
  284.             $this->addFlash("success","Le processus a Ã©té supprimé avec succès");
  285.             $entityManager->flush();
  286.             
  287.         }
  288.         return $this->redirectToRoute('processus_index');
  289.         
  290.     }
  291.     /**
  292.      * @Route("/dashboardProcessus/{id}", name="dashboard_processus_signle")
  293.      */
  294.     public function dashboardProcessus(ActionRepository $actionRepositoryProcessus $processusReunionRepository $reunionRepository)
  295.     {
  296.         $utility = new Utility;
  297.        
  298.         
  299.         $nbrTotalAction $actionRepository->findNbrAction($processus);
  300.         
  301.         //indicator objectif
  302.         $indicators $this->getDoctrine()
  303.             ->getRepository(Indicator::class)
  304.             ->findBy(['processus'=>$processus,'type'=>'OBJECTIF STRATEGIQUE','status'=>Indicator::STATUS_VALIDATED]);
  305.         
  306.         $array_indicators_values=[];
  307.         
  308.         if($indicators)
  309.         {
  310.             foreach($indicators as $indicator)
  311.             {
  312.                 $cible $indicator->getCible();
  313.                 
  314.                 foreach ($indicator->getIndicatorValues() as $indicatorValue
  315.                 {
  316.                     $array_indicator_value=[];
  317.                     $departValue $indicatorValue->getJan();
  318.                     $ecart $cible $departValue;
  319.                     
  320.                     $color_parts_array=  $utility->random_rgb_color_array();
  321.                     $array_indicator_value['name']=$indicator->getTitle();
  322.                     $array_indicator_value['fillColor']= $utility->generate_rgb_color($color_parts_array,0.2);
  323.                     $array_indicator_value['color']= $utility->generate_rgb_color($color_parts_array,1);
  324.                     $array_indicator_value['Jan'] = $utility->getPercentage(($indicatorValue->getJan() - $departValue),$ecart);
  325.                     $array_indicator_value['Feb'] = $utility->getPercentage(($indicatorValue->getFeb() - $departValue),$ecart);
  326.                     $array_indicator_value['Mar'] = $utility->getPercentage(($indicatorValue->getMar() - $departValue),$ecart);
  327.                     $array_indicator_value['Apr'] = $utility->getPercentage(($indicatorValue->getApr() - $departValue),$ecart);
  328.                     $array_indicator_value['Mai'] = $utility->getPercentage(($indicatorValue->getMai() - $departValue),$ecart);
  329.                     $array_indicator_value['Jun'] = $utility->getPercentage(($indicatorValue->getJun() - $departValue),$ecart);
  330.                     $array_indicator_value['Jul'] = $utility->getPercentage(($indicatorValue->getJul() - $departValue),$ecart);
  331.                     $array_indicator_value['Aug'] = $utility->getPercentage(($indicatorValue->getAug() - $departValue),$ecart);
  332.                     $array_indicator_value['Sep'] = $utility->getPercentage(($indicatorValue->getSep() - $departValue),$ecart);
  333.                     $array_indicator_value['Oct'] = $utility->getPercentage(($indicatorValue->getOct() - $departValue),$ecart);
  334.                     $array_indicator_value['Nov'] = $utility->getPercentage(($indicatorValue->getNov() - $departValue),$ecart);
  335.                     $array_indicator_value['December'] = $utility->getPercentage(($indicatorValue->getDecember() - $departValue),$ecart);
  336.                     
  337.                     $array_indicators_values[]=$array_indicator_value;
  338.                     
  339.                 }
  340.                 
  341.                 
  342.             }
  343.         }
  344.         
  345.         
  346.         
  347.         //first Bar Chart
  348.         /*
  349.         $array_months=[
  350.             1   =>  "Janvier",
  351.             2   =>  "Février",
  352.             3   =>  "Mars",
  353.             4   =>  "Avril",
  354.             5   =>  "Mai",
  355.             6   =>  "Juin",
  356.             7   =>  "Juillet",
  357.             8   =>  "Août",
  358.             9   =>  "Septembre",
  359.             10  =>  "Octobre",
  360.             11  =>  "Novembre",
  361.             12  =>  "Décembre",
  362.         ];
  363.         
  364.         $array_individual_actions=[];
  365.         $array_objectif_actions=[];
  366.         $month_number = date('m');
  367.         $i=1;
  368.         for ($i=1; $i <= $month_number; $i++) {
  369.             $month_text= $array_months[$i];
  370.             $individual_actions=$actionRepository->findNbrAction($processus,'not_include',StatusEnum::STATUS_IN_PROGRESS,'late','','',$i);
  371.             
  372.             $array_individual_actions[$month_text]=$utility->getPercentage($individual_actions,$nbrTotalAction);
  373.             $objectif_actions=$actionRepository->findNbrAction($processus,'include',StatusEnum::STATUS_IN_PROGRESS,'late','','',$i);
  374.             
  375.             $array_objectif_actions[$month_text]=$utility->getPercentage($objectif_actions,$nbrTotalAction);
  376.         }
  377.         */
  378.         // chart source
  379.         $array_sources=[];
  380.         $sources $this->getDoctrine()->getRepository(Source::class)->findAll();
  381.         
  382.         foreach($sources as $source )
  383.         {
  384.             $nbrActionSources=$actionRepository->findNbrAction($processus,'','','','','','','',$source);
  385.             $array_sources[$source->getTitle()]['value']=$utility->getPercentage($nbrActionSources,$nbrTotalAction);
  386.             $array_sources[$source->getTitle()]['color']=$utility->random_color();
  387.         }
  388.         $types $this->getDoctrine()->getRepository(Type::class)->findAll();
  389.         $array_types=[];
  390.         foreach($types as $type )
  391.         {
  392.             $nbrActionTypes=$actionRepository->findNbrAction($processus,'','','','','','','','',$type);
  393.             $array_types[$type->getTitle()]['value']=$utility->getPercentage($nbrActionTypes,$nbrTotalAction);
  394.             $array_types[$type->getTitle()]['color']=$utility->random_color();
  395.         }
  396.         
  397.         //4 circles
  398.         
  399.         $nbrClosedLateAction $actionRepository->findNbrAction($processus,'',StatusEnum::STATUS_CLOSED,'late');
  400.         $nbrPlannedActions_notStarted $actionRepository->findNbrAction($processus,'',StatusEnum::STATUS_PLANNED,'','','','','','','','','','no');
  401.         $nbrOverBudgetAction $actionRepository->findNbrAction($processus,'','','','','over');
  402.         $nbrActions_overDuration $actionRepository->findNbrAction($processus,'','','','','','','','','','','','','over');
  403.         $nbrClosedLateActionPercent $utility->getPercentage($nbrClosedLateAction,$nbrTotalAction);
  404.         $nbrPlannedActionsPercent $utility->getPercentage($nbrPlannedActions_notStarted,$nbrTotalAction);
  405.         $nbrOverBudgetActionPercent $utility->getPercentage($nbrOverBudgetAction,$nbrTotalAction);
  406.         $nbrActions_overDurationPercent $utility->getPercentage($nbrActions_overDuration,$nbrTotalAction);
  407.         //next reunions
  408.         //months
  409.         $array_months=[
  410.             1   =>  "Janvier",
  411.             2   =>  "Février",
  412.             3   =>  "Mars",
  413.             4   =>  "Avril",
  414.             5   =>  "Mai",
  415.             6   =>  "Juin",
  416.             7   =>  "Juillet",
  417.             8   =>  "Août",
  418.             9   =>  "Septembre",
  419.             10  =>  "Octobre",
  420.             11  =>  "Novembre",
  421.             12  =>  "Décembre",
  422.         ];
  423.         $month_number date('m');
  424.         $i=1;
  425.         $months=[];
  426.         for ($i=1$i <= $month_number$i++) {
  427.             $month_text$array_months[$i];
  428.             $months[]=$month_text;
  429.         }
  430.         //reunion
  431.         $reunions $reunionRepository->findByCustom($processus,'PLANIFIÉE',5);
  432.         
  433.         return $this->render('processus/dashboard.html.twig', [
  434.             'processus' => $processus,
  435.             //'individual_actions' => $array_individual_actions,
  436.             //'objectif_actions' => $array_objectif_actions,
  437.             'nbrClosedLateActionPercent' => $nbrClosedLateActionPercent,
  438.             'nbrPlannedActionsPercent' => $nbrPlannedActionsPercent,
  439.             'nbrOverBudgetActionPercent' => $nbrOverBudgetActionPercent,
  440.             'nbrActions_overDurationPercent' => $nbrActions_overDurationPercent,
  441.             'sources' => $array_sources,
  442.             'types' => $array_types,
  443.             'reunions' => $reunions,
  444.             'array_indicators_values'=>$array_indicators_values,
  445.             'months'=>$months
  446.         ]);
  447.         
  448.     }
  449.     /**
  450.      * @Route("identity/{id}", name="processus_identity", methods={"GET"})
  451.      */
  452.     public function processusIdentity(Processus $processusIndicatorRepository $indicatorRepositoryDataRepository $dataRepositoryActivityRepository $activityRepository): Response
  453.     {
  454.         //find data in    
  455.         $processus_in =[];
  456.         $indicators_in $indicatorRepository->findIndicatorByRelatedProcessus($processus,'in');
  457.         foreach($indicators_in as $indicator)
  458.         {
  459.             $processusIn $indicator->getProcessus();
  460.             if(!in_array($processusIn,$processus_in))
  461.             {
  462.                 $processus_in[]= $processusIn;
  463.             }
  464.         }
  465.         $doc_in $dataRepository->findDataByRelatedProcessus($processus,'in');
  466.         foreach($doc_in as $doc)
  467.         {
  468.             $processusIn $doc->getProcessus();
  469.             if(!in_array($processusIn,$processus_in))
  470.             {
  471.                 $processus_in[]= $processusIn;
  472.             }
  473.         }
  474.         $activities_in $activityRepository->findActivityByRelatedProcessus($processus,'in');
  475.         foreach($activities_in as $activity)
  476.         {
  477.             $processusIn $activity->getProcessus();
  478.             if(!in_array($processusIn,$processus_in))
  479.             {
  480.                 $processus_in[]= $processusIn;
  481.             }
  482.         }
  483.         // find out data
  484.         $processus_out =[];
  485.         $indicators_out $indicatorRepository->findIndicatorByRelatedProcessus($processus,'out');
  486.         foreach($indicators_out as $indicator)
  487.         {
  488.             foreach($indicator->getProc() as $processusOut)
  489.             {
  490.                 if(!in_array($processusOut,$processus_out))
  491.                 {
  492.                     $processus_out[]= $processusOut;
  493.                 }
  494.             }
  495.         }
  496.         $doc_out $dataRepository->findDataByRelatedProcessus($processus,'out');
  497.         foreach($doc_out as $doc)
  498.         {
  499.             foreach($doc->getProc() as $processusOut)
  500.             {
  501.                 if(!in_array($processusOut,$processus_out))
  502.                 {
  503.                     $processus_out[]= $processusOut;
  504.                 }
  505.             }
  506.         }
  507.         $activities_out $activityRepository->findActivityByRelatedProcessus($processus,'out');
  508.         foreach($activities_out as $activity)
  509.         {
  510.             foreach($activity->getProcessusClients() as $processusOut)
  511.             {
  512.                 if(!in_array($processusOut,$processus_out))
  513.                 {
  514.                     $processus_out[]= $processusOut;
  515.                 }
  516.             }
  517.         }
  518.         //find activities
  519.         $activities $this->getDoctrine()->getRepository(Activity::class)->findBy(['processus'=>$processus]);
  520.         // $processus_in = [];
  521.         // $indicators_in = [];
  522.         $doc_in = [];
  523.         // $processus_out = [];
  524.         // $indicators_out = [];
  525.         $doc_out = [];
  526.         // $activities = [];
  527.         return $this->render('processus/identity.html.twig', [
  528.             'processus' => $processus,
  529.             'processus_in' => $processus_in,
  530.             'indicators_in' => $indicators_in,
  531.             'doc_in' => $doc_in,
  532.             'processus_out' => $processus_out,
  533.             'indicators_out' => $indicators_out,
  534.             'doc_out' => $doc_out,
  535.             'activities' => $activities
  536.         ]);
  537.     }
  538.     /** 
  539.     * @Route("/all_processus/json",name="all_processus")
  540.     */
  541.     public function getAllProcessus():Response
  542.     {
  543.         $processus $this->getDoctrine()->getRepository(Processus::class)->findAll();
  544.         $processusJson=[];
  545.         foreach($processus as $proc)
  546.         {
  547.             $processusJson[]=$proc->getTitle();
  548.         }
  549.         return new JsonResponse($processusJson);
  550.     }
  551.     /**
  552.      * @Route("/fiche-identite/{id}", name="processus_fiche_identite", methods={"GET"})
  553.      */
  554.     public function processus_fiche_identite(Processus $processusIndicatorRepository $indicatorRepositoryDataRepository $dataRepositoryActivityRepository $activityRepository)
  555.     {
  556.         
  557.         
  558.         //find data in    
  559.         $processus_in =[];
  560.         $indicators_in $indicatorRepository->findIndicatorByRelatedProcessus($processus,'in');
  561.         foreach($indicators_in as $indicator)
  562.         {
  563.             $processusIn $indicator->getProcessus();
  564.             
  565.             if(!in_array($processusIn,$processus_in))
  566.             {
  567.                 $processus_in[]= $processusIn;
  568.             }
  569.         }
  570.         $doc_in $dataRepository->findDataByRelatedProcessus($processus,'in');
  571.         foreach($doc_in as $doc)
  572.         {
  573.             $processusIn $doc->getProcessus();
  574.             if(!in_array($processusIn,$processus_in))
  575.             {
  576.                 $processus_in[]= $processusIn;
  577.             }
  578.         }
  579.         $activities_in $activityRepository->findActivityByRelatedProcessus($processus,'in');
  580.         foreach($activities_in as $activity)
  581.         {
  582.             $processusIn $activity->getProcessus();
  583.             if(!in_array($processusIn,$processus_in))
  584.             {
  585.                 $processus_in[]= $processusIn;
  586.             }
  587.         }
  588.         // find out data
  589.         $processus_out =[];
  590.         $indicators_out $indicatorRepository->findIndicatorByRelatedProcessus($processus,'out');
  591.         foreach($indicators_out as $indicator)
  592.         {
  593.             foreach($indicator->getProc() as $processusOut)
  594.             {
  595.                 if(!in_array($processusOut,$processus_out))
  596.                 {
  597.                     $processus_out[]= $processusOut;
  598.                 }
  599.             }
  600.         }
  601.         $doc_out $dataRepository->findDataByRelatedProcessus($processus,'out');
  602.         foreach($doc_out as $doc)
  603.         {
  604.             foreach($doc->getProc() as $processusOut)
  605.             {
  606.                 if(!in_array($processusOut,$processus_out))
  607.                 {
  608.                     $processus_out[]= $processusOut;
  609.                 }
  610.             }
  611.         }
  612.         $activities_out $activityRepository->findActivityByRelatedProcessus($processus,'out');
  613.         foreach($activities_out as $activity)
  614.         {
  615.             foreach($activity->getProcessusClients() as $processusOut)
  616.             {
  617.                 if(!in_array($processusOut,$processus_out))
  618.                 {
  619.                     $processus_out[]= $processusOut;
  620.                 }
  621.             }
  622.         }
  623.         //find activities
  624.         $activities $this->getDoctrine()->getRepository(Activity::class)->findBy(['processus'=>$processus]);
  625.         $doc_in = [];
  626.         $doc_out = [];
  627.         $menu="processus";
  628.         $left_menu="system_management";
  629.         return $this->render('processus/fiche_identite.html.twig', [
  630.             'processus' => $processus,
  631.             'processus_in' => $processus_in,
  632.             'indicators_in' => $indicators_in,
  633.             'doc_in' => $doc_in,
  634.             'processus_out' => $processus_out,
  635.             'indicators_out' => $indicators_out,
  636.             'doc_out' => $doc_out,
  637.             'activities' => $activities,
  638.             'menu'=>$menu,
  639.             'left_menu'=>$left_menu
  640.         ]);
  641.     }
  642.     /**
  643.      * @Route("/configuration/{id}", name="processus_configuration", methods={"GET"})
  644.      */
  645.     public function processus_configuration(Processus $processus) :Response
  646.     {
  647.         $menu="processus";
  648.         $left_menu="system_management";
  649.         return $this->render('processus/processus_configuration.html.twig', [
  650.             'processus' => $processus,
  651.             'menu'=>$menu,
  652.             'left_menu'=>$left_menu
  653.         ]);
  654.     }
  655.     /**
  656.      * @Route("/synthese/{id}", name="processus_synthese", methods={"GET"})
  657.      */
  658.     public function processus_synthese(Processus $processus) :Response
  659.     {
  660.         $menu="processus";
  661.         $left_menu="system_management";
  662.         return $this->render('processus/processus_synthese.html.twig', [
  663.             'processus' => $processus,
  664.             'menu'=>$menu,
  665.             'left_menu'=>$left_menu
  666.         ]);
  667.     }
  668.     /**
  669.      * @Route("/participants/{id}", name="processus_participants", methods={"GET"})
  670.      */
  671.     public function processus_participants(Processus $processus) :Response
  672.     {
  673.         $menu="processus";
  674.         $left_menu="system_management";
  675.         return $this->render('processus/participants.html.twig', [
  676.             'processus' => $processus,
  677.             'menu'=>$menu,
  678.             'left_menu'=>$left_menu
  679.         ]);
  680.     }
  681.     
  682. }