src/Controller/HomeController.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use App\Repository\EmployeeRepository;
  7. use App\Repository\EmployeurRepository;
  8. use App\Repository\PaysRepository;
  9. use App\Entity\Employee;
  10. use App\Entity\Employeur;
  11. use App\Entity\User;
  12. use App\Entity\Pays;
  13. use App\Entity\BulletinPaie;
  14. use App\Entity\DetailsBulletinPaie;
  15. use App\Repository\BulletinPaieRepository;
  16. use App\Repository\DetailsBulletinPaieRepository;
  17. use App\Constant\FlagCountryList;
  18. use App\Repository\ChangeTauxDeviseRepository;
  19. class HomeController extends AbstractController 
  20. {
  21.     /**
  22.      * @Route("/accueil", name="home")
  23.      */
  24.     public function index(EmployeeRepository $employeeRepositoryEmployeurRepository $employeurRepository PaysRepository $paysRepository ,BulletinPaieRepository $bulletinRepository ,DetailsBulletinPaieRepository $detailsbulletinsRepository ChangeTauxDeviseRepository $changeRepository ): Response
  25.     {
  26.         $user_logged $this->getUser();
  27.         if(empty($user_logged) || empty($user_logged->getId())) {
  28.             return $this->redirectToRoute('app_login');
  29.         }
  30.         
  31.         //le nombre total des employés 
  32.         $nombre_total_employees count($employeeRepository->findAll());
  33.         // le nombre total des employeurs : centres de paie
  34.         $nombre_total_employeurs count($employeurRepository->findAll());
  35.         // le nombre des employés pour chaque situation matrimoniale 
  36.         
  37.         $nombre_employes_celibataires count($employeeRepository->findBy(['situationMatrimoniale' => 'S01']));
  38.         
  39.         $nombre_employes_Mariees count($employeeRepository->findBy(['situationMatrimoniale' => 'S02']));
  40.         $nombre_employes_veuves count($employeeRepository->findBy(['situationMatrimoniale' => 'S03']));
  41.         
  42.         $nombre_employes_divorcees count($employeeRepository->findBy(['situationMatrimoniale' => 'S04']));
  43.         $donneesGraphique = [
  44.             'Célibataire' => $nombre_employes_celibataires,
  45.             'Mariée' => $nombre_employes_Mariees,
  46.             'Veuve' => $nombre_employes_veuves,
  47.             'Divorcée' => $nombre_employes_divorcees,
  48.         ];
  49.         
  50.         // le nombre des employés cadres et non-cadres
  51.         $nombreCadreNon $employeeRepository->getNombreEmployesParCadre(Employee::CA01);
  52.         $nombreCadreOui $employeeRepository->getNombreEmployesParCadre(Employee::CA02);
  53.         // le nombre des employés homme et femme
  54.         $nombreEmployeesHommes count($employeeRepository->findBy(['sexe' => 'G01']));
  55.         $nombreEmployeesFemmes count($employeeRepository->findBy(['sexe' => 'G02']));
  56.         // le nombre des employés pour chaque niveau d'étude 
  57.         /*
  58.         $nombreEmployesN01 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N01);
  59.         $nombreEmployesN02 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N02);
  60.         $nombreEmployesN03 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N03);
  61.         $nombreEmployesN04 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N04);
  62.         $nombreEmployesN05 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N05);
  63.         $nombreEmployesN06 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N06);
  64.         $nombreEmployesN07 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N07);
  65.         $nombreEmployesN08 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N08);
  66.         $nombreEmployesN09 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N09);
  67.         $nombreEmployesN10 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N10);
  68.         $nombreEmployesN11 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N11);
  69.         $nombreEmployesN12 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N12);
  70. */
  71.          
  72.         $nombreEmployesN01 count($employeeRepository->findBy(['niveauEtude' => 'N01']));
  73.         $nombreEmployesN02 count($employeeRepository->findBy(['niveauEtude' => 'N02']));
  74.         $nombreEmployesN03 count($employeeRepository->findBy(['niveauEtude' => 'N03']));
  75.         $nombreEmployesN04 count($employeeRepository->findBy(['niveauEtude' => 'N04']));
  76.         $nombreEmployesN05 count($employeeRepository->findBy(['niveauEtude' => 'N05']));
  77.         $nombreEmployesN06 count($employeeRepository->findBy(['niveauEtude' => 'N06']));
  78.         $nombreEmployesN07 count($employeeRepository->findBy(['niveauEtude' => 'N07']));
  79.         $nombreEmployesN08 count($employeeRepository->findBy(['niveauEtude' => 'N08']));
  80.         $nombreEmployesN09 count($employeeRepository->findBy(['niveauEtude' => 'N09']));
  81.         $nombreEmployesN10 count($employeeRepository->findBy(['niveauEtude' => 'N10']));
  82.         $nombreEmployesN11 count($employeeRepository->findBy(['niveauEtude' => 'N11']));
  83.         $nombreEmployesN12 count($employeeRepository->findBy(['niveauEtude' => 'N12']));
  84.         $donneesGraph = [
  85.             'N01' => $nombreEmployesN01,
  86.             'N02' => $nombreEmployesN02,
  87.             'N03' => $nombreEmployesN03,
  88.             'N04' => $nombreEmployesN04,
  89.             'N05' => $nombreEmployesN05,
  90.             'N06' => $nombreEmployesN06,
  91.             'N07' => $nombreEmployesN07,
  92.             'N08' => $nombreEmployesN08,
  93.             'N09' => $nombreEmployesN09,
  94.             'N10' => $nombreEmployesN10,
  95.             'N11' => $nombreEmployesN11,
  96.             'N12' => $nombreEmployesN12,
  97.         ];
  98.         // le nombre de centres de paie par pays : 
  99.          
  100.          $data = [];
  101.          $pays $paysRepository->findAll();
  102.          foreach ($pays as $pays) {
  103.              $nombreCentres $employeurRepository->getNombreCentresParPays($pays);
  104.              $flagCode $pays->getDrapeau();
  105.              $flagName FlagCountryList::flag_country_list[$flagCode] ?? '';
  106.              $data[] = [
  107.                 // 'pays' =>  $pays->getDrapeau(), 
  108.               //  'pays' =>  $flagName, // Nom du drapeau du pays
  109.               'pays' =>  $pays->getPaysName(),
  110.               'nombreCentres' => $nombreCentres 
  111.                
  112.              ];
  113.          }
  114.          // Montant global des salaires net
  115.          $bulletins $bulletinRepository->findAll();
  116.          $salaireNetGloabl 0;
  117.           if  (count($bulletins) > 0){
  118.          foreach ($bulletins as $bulletin
  119.          {
  120.             $salaireNetGloabl += $bulletin->getNetFinal();
  121.          }
  122.         }
  123.          
  124.          //***************** */ salire global net *************************     /////////////////////////
  125.          
  126.          $salaireNetGloabl_1 0;
  127.          $formules_chang_taux_devises $changeRepository->findAll();
  128. /*
  129.          if(count($bulletins) > 0){
  130.             foreach ($bulletins as $bulletin) 
  131.             {
  132.                 if ($bulletin->getEmploye()->getDevise()->getNom() == 'Euro' || 
  133.                 $bulletin->getEmploye()->getDevise()->getAbreviation() == 'Eur' || 
  134.                 $bulletin->getEmploye()->getDevise()->getSymbole() == '€')
  135.                     $salaireNetGloabl_1 += $bulletin->getNetFinal();
  136.                 }
  137.                 else
  138.                 {
  139.                     foreach ($formules_chang_taux_devises as $f)
  140.                     {
  141.                         if ($bulletin->getEmploye()->getDevise() ==  $f->getDeviseAvantChanger() && $f->getDeviseAChanger()->getNom == 'Euro'  )
  142.                         {
  143.                             $salaireNetGloabl_1 += $bulletin->getNetFinal()* $f->getTaux();
  144.                         }
  145.                         else if ($bulletin->getEmploye()->getDevise() ==  $f->getDeviseAChanger() && $f->getDeviseAvantChanger()->getNom == 'Euro'  )
  146.                         {
  147.                             $salaireNetGloabl_1 += $bulletin->getNetFinal()* 1/$f->getTaux();
  148.                         }
  149.                         else 
  150.                         {
  151.                             $salaireNetGloabl_1 +=0;
  152.                         }
  153.                     
  154.                     
  155.                     } 
  156.                 
  157.                 }
  158.             
  159.             }
  160.          }
  161. */
  162. if (count($bulletins) > 0) {
  163.     foreach ($bulletins as $bulletin) {
  164.         if ($bulletin->getEmploye()->getDevise()->getNom() == 'Euro' || 
  165.             $bulletin->getEmploye()->getDevise()->getAbreviation() == 'Eur' || 
  166.             $bulletin->getEmploye()->getDevise()->getSymbole() == '€') {
  167.             $salaireNetGloabl_1 += $bulletin->getNetFinal();
  168.         } else {
  169.             if  (count($formules_chang_taux_devises) > 0){
  170.             foreach ($formules_chang_taux_devises as $f) {
  171.                 if ($bulletin->getEmploye()->getDevise() == $f->getDeviseAvantChanger() && 
  172.                     $f->getDeviseAChanger()->getNom() == 'Euro') { // Correction : ajout de ()
  173.                     $salaireNetGloabl_1 += $bulletin->getNetFinal() * $f->getTaux();
  174.                 } else if ($bulletin->getEmploye()->getDevise() == $f->getDeviseAChanger() && 
  175.                            $f->getDeviseAvantChanger()->getNom() == 'Euro') { // Correction : ajout de ()
  176.                     $salaireNetGloabl_1 += $bulletin->getNetFinal() * ($f->getTaux());
  177.                 } else {
  178.                     $salaireNetGloabl_1 += 0;
  179.                 }
  180.             }
  181.         }
  182.         }
  183.     }
  184. }
  185.           //***************** */ fin salire global net *************************     /////////////////////////
  186.         
  187.          // Montant global des impôts
  188.          $details $detailsbulletinsRepository->findAll();
  189.          $montant_global_impots 0;
  190.          if  (count($details) > 0){
  191.          foreach ($details as $d
  192.          {
  193.             if((($d->getSection()=='S01') && ($d->getType()=='T04'))||(($d->getSection()=='S03') && ($d->getType()=='T04')))
  194.             {
  195.                
  196.                 
  197.                $montant_global_impots += $d-> getMontant();
  198.                 
  199.                 
  200.             }
  201.            
  202.          }
  203.         }
  204.           //***************** */ impots global net *************************     /////////////////////////
  205.           
  206.          $montant_global_impots_1 0;
  207.          if  (count($details) > 0){
  208.          foreach ($details as $d
  209.          {
  210.             if((($d->getSection()=='S01') && ($d->getType()=='T04'))||(($d->getSection()=='S03') && ($d->getType()=='T04')))
  211.             {
  212.             if ($d->getBulletin()->getEmploye()->getDevise()->getNom() == 'Euro' || $d->getBulletin()->getEmploye()->getDevise()->getAbreviation() == 'Eur' || $d->getBulletin()->getEmploye()->getDevise()->getSymbole() == '€')
  213.             
  214.             {
  215.                $montant_global_impots += $d-> getMontant();
  216.             }
  217.             else
  218.             {
  219.                 if  (count($details) > 0){
  220.                 foreach ($formules_chang_taux_devises as $f)
  221.                 {
  222.                      if ($d->getBulletin()->getEmploye()->getDevise() ==  $f->getDeviseAvantChanger() && $f->getDeviseAChanger()->getNom == 'Euro'  )
  223.                      {
  224.                         $montant_global_impots_1 += $d-> getMontant()* $f->getTaux();
  225.                      }
  226.                      else if ($d->getBulletin()->getEmploye()->getDevise() ==  $f->getDeviseAChanger() && $f->getDeviseAvantChanger()->getNom() == 'Euro'  )
  227.                      {
  228.                         $montant_global_impots_1 += $d-> getMontant()* 1/$f->getTaux();
  229.                      }
  230.                      else 
  231.                      {
  232.                         $montant_global_impots_1 +=0;
  233.                      }
  234.                 
  235.                 
  236.                 }
  237.             } 
  238.               
  239.             }
  240.             }
  241.          }
  242.         }
  243.          
  244.          //***************** */ fin impots global net *************************     /////////////////////////
  245.         return $this->render('home/index.html.twig',
  246.         ['current_menu'=>'acceuil' 
  247.         'nombre_total_employees'=>$nombre_total_employees ,
  248.         'nombre_total_employeurs'=> $nombre_total_employeurs ,
  249.         'nombre_employes_celibataires'=>$nombre_employes_celibataires ,
  250.         'nombre_employes_Mariees'=>  $nombre_employes_Mariees ,
  251.         'nombre_employes_veuves'=> $nombre_employes_veuves ,
  252.         'nombre_employes_divorcees'=>$nombre_employes_divorcees ,
  253.         'nombreCadreNon'=> $nombreCadreNon ,
  254.         'nombreCadreOui'=>$nombreCadreOui ,
  255.         'nombreEmployeesHommes'=> $nombreEmployeesHommes ,
  256.         'nombreEmployeesFemmes'=>$nombreEmployeesFemmes ,
  257.         'nombreEmployesN01'=>$nombreEmployesN01 ,
  258.         'nombreEmployesN02'=> $nombreEmployesN02,
  259.         'nombreEmployesN03'=>$nombreEmployesN03 ,
  260.         'nombreEmployesN04'=>  $nombreEmployesN04 ,
  261.         'nombreEmployesN05'=> $nombreEmployesN05 ,
  262.         'nombreEmployesN06'=>$nombreEmployesN06 ,
  263.         'nombreEmployesN07'=> $nombreEmployesN07 ,
  264.         'nombreEmployesN08'=>$nombreEmployesN08 ,
  265.         'nombreEmployesN09'=> $nombreEmployesN09 ,
  266.         'nombreEmployesN10'=>$nombreEmployesN10 ,
  267.         'nombreEmployesN11'=> $nombreEmployesN11 ,
  268.         'nombreEmployesN12'=>$nombreEmployesN12 ,
  269.         'data'=>$data ,
  270.         'donneesGraphique'=>$donneesGraphique ,
  271.         'donneesGraph'=>$donneesGraph ,
  272.         'salaireNetGloabl'=>$salaireNetGloabl ,
  273.         'montant_global_impots'=>$montant_global_impots ,
  274.        'salaireNetGloabl_1'=>$salaireNetGloabl_1 ,
  275.        'montant_global_impots_1'=>$montant_global_impots_1 ,
  276.     
  277.     
  278.     
  279.     
  280.     
  281.     
  282.     ]);
  283.     }
  284.     public function index_employeursEmployeurRepository $employeurRepository PaysRepository  $paysRepository ): Response
  285.     {
  286.         
  287.         // le nombre total des employeurs : centres de paie
  288.         $nombre_total_mployeurs count($employeurRepository->findAll());
  289.           
  290.         $dataa = [];
  291.          $pays $paysRepository->findAll();
  292.           if  (count($pays) > 0){
  293.          foreach ($pays as $pays) {
  294.              $nombreCentres $employeurRepository->getNombreCentresParPays($pays);
  295.              $flagCode $pays->getDrapeau();
  296.              $flagName FlagCountryList::flag_country_list[$flagCode] ?? '';
  297.              $dataa[] = [
  298.                 // 'pays' =>  $pays->getDrapeau(), 
  299.                 'pays' =>  $pays->getPaysName(),
  300.                // 'pays' =>  $flagName, // Nom du drapeau du pays
  301.                  'nombreCentres' => $nombreCentres 
  302.               
  303.              ];
  304.          }
  305.         }
  306.        return $this->render('home/centres_de_paie_par_pays.html.twig',
  307.        [
  308.        'dataa'=>$dataa 
  309.    
  310.    ]);
  311.    }
  312.     
  313.     public function index_situation_matrimoniale(EmployeeRepository $employeeRepositoryEmployeurRepository $employeurRepository): Response
  314.     {
  315.                // le nombre des employés pour chaque situation matrimoniale 
  316.                /*
  317.         $situationMatrimonialeCelibataire = Employee::SITUATION_MATRIMONIALE['S01']; // 'Célibataire'
  318.         $nombre_employes_celibataires = $employeeRepository->getNombreEmployesParSituationMatrimoniale($situationMatrimonialeCelibataire);
  319.         $situationMatrimonialeMariee = Employee::SITUATION_MATRIMONIALE['S02']; // 'Mariée'
  320.         $nombre_employes_Mariees = $employeeRepository->getNombreEmployesParSituationMatrimoniale($situationMatrimonialeMariee);
  321.         $situationMatrimonialeVeuve = Employee::SITUATION_MATRIMONIALE['S03']; // 'Veuve'
  322.         $nombre_employes_veuves = $employeeRepository->getNombreEmployesParSituationMatrimoniale($situationMatrimonialeVeuve);
  323.         $situationMatrimonialeDivorcee = Employee::SITUATION_MATRIMONIALE['S04']; // 'Divorcée'
  324.         $nombre_employes_divorcees = $employeeRepository->getNombreEmployesParSituationMatrimoniale($situationMatrimonialeVeuve);
  325.         */
  326.         $nombre_employes_celibataires count($employeeRepository->findBy(['situationMatrimoniale' => 'S01']));
  327.         
  328.         $nombre_employes_Mariees count($employeeRepository->findBy(['situationMatrimoniale' => 'S02']));
  329.         $nombre_employes_veuves count($employeeRepository->findBy(['situationMatrimoniale' => 'S03']));
  330.         
  331.         $nombre_employes_divorcees count($employeeRepository->findBy(['situationMatrimoniale' => 'S04']));
  332.         $donneesGraphique = [
  333.             'Célibataire' => $nombreCelibataires,
  334.             'Mariée' => $nombreMariees,
  335.             'Veuve' => $nombreVeuves,
  336.             'Divorcée' => $nombreDivorcees,
  337.         ];
  338.         return $this->render('home/employees_par_situation_matrimoniale.html.twig',
  339.         [
  340.         
  341.         'donneesGraphique'=>$donneesGraphique  ,
  342.        
  343.         ]);
  344.     }
  345.     
  346.     public function index_niveau_educatif(EmployeeRepository $employeeRepositoryEmployeurRepository $employeurRepository): Response
  347.     {
  348.         
  349.         // le nombre des employés pour chaque niveau d'étude 
  350.         /*
  351.         $nombreEmployesN01 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N01);
  352.         $nombreEmployesN02 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N02);
  353.         $nombreEmployesN03 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N03);
  354.         $nombreEmployesN04 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N04);
  355.         $nombreEmployesN05 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N05);
  356.         $nombreEmployesN06 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N06);
  357.         $nombreEmployesN07 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N07);
  358.         $nombreEmployesN08 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N08);
  359.         $nombreEmployesN09 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N09);
  360.         $nombreEmployesN10 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N10);
  361.         $nombreEmployesN11 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N11);
  362.         $nombreEmployesN12 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N12);
  363.         */
  364.         $nombreEmployesN01 count($employeeRepository->findBy(['niveauEtude' => 'N01']));
  365.         $nombreEmployesN02 count($employeeRepository->findBy(['niveauEtude' => 'N02']));
  366.         $nombreEmployesN03 count($employeeRepository->findBy(['niveauEtude' => 'N03']));
  367.         $nombreEmployesN04 count($employeeRepository->findBy(['niveauEtude' => 'N04']));
  368.         $nombreEmployesN05 count($employeeRepository->findBy(['niveauEtude' => 'N05']));
  369.         $nombreEmployesN06 count($employeeRepository->findBy(['niveauEtude' => 'N06']));
  370.         $nombreEmployesN07 count($employeeRepository->findBy(['niveauEtude' => 'N07']));
  371.         $nombreEmployesN08 count($employeeRepository->findBy(['niveauEtude' => 'N08']));
  372.         $nombreEmployesN09 count($employeeRepository->findBy(['niveauEtude' => 'N09']));
  373.         $nombreEmployesN10 count($employeeRepository->findBy(['niveauEtude' => 'N10']));
  374.         $nombreEmployesN11 count($employeeRepository->findBy(['niveauEtude' => 'N11']));
  375.         $nombreEmployesN12 count($employeeRepository->findBy(['niveauEtude' => 'N12']));
  376.         $donneesGraph = [
  377.             'N01' => $nombreEmployesN01,
  378.             'N02' => $nombreEmployesN02,
  379.             'N03' => $nombreEmployesN03,
  380.             'N04' => $nombreEmployesN04,
  381.             'N05' => $nombreEmployesN05,
  382.             'N06' => $nombreEmployesN06,
  383.             'N07' => $nombreEmployesN07,
  384.             'N08' => $nombreEmployesN08,
  385.             'N09' => $nombreEmployesN09,
  386.             'N10' => $nombreEmployesN10,
  387.             'N11' => $nombreEmployesN11,
  388.             'N12' => $nombreEmployesN12,
  389.         ];
  390.         return $this->render('home/employees_par_niveau_educatif.html.twig',
  391.         [
  392.         
  393.         'donneesGraph'=>$donneesGraph  ,
  394.        
  395.         ]);
  396. }
  397. }