<?php
namespace App\Controller;
use App\Entity\FundRequest;
use App\Entity\RhStaff;
use DateTime;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class MasterController extends AbstractController
{
#[Route('/', name: 'app_home')]
public function index(Request $request, EntityManagerInterface $em): Response
{
return $this->render('master/home.html.twig', [
]);
}
#[Route('/fin-home', name: 'fin_home')]
public function finHome(Request $request, EntityManagerInterface $em): Response
{
// if ($request->getSession()->get("isAuth")) {
// $request->getSession()->set("isAuth", false);
// $user = $this->getUser();
// $user->setLastConnection(new \DateTime());
// $em->persist($user);
// $em->flush();
// //Gestion des droits d'accèss---------------------------
// // $request->getSession()->set("vld_fund_req_sce", UtilsController::getIsAccess("ini_fund_req",$user->getId(),$em));
// // $request->getSession()->set("vld_fund_req_scm", UtilsController::getIsAccess("ini_fund_req",$user->getId(),$em));
// // $request->getSession()->set("vld_fund_req_cg", UtilsController::getIsAccess("ini_fund_req",$user->getId(),$em));
// // $request->getSession()->set("vld_fund_req_dg", UtilsController::getIsAccess("ini_fund_req",$user->getId(),$em));
// }
$numberFundRequestsByDate = 0;
$numberFundRequestsApprovedByDate = 0;
$numberFundRequestsNotApprovedByDate = 0;
//Récupération du mois en cours------------------------------------------------------------------------
$date = new \DateTime();
//$formatter = new \IntlDateFormatter('fr_FR', \IntlDateFormatter::MEDIUM, \IntlDateFormatter::MEDIUM);
//$formatter->setPattern('MMMM Y');
$currenteMonth = date('M Y');
$startDate = $date -> format('Y-m-01');
$endDate = $date -> format('Y-m-t');
$indicatorTitle = "Demande de fonds Indicateurs du mois en cours (" . mb_strtoupper($currenteMonth).")";
//Récupération de dernières demandes
$fundRequests = $em->getRepository(FundRequest::class)->findByLast();
//$dateNow = date("Y-m-d");
$dateStart = new \DateTime($startDate . " 00:00:00");
$dateEnd = new \DateTime($endDate . " 23:59:59");
$datas = $em->getRepository(FundRequest::class)->countByDateBetween($dateStart, $dateEnd);
$numberFundRequestsByDate = (!is_null($datas) && count($datas) > 0) ? count($datas) : 0;
$amountFundRequestsByDate = 0;
if (!is_null($datas) && count($datas) > 0) {
foreach ($datas as $e) {
$amountFundRequestsByDate = $amountFundRequestsByDate + $e->getTotalAmount();
}
}
$datas = $em->getRepository(FundRequest::class)->countByApprovedAndDateBetween($dateStart, $dateEnd);
$numberFundRequestsApprovedByDate = (!is_null($datas) && count($datas) > 0) ? count($datas) : 0;
$amountFundRequestsApprovedByDate = 0;
$totalDisbursementFundRequestsApprovedByDate = 0;
$restDisbursement = 0;
if (!is_null($datas) && count($datas) > 0) {
foreach ($datas as $e) {
$amountFundRequestsApprovedByDate = $amountFundRequestsApprovedByDate + $e->getTotalAmount();
$totalDisbursementFundRequestsApprovedByDate = $totalDisbursementFundRequestsApprovedByDate + $e->getTotalAmountDisbursed();
}
}
$restDisbursement = $amountFundRequestsApprovedByDate - $totalDisbursementFundRequestsApprovedByDate;
$datas = $em->getRepository(FundRequest::class)->countByNotApprovedAndDateBetween($dateStart, $dateEnd);
$numberFundRequestsNotApprovedByDate = (!is_null($datas) && count($datas) > 0) ? count($datas) : 0;
$datas = $em->getRepository(FundRequest::class)->countByRejectedAndDateBetween($dateStart, $dateEnd);
$numberFundRequestsRejetedByDate = (!is_null($datas) && count($datas) > 0) ? count($datas) : 0;
return $this->render('master/db_fin.html.twig', [
'fundRequests' => $fundRequests,
'numberFundRequestsByDate' => $numberFundRequestsByDate,
'numberFundRequestsApprovedByDate' => $numberFundRequestsApprovedByDate,
'numberFundRequestsNotApprovedByDate' => $numberFundRequestsNotApprovedByDate,
'numberFundRequestsRejetedByDate' => $numberFundRequestsRejetedByDate,
'amountFundRequestsByDate' => $amountFundRequestsByDate,
'amountFundRequestsApprovedByDate' => $amountFundRequestsApprovedByDate,
'totalDisbursementFundRequestsApprovedByDate' => $totalDisbursementFundRequestsApprovedByDate,
'restDisbursement' => $restDisbursement,
'indicatorTitle' => $indicatorTitle,
]);
}
#[Route('/rh-home', name: 'rh_home')]
public function rhHome(Request $request, EntityManagerInterface $em): Response
{
$staffHomme = 0;
$staffFemme = 0;
$totalStaff = 0;
$datas = $em->getRepository(RhStaff::class)->countBySexe("MASCULIN");
$staffHomme = (!is_null($datas) && count($datas) > 0) ? count($datas) : 0;
$datas = $em->getRepository(RhStaff::class)->countBySexe("FEMININ");
$staffFemme = (!is_null($datas) && count($datas) > 0) ? count($datas) : 0;
$datas = $em->getRepository(RhStaff::class)->countActif();
$totalStaffActif = (!is_null($datas) && count($datas) > 0) ? count($datas) : 0;
$datas = $em->getRepository(RhStaff::class)->countAll();
$totalStaff = (!is_null($datas) && count($datas) > 0) ? count($datas) : 0;
return $this->render('master/db_rh.html.twig', [
'staffHomme' => $staffHomme,
'staffFemme' => $staffFemme,
'totalStaff' => $totalStaff,
'totalStaffActif' => $totalStaffActif,
]);
}
#[Route('/admin-home', name: 'admin_home')]
public function adminHome(Request $request, EntityManagerInterface $em): Response
{
return $this->render('master/db_admin.html.twig', [
]);
}
#[Route('/admin/control-panel', name: 'admin_control_panel')]
public function controlPanel(): Response
{
return $this->render('master/control_panel.html.twig', [
'controller_name' => 'MasterController',
]);
}
#[Route('/access-denied', name: 'access_denied')]
public function accessDenied(): Response
{
return $this->render('master/access_denied.html.twig', [
'controller_name' => 'MasterController',
]);
}
}