src/Controller/Bo/DashboardController.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Bo;
  3. use App\Entity\Authorization;
  4. use App\Manager\Visit\VisitManager;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\JsonResponse;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Component\Security\Core\Security;
  11. class DashboardController extends AbstractController
  12. {
  13.     public function __construct(
  14.         private Security $security,
  15.         private VisitManager $visitManager
  16.     )
  17.     {
  18.     }
  19.     #[Route('/'name'bo_dashboard')]
  20.     public function index(): Response
  21.     {
  22.         return $this->render('bo/dashboard/index.html.twig', [
  23.         ]);
  24.     }
  25.     #[Route('/dashboard-visit'name'bo_dashboard_visit')]
  26.     public function dashBoardVisits(): JsonResponse
  27.     {
  28.         if (!$this->security->isGranted(Authorization::ROLE_VISIT_MANAGER)) {
  29.             throw new AccessDeniedHttpException();
  30.         }
  31.         $data = [];
  32.         $data['all'] = $this->visitManager->countAllVisits();
  33.         $data['toFinish'] = $this->visitManager->countVisitsToFinish();
  34.         $data['toArchive'] = $this->visitManager->countVisitsToArchive();
  35.         $data['archived'] = $this->visitManager->countVisitsArchived();
  36.         $resultsStatesThisMonth $this->visitManager->countStatesThisMonth();
  37.         $expectedStatuses = ['todo''start''draft''terminate''archived'];
  38.         $labels = [
  39.             'todo' => 'À faire',
  40.             'start' => 'En cours',
  41.             'draft' => 'Brouillon',
  42.             'terminate' => 'Terminé',
  43.             'archived' => 'Archivé',
  44.         ];
  45.         $visitsByStatus array_fill_keys($expectedStatuses0);
  46.         foreach ($resultsStatesThisMonth as $row) {
  47.             $visitsByStatus[$row['state']] = $row['count'];
  48.         }
  49.         $data['statesThisMonth']['labels'] = array_map(fn($s) => $labels[$s], $expectedStatuses);
  50.         $data['statesThisMonth']['data'] = array_values($visitsByStatus);
  51.         $data['countBeginPerMonth'] = $this->visitManager->countBeginPerMonth();
  52.         return new JsonResponse($data);
  53.     }
  54. }