src/Controller/DashboardController.php line 32

  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\CommunesRepository;
  4. use App\Repository\DemandeExportateurRepository;
  5. use App\Repository\DemandeExporterProduitRepository;
  6. use App\Repository\DemandeInspectionRepository;
  7. use App\Repository\DepartementsRepository;
  8. use App\Repository\EvaluationRepository;
  9. use App\Repository\InspectionRepository;
  10. use App\Repository\RegionsRepository;
  11. use App\Repository\UserRepository;
  12. use Doctrine\Persistence\ManagerRegistry;
  13. use Scienta\DoctrineJsonFunctions\Query\AST\Functions\Mysql\JsonRemove;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  17. use Symfony\Component\HttpFoundation\JsonResponse;
  18. use Symfony\Component\Routing\Annotation\Route;
  19. class DashboardController extends AbstractController
  20. {
  21.     public function __construct(ManagerRegistry $registry)
  22.     {
  23.         $this->conn $registry->getManager()->getConnection();
  24.     }
  25.     #[Route('/'name'index')]
  26.     #[IsGranted('ROLE_USER')]
  27.     public function index(): Response
  28.     {
  29.         if (in_array('ROLE_ADMIN'$this->getUser()->getRoles())) {
  30.             return $this->redirectToRoute('app_users');
  31.         } else if (in_array('ROLE_DPV'$this->getUser()->getRoles())) {
  32.             return $this->redirectToRoute('dashboard_dpv');
  33.         } else {
  34.             return $this->redirectToRoute('app_market_stats');
  35.         }
  36.         // return $this->render('dashboard/index.html.twig', [
  37.         //     'controller_name' => 'DashboardController',
  38.         // ]);
  39.     }
  40.     #[Route('dpv/dashboard'name'dashboard_dpv')]
  41.     #[IsGranted('ROLE_USER')]
  42.     public function dashboard_dpv(
  43.         RegionsRepository $repoReg,
  44.         DemandeExportateurRepository $repoDExport,
  45.         DemandeExporterProduitRepository $repoExpoertProd,
  46.         DemandeInspectionRepository $demandeInsRepo,
  47.         InspectionRepository $repoInspect,
  48.         EvaluationRepository $repoEval,
  49.         UserRepository $utilisateursRepo,
  50.     ) {
  51.         $demandeExportateurEnAttente count($repoDExport->findBy(['isValid' => FALSE]));
  52.         $demandeExporterProdEnAttente count($repoExpoertProd->findBy(['isOk' => FALSE'etat_demande' => '0']));
  53.         $demandeInspectionEnAttente count($demandeInsRepo->findBy(['isScheduled' => FALSE]));
  54.         $demandeExportateur count($repoDExport->findAll());
  55.         $demandeExporterProd count($repoExpoertProd->findAll());
  56.         $inspections count($repoInspect->findAll());
  57.         $evaluations count($repoEval->findAll());
  58.         return $this->render('dashboard/dpv.html.twig', [
  59.             'regions' => $repoReg->findBy([], ['code' => 'ASC']),
  60.             'demandeExportateurEnAttente' => $demandeExportateurEnAttente,
  61.             'demandeExporterProdEnAttente' => $demandeExporterProdEnAttente,
  62.             'demandeInspectionEnAttente' => $demandeInspectionEnAttente,
  63.             'inspections' => $inspections,
  64.             'evaluations' => $evaluations,
  65.             'producteurs' => count($utilisateursRepo->findUsersByRoleIn('ROLE_PRODUCTEUR')),
  66.             'exportateurs' => count($utilisateursRepo->findUsersByRoleIn('ROLE_EXPORTATEUR')),
  67.             'demandeExportateur' => $demandeExportateur,
  68.             'demandeExporterProd' => $demandeExporterProd,
  69.         ]);
  70.     }
  71.     #[Route('dpv/calendrier'name'planning_calendar')]
  72.     #[IsGranted('ROLE_USER')]
  73.     public function calendrier_dpv()
  74.     {
  75.         return $this->render('dashboard/calendrier_dpv.html.twig', []);
  76.     }
  77.     #[Route('/reports_dash'name'reports_dashboard'options: ['expose' => true])]
  78.     #[IsGranted('ROLE_USER')]
  79.     public function stats_rep(UserRepository $repo): Response
  80.     {
  81.         $connectedUser $repo->findOneBy(['id' => $this->getUser()]);
  82.         return $this->render('dashboard/stats.html.twig', [
  83.             'connected' => $connectedUser
  84.         ]);
  85.     }
  86.     /**
  87.      * @Route("/getStat/{codArea}", name="getStats",methods={"GET"},options={"expose"=true})
  88.      * @IsGranted("ROLE_USER")
  89.      *
  90.     */
  91.     public function JsonStats(UserRepository $repo$codArea)
  92.     {
  93.         $isSupAdmin FALSE;
  94.         if($this->isGranted("ROLE_ADMIN")){
  95.             $isSupAdmin TRUE;   
  96.         }
  97.         $connectedUser $repo->findOneBy(['id' => $this->getUser()]);
  98.         $code_prod $connectedUser->getCode();
  99.         if ($codArea == 'all' && !$isSupAdmin) {
  100.             $requete "
  101.             SELECT COALESCE(rec.prod_nbr_unit, 0) AS units,
  102.             COALESCE(rec.prod_nbr_active_unit) AS units_exp
  103.             FROM \"producteur_cases\" cas JOIN \"producteur_level-1\" lev ON cas.id = lev.\"case-id\"
  104.             JOIN \"producteur_prod_var_cal_rec\" rec ON lev.\"level-1-id\" = rec.\"level-1-id\"
  105.             WHERE cas.deleted = 0 AND lev.prod_id = '".$code_prod."'
  106.             ";
  107.             $requeteRep "
  108.             SELECT COALESCE(COUNT(verg.*), 0) AS vergers,
  109.             COALESCE(SUM(CASE WHEN verg.unit_verger_exploite = 1 THEN 1 ELSE 0 END), 0) AS vergers_exp
  110.             FROM \"unite_cases\" cas JOIN \"unite_level-1\" lev ON cas.id = lev.\"case-id\"
  111.             JOIN \"unite_unit_verger\" verg ON lev.\"level-1-id\" = verg.\"level-1-id\"
  112.             JOIN \"unite_unit_identificatio_reci\" ident ON verg.\"level-1-id\" = ident.\"level-1-id\"
  113.             WHERE cas.deleted = 0 AND lev.unit_prod_id = '".$code_prod."' 
  114.             ";
  115.             $requeteParc "
  116.             SELECT COALESCE(COUNT(parc.*), 0) AS parcels,
  117.             COALESCE(SUM(CASE WHEN parc.unit_is_exploited = 1 THEN 1 ELSE 0 END), 0) AS parcels_exp
  118.             FROM \"unite_cases\" cas JOIN \"unite_level-1\" lev ON cas.id = lev.\"case-id\"
  119.             JOIN \"unite_unit_parcelle\" parc ON lev.\"level-1-id\" = parc.\"level-1-id\"
  120.             JOIN \"unite_unit_identificatio_reci\" ident ON parc.\"level-1-id\" = ident.\"level-1-id\"
  121.             WHERE cas.deleted = 0 AND lev.unit_prod_id = '".$code_prod."'
  122.             
  123.             ";
  124.         } else if($codArea == 'all' && $isSupAdmin){
  125.             // var_dump('ICI'); die;
  126.             $requete "
  127.             SELECT COALESCE(rec.prod_nbr_unit, 0) AS units,
  128.             COALESCE(rec.prod_nbr_active_unit) AS units_exp
  129.             FROM \"producteur_cases\" cas JOIN \"producteur_level-1\" lev ON cas.id = lev.\"case-id\"
  130.             JOIN \"producteur_prod_var_cal_rec\" rec ON lev.\"level-1-id\" = rec.\"level-1-id\"
  131.             WHERE cas.deleted = 0
  132.             ";
  133.             $requeteRep "
  134.             SELECT COALESCE(COUNT(verg.*), 0) AS vergers,
  135.             COALESCE(SUM(CASE WHEN verg.unit_verger_exploite = 1 THEN 1 ELSE 0 END), 0) AS vergers_exp
  136.             FROM \"unite_cases\" cas JOIN \"unite_level-1\" lev ON cas.id = lev.\"case-id\"
  137.             JOIN \"unite_unit_verger\" verg ON lev.\"level-1-id\" = verg.\"level-1-id\"
  138.             JOIN \"unite_unit_identificatio_reci\" ident ON verg.\"level-1-id\" = ident.\"level-1-id\"
  139.             WHERE cas.deleted = 0
  140.             ";
  141.             $requeteParc "
  142.             SELECT COALESCE(COUNT(parc.*), 0) AS parcels,
  143.             COALESCE(SUM(CASE WHEN parc.unit_is_exploited = 1 THEN 1 ELSE 0 END), 0) AS parcels_exp
  144.             FROM \"unite_cases\" cas JOIN \"unite_level-1\" lev ON cas.id = lev.\"case-id\"
  145.             JOIN \"unite_unit_parcelle\" parc ON lev.\"level-1-id\" = parc.\"level-1-id\"
  146.             JOIN \"unite_unit_identificatio_reci\" ident ON parc.\"level-1-id\" = ident.\"level-1-id\"
  147.             WHERE cas.deleted = 0
  148.             ";
  149.         } else {
  150.             $requete 
  151.             SELECT COALESCE(rec.prod_nbr_unit, 0) AS units,
  152.             COALESCE(rec.prod_nbr_active_unit) AS units_exp
  153.             FROM \"producteur_cases\" cas JOIN \"producteur_level-1\" lev ON cas.id = lev.\"case-id\"
  154.             JOIN \"producteur_prod_var_cal_rec\" rec ON lev.\"level-1-id\" = rec.\"level-1-id\"
  155.             WHERE cas.deleted = 0 AND lev.prod_id = '".$code_prod."' AND inf.prod_commune = '".$codArea."'
  156.             ";
  157.             $requeteRep 
  158.             SELECT COALESCE(COUNT(verg.*), 0) AS vergers,
  159.             COALESCE(SUM(CASE WHEN verg.unit_verger_exploite = 1 THEN 1 ELSE 0 END), 0) AS vergers_exp
  160.             FROM \"unite_cases\" cas JOIN \"unite_level-1\" lev ON cas.id = lev.\"case-id\"
  161.             JOIN \"unite_unit_verger\" verg ON lev.\"level-1-id\" = verg.\"level-1-id\"
  162.             JOIN \"unite_unit_identificatio_reci\" ident ON verg.\"level-1-id\" = ident.\"level-1-id\"
  163.             WHERE cas.deleted = 0 AND lev.unit_prod_id = '".$code_prod."' AND ident.unit_commune = '".$codArea."'
  164.             ";
  165.             $requeteParc "
  166.             SELECT COALESCE(COUNT(parc.*), 0) AS parcels,
  167.             COALESCE(SUM(CASE WHEN parc.unit_is_exploited = 1 THEN 1 ELSE 0 END), 0) AS parcels_exp
  168.             FROM \"unite_cases\" cas JOIN \"unite_level-1\" lev ON cas.id = lev.\"case-id\"
  169.             JOIN \"unite_unit_parcelle\" parc ON lev.\"level-1-id\" = parc.\"level-1-id\"
  170.             JOIN \"unite_unit_identificatio_reci\" ident ON parc.\"level-1-id\" = ident.\"level-1-id\"
  171.             WHERE cas.deleted = 0 AND lev.unit_prod_id = '".$code_prod."' AND ident.unit_commune = '".$codArea."'
  172.             ";
  173.         }
  174.         $stmt $this->conn->fetchAllAssociative($requete);
  175.         $stmtRep $this->conn->fetchAllAssociative($requeteRep);
  176.         $stmtParc $this->conn->fetchAllAssociative($requeteParc);
  177.         $units 0;
  178.         $units_exp 0;
  179.         $vergers 0;
  180.         $vergers_exp 0;
  181.         $parcels 0;
  182.         $parcels_exp 0;
  183.         if(count($stmt) > 0){
  184.             $oneRep $stmt[0];
  185.             $units $oneRep['units'];
  186.             $units_exp $oneRep['units_exp'];
  187.         }
  188.         if(count($stmtRep) > 0){
  189.             $oneRep2 $stmtRep[0];
  190.             $vergers $oneRep2['vergers'];
  191.             $vergers_exp $oneRep2['vergers_exp'];
  192.         }
  193.         if(count($stmtParc) > 0){
  194.             $oneParcel $stmtParc[0];
  195.             $parcels $oneParcel['parcels'];
  196.             $parcels_exp $oneParcel['parcels_exp'];
  197.         }
  198.         return new JsonResponse(array(
  199.             'units' => $units'units_exp' => $units_exp
  200.             'vergers' => $vergers'vergers_exp' => $vergers_exp
  201.             'parcels' => $parcels'parcels_exp' => $parcels_exp
  202.         ));
  203.     }
  204. }