src/Controller/HomeController.php line 28

  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\CompanyRepository;
  4. use App\Repository\GasStationRepository;
  5. use App\Repository\HookRepository;
  6. use App\Repository\ModuleRepository;
  7. use App\Repository\ParameterRepository;
  8. use App\Repository\VisitRepository;
  9. use App\Repository\VoucherParamRepository;
  10. use App\Repository\WidgetRepository;
  11. use Doctrine\Persistence\ManagerRegistry;
  12. use Exception;
  13. use ReflectionException;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  18. class HomeController extends AbstractController
  19. {
  20.     /**
  21.      * @throws ReflectionException|TransportExceptionInterface
  22.      * @throws Exception
  23.      */
  24.     #[Route('/'name'app_home')]
  25.     public function index(HookRepository $hookRepositoryWidgetRepository $widgetRepositoryManagerRegistry $registryParameterRepository $parameterRepositoryGasStationRepository $gasStationRepositoryCompanyRepository $companyRepositoryVisitRepository $visitRepositoryVoucherParamRepository $voucherParamRepository): Response
  26.     {
  27.         if ($this->container->has('security.token_storage')) {
  28.             $current_user $this->getUser();
  29.             if (!$current_user) {
  30.                 return $this->redirectToRoute('app_login');
  31.             }
  32.         } else {
  33.             return $this->redirectToRoute('app_login');
  34.         }
  35.         $moduleRepo = new ModuleRepository($registry);
  36.         $header_widgets $widgetRepository->findByHook($hookRepository->findOneBy([
  37.             'alias' => 'HEADER'
  38.         ]));
  39.         $limit intval($parameterRepository->findOneByAlias([
  40.             'alias' => 'RECENT_ACTIVITIES_LIMIT'
  41.         ])->getValue());
  42.         $i 0;
  43.         $recent_activities = [];
  44.         $tendance_globale = [
  45.             'data_target' => $gasStationRepository->getCount(null),
  46.             'companies' => $companyRepository->findAll(),
  47.         ];
  48.         $ssr_score = [];
  49.         $minVoucherRate $voucherParamRepository->getMinVoucherRate();
  50.         $enelp $enelp_s $enelp_rate 0;
  51.         $reseau $reseau_s $reseau_rate 0;
  52.         foreach ($visitRepository->findAll() as $visit) {
  53.             if ($visit->getGasStation()->getCompany()->getId() == 2) {
  54.                 $enelp++;
  55.                 $foundw false;
  56.                 foreach ($visit->getObservations() as $observation) {
  57.                     if ($observation->getCarCount() > 0) {
  58.                         if (count($observation->getObservationReps()) > 0) {
  59.                             $observationRep $observation->getObservationReps()[0];
  60.                             if ($observationRep) {
  61.                                 if ((float)$observationRep->getRate() >= $minVoucherRate) {
  62.                                     $foundw true;
  63.                                 }
  64.                             }
  65.                         }
  66.                     }
  67.                 }
  68.                 if ($foundw)
  69.                     $enelp_s++;
  70.             } else {
  71.                 $reseau++;
  72.                 $foundr false;
  73.                 foreach ($visit->getObservations() as $observation) {
  74.                     if ($observation->getCarCount() > 0) {
  75.                         if (count($observation->getObservationReps()) > 0) {
  76.                             $observationRep $observation->getObservationReps()[0];
  77.                             if ($observationRep) {
  78.                                 if ((float)$observationRep->getRate() >= $minVoucherRate) {
  79.                                     $foundr true;
  80.                                 }
  81.                             }
  82.                         }
  83.                     }
  84.                 }
  85.                 if ($foundr)
  86.                     $reseau_s++;
  87.             }
  88.         }
  89.         $reseau_rate number_format((float)floatval(($reseau_s $reseau) * 100), 2'.'' ');
  90.         $enelp_rate =number_format((float)floatval(($enelp_s $enelp) * 100), 2'.'' ');
  91.         return $this->render('home/index.html.twig', [
  92.             'root_uri' => 'Accueil',
  93.             'title' => 'Tableau de bord',
  94.             'module_mod_menu' => $moduleRepo->findByParam("isModule"),
  95.             'dictionnary_mod_menu' => $moduleRepo->findByParam("isDictionnary"),
  96.             'parameter_mod_menu' => $moduleRepo->findByParam("isParameter"),
  97.             'user' => $current_user,
  98.             'user_role' => $current_user->getRole(),
  99.             'header_widgets' => $header_widgets,
  100.             'recent_activities' => $recent_activities,
  101.             'tendance_globale' => $tendance_globale,
  102.             'enelp' => $enelp,
  103.             'enelp_s' => $enelp_s,
  104.             'enelp_rate' => $enelp_rate,
  105.             'reseau' => $reseau,
  106.             'reseau_s' => $reseau_s,
  107.             'reseau_rate' => $reseau_rate,
  108.         ]);
  109.     }
  110. }