src/Controller/HomeController.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Operateur;
  4. use App\Entity\Pay;
  5. use App\Entity\Bilan;
  6. use App\Entity\User;
  7. use App\Entity\PhotoRegulateur;
  8. use App\Entity\Regulateur;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  14. use Doctrine\ORM\EntityManagerInterface;
  15. use Symfony\Contracts\Translation\TranslatorInterface;
  16. use App\Service\ManageHome;
  17. use App\Service\ManageConge;
  18. use App\Entity\DemandeConge;
  19. class HomeController extends AbstractController
  20. {
  21.     public function __construct(EntityManagerInterface $emManageHome $manageHome,ManageConge $manageCongeTranslatorInterface $translator)
  22.     {
  23.         $this->em $em;
  24.         $this->manageHome $manageHome;
  25.         $this->manageConge $manageConge;
  26.         $this->translator $translator;
  27.     }
  28.     /**
  29.      * @Route("/accueil", name="home_page")
  30.      */
  31.     public function index(Request $request){
  32.         $user_logged $this->getUser();
  33.         if(empty($user_logged) || empty($user_logged->getId())) {
  34.             return $this->redirectToRoute('app_login');
  35.         }
  36.         $ListeNbrHome $this->manageHome->getNbrTotalDuJour($user_logged);
  37.         $ListeReunions $this->manageHome->getListeReunionDuJour($user_logged);
  38.         $ListePersonnesEnConge $this->manageHome->getListePersonneEnConge();
  39.         $ListePersonnesNonDispo $this->manageHome->getListePersonnesNonDispo();
  40.         $ListeAnnifs $this->manageHome->getListeAnnifDuJour();
  41.         $result_bilan = array();
  42.         
  43.         $date = new \DateTime();
  44.         $day $date->format('d');
  45.         $month $date->format('Y-m');
  46.         
  47.         $query4 $this->em->getRepository(User::class)->createQueryBuilder('u')
  48.                     ->select('u')
  49.                     ->where('u.enabled =:enabled ')
  50.                     ->setParameter('enabled'1);
  51.             $users $query4->getQuery()->getResult();
  52.         foreach($users as $user ){
  53.             
  54.             $nbrJpourPlus 0;
  55.             $nbrJpourMoin 0;
  56.             $totalJ 0;
  57.             $cumulheures 0;
  58.             
  59.             for ($i 1$i intval($day); $i++) {
  60.            
  61.                 $dateJ = new \DateTime($month.'-'.$i);
  62.                 $date $dateJ->format('Y-m-d');
  63.                 $is_ferier $this->manageConge->checkJourFerier($date);
  64.                 $type"start";
  65.                 $result $this->manageConge->getArrayHeure($type$date);
  66.                 $is_travaille false;
  67.                 $enconge = array();
  68.                 if($result['isParQuinzaine']) {  // Journée par quinzaine
  69.                     $is_travaille $this->manageConge->checkDayParQuanzineTravaillle($date);
  70.                 }
  71.                 
  72.                 if(!$is_ferier && $result['status_journey'] != "S03" && !$is_travaille){
  73.                     $query3 $this->em->getRepository(demandeConge::class)->createQueryBuilder('d');
  74.                     $query3->select('d')
  75.                         ->where("(DATE_FORMAT(d.dateDebut,'%Y-%m-%d') <=:date and DATE_FORMAT(d.dateFin,'%Y-%m-%d') >=:date )")
  76.                         ->orWhere("(DATE_FORMAT(d.dateDebut,'%Y-%m-%d') >:date and DATE_FORMAT(d.dateDebut,'%Y-%m-%d') <:date and DATE_FORMAT(d.dateFin,'%Y-%m-%d') >=:date )")
  77.                         ->orWhere("(DATE_FORMAT(d.dateDebut,'%Y-%m-%d') <:date and DATE_FORMAT(d.dateFin,'%Y-%m-%d') >:date and DATE_FORMAT(d.dateFin,'%Y-%m-%d') <=:date )")
  78.                         ->orWhere("(DATE_FORMAT(d.dateDebut,'%Y-%m-%d') >=:date and DATE_FORMAT(d.dateFin,'%Y-%m-%d') <=:date )")
  79.                         ->andWhere('d.statut IN (:statuts)')
  80.                         ->setParameters(array('date' => $date'statuts' => ['S03','S05']));
  81.                     $demandeConges $query3->getQuery()->getResult();
  82.                     //Get users on leave
  83.                     foreach($demandeConges as $conge){
  84.                         array_push($enconge$conge->getUserConge()->getId());
  85.                     } 
  86.                     if(!(in_array($user->getId(), $enconge))){
  87.                         
  88.                         $totalJ $totalJ ;
  89.                         $testBilan $this->em->getRepository(Bilan::class)->createQueryBuilder('b')
  90.                                           ->leftJoin('b.User','u');
  91.                         $testBilan->select('b')
  92.                                   ->where("(DATE_FORMAT(b.datePlanif,'%Y-%m-%d')) =:date")
  93.                                   ->andWhere('u.id =:idUser')
  94.                                   ->andWhere('b.validation =:validation')
  95.                                   ->setParameters(array('date' => $date'idUser' => $user->getId(), 'validation' => ));
  96.                         $testBilan $testBilan->getQuery()->getResult();
  97.                         if(sizeof($testBilan) == ){
  98.                             
  99.                             $nbrJpourMoin $nbrJpourMoin 1;
  100.                             
  101.                         }else{
  102.                             $nbrJpourPlus $nbrJpourPlus 1;
  103.                             
  104.                             foreach($testBilan as $bilan ){
  105.                                 
  106.                                 $cumulheures $cumulheures intval($bilan->getDuree());
  107.                                 
  108.                             }
  109.                             
  110.                         }
  111.                     }
  112.                 }
  113.             }
  114.             
  115.             if ($totalJ 0) {
  116.                 $tauxJ = ($nbrJpourPlus $totalJ) * 100;
  117.             } else {
  118.                 $tauxJ 0;
  119.             }
  120.             $totalheures = (8.5 $totalJ);
  121.             if ($totalheures 0) {
  122.                 $tauxH = ($cumulheures $totalheures) * 100;
  123.             } else {
  124.                 $tauxH 0;
  125.             }
  126.             $tmp_bilan = array(
  127.                 'user' => $user,
  128.                 'nbrJPlus'=> $nbrJpourPlus,
  129.                 'nbrJMoin'=> $nbrJpourMoin,
  130.                 'tauxJ'=> number_format($tauxJ2','' ' ),
  131.                 'tauxH'=> number_format($tauxH2','' ' )
  132.             );
  133.             array_push($result_bilan$tmp_bilan);
  134.  
  135.         }
  136.         
  137.         return $this->render('home/index.html.twig',[
  138.             'current_menu'=>'accueil',
  139.             'ListeNbrHome'=> $ListeNbrHome,
  140.             'ListeReunions'=>$ListeReunions,
  141.             'ListePersonnesEnConge'=>$ListePersonnesEnConge,
  142.             'ListePersonnesNonDispo'=>$ListePersonnesNonDispo,
  143.             'ListeAnnifs'=>$ListeAnnifs,
  144.             'StatBilan'=>$result_bilan
  145.         ]);
  146.     }
  147.     
  148.     private function searchElementId($element$arraySearch){
  149.         
  150.         foreach($arraySearch as $key =>$val){
  151.             
  152.             if($val['id'] == $element){
  153.                 
  154.                 return $key;
  155.                 
  156.             }
  157.             
  158.         }
  159.         
  160.         return null;
  161.         
  162.     }
  163.     
  164.     private function searchdate($element$arraySearch){
  165.         
  166.         foreach($arraySearch as $key =>$val){
  167.             
  168.             if($val['date'] == $element){
  169.                 
  170.                 return $key;
  171.                 
  172.             }
  173.             
  174.         }
  175.         
  176.         return null;
  177.         
  178.     }
  179. // end HomeController