src/Controller/MasterController.php line 107

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Document;
  4. use App\Entity\DocumentCategory;
  5. use App\Entity\Folder;
  6. use App\Entity\Identite;
  7. use App\Entity\Users;
  8. use App\Form\InitiateRequestSurferType;
  9. use App\Form\InitiateRequestType;
  10. use App\Form\SearchDocumentCategoryType;
  11. use Doctrine\Persistence\ManagerRegistry;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Psr\Log\LoggerInterface;
  15. use Symfony\Component\Mailer\MailerInterface;
  16. use Symfony\Contracts\Cache\CacheInterface;
  17. use Symfony\Contracts\Cache\ItemInterface;
  18. class MasterController extends AbstractController
  19. {
  20.     private ManagerRegistry $managerRegistry;
  21.     private LoggerInterface $logger;
  22.     private MailerInterface $mailer;
  23.     private CacheInterface $cache;
  24.     /**
  25.      * @param ManagerRegistry $managerRegistry
  26.      * @param LoggerInterface $logger
  27.      * @param MailerInterface $mailer
  28.      * @param CacheInterface $cache
  29.      */
  30.     public function __construct(ManagerRegistry $managerRegistryLoggerInterface $loggerMailerInterface $mailerCacheInterface $cache)
  31.     {
  32.         $this->managerRegistry $managerRegistry;
  33.         $this->logger $logger;
  34.         $this->mailer $mailer;
  35.         $this->cache $cache;
  36.     }
  37.     public function homepage()
  38.     {
  39.         $this->logger->info('Homepage visited');
  40.         // retreive all documentCategory with isPublished = true
  41.         $documentCategories $this->managerRegistry->getRepository(DocumentCategory::class)->findBy([
  42.             'isPublished' => true,
  43.         ]);
  44.         $documentArray = [];
  45.         // adding documentCategory to an array
  46.         foreach ($documentCategories as $documentCategory) {
  47.             $documentArray[] = [
  48.                 'id' => $documentCategory->getId(),
  49.                 'name' => $documentCategory->getLabel(),
  50.                 'iconClass' => $documentCategory->getIconClass(),
  51.                 'service' => [
  52.                     'id' => $documentCategory->getService()->getId(),
  53.                     'name' => $documentCategory->getService()->getLabel(),
  54.                 ]
  55.             ];
  56.         }
  57.         if (!is_null($this->getUser())) {
  58.             $user $this->getUser();
  59.             $lastDateUpdate $this->getUser()->getUpdatePasswordDate();
  60.             if (!is_null($lastDateUpdate)) {
  61.                 $dateSys = new \DateTime();
  62.                 $diff date_diff($dateSys$lastDateUpdate);
  63.                 if ($diff->days >= 10 $this->getUser()->getFirstLogin() == true) {
  64.                     $userUpdate $user->getMail();
  65.                     $this->addFlash('password_expire''Bonjour ' .$userUpdate' votre mot de passe a expiré, prière le mettre à jour!');
  66.                     return $this->redirectToRoute('app_user_update_password', ['user_id' => $this->getUser()->getId()]);
  67.                 }
  68.             } else {
  69.                 return $this->render('master/home.html.twig',[
  70.                     'documentCategories' => $documentArray,
  71.                 ]);
  72.             }
  73.             if ($this->getUser()->getFirstLogin() == true) {
  74.                 $userUpdate $user->getMail();
  75.                 $this->addFlash('first_connexion''Bonjour ' .$userUpdate' Ceci est votre première connexion, prière de mettre à jour votre mot de passe!');
  76.                 return $this->redirectToRoute('app_user_update_password', ['user_id' => $this->getUser()->getId()]);
  77.             } else {
  78.                 return $this->render('master/home.html.twig',[
  79.                     'documentCategories' => $documentArray,
  80.                 ]);
  81.             }
  82.         } else {
  83.             return $this->render('master/home.html.twig',[
  84.                 'documentCategories' => $documentArray,
  85.             ]);
  86.         }
  87.     }
  88.     public function homepageBis(Request $request)
  89.     {
  90.         $this->logger->info('Homepage visited');
  91.         $docForm $this->createForm(SearchDocumentCategoryType::class);
  92.         // retrieve all documentCategory with isPublished = true
  93. //        $documentCategories = $this->managerRegistry->getRepository(Document::class)->getMostPrintedDocument();
  94.         if (!is_null($this->getUser())) {
  95.             $user $this->getUser();
  96.             $lastDateUpdate $this->getUser()->getUpdatePasswordDate();
  97.             if (!is_null($lastDateUpdate)) {
  98.                 $dateSys = new \DateTime();
  99.                 $diff date_diff($dateSys$lastDateUpdate);
  100.                 if ($diff->days >= 10 $this->getUser()->getFirstLogin() == true) {
  101.                     $userUpdate $user->getMail();
  102.                     $this->addFlash('password_expire''Bonjour ' .$userUpdate' votre mot de passe a expiré, prière le mettre à jour!');
  103.                     return $this->redirectToRoute('app_user_update_password', ['user_id' => $this->getUser()->getId()]);
  104.                 }
  105.             } else {
  106.                 return $this->render('master/home_new.html.twig',[
  107. //                    'documentCategories' => $documentCategories,
  108.                     'docForm' => $docForm->createView(),
  109.                 ]);
  110.             }
  111.             if ($this->getUser()->getFirstLogin() == true) {
  112.                 $userUpdate $user->getMail();
  113.                 $this->addFlash('first_connexion''Bonjour ' .$userUpdate' Ceci est votre première connexion, prière de mettre à jour votre mot de passe!');
  114.                 return $this->redirectToRoute('app_user_update_password', ['user_id' => $this->getUser()->getId()]);
  115.             } else {
  116.                 return $this->render('master/home_new.html.twig',[
  117. //                    'documentCategories' => $documentCategories,
  118.                     'docForm' => $docForm->createView(),
  119.                 ]);
  120.             }
  121.         } else {
  122.             return $this->render('master/home_new.html.twig',[
  123. //                'documentCategories' => $documentCategories,
  124.                 'docForm' => $docForm->createView(),
  125.             ]);
  126.         }
  127.     }
  128.     public function configPanel()
  129.     {
  130.         return $this->render('master/configpanel.html.twig', []);
  131.     }
  132.     public function notFoundPage()
  133.     {
  134.         return $this->render('404/404.html.twig', []);
  135.     }
  136.     public function accessDeniedPage()
  137.     {
  138.         return $this->render('403/403.html.twig');
  139.     }
  140.     public function workspace()
  141.     {
  142.         $em $this->managerRegistry;
  143.         $totalIdentite 0;
  144.         $totalHomme 0;
  145.         $totalFemme 0;
  146.         $totalEnfant 0;
  147.         $totalDemande 0;
  148.         $totalDemandeValidee 0;
  149.         $totalDemandeRejetee 0;
  150.         $totalDocument 0;
  151.         $totalEnAttentePaiement 0;
  152.         $totalEnAttenteValidation 0;
  153.         $totalEnAttenteSignature 0;
  154.         $totalEnAttenteImpression 0;
  155.         $site $this->getUser()->getSite();
  156.         $userType $this->getUser()->getUserType();
  157.         $currentUser $this->getUser();
  158.         $siteId "";
  159.         if ($site != null) {
  160.             $siteId $site->getId();
  161.         }
  162.         $connectedUser $this->managerRegistry->getRepository(Users::class)->findOneBy([
  163.             'id' => $this->getUser()->getId(),
  164.         ]);
  165.         if (!$connectedUser->getStatus()) {
  166.             return $this->redirect('/logout');
  167.         }
  168.         switch ($userType) {
  169.             //Administrateur du Site
  170.             case 6:
  171.             case 7:
  172.             case 8:
  173.             case 1:
  174.                 $stats $this->cache->get('workspace_dashboard_stats_admin', function (ItemInterface $item) {
  175.                     $item->expiresAfter(300);
  176.                     $totalIdentite $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  177.                         ->select('count(i.id)')
  178.                         ->getQuery()
  179.                         ->getSingleScalarResult();
  180.                     $sexeCounts $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  181.                         ->select(
  182.                             'SUM(CASE WHEN i.sexe = :sexeMasculin THEN 1 ELSE 0 END) AS totalHomme',
  183.                             'SUM(CASE WHEN i.sexe = :sexeFeminin THEN 1 ELSE 0 END) AS totalFemme'
  184.                         )
  185.                         ->setParameter('sexeMasculin''Masculin')
  186.                         ->setParameter('sexeFeminin''Feminin')
  187.                         ->getQuery()
  188.                         ->getSingleResult();
  189.                     $totalHomme = (int) $sexeCounts['totalHomme'];
  190.                     $totalFemme = (int) $sexeCounts['totalFemme'];
  191.                     $totalEnfant $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  192.                         ->select('count(i.id)')
  193.                         ->where('i.birthDate > :adultCutoff')
  194.                         ->setParameter('adultCutoff', (new \DateTime())->modify('-18 years'))
  195.                         ->getQuery()
  196.                         ->getSingleScalarResult();
  197.                     $totalDemande $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  198.                         ->select('count(f.id)')
  199.                         ->getQuery()
  200.                         ->getSingleScalarResult();
  201.                     $folderStatusCounts $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  202.                         ->select('f.status AS status, count(f.id) AS total')
  203.                         ->groupBy('f.status')
  204.                         ->getQuery()
  205.                         ->getResult();
  206.                     $countByStatus = [];
  207.                     foreach ($folderStatusCounts as $row) {
  208.                         $countByStatus[(int) $row['status']] = (int) $row['total'];
  209.                     }
  210.                     $totalDocument $this->managerRegistry->getRepository(Document::class)->createQueryBuilder('d')
  211.                         ->select('count(d.folder)')
  212.                         ->getQuery()
  213.                         ->getSingleScalarResult();
  214.                     return [
  215.                         'totalIdentite' => $totalIdentite,
  216.                         'totalHomme' => $totalHomme,
  217.                         'totalFemme' => $totalFemme,
  218.                         'totalEnfant' => $totalEnfant,
  219.                         'totalDemande' => $totalDemande,
  220.                         'totalDemandeValidee' => $countByStatus[4] ?? 0,
  221.                         'totalDemandeRejetee' => $countByStatus[3] ?? 0,
  222.                         'totalEnAttentePaiement' => $countByStatus[1] ?? 0,
  223.                         'totalEnAttenteValidation' => $countByStatus[2] ?? 0,
  224.                         'totalEnAttenteSignature' => $countByStatus[4] ?? 0,
  225.                         'totalEnAttenteImpression' => $countByStatus[5] ?? 0,
  226.                         'totalDocument' => $totalDocument,
  227.                     ];
  228.                 });
  229.                 $totalIdentite $stats['totalIdentite'];
  230.                 $totalHomme $stats['totalHomme'];
  231.                 $totalFemme $stats['totalFemme'];
  232.                 $totalEnfant $stats['totalEnfant'];
  233.                 $totalDemande $stats['totalDemande'];
  234.                 $totalDemandeValidee $stats['totalDemandeValidee'];
  235.                 $totalDemandeRejetee $stats['totalDemandeRejetee'];
  236.                 $totalEnAttentePaiement $stats['totalEnAttentePaiement'];
  237.                 $totalEnAttenteValidation $stats['totalEnAttenteValidation'];
  238.                 $totalEnAttenteSignature $stats['totalEnAttenteSignature'];
  239.                 $totalEnAttenteImpression $stats['totalEnAttenteImpression'];
  240.                 $totalDocument $stats['totalDocument'];
  241.                 break;
  242.             //Autorité du Site
  243.             case 2:
  244.                 $totalIdentite $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  245.                     ->select('count(i.id)')
  246.                     ->where('i.registrationSite=:p1')
  247.                     ->setParameter('p1'$siteId)
  248.                     ->getQuery()
  249.                     ->getSingleScalarResult();
  250.                 $totalHomme $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  251.                     ->select('count(i.id)')
  252.                     ->where('i.registrationSite=:p1')
  253.                     ->setParameter('p1'$siteId)
  254.                     ->andWhere('i.sexe = :p2')
  255.                     ->setParameter('p2''Masculin')
  256.                     ->getQuery()
  257.                     ->getSingleScalarResult();
  258.                 $totalFemme $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  259.                     ->select('count(i.id)')
  260.                     ->where('i.registrationSite=:p1')
  261.                     ->setParameter('p1'$siteId)
  262.                     ->andWhere('i.sexe = :p2')
  263.                     ->setParameter('p2''Feminin')
  264.                     ->getQuery()
  265.                     ->getSingleScalarResult();
  266.                 $totalEnfant $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  267.                     ->select('count(i.id)')
  268.                     ->where('(YEAR(current_date()) - YEAR(i.birthDate)) < 18')
  269.                     ->andWhere('i.registrationSite=:p1')
  270.                     ->setParameter('p1'$siteId)
  271.                     ->getQuery()
  272.                     ->getSingleScalarResult();
  273.                 $totalDemande $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  274.                     ->select('count(f.id)')
  275.                     ->where('f.site=:p1')
  276.                     ->setParameter('p1'$siteId)
  277.                     ->getQuery()
  278.                     ->getSingleScalarResult();
  279.                 $totalDemandeValidee $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  280.                     ->select('count(f.id)')
  281.                     ->where('f.site=:p1')
  282.                     ->setParameter('p1'$siteId)
  283.                     ->andWhere('f.status=4')
  284.                     ->getQuery()
  285.                     ->getSingleScalarResult();
  286.                 $totalDemandeRejetee $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  287.                     ->select('count(f.id)')
  288.                     ->where('f.site=:p1')
  289.                     ->setParameter('p1'$siteId)
  290.                     ->andWhere('f.status=3')
  291.                     ->getQuery()
  292.                     ->getSingleScalarResult();
  293.                 $totalEnAttentePaiement $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  294.                     ->select('count(f.id)')
  295.                     ->where('f.site=:p1')
  296.                     ->setParameter('p1'$siteId)
  297.                     ->andWhere('f.status=1')
  298.                     ->getQuery()
  299.                     ->getSingleScalarResult();
  300.                 $totalEnAttenteValidation $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  301.                     ->select('count(f.id)')
  302.                     ->where('f.site=:p1')
  303.                     ->setParameter('p1'$siteId)
  304.                     ->andWhere('f.status=2')
  305.                     ->getQuery()
  306.                     ->getSingleScalarResult();
  307.                 $totalEnAttenteSignature $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  308.                     ->select('count(f.id)')
  309.                     ->where('f.site=:p1')
  310.                     ->setParameter('p1'$siteId)
  311.                     ->andWhere('f.status=4')
  312.                     ->getQuery()
  313.                     ->getSingleScalarResult();
  314.                 $totalEnAttenteImpression $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  315.                     ->select('count(f.id)')
  316.                     ->where('f.site=:p1')
  317.                     ->setParameter('p1'$siteId)
  318.                     ->andWhere('f.status=5')
  319.                     ->getQuery()
  320.                     ->getSingleScalarResult();
  321.                 // $documentFolderSubquery = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  322.                 //     ->select('f.id')
  323.                 //     ->where('f.site = :p1')
  324.                 //     ->setParameter('p1', $siteId)
  325.                 //     ->getDQL();
  326.                 // $documentQuery = $this->managerRegistry->getRepository(Document::class)->createQueryBuilder('d');
  327.                 // $totalDocument = $documentQuery->select('count(d.id)')
  328.                 // ->from('')
  329.                 //     ->where($documentQuery->expr()->in('d.folder', $documentFolderSubquery))
  330.                 //     ->getQuery()
  331.                 //     ->getSingleScalarResult();
  332.                 $query $this->managerRegistry->getManager()->createQuery("SELECT count(d.id) FROM App\Entity\Document d
  333.                                                  WHERE d.folder in 
  334.                                                 (SELECT f.id FROM App\Entity\Folder f 
  335.                                                 WHERE f.site =" $siteId ")");
  336.                 break;
  337.             //OPS
  338.             case 3:
  339.                 $totalIdentite $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  340.                     ->select('count(i.id)')
  341.                     ->where('i.registrationSite=:p1')
  342.                     ->setParameter('p1'$siteId)
  343.                     ->andwhere('i.userCreate=:p2')
  344.                     ->setParameter('p2'$currentUser)
  345.                     ->getQuery()
  346.                     ->getSingleScalarResult();
  347.                 $totalHomme $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  348.                     ->select('count(i.id)')
  349.                     ->where('i.registrationSite=:p1')
  350.                     ->setParameter('p1'$siteId)
  351.                     ->andWhere('i.sexe = :p2')
  352.                     ->setParameter('p2''Masculin')
  353.                     ->andwhere('i.userCreate=:p3')
  354.                     ->setParameter('p3'$currentUser)
  355.                     ->getQuery()
  356.                     ->getSingleScalarResult();
  357.                 $totalFemme $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  358.                     ->select('count(i.id)')
  359.                     ->where('i.registrationSite=:site')
  360.                     ->setParameter('site'$siteId)
  361.                     ->andWhere('i.sexe = :p1')
  362.                     ->setParameter('p1''Feminin')
  363.                     ->andwhere('i.userCreate=:p2')
  364.                     ->setParameter('p2'$currentUser)
  365.                     ->getQuery()
  366.                     ->getSingleScalarResult();
  367.                 $totalEnfant $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  368.                     ->select('count(i.id)')
  369.                     ->where('(YEAR(current_date()) - YEAR(i.birthDate)) < 18')
  370.                     ->andWhere('i.registrationSite=:site')
  371.                     ->setParameter('site'$siteId)
  372.                     ->andwhere('i.userCreate=:user')
  373.                     ->setParameter('user'$currentUser)
  374.                     ->getQuery()
  375.                     ->getSingleScalarResult();
  376.                 $totalDemande $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  377.                     ->select('count(f.id)')
  378.                     ->where('f.site=:p1')
  379.                     ->setParameter('p1'$siteId)
  380.                     ->andwhere('f.userCreate=:user')
  381.                     ->setParameter('user'$currentUser)
  382.                     ->getQuery()
  383.                     ->getSingleScalarResult();
  384.                 $totalDemandeValidee $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  385.                     ->select('count(f.id)')
  386.                     ->where('f.site=:p1')
  387.                     ->setParameter('p1'$siteId)
  388.                     ->andwhere('f.userCreate=:user')
  389.                     ->setParameter('user'$currentUser)
  390.                     ->andwhere('f.status=4')
  391.                     ->getQuery()
  392.                     ->getSingleScalarResult();
  393.                 $totalDemandeRejetee $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  394.                     ->select('count(f.id)')
  395.                     ->where('f.site=:p1')
  396.                     ->setParameter('p1'$siteId)
  397.                     ->andwhere('f.userCreate=:user')
  398.                     ->setParameter('user'$currentUser)
  399.                     ->andwhere('f.status=3')
  400.                     ->getQuery()
  401.                     ->getSingleScalarResult();
  402.                 $totalEnAttentePaiement $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  403.                     ->select('count(f.id)')
  404.                     ->where('f.site=:p1')
  405.                     ->setParameter('p1'$siteId)
  406.                     ->andwhere('f.userCreate=:user')
  407.                     ->setParameter('user'$currentUser)
  408.                     ->andWhere('f.status=1')
  409.                     ->getQuery()
  410.                     ->getSingleScalarResult();
  411.                 $totalEnAttenteValidation $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  412.                     ->select('count(f.id)')
  413.                     ->where('f.site=:p1')
  414.                     ->setParameter('p1'$siteId)
  415.                     ->andwhere('f.userCreate=:user')
  416.                     ->setParameter('user'$currentUser)
  417.                     ->andWhere('f.status=2')
  418.                     ->getQuery()
  419.                     ->getSingleScalarResult();
  420.                 $totalEnAttenteSignature $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  421.                     ->select('count(f.id)')
  422.                     ->where('f.site=:p1')
  423.                     ->setParameter('p1'$siteId)
  424.                     ->andwhere('f.userCreate=:user')
  425.                     ->setParameter('user'$currentUser)
  426.                     ->andWhere('f.status=4')
  427.                     ->getQuery()
  428.                     ->getSingleScalarResult();
  429.                 $totalEnAttenteImpression $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  430.                     ->select('count(f.id)')
  431.                     ->where('f.site=:p1')
  432.                     ->setParameter('p1'$siteId)
  433.                     ->andWhere('f.status=5')
  434.                     ->getQuery()
  435.                     ->getSingleScalarResult();
  436.                 // $documentFolderSubquery = $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  437.                 //     ->select('f.id')
  438.                 //     ->where('f.site = :p1')
  439.                 //     ->setParameter('p1', $siteId)
  440.                 //     ->getDQL();
  441.                 // $documentQuery = $this->managerRegistry->getRepository(Document::class)->createQueryBuilder('d');
  442.                 // $totalDocument = $documentQuery->select('count(d.id)')
  443.                 //     ->where($documentQuery->expr()->in('d.folder', $documentFolderSubquery))
  444.                 //     ->andwhere('d.userCreate=:user')
  445.                 //     ->setParameter('user', $currentUser)
  446.                 //     ->getQuery()
  447.                 //     ->getSingleScalarResult();
  448.                 $query $this->managerRegistry->getManager()->createQuery("SELECT count(d.id) FROM App\Entity\Document d
  449.                                                  WHERE d.userCreate=" $currentUser->getId() . " AND d.folder in 
  450.                                                 (SELECT f.id FROM App\Entity\Folder f 
  451.                                                 WHERE f.site =" $siteId ")");
  452.                 $totalDocument $query->getSingleScalarResult();
  453.                 break;
  454.             // Internaute
  455.             case 4:
  456.                 $totalIdentite $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  457.                     ->select('count(i.id)')
  458.                     ->where('i.registrationSite=:p1')
  459.                     ->setParameter('p1'$siteId)
  460.                     ->andwhere('i.userCreate=:p2')
  461.                     ->setParameter('p2'$currentUser)
  462.                     ->getQuery()
  463.                     ->getSingleScalarResult();
  464.                 $totalHomme $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  465.                     ->select('count(i.id)')
  466.                     ->where('i.registrationSite=:p1')
  467.                     ->setParameter('p1'$siteId)
  468.                     ->andWhere('i.sexe = :p2')
  469.                     ->setParameter('p2''Masculin')
  470.                     ->andwhere('i.userCreate=:p3')
  471.                     ->setParameter('p3'$currentUser)
  472.                     ->getQuery()
  473.                     ->getSingleScalarResult();
  474.                 $totalFemme $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  475.                     ->select('count(i.id)')
  476.                     ->where('i.registrationSite=:p1')
  477.                     ->setParameter('p1'$siteId)
  478.                     ->andWhere('i.sexe = :p2')
  479.                     ->setParameter('p2''Feminin')
  480.                     ->andwhere('i.userCreate=:p3')
  481.                     ->setParameter('p3'$currentUser)
  482.                     ->getQuery()
  483.                     ->getSingleScalarResult();
  484.                 $totalEnfant $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  485.                     ->select('count(i.id)')
  486.                     ->where('(YEAR(current_date()) - YEAR(i.birthDate)) < 18')
  487.                     ->andWhere('i.registrationSite=:site')
  488.                     ->setParameter('site'$siteId)
  489.                     ->andwhere('i.userCreate=:user')
  490.                     ->setParameter('user'$currentUser)
  491.                     ->getQuery()
  492.                     ->getSingleScalarResult();
  493.                 $totalDemande $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  494.                     ->select('count(f.id)')
  495.                     ->where('f.site=:p1')
  496.                     ->setParameter('p1'$siteId)
  497.                     ->andwhere('f.userCreate=:user')
  498.                     ->setParameter('user'$currentUser)
  499.                     ->getQuery()
  500.                     ->getSingleScalarResult();
  501.                 $totalDemandeValidee $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  502.                     ->select('count(f.id)')
  503.                     ->where('f.site=:p1')
  504.                     ->setParameter('p1'$siteId)
  505.                     ->andwhere('f.userCreate=:user')
  506.                     ->setParameter('user'$currentUser)
  507.                     ->andWhere('f.status=4')
  508.                     ->getQuery()
  509.                     ->getSingleScalarResult();
  510.                 $totalDemandeRejetee $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  511.                     ->select('count(f.id)')
  512.                     ->where('f.site=:p1')
  513.                     ->setParameter('p1'$siteId)
  514.                     ->andwhere('f.userCreate=:user')
  515.                     ->setParameter('user'$currentUser)
  516.                     ->andWhere('f.status=3')
  517.                     ->getQuery()
  518.                     ->getSingleScalarResult();
  519.                 $totalEnAttentePaiement $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  520.                     ->select('count(f.id)')
  521.                     ->where('f.site=:p1')
  522.                     ->setParameter('p1'$siteId)
  523.                     ->andwhere('f.userCreate=:user')
  524.                     ->setParameter('user'$currentUser)
  525.                     ->andWhere('f.status=1')
  526.                     ->getQuery()
  527.                     ->getSingleScalarResult();
  528.                 $totalEnAttenteValidation $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  529.                     ->select('count(f.id)')
  530.                     ->where('f.site=:p1')
  531.                     ->setParameter('p1'$siteId)
  532.                     ->andwhere('f.userCreate=:user')
  533.                     ->setParameter('user'$currentUser)
  534.                     ->andWhere('f.status=2')
  535.                     ->getQuery()
  536.                     ->getSingleScalarResult();
  537.                 $totalEnAttenteSignature $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  538.                     ->select('count(f.id)')
  539.                     ->where('f.site=:p1')
  540.                     ->setParameter('p1'$siteId)
  541.                     ->andwhere('f.userCreate=:user')
  542.                     ->setParameter('user'$currentUser)
  543.                     ->andWhere('f.status=4')
  544.                     ->getQuery()
  545.                     ->getSingleScalarResult();
  546.                 $totalEnAttenteImpression $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  547.                     ->select('count(f.id)')
  548.                     ->where('f.site=:p1')
  549.                     ->setParameter('p1'$siteId)
  550.                     ->andwhere('f.userCreate=:user')
  551.                     ->setParameter('user'$currentUser)
  552.                     ->andWhere('f.status=5')
  553.                     ->getQuery()
  554.                     ->getSingleScalarResult();
  555.                 $query $this->managerRegistry->getManager()->createQuery("SELECT count(d.id) FROM App\Entity\Document d WHERE d.folder in  
  556.                                                 (SELECT f.id FROM App\Entity\Folder f WHERE f.site =" $siteId 
  557.                                                  AND f.userCreate=" $currentUser->getId() . ")");
  558.                 break;
  559.             //Validateur
  560.             case 5:
  561.                 $totalIdentite $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  562.                     ->select('count(i.id)')
  563.                     ->where('i.registrationSite=:p1')
  564.                     ->setParameter('p1'$siteId)
  565.                     ->getQuery()
  566.                     ->getSingleScalarResult();
  567.                 $totalHomme $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  568.                     ->select('count(i.id)')
  569.                     ->where('i.registrationSite=:p1')
  570.                     ->setParameter('p1'$siteId)
  571.                     ->andWhere('i.sexe = :p2')
  572.                     ->setParameter('p2''Masculin')
  573.                     ->getQuery()
  574.                     ->getSingleScalarResult();
  575.                 $totalFemme $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  576.                     ->select('count(i.id)')
  577.                     ->where('i.registrationSite=:p1')
  578.                     ->setParameter('p1'$siteId)
  579.                     ->andWhere('i.sexe = :p2')
  580.                     ->setParameter('p2''Feminin')
  581.                     ->getQuery()
  582.                     ->getSingleScalarResult();
  583.                 $totalEnfant $this->managerRegistry->getRepository(Identite::class)->createQueryBuilder('i')
  584.                     ->select('count(i.id)')
  585.                     ->where('(YEAR(current_date()) - YEAR(i.birthDate)) < 18')
  586.                     ->andWhere('i.registrationSite=:site')
  587.                     ->setParameter('site'$siteId)
  588.                     ->getQuery()
  589.                     ->getSingleScalarResult();
  590.                 $totalDemande $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  591.                     ->select('count(f.id)')
  592.                     ->where('f.site=:site')
  593.                     ->setParameter('site'$siteId)
  594.                     ->getQuery()
  595.                     ->getSingleScalarResult();
  596.                 $totalDemandeValidee $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  597.                     ->select('count(f.id)')
  598.                     ->where('f.site=:site')
  599.                     ->setParameter('site'$siteId)
  600.                     ->andWhere('f.status=4')
  601.                     ->getQuery()
  602.                     ->getSingleScalarResult();
  603.                 $totalDemandeRejetee $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  604.                     ->select('count(f.id)')
  605.                     ->where('f.site=:site')
  606.                     ->setParameter('site'$siteId)
  607.                     ->andWhere('f.status=3')
  608.                     ->getQuery()
  609.                     ->getSingleScalarResult();
  610.                 $totalEnAttentePaiement $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  611.                     ->select('count(f.id)')
  612.                     ->where('f.site=:p1')
  613.                     ->setParameter('p1'$siteId)
  614.                     ->andWhere('f.status=1')
  615.                     ->getQuery()
  616.                     ->getSingleScalarResult();
  617.                 $totalEnAttenteValidation $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  618.                     ->select('count(f.id)')
  619.                     ->where('f.site=:p1')
  620.                     ->setParameter('p1'$siteId)
  621.                     ->andWhere('f.status=2')
  622.                     ->getQuery()
  623.                     ->getSingleScalarResult();
  624.                 $totalEnAttenteSignature $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  625.                     ->select('count(f.id)')
  626.                     ->where('f.site=:p1')
  627.                     ->setParameter('p1'$siteId)
  628.                     ->andWhere('f.status=4')
  629.                     ->getQuery()
  630.                     ->getSingleScalarResult();
  631.                 $totalEnAttenteImpression $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  632.                     ->select('count(f.id)')
  633.                     ->where('f.site=:p1')
  634.                     ->setParameter('p1'$siteId)
  635.                     ->andWhere('f.status=5')
  636.                     ->getQuery()
  637.                     ->getSingleScalarResult();
  638.                 $query $this->managerRegistry->getManager()->createQuery("SELECT count(d.id) FROM App\Entity\Document d
  639.                                                  WHERE d.folder in 
  640.                                                 (SELECT f.id FROM App\Entity\Folder f 
  641.                                                 WHERE f.site =" $siteId ")");
  642.                 break;
  643.         }
  644.         $this->logger->info('>>>>>>>>>', ["-----------------------COUNT DOCUMENT-------------------------"]);
  645.         $this->logger->info('Nombre de document', [$totalDocument]);
  646.         return $this->render('master/workspace.html.twig', [
  647.             'totalIdentite' => $totalIdentite,
  648.             'totalHomme' => $totalHomme,
  649.             'totalFemme' => $totalFemme,
  650.             'totalEnfant' => $totalEnfant,
  651.             'totalDemande' => $totalDemande,
  652.             'totalDocument' => $totalDocument,
  653.             'totalDemandeValidee' => $totalDemandeValidee,
  654.             'totalDemandeRejetee' => $totalDemandeRejetee,
  655.             'totalEnAttentePaiement' => $totalEnAttentePaiement,
  656.             'totalEnAttenteValidation' => $totalEnAttenteValidation,
  657.             'totalEnAttenteSignature' => $totalEnAttenteSignature,
  658.             'totalEnAttenteImpression' => $totalEnAttenteImpression,
  659.         ]);
  660.     }
  661.     public function workspaceSurfer()
  662.     {
  663.         $em $this->managerRegistry;
  664.         $drafRequest 0;
  665.         $signedRequest 0;
  666.         $rejectedRequest 0;
  667.         $awaitingValidationRequest 0;
  668.         $awaitingSignatureRequest 0;
  669.         $drafRequest $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  670.             ->select('count(f.id)')
  671.             ->where('f.userCreate =:p1')
  672.             ->setParameter('p1'$this->getUser())
  673.             ->andWhere('f.status = :p2')
  674.             ->setParameter('p2'1)
  675.             ->getQuery()
  676.             ->getSingleScalarResult();
  677.         $awaitingValidationRequest $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  678.             ->select('count(f.id)')
  679.             ->where('f.userCreate =:p1')
  680.             ->setParameter('p1'$this->getUser())
  681.             ->andWhere('f.status = :p2')
  682.             ->setParameter('p2'2)
  683.             ->getQuery()
  684.             ->getSingleScalarResult();
  685.         $awaitingSignatureRequest $this->managerRegistry->getRepository(Folder::class)->createQueryBuilder('f')
  686.             ->select('count(f.id)')
  687.             ->where('f.userCreate =:p1')
  688.             ->setParameter('p1'$this->getUser())
  689.             ->andWhere('f.status = :p2')
  690.             ->setParameter('p2'4)
  691.             ->getQuery()
  692.             ->getSingleScalarResult();
  693.         $folders $this->managerRegistry->getRepository(Folder::class)->findBy([
  694.             'userCreate' => $this->getUser(),
  695.             'isDeleted' => false,
  696.         ]);
  697.         return $this->render('master/workspace_surfer.html.twig', [
  698.             'drafRequest' => $drafRequest,
  699.             'awaitingSignatureRequest' => $awaitingSignatureRequest,
  700.             'awaitingValidationRequest' => $awaitingValidationRequest,
  701.             'rejectedRequest' => $rejectedRequest,
  702.             'signedRequest' => $signedRequest,
  703.             'folders' => $folders,
  704.         ]);
  705.     }
  706.     public function dashboardUser(Request $request)
  707.     {
  708.         if ($this->getUser()->getUserType() == 2) {
  709.             return $this->render('master/dashboard_agent.html.twig', [
  710.                 // 'depositSlips'=> $depositSlips,
  711.             ]);
  712.         } else {
  713.         }
  714.     }
  715.     public function initiateRequest(Request $request)
  716.     {
  717.         $connectedUser $this->managerRegistry->getRepository(Users::class)->findOneBy([
  718.             'id' => $this->getUser()->getId(),
  719.         ]);
  720.         if (!$connectedUser->getStatus()) {
  721.             return $this->redirect('/logout');
  722.         }
  723.         if ($this->getUser()->getUserType() == 3) {
  724.             //Type user Agent
  725.             $form $this->createForm(InitiateRequestType::class, array('site_id' => $connectedUser->getSite()->getId()));
  726.             $form->handleRequest($request);
  727.             if ($form->isSubmitted() && $form->isValid()) {
  728.                 $criters $form->getData();
  729.                 if (!is_null($criters['documentId'])) {
  730.                     $documentId $criters['documentId'];
  731.                     $site $this->getUser()->getSite();
  732.                     $documentCategory $this->managerRegistry->getRepository(DocumentCategory::class)->findOneBy([
  733.                         'id' => $documentId,
  734.                         'isDeleted' => false,
  735.                     ]);
  736.                     if (is_null($documentCategory)) {
  737.                         $this->addFlash(
  738.                             'document_category_not_config',
  739.                             "Document non trouvé, impossible de continuer"
  740.                         );
  741.                     }
  742.                     $documentNumber $documentCategory->getNumber();
  743.                     if (is_null($documentNumber) || $documentNumber === '') {
  744.                         $this->addFlash(
  745.                             'document_category_not_config',
  746.                             "Désolé, le document sélectionné n'est pas encore activé"
  747.                         );
  748.                     }
  749.                     if (is_null($site)) {
  750.                         $this->addFlash(
  751.                             'document_category_not_config',
  752.                             "Site non trouvé, impossible de continuer"
  753.                         );
  754.                     }
  755.                     return $this->redirectToRoute('app_core_application_form', [
  756.                         'id' => $documentId,
  757.                         'site_id' => $site->getId()
  758.                     ]);
  759.                 }
  760.             }
  761.             return $this->render('master/initiate_request.html.twig', [
  762.                 // 'depositSlips'=> $depositSlips,
  763.                 'form' => $form->createView()
  764.             ]);
  765.         } else {
  766.             $form $this->createForm(InitiateRequestSurferType::class);
  767.             $form->handleRequest($request);
  768.             if ($form->isSubmitted() && $form->isValid()) {
  769.                 $criters $form->getData();
  770.                 if (!is_null($criters['documentId'])) {
  771.                     $documentId $criters['documentId'];
  772.                     $site $criters['site'];
  773.                     $documentCategory $this->managerRegistry->getRepository(DocumentCategory::class)->findOneBy([
  774.                         'id' => $documentId,
  775.                         'isDeleted' => false,
  776.                     ]);
  777.                     if (is_null($documentCategory)) {
  778.                         $this->addFlash(
  779.                             'document_category_not_config',
  780.                             "Document non trouvé, impossible de continuer"
  781.                         );
  782.                     }
  783.                     if (is_null($site)) {
  784.                         $this->addFlash(
  785.                             'document_category_not_config',
  786.                             "Site non trouvé, impossible de continuer"
  787.                         );
  788.                     }
  789.                     $documentNumber $documentCategory->getNumber();
  790.                     if (is_null($documentNumber) || $documentNumber === '') {
  791.                         $this->addFlash(
  792.                             'document_category_not_config',
  793.                             "Désolé, le document sélectionné n'est pas encore activé"
  794.                         );
  795.                     }
  796.                     return $this->redirectToRoute('app_core_application_form', [
  797.                         'id' => $documentId,
  798.                         'site_id' => $site->getId()
  799.                     ]);
  800.                 }
  801.             }
  802.             return $this->render('master/initiate_request_surfer.html.twig', [
  803.                 // 'depositSlips'=> $depositSlips,
  804.                 'form' => $form->createView()
  805.             ]);
  806.         }
  807.     }
  808. }