src/Controller/DefaultController.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\DBAL\Types\Booking\BookingStatus;
  4. use App\HomeModule\HomeModuleProviderInterface;
  5. use App\Repository\Notification\AlertRepository;
  6. use App\Repository\User\UserRepository;
  7. use App\Service\ChosenPeriodAnswer;
  8. use App\Voter\DashboardVoter;
  9. use Crea\SecurityBundle\Annotation\HasAccess;
  10. use DateTime;
  11. use Exception;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\JsonResponse;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. class DefaultController extends AbstractController
  18. {
  19.     /**
  20.      * @Route("/", name="dashboard")
  21.      * @HasAccess(DashboardVoter::LIST)
  22.      */
  23.     public function home(Request $requestHomeModuleProviderInterface $homeModuleProvider): Response
  24.     {
  25.         $homeModules $homeModuleProvider->getHomeModules();
  26.         if ($homeModules !== null) {
  27.             usort($homeModules, function ($a$b) {
  28.                 return $b->getPriority() <=> $a->getPriority();
  29.             });
  30.         }
  31.         return $this->render('components/home_module/view.html.twig', [
  32.             'pageTitle' => 'Accueil',
  33.             'allHomeModules' => $homeModules,
  34.             'isHome' => true
  35.         ]);
  36.     }
  37.     /**
  38.      * Affiche le tableau de bord de pilotage du manager.
  39.      *
  40.      * @Route("/manager/dashboard/{event}", name="manager_dashboard")
  41.      *
  42.      * @HasAccess("ROLE_MODULE_MANAGER")
  43.      *
  44.      * @return Response
  45.      *
  46.      * @throws Exception
  47.      */
  48.     public function managerBoardDisplay(UserRepository $userRepositoryChosenPeriodAnswer $chosenPeriodAnswerstring $event 'jour')
  49.     {
  50.         // récupère la sélection de date de début et de fin
  51.         $form $chosenPeriodAnswer->formCall();
  52.         $answer $chosenPeriodAnswer->chosenPeriodAnswerReturn($form);
  53.         // affiche le tableau du jour ou de la semaine en cours, sinon celui de la période choisie
  54.         if (null == $answer) {
  55.             $startingDate = new DateTime();
  56.             $endingDate = clone $startingDate;
  57.             if ('semaine' == $event) {
  58.                 $endingDate->modify('+ 6 day');
  59.             }
  60.         } else {
  61.             $startingDate $answer['startDate'];
  62.             $endingDate $answer['endDate'];
  63.         }
  64.         // TODO twig
  65.         return $this->render('manager/manager_dashboard.html.twig', [
  66.             'pageTitle' => 'Tableau de pilotage',
  67.             'form' => $form->createView(),
  68.             'sellers' => $userRepository->findSellerUsers(),
  69.             'sellersBookingGroupCount' => $userRepository->getSellersBookingCount($startingDate$endingDate),
  70.             'sellersMutedBookingGroupCount' => $userRepository->getSellersBookingCount($startingDate$endingDateBookingStatus::MUTE),
  71.             'sellersUndecidedBookingGroupCount' => $userRepository->getSellersBookingCount($startingDate$endingDateBookingStatus::UNDECIDED),
  72.             'sellersBookingBookingGroupCount' => $userRepository->getSellersBookingCount($startingDate$endingDateBookingStatus::PROJECT),
  73.             'sellersCabinCount' => $userRepository->getSellersCabinCount($startingDate$endingDate),
  74.         ]);
  75.     }
  76.     /**
  77.      * @Route("/dashboard/alert")
  78.      */
  79.     public function dashboardAlerts(AlertRepository $repository): Response
  80.     {
  81.         $response = new JsonResponse();
  82.         try {
  83.             $alerts $repository->findBy(['user' => $this->getUser(), 'close' => false]);
  84.         } catch (Exception $e) {
  85.             return $response->setData($e)->setStatusCode(500);
  86.         }
  87.         return $response
  88.             ->setData(count($alerts))
  89.             ->setStatusCode(200)
  90.         ;
  91.     }
  92. }