<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Repository\EmployeeRepository;
use App\Repository\EmployeurRepository;
use App\Repository\PaysRepository;
use App\Entity\Employee;
use App\Entity\Employeur;
use App\Entity\User;
use App\Entity\Pays;
use App\Entity\BulletinPaie;
use App\Entity\DetailsBulletinPaie;
use App\Repository\BulletinPaieRepository;
use App\Repository\DetailsBulletinPaieRepository;
use App\Constant\FlagCountryList;
use App\Repository\ChangeTauxDeviseRepository;
class HomeController extends AbstractController
{
/**
* @Route("/accueil", name="home")
*/
public function index(EmployeeRepository $employeeRepository, EmployeurRepository $employeurRepository , PaysRepository $paysRepository ,BulletinPaieRepository $bulletinRepository ,DetailsBulletinPaieRepository $detailsbulletinsRepository , ChangeTauxDeviseRepository $changeRepository ): Response
{
$user_logged = $this->getUser();
if(empty($user_logged) || empty($user_logged->getId())) {
return $this->redirectToRoute('app_login');
}
//le nombre total des employés
$nombre_total_employees = count($employeeRepository->findAll());
// le nombre total des employeurs : centres de paie
$nombre_total_employeurs = count($employeurRepository->findAll());
// le nombre des employés pour chaque situation matrimoniale
$nombre_employes_celibataires = count($employeeRepository->findBy(['situationMatrimoniale' => 'S01']));
$nombre_employes_Mariees = count($employeeRepository->findBy(['situationMatrimoniale' => 'S02']));
$nombre_employes_veuves = count($employeeRepository->findBy(['situationMatrimoniale' => 'S03']));
$nombre_employes_divorcees = count($employeeRepository->findBy(['situationMatrimoniale' => 'S04']));
$donneesGraphique = [
'Célibataire' => $nombre_employes_celibataires,
'Mariée' => $nombre_employes_Mariees,
'Veuve' => $nombre_employes_veuves,
'Divorcée' => $nombre_employes_divorcees,
];
// le nombre des employés cadres et non-cadres
$nombreCadreNon = $employeeRepository->getNombreEmployesParCadre(Employee::CA01);
$nombreCadreOui = $employeeRepository->getNombreEmployesParCadre(Employee::CA02);
// le nombre des employés homme et femme
$nombreEmployeesHommes = count($employeeRepository->findBy(['sexe' => 'G01']));
$nombreEmployeesFemmes = count($employeeRepository->findBy(['sexe' => 'G02']));
// le nombre des employés pour chaque niveau d'étude
/*
$nombreEmployesN01 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N01);
$nombreEmployesN02 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N02);
$nombreEmployesN03 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N03);
$nombreEmployesN04 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N04);
$nombreEmployesN05 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N05);
$nombreEmployesN06 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N06);
$nombreEmployesN07 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N07);
$nombreEmployesN08 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N08);
$nombreEmployesN09 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N09);
$nombreEmployesN10 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N10);
$nombreEmployesN11 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N11);
$nombreEmployesN12 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N12);
*/
$nombreEmployesN01 = count($employeeRepository->findBy(['niveauEtude' => 'N01']));
$nombreEmployesN02 = count($employeeRepository->findBy(['niveauEtude' => 'N02']));
$nombreEmployesN03 = count($employeeRepository->findBy(['niveauEtude' => 'N03']));
$nombreEmployesN04 = count($employeeRepository->findBy(['niveauEtude' => 'N04']));
$nombreEmployesN05 = count($employeeRepository->findBy(['niveauEtude' => 'N05']));
$nombreEmployesN06 = count($employeeRepository->findBy(['niveauEtude' => 'N06']));
$nombreEmployesN07 = count($employeeRepository->findBy(['niveauEtude' => 'N07']));
$nombreEmployesN08 = count($employeeRepository->findBy(['niveauEtude' => 'N08']));
$nombreEmployesN09 = count($employeeRepository->findBy(['niveauEtude' => 'N09']));
$nombreEmployesN10 = count($employeeRepository->findBy(['niveauEtude' => 'N10']));
$nombreEmployesN11 = count($employeeRepository->findBy(['niveauEtude' => 'N11']));
$nombreEmployesN12 = count($employeeRepository->findBy(['niveauEtude' => 'N12']));
$donneesGraph = [
'N01' => $nombreEmployesN01,
'N02' => $nombreEmployesN02,
'N03' => $nombreEmployesN03,
'N04' => $nombreEmployesN04,
'N05' => $nombreEmployesN05,
'N06' => $nombreEmployesN06,
'N07' => $nombreEmployesN07,
'N08' => $nombreEmployesN08,
'N09' => $nombreEmployesN09,
'N10' => $nombreEmployesN10,
'N11' => $nombreEmployesN11,
'N12' => $nombreEmployesN12,
];
// le nombre de centres de paie par pays :
$data = [];
$pays = $paysRepository->findAll();
foreach ($pays as $pays) {
$nombreCentres = $employeurRepository->getNombreCentresParPays($pays);
$flagCode = $pays->getDrapeau();
$flagName = FlagCountryList::flag_country_list[$flagCode] ?? '';
$data[] = [
// 'pays' => $pays->getDrapeau(),
// 'pays' => $flagName, // Nom du drapeau du pays
'pays' => $pays->getPaysName(),
'nombreCentres' => $nombreCentres ,
];
}
// Montant global des salaires net
$bulletins = $bulletinRepository->findAll();
$salaireNetGloabl = 0;
if (count($bulletins) > 0){
foreach ($bulletins as $bulletin)
{
$salaireNetGloabl += $bulletin->getNetFinal();
}
}
//***************** */ salire global net ************************* /////////////////////////
$salaireNetGloabl_1 = 0;
$formules_chang_taux_devises = $changeRepository->findAll();
/*
if(count($bulletins) > 0){
foreach ($bulletins as $bulletin)
{
if ($bulletin->getEmploye()->getDevise()->getNom() == 'Euro' ||
$bulletin->getEmploye()->getDevise()->getAbreviation() == 'Eur' ||
$bulletin->getEmploye()->getDevise()->getSymbole() == '€')
$salaireNetGloabl_1 += $bulletin->getNetFinal();
}
else
{
foreach ($formules_chang_taux_devises as $f)
{
if ($bulletin->getEmploye()->getDevise() == $f->getDeviseAvantChanger() && $f->getDeviseAChanger()->getNom == 'Euro' )
{
$salaireNetGloabl_1 += $bulletin->getNetFinal()* $f->getTaux();
}
else if ($bulletin->getEmploye()->getDevise() == $f->getDeviseAChanger() && $f->getDeviseAvantChanger()->getNom == 'Euro' )
{
$salaireNetGloabl_1 += $bulletin->getNetFinal()* 1/$f->getTaux();
}
else
{
$salaireNetGloabl_1 +=0;
}
}
}
}
}
*/
if (count($bulletins) > 0) {
foreach ($bulletins as $bulletin) {
if ($bulletin->getEmploye()->getDevise()->getNom() == 'Euro' ||
$bulletin->getEmploye()->getDevise()->getAbreviation() == 'Eur' ||
$bulletin->getEmploye()->getDevise()->getSymbole() == '€') {
$salaireNetGloabl_1 += $bulletin->getNetFinal();
} else {
if (count($formules_chang_taux_devises) > 0){
foreach ($formules_chang_taux_devises as $f) {
if ($bulletin->getEmploye()->getDevise() == $f->getDeviseAvantChanger() &&
$f->getDeviseAChanger()->getNom() == 'Euro') { // Correction : ajout de ()
$salaireNetGloabl_1 += $bulletin->getNetFinal() * $f->getTaux();
} else if ($bulletin->getEmploye()->getDevise() == $f->getDeviseAChanger() &&
$f->getDeviseAvantChanger()->getNom() == 'Euro') { // Correction : ajout de ()
$salaireNetGloabl_1 += $bulletin->getNetFinal() * (1 / $f->getTaux());
} else {
$salaireNetGloabl_1 += 0;
}
}
}
}
}
}
//***************** */ fin salire global net ************************* /////////////////////////
// Montant global des impôts
$details = $detailsbulletinsRepository->findAll();
$montant_global_impots = 0;
if (count($details) > 0){
foreach ($details as $d)
{
if((($d->getSection()=='S01') && ($d->getType()=='T04'))||(($d->getSection()=='S03') && ($d->getType()=='T04')))
{
$montant_global_impots += $d-> getMontant();
}
}
}
//***************** */ impots global net ************************* /////////////////////////
$montant_global_impots_1 = 0;
if (count($details) > 0){
foreach ($details as $d)
{
if((($d->getSection()=='S01') && ($d->getType()=='T04'))||(($d->getSection()=='S03') && ($d->getType()=='T04')))
{
if ($d->getBulletin()->getEmploye()->getDevise()->getNom() == 'Euro' || $d->getBulletin()->getEmploye()->getDevise()->getAbreviation() == 'Eur' || $d->getBulletin()->getEmploye()->getDevise()->getSymbole() == '€')
{
$montant_global_impots += $d-> getMontant();
}
else
{
if (count($details) > 0){
foreach ($formules_chang_taux_devises as $f)
{
if ($d->getBulletin()->getEmploye()->getDevise() == $f->getDeviseAvantChanger() && $f->getDeviseAChanger()->getNom == 'Euro' )
{
$montant_global_impots_1 += $d-> getMontant()* $f->getTaux();
}
else if ($d->getBulletin()->getEmploye()->getDevise() == $f->getDeviseAChanger() && $f->getDeviseAvantChanger()->getNom() == 'Euro' )
{
$montant_global_impots_1 += $d-> getMontant()* 1/$f->getTaux();
}
else
{
$montant_global_impots_1 +=0;
}
}
}
}
}
}
}
//***************** */ fin impots global net ************************* /////////////////////////
return $this->render('home/index.html.twig',
['current_menu'=>'acceuil' ,
'nombre_total_employees'=>$nombre_total_employees ,
'nombre_total_employeurs'=> $nombre_total_employeurs ,
'nombre_employes_celibataires'=>$nombre_employes_celibataires ,
'nombre_employes_Mariees'=> $nombre_employes_Mariees ,
'nombre_employes_veuves'=> $nombre_employes_veuves ,
'nombre_employes_divorcees'=>$nombre_employes_divorcees ,
'nombreCadreNon'=> $nombreCadreNon ,
'nombreCadreOui'=>$nombreCadreOui ,
'nombreEmployeesHommes'=> $nombreEmployeesHommes ,
'nombreEmployeesFemmes'=>$nombreEmployeesFemmes ,
'nombreEmployesN01'=>$nombreEmployesN01 ,
'nombreEmployesN02'=> $nombreEmployesN02,
'nombreEmployesN03'=>$nombreEmployesN03 ,
'nombreEmployesN04'=> $nombreEmployesN04 ,
'nombreEmployesN05'=> $nombreEmployesN05 ,
'nombreEmployesN06'=>$nombreEmployesN06 ,
'nombreEmployesN07'=> $nombreEmployesN07 ,
'nombreEmployesN08'=>$nombreEmployesN08 ,
'nombreEmployesN09'=> $nombreEmployesN09 ,
'nombreEmployesN10'=>$nombreEmployesN10 ,
'nombreEmployesN11'=> $nombreEmployesN11 ,
'nombreEmployesN12'=>$nombreEmployesN12 ,
'data'=>$data ,
'donneesGraphique'=>$donneesGraphique ,
'donneesGraph'=>$donneesGraph ,
'salaireNetGloabl'=>$salaireNetGloabl ,
'montant_global_impots'=>$montant_global_impots ,
'salaireNetGloabl_1'=>$salaireNetGloabl_1 ,
'montant_global_impots_1'=>$montant_global_impots_1 ,
]);
}
public function index_employeurs( EmployeurRepository $employeurRepository , PaysRepository $paysRepository ): Response
{
// le nombre total des employeurs : centres de paie
$nombre_total_mployeurs = count($employeurRepository->findAll());
$dataa = [];
$pays = $paysRepository->findAll();
if (count($pays) > 0){
foreach ($pays as $pays) {
$nombreCentres = $employeurRepository->getNombreCentresParPays($pays);
$flagCode = $pays->getDrapeau();
$flagName = FlagCountryList::flag_country_list[$flagCode] ?? '';
$dataa[] = [
// 'pays' => $pays->getDrapeau(),
'pays' => $pays->getPaysName(),
// 'pays' => $flagName, // Nom du drapeau du pays
'nombreCentres' => $nombreCentres ,
];
}
}
return $this->render('home/centres_de_paie_par_pays.html.twig',
[
'dataa'=>$dataa
]);
}
public function index_situation_matrimoniale(EmployeeRepository $employeeRepository, EmployeurRepository $employeurRepository): Response
{
// le nombre des employés pour chaque situation matrimoniale
/*
$situationMatrimonialeCelibataire = Employee::SITUATION_MATRIMONIALE['S01']; // 'Célibataire'
$nombre_employes_celibataires = $employeeRepository->getNombreEmployesParSituationMatrimoniale($situationMatrimonialeCelibataire);
$situationMatrimonialeMariee = Employee::SITUATION_MATRIMONIALE['S02']; // 'Mariée'
$nombre_employes_Mariees = $employeeRepository->getNombreEmployesParSituationMatrimoniale($situationMatrimonialeMariee);
$situationMatrimonialeVeuve = Employee::SITUATION_MATRIMONIALE['S03']; // 'Veuve'
$nombre_employes_veuves = $employeeRepository->getNombreEmployesParSituationMatrimoniale($situationMatrimonialeVeuve);
$situationMatrimonialeDivorcee = Employee::SITUATION_MATRIMONIALE['S04']; // 'Divorcée'
$nombre_employes_divorcees = $employeeRepository->getNombreEmployesParSituationMatrimoniale($situationMatrimonialeVeuve);
*/
$nombre_employes_celibataires = count($employeeRepository->findBy(['situationMatrimoniale' => 'S01']));
$nombre_employes_Mariees = count($employeeRepository->findBy(['situationMatrimoniale' => 'S02']));
$nombre_employes_veuves = count($employeeRepository->findBy(['situationMatrimoniale' => 'S03']));
$nombre_employes_divorcees = count($employeeRepository->findBy(['situationMatrimoniale' => 'S04']));
$donneesGraphique = [
'Célibataire' => $nombreCelibataires,
'Mariée' => $nombreMariees,
'Veuve' => $nombreVeuves,
'Divorcée' => $nombreDivorcees,
];
return $this->render('home/employees_par_situation_matrimoniale.html.twig',
[
'donneesGraphique'=>$donneesGraphique ,
]);
}
public function index_niveau_educatif(EmployeeRepository $employeeRepository, EmployeurRepository $employeurRepository): Response
{
// le nombre des employés pour chaque niveau d'étude
/*
$nombreEmployesN01 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N01);
$nombreEmployesN02 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N02);
$nombreEmployesN03 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N03);
$nombreEmployesN04 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N04);
$nombreEmployesN05 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N05);
$nombreEmployesN06 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N06);
$nombreEmployesN07 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N07);
$nombreEmployesN08 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N08);
$nombreEmployesN09 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N09);
$nombreEmployesN10 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N10);
$nombreEmployesN11 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N11);
$nombreEmployesN12 = $employeeRepository->getNombreEmployesParNiveauEtude(Employee::N12);
*/
$nombreEmployesN01 = count($employeeRepository->findBy(['niveauEtude' => 'N01']));
$nombreEmployesN02 = count($employeeRepository->findBy(['niveauEtude' => 'N02']));
$nombreEmployesN03 = count($employeeRepository->findBy(['niveauEtude' => 'N03']));
$nombreEmployesN04 = count($employeeRepository->findBy(['niveauEtude' => 'N04']));
$nombreEmployesN05 = count($employeeRepository->findBy(['niveauEtude' => 'N05']));
$nombreEmployesN06 = count($employeeRepository->findBy(['niveauEtude' => 'N06']));
$nombreEmployesN07 = count($employeeRepository->findBy(['niveauEtude' => 'N07']));
$nombreEmployesN08 = count($employeeRepository->findBy(['niveauEtude' => 'N08']));
$nombreEmployesN09 = count($employeeRepository->findBy(['niveauEtude' => 'N09']));
$nombreEmployesN10 = count($employeeRepository->findBy(['niveauEtude' => 'N10']));
$nombreEmployesN11 = count($employeeRepository->findBy(['niveauEtude' => 'N11']));
$nombreEmployesN12 = count($employeeRepository->findBy(['niveauEtude' => 'N12']));
$donneesGraph = [
'N01' => $nombreEmployesN01,
'N02' => $nombreEmployesN02,
'N03' => $nombreEmployesN03,
'N04' => $nombreEmployesN04,
'N05' => $nombreEmployesN05,
'N06' => $nombreEmployesN06,
'N07' => $nombreEmployesN07,
'N08' => $nombreEmployesN08,
'N09' => $nombreEmployesN09,
'N10' => $nombreEmployesN10,
'N11' => $nombreEmployesN11,
'N12' => $nombreEmployesN12,
];
return $this->render('home/employees_par_niveau_educatif.html.twig',
[
'donneesGraph'=>$donneesGraph ,
]);
}
}