DashboardController.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\CommentaireRepository;
  4. use App\Repository\FilmRepository;
  5. use App\Repository\GenreRepository;
  6. use App\Repository\MediaVideoRepository;
  7. use App\Repository\RealisateurRepository;
  8. use App\Repository\UserRepository;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Bundle\SecurityBundle\Security;
  11. use Symfony\Component\HttpFoundation\JsonResponse;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. class DashboardController extends AbstractController
  15. {
  16. #[Route('/dashboard', name: 'app_dashboard')]
  17. public function index(FilmRepository $filmRepository, Security $security): Response
  18. {
  19. return $this->render("dashboard/index.html.twig");
  20. }
  21. #[Route('/jsdashboard', name: 'app_json_dashboard')]
  22. public function jsonDashboard(
  23. FilmRepository $filmRepository,
  24. GenreRepository $genreRepository,
  25. RealisateurRepository $realisateurRepository,
  26. MediaVideoRepository $mediaVideoRepository,
  27. CommentaireRepository $commentaireRepository,
  28. UserRepository $userRepository,
  29. Security $security
  30. ) : JsonResponse
  31. {
  32. /** @var \App\Entity\User $user */
  33. $user = $security->getUser();
  34. $userId = $user->getId();
  35. $nbComsAll = $commentaireRepository->count([]);
  36. $nbComsUser = $commentaireRepository->nbComsByUser($userId);
  37. $nbFilmsAll = $filmRepository->count([]);
  38. $nbFilmsSeenByUser = $filmRepository->nbFilmSeenBy($userId);
  39. $nbFilmsToSeeByUser = $filmRepository->nbFilmToSeeBy($userId);
  40. $nbGenres = $genreRepository->count([]);
  41. $nbrealisateurs = $realisateurRepository->count([]);
  42. $nbUsers = $userRepository->count([]);
  43. $nbMediaVideos = $mediaVideoRepository->count([]);
  44. $tableau = [
  45. 'commentaires' => [
  46. 'all' => $nbComsAll,
  47. 'user' => $nbComsUser
  48. ],
  49. 'films' => [
  50. 'all' => $nbFilmsAll,
  51. 'seen-by-user' => $nbFilmsSeenByUser,
  52. 'to-see-by-user' => $nbFilmsToSeeByUser
  53. ],
  54. 'genres' => $nbGenres,
  55. 'realisateurs' => $nbrealisateurs,
  56. 'users' => $nbUsers,
  57. 'medias' => $nbMediaVideos
  58. ];
  59. return new JsonResponse($tableau, 200, [], false);
  60. }
  61. }