<?php
namespace App\Controller;
use App\Entity\Document;
use App\Entity\DocumentCategory;
use App\Entity\Folder;
use App\Entity\Identite;
use App\Entity\Users;
use App\Form\InitiateRequestSurferType;
use App\Form\InitiateRequestType;
use App\Form\SearchDocumentCategoryType;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Psr\Log\LoggerInterface;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Contracts\Cache\CacheInterface;
use Symfony\Contracts\Cache\ItemInterface;
class MasterController extends AbstractController
{
private ManagerRegistry $managerRegistry;
private LoggerInterface $logger;
private MailerInterface $mailer;
private CacheInterface $cache;
/**
* @param ManagerRegistry $managerRegistry
* @param LoggerInterface $logger
* @param MailerInterface $mailer
* @param CacheInterface $cache
*/
public function __construct(ManagerRegistry $managerRegistry, LoggerInterface $logger, MailerInterface $mailer, CacheInterface $cache)
{
$this->managerRegistry = $managerRegistry;
$this->logger = $logger;
$this->mailer = $mailer;
$this->cache = $cache;
}
public function homepage()
{
$this->logger->info('Homepage visited');
// retreive all documentCategory with isPublished = true
$documentCategories = $this->managerRegistry->getRepository(DocumentCategory::class)->findBy([
'isPublished' => true,
]);
$documentArray = [];
// adding documentCategory to an array
foreach ($documentCategories as $documentCategory) {
$documentArray[] = [
'id' => $documentCategory->getId(),
'name' => $documentCategory->getLabel(),
'iconClass' => $documentCategory->getIconClass(),
'service' => [
'id' => $documentCategory->getService()->getId(),
'name' => $documentCategory->getService()->getLabel(),
]
];
}
if (!is_null($this->getUser())) {
$user = $this->getUser();
$lastDateUpdate = $this->getUser()->getUpdatePasswordDate();
if (!is_null($lastDateUpdate)) {
$dateSys = new \DateTime();
$diff = date_diff($dateSys, $lastDateUpdate);
if ($diff->days >= 10 | $this->getUser()->getFirstLogin() == true) {
$userUpdate = $user->getMail();
$this->addFlash('password_expire', 'Bonjour ' .$userUpdate. ' votre mot de passe a expiré, prière le mettre à jour!');
return $this->redirectToRoute('app_user_update_password', ['user_id' => $this->getUser()->getId()]);
}
} else {
return $this->render('master/home.html.twig',[
'documentCategories' => $documentArray,
]);
}
if ($this->getUser()->getFirstLogin() == true) {
$userUpdate = $user->getMail();
$this->addFlash('first_connexion', 'Bonjour ' .$userUpdate. ' Ceci est votre première connexion, prière de mettre à jour votre mot de passe!');
return $this->redirectToRoute('app_user_update_password', ['user_id' => $this->getUser()->getId()]);
} else {
return $this->render('master/home.html.twig',[
'documentCategories' => $documentArray,
]);
}
} else {
return $this->render('master/home.html.twig',[
'documentCategories' => $documentArray,
]);
}
}
public function homepageBis(Request $request)
{
$this->logger->info('Homepage visited');
$docForm = $this->createForm(SearchDocumentCategoryType::class);
// retrieve all documentCategory with isPublished = true
// $documentCategories = $this->managerRegistry->getRepository(Document::class)->getMostPrintedDocument();
if (!is_null($this->getUser())) {
$user = $this->getUser();
$lastDateUpdate = $this->getUser()->getUpdatePasswordDate();
if (!is_null($lastDateUpdate)) {
$dateSys = new \DateTime();
$diff = date_diff($dateSys, $lastDateUpdate);
if ($diff->days >= 10 | $this->getUser()->getFirstLogin() == true) {
$userUpdate = $user->getMail();
$this->addFlash('password_expire', 'Bonjour ' .$userUpdate. ' votre mot de passe a expiré, prière le mettre à jour!');
return $this->redirectToRoute('app_user_update_password', ['user_id' => $this->getUser()->getId()]);
}
} else {
return $this->render('master/home_new.html.twig',[
// 'documentCategories' => $documentCategories,
'docForm' => $docForm->createView(),
]);
}
if ($this->getUser()->getFirstLogin() == true) {
$userUpdate = $user->getMail();
$this->addFlash('first_connexion', 'Bonjour ' .$userUpdate. ' Ceci est votre première connexion, prière de mettre à jour votre mot de passe!');
return $this->redirectToRoute('app_user_update_password', ['user_id' => $this->getUser()->getId()]);
} else {
return $this->render('master/home_new.html.twig',[
// 'documentCategories' => $documentCategories,
'docForm' => $docForm->createView(),
]);
}
} else {
return $this->render('master/home_new.html.twig',[
// 'documentCategories' => $documentCategories,
'docForm' => $docForm->createView(),
]);
}
}
public function configPanel()
{
return $this->render('master/configpanel.html.twig', []);
}
public function notFoundPage()
{
return $this->render('404/404.html.twig', []);
}
public function accessDeniedPage()
{
return $this->render('403/403.html.twig');
}
public function workspace()
{
$em = $this->managerRegistry;
$totalIdentite = 0;
$totalHomme = 0;
$totalFemme = 0;
$totalEnfant = 0;
$totalDemande = 0;
$totalDemandeValidee = 0;
$totalDemandeRejetee = 0;
$totalDocument = 0;
$totalEnAttentePaiement = 0;
$totalEnAttenteValidation = 0;
$totalEnAttenteSignature = 0;
$totalEnAttenteImpression = 0;
$site = $this->getUser()->getSite();
$userType = $this->getUser()->getUserType();
$currentUser = $this->getUser();
$siteId = "";
if ($site != null) {
$siteId = $site->getId();
}
$connectedUser = $this->managerRegistry->getRepository(Users::class)->findOneBy([
'id' => $this->getUser()->getId(),
]);
if (!$connectedUser->getStatus()) {
return $this->redirect('/logout');
}
switch ($userType) {
//Administrateur du Site
case 6:
case 7:
case 8:
case 1:
$stats = $this->cache->get('workspace_dashboard_stats_admin', function (ItemInterface $item) {
$item->expiresAfter(300);
$totalIdentite = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->getQuery()
->getSingleScalarResult();
$sexeCounts = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select(
'SUM(CASE WHEN i.sexe = :sexeMasculin THEN 1 ELSE 0 END) AS totalHomme',
'SUM(CASE WHEN i.sexe = :sexeFeminin THEN 1 ELSE 0 END) AS totalFemme'
)
->setParameter('sexeMasculin', 'Masculin')
->setParameter('sexeFeminin', 'Feminin')
->getQuery()
->getSingleResult();
$totalHomme = (int) $sexeCounts['totalHomme'];
$totalFemme = (int) $sexeCounts['totalFemme'];
$totalEnfant = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('i.birthDate > :adultCutoff')
->setParameter('adultCutoff', (new \DateTime())->modify('-18 years'))
->getQuery()
->getSingleScalarResult();
$totalDemande = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->getQuery()
->getSingleScalarResult();
$folderStatusCounts = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('f.status AS status, count(f.id) AS total')
->groupBy('f.status')
->getQuery()
->getResult();
$countByStatus = [];
foreach ($folderStatusCounts as $row) {
$countByStatus[(int) $row['status']] = (int) $row['total'];
}
$totalDocument = $this->managerRegistry->getRepository(Document::class)->createQueryBuilder('d')
->select('count(d.folder)')
->getQuery()
->getSingleScalarResult();
return [
'totalIdentite' => $totalIdentite,
'totalHomme' => $totalHomme,
'totalFemme' => $totalFemme,
'totalEnfant' => $totalEnfant,
'totalDemande' => $totalDemande,
'totalDemandeValidee' => $countByStatus[4] ?? 0,
'totalDemandeRejetee' => $countByStatus[3] ?? 0,
'totalEnAttentePaiement' => $countByStatus[1] ?? 0,
'totalEnAttenteValidation' => $countByStatus[2] ?? 0,
'totalEnAttenteSignature' => $countByStatus[4] ?? 0,
'totalEnAttenteImpression' => $countByStatus[5] ?? 0,
'totalDocument' => $totalDocument,
];
});
$totalIdentite = $stats['totalIdentite'];
$totalHomme = $stats['totalHomme'];
$totalFemme = $stats['totalFemme'];
$totalEnfant = $stats['totalEnfant'];
$totalDemande = $stats['totalDemande'];
$totalDemandeValidee = $stats['totalDemandeValidee'];
$totalDemandeRejetee = $stats['totalDemandeRejetee'];
$totalEnAttentePaiement = $stats['totalEnAttentePaiement'];
$totalEnAttenteValidation = $stats['totalEnAttenteValidation'];
$totalEnAttenteSignature = $stats['totalEnAttenteSignature'];
$totalEnAttenteImpression = $stats['totalEnAttenteImpression'];
$totalDocument = $stats['totalDocument'];
break;
//Autorité du Site
case 2:
$totalIdentite = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('i.registrationSite=:p1')
->setParameter('p1', $siteId)
->getQuery()
->getSingleScalarResult();
$totalHomme = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('i.registrationSite=:p1')
->setParameter('p1', $siteId)
->andWhere('i.sexe = :p2')
->setParameter('p2', 'Masculin')
->getQuery()
->getSingleScalarResult();
$totalFemme = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('i.registrationSite=:p1')
->setParameter('p1', $siteId)
->andWhere('i.sexe = :p2')
->setParameter('p2', 'Feminin')
->getQuery()
->getSingleScalarResult();
$totalEnfant = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('(YEAR(current_date()) - YEAR(i.birthDate)) < 18')
->andWhere('i.registrationSite=:p1')
->setParameter('p1', $siteId)
->getQuery()
->getSingleScalarResult();
$totalDemande = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->getQuery()
->getSingleScalarResult();
$totalDemandeValidee = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andWhere('f.status=4')
->getQuery()
->getSingleScalarResult();
$totalDemandeRejetee = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andWhere('f.status=3')
->getQuery()
->getSingleScalarResult();
$totalEnAttentePaiement = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andWhere('f.status=1')
->getQuery()
->getSingleScalarResult();
$totalEnAttenteValidation = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andWhere('f.status=2')
->getQuery()
->getSingleScalarResult();
$totalEnAttenteSignature = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andWhere('f.status=4')
->getQuery()
->getSingleScalarResult();
$totalEnAttenteImpression = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andWhere('f.status=5')
->getQuery()
->getSingleScalarResult();
// $documentFolderSubquery = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
// ->select('f.id')
// ->where('f.site = :p1')
// ->setParameter('p1', $siteId)
// ->getDQL();
// $documentQuery = $this->managerRegistry->getRepository(Document::class)->createQueryBuilder('d');
// $totalDocument = $documentQuery->select('count(d.id)')
// ->from('')
// ->where($documentQuery->expr()->in('d.folder', $documentFolderSubquery))
// ->getQuery()
// ->getSingleScalarResult();
$query = $this->managerRegistry->getManager()->createQuery("SELECT count(d.id) FROM App\Entity\Document d
WHERE d.folder in
(SELECT f.id FROM App\Entity\Folder f
WHERE f.site =" . $siteId . ")");
break;
//OPS
case 3:
$totalIdentite = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('i.registrationSite=:p1')
->setParameter('p1', $siteId)
->andwhere('i.userCreate=:p2')
->setParameter('p2', $currentUser)
->getQuery()
->getSingleScalarResult();
$totalHomme = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('i.registrationSite=:p1')
->setParameter('p1', $siteId)
->andWhere('i.sexe = :p2')
->setParameter('p2', 'Masculin')
->andwhere('i.userCreate=:p3')
->setParameter('p3', $currentUser)
->getQuery()
->getSingleScalarResult();
$totalFemme = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('i.registrationSite=:site')
->setParameter('site', $siteId)
->andWhere('i.sexe = :p1')
->setParameter('p1', 'Feminin')
->andwhere('i.userCreate=:p2')
->setParameter('p2', $currentUser)
->getQuery()
->getSingleScalarResult();
$totalEnfant = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('(YEAR(current_date()) - YEAR(i.birthDate)) < 18')
->andWhere('i.registrationSite=:site')
->setParameter('site', $siteId)
->andwhere('i.userCreate=:user')
->setParameter('user', $currentUser)
->getQuery()
->getSingleScalarResult();
$totalDemande = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andwhere('f.userCreate=:user')
->setParameter('user', $currentUser)
->getQuery()
->getSingleScalarResult();
$totalDemandeValidee = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andwhere('f.userCreate=:user')
->setParameter('user', $currentUser)
->andwhere('f.status=4')
->getQuery()
->getSingleScalarResult();
$totalDemandeRejetee = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andwhere('f.userCreate=:user')
->setParameter('user', $currentUser)
->andwhere('f.status=3')
->getQuery()
->getSingleScalarResult();
$totalEnAttentePaiement = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andwhere('f.userCreate=:user')
->setParameter('user', $currentUser)
->andWhere('f.status=1')
->getQuery()
->getSingleScalarResult();
$totalEnAttenteValidation = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andwhere('f.userCreate=:user')
->setParameter('user', $currentUser)
->andWhere('f.status=2')
->getQuery()
->getSingleScalarResult();
$totalEnAttenteSignature = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andwhere('f.userCreate=:user')
->setParameter('user', $currentUser)
->andWhere('f.status=4')
->getQuery()
->getSingleScalarResult();
$totalEnAttenteImpression = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andWhere('f.status=5')
->getQuery()
->getSingleScalarResult();
// $documentFolderSubquery = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
// ->select('f.id')
// ->where('f.site = :p1')
// ->setParameter('p1', $siteId)
// ->getDQL();
// $documentQuery = $this->managerRegistry->getRepository(Document::class)->createQueryBuilder('d');
// $totalDocument = $documentQuery->select('count(d.id)')
// ->where($documentQuery->expr()->in('d.folder', $documentFolderSubquery))
// ->andwhere('d.userCreate=:user')
// ->setParameter('user', $currentUser)
// ->getQuery()
// ->getSingleScalarResult();
$query = $this->managerRegistry->getManager()->createQuery("SELECT count(d.id) FROM App\Entity\Document d
WHERE d.userCreate=" . $currentUser->getId() . " AND d.folder in
(SELECT f.id FROM App\Entity\Folder f
WHERE f.site =" . $siteId . ")");
$totalDocument = $query->getSingleScalarResult();
break;
// Internaute
case 4:
$totalIdentite = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('i.registrationSite=:p1')
->setParameter('p1', $siteId)
->andwhere('i.userCreate=:p2')
->setParameter('p2', $currentUser)
->getQuery()
->getSingleScalarResult();
$totalHomme = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('i.registrationSite=:p1')
->setParameter('p1', $siteId)
->andWhere('i.sexe = :p2')
->setParameter('p2', 'Masculin')
->andwhere('i.userCreate=:p3')
->setParameter('p3', $currentUser)
->getQuery()
->getSingleScalarResult();
$totalFemme = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('i.registrationSite=:p1')
->setParameter('p1', $siteId)
->andWhere('i.sexe = :p2')
->setParameter('p2', 'Feminin')
->andwhere('i.userCreate=:p3')
->setParameter('p3', $currentUser)
->getQuery()
->getSingleScalarResult();
$totalEnfant = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('(YEAR(current_date()) - YEAR(i.birthDate)) < 18')
->andWhere('i.registrationSite=:site')
->setParameter('site', $siteId)
->andwhere('i.userCreate=:user')
->setParameter('user', $currentUser)
->getQuery()
->getSingleScalarResult();
$totalDemande = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andwhere('f.userCreate=:user')
->setParameter('user', $currentUser)
->getQuery()
->getSingleScalarResult();
$totalDemandeValidee = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andwhere('f.userCreate=:user')
->setParameter('user', $currentUser)
->andWhere('f.status=4')
->getQuery()
->getSingleScalarResult();
$totalDemandeRejetee = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andwhere('f.userCreate=:user')
->setParameter('user', $currentUser)
->andWhere('f.status=3')
->getQuery()
->getSingleScalarResult();
$totalEnAttentePaiement = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andwhere('f.userCreate=:user')
->setParameter('user', $currentUser)
->andWhere('f.status=1')
->getQuery()
->getSingleScalarResult();
$totalEnAttenteValidation = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andwhere('f.userCreate=:user')
->setParameter('user', $currentUser)
->andWhere('f.status=2')
->getQuery()
->getSingleScalarResult();
$totalEnAttenteSignature = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andwhere('f.userCreate=:user')
->setParameter('user', $currentUser)
->andWhere('f.status=4')
->getQuery()
->getSingleScalarResult();
$totalEnAttenteImpression = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andwhere('f.userCreate=:user')
->setParameter('user', $currentUser)
->andWhere('f.status=5')
->getQuery()
->getSingleScalarResult();
$query = $this->managerRegistry->getManager()->createQuery("SELECT count(d.id) FROM App\Entity\Document d WHERE d.folder in
(SELECT f.id FROM App\Entity\Folder f WHERE f.site =" . $siteId . "
AND f.userCreate=" . $currentUser->getId() . ")");
break;
//Validateur
case 5:
$totalIdentite = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('i.registrationSite=:p1')
->setParameter('p1', $siteId)
->getQuery()
->getSingleScalarResult();
$totalHomme = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('i.registrationSite=:p1')
->setParameter('p1', $siteId)
->andWhere('i.sexe = :p2')
->setParameter('p2', 'Masculin')
->getQuery()
->getSingleScalarResult();
$totalFemme = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('i.registrationSite=:p1')
->setParameter('p1', $siteId)
->andWhere('i.sexe = :p2')
->setParameter('p2', 'Feminin')
->getQuery()
->getSingleScalarResult();
$totalEnfant = $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
->select('count(i.id)')
->where('(YEAR(current_date()) - YEAR(i.birthDate)) < 18')
->andWhere('i.registrationSite=:site')
->setParameter('site', $siteId)
->getQuery()
->getSingleScalarResult();
$totalDemande = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:site')
->setParameter('site', $siteId)
->getQuery()
->getSingleScalarResult();
$totalDemandeValidee = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:site')
->setParameter('site', $siteId)
->andWhere('f.status=4')
->getQuery()
->getSingleScalarResult();
$totalDemandeRejetee = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:site')
->setParameter('site', $siteId)
->andWhere('f.status=3')
->getQuery()
->getSingleScalarResult();
$totalEnAttentePaiement = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andWhere('f.status=1')
->getQuery()
->getSingleScalarResult();
$totalEnAttenteValidation = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andWhere('f.status=2')
->getQuery()
->getSingleScalarResult();
$totalEnAttenteSignature = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andWhere('f.status=4')
->getQuery()
->getSingleScalarResult();
$totalEnAttenteImpression = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.site=:p1')
->setParameter('p1', $siteId)
->andWhere('f.status=5')
->getQuery()
->getSingleScalarResult();
$query = $this->managerRegistry->getManager()->createQuery("SELECT count(d.id) FROM App\Entity\Document d
WHERE d.folder in
(SELECT f.id FROM App\Entity\Folder f
WHERE f.site =" . $siteId . ")");
break;
}
$this->logger->info('>>>>>>>>>', ["-----------------------COUNT DOCUMENT-------------------------"]);
$this->logger->info('Nombre de document', [$totalDocument]);
return $this->render('master/workspace.html.twig', [
'totalIdentite' => $totalIdentite,
'totalHomme' => $totalHomme,
'totalFemme' => $totalFemme,
'totalEnfant' => $totalEnfant,
'totalDemande' => $totalDemande,
'totalDocument' => $totalDocument,
'totalDemandeValidee' => $totalDemandeValidee,
'totalDemandeRejetee' => $totalDemandeRejetee,
'totalEnAttentePaiement' => $totalEnAttentePaiement,
'totalEnAttenteValidation' => $totalEnAttenteValidation,
'totalEnAttenteSignature' => $totalEnAttenteSignature,
'totalEnAttenteImpression' => $totalEnAttenteImpression,
]);
}
public function workspaceSurfer()
{
$em = $this->managerRegistry;
$drafRequest = 0;
$signedRequest = 0;
$rejectedRequest = 0;
$awaitingValidationRequest = 0;
$awaitingSignatureRequest = 0;
$drafRequest = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.userCreate =:p1')
->setParameter('p1', $this->getUser())
->andWhere('f.status = :p2')
->setParameter('p2', 1)
->getQuery()
->getSingleScalarResult();
$awaitingValidationRequest = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.userCreate =:p1')
->setParameter('p1', $this->getUser())
->andWhere('f.status = :p2')
->setParameter('p2', 2)
->getQuery()
->getSingleScalarResult();
$awaitingSignatureRequest = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
->select('count(f.id)')
->where('f.userCreate =:p1')
->setParameter('p1', $this->getUser())
->andWhere('f.status = :p2')
->setParameter('p2', 4)
->getQuery()
->getSingleScalarResult();
$folders = $this->managerRegistry->getRepository(Folder::class)->findBy([
'userCreate' => $this->getUser(),
'isDeleted' => false,
]);
return $this->render('master/workspace_surfer.html.twig', [
'drafRequest' => $drafRequest,
'awaitingSignatureRequest' => $awaitingSignatureRequest,
'awaitingValidationRequest' => $awaitingValidationRequest,
'rejectedRequest' => $rejectedRequest,
'signedRequest' => $signedRequest,
'folders' => $folders,
]);
}
public function dashboardUser(Request $request)
{
if ($this->getUser()->getUserType() == 2) {
return $this->render('master/dashboard_agent.html.twig', [
// 'depositSlips'=> $depositSlips,
]);
} else {
}
}
public function initiateRequest(Request $request)
{
$connectedUser = $this->managerRegistry->getRepository(Users::class)->findOneBy([
'id' => $this->getUser()->getId(),
]);
if (!$connectedUser->getStatus()) {
return $this->redirect('/logout');
}
if ($this->getUser()->getUserType() == 3) {
//Type user Agent
$form = $this->createForm(InitiateRequestType::class, array('site_id' => $connectedUser->getSite()->getId()));
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$criters = $form->getData();
if (!is_null($criters['documentId'])) {
$documentId = $criters['documentId'];
$site = $this->getUser()->getSite();
$documentCategory = $this->managerRegistry->getRepository(DocumentCategory::class)->findOneBy([
'id' => $documentId,
'isDeleted' => false,
]);
if (is_null($documentCategory)) {
$this->addFlash(
'document_category_not_config',
"Document non trouvé, impossible de continuer"
);
}
$documentNumber = $documentCategory->getNumber();
if (is_null($documentNumber) || $documentNumber === '') {
$this->addFlash(
'document_category_not_config',
"Désolé, le document sélectionné n'est pas encore activé"
);
}
if (is_null($site)) {
$this->addFlash(
'document_category_not_config',
"Site non trouvé, impossible de continuer"
);
}
return $this->redirectToRoute('app_core_application_form', [
'id' => $documentId,
'site_id' => $site->getId()
]);
}
}
return $this->render('master/initiate_request.html.twig', [
// 'depositSlips'=> $depositSlips,
'form' => $form->createView()
]);
} else {
$form = $this->createForm(InitiateRequestSurferType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$criters = $form->getData();
if (!is_null($criters['documentId'])) {
$documentId = $criters['documentId'];
$site = $criters['site'];
$documentCategory = $this->managerRegistry->getRepository(DocumentCategory::class)->findOneBy([
'id' => $documentId,
'isDeleted' => false,
]);
if (is_null($documentCategory)) {
$this->addFlash(
'document_category_not_config',
"Document non trouvé, impossible de continuer"
);
}
if (is_null($site)) {
$this->addFlash(
'document_category_not_config',
"Site non trouvé, impossible de continuer"
);
}
$documentNumber = $documentCategory->getNumber();
if (is_null($documentNumber) || $documentNumber === '') {
$this->addFlash(
'document_category_not_config',
"Désolé, le document sélectionné n'est pas encore activé"
);
}
return $this->redirectToRoute('app_core_application_form', [
'id' => $documentId,
'site_id' => $site->getId()
]);
}
}
return $this->render('master/initiate_request_surfer.html.twig', [
// 'depositSlips'=> $depositSlips,
'form' => $form->createView()
]);
}
}
}