src/Controller/Pages/HomeController.php line 80

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Pages;
  3. use App\Entity\FavoriteUsersMedia;
  4. use App\Entity\Media;
  5. use App\Entity\MediaTimeSpentAction;
  6. use App\Entity\Module;
  7. use App\Entity\Notification\NotificationSurveyAvailable;
  8. use App\Entity\Page;
  9. use App\Entity\User;
  10. use App\Repository\FavoriteUsersMediaRepository;
  11. use App\Repository\MediaRepository;
  12. use App\Repository\MediaTimeSpentActionRepository;
  13. use App\Repository\ModuleRepository;
  14. use Doctrine\Common\Collections\Criteria;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  19. class HomeController extends AbstractController
  20. {
  21.     /**
  22.      * @Route("/", name="home")
  23.      */
  24.     public function home()
  25.     {
  26.         /** @var MediaRepository $mediaRepository */
  27.         $mediaRepository $this->getDoctrine()->getRepository(Media::class);
  28.         /** @var ModuleRepository $moduleRepository */
  29.         $moduleRepository $this->getDoctrine()->getRepository(Module::class);
  30.         /** @var MediaTimeSpentActionRepository $mediaTimeSpentActionRepository */
  31.         $mediaTimeSpentActionRepository $this->getDoctrine()->getRepository(MediaTimeSpentAction::class);
  32.         /** @var FavoriteUsersMediaRepository $favoriteUsersMediaRepository */
  33.         $favoriteUsersMediaRepository $this->getDoctrine()->getRepository(FavoriteUsersMedia::class);
  34.         $response = new Response();
  35.         $modules = [];
  36.         $lastViewedMedia null;
  37.         $lastAddedMedia null;
  38.         $favoriteMedia = [];
  39.         $suggestedMedia = [];
  40.         $allUserFavoritesMediaIds = [];
  41.         if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  42.             /** @var User $user */
  43.             $user $this->getUser();
  44.             $modules $moduleRepository->getAllForUser($user);
  45.             $lastViewedMedia $mediaTimeSpentActionRepository->findNewestByUser($user);
  46.             if ($lastViewedMedia) {
  47.                 $lastViewedMedia $lastViewedMedia->getMedia();
  48.             } else {
  49.                 $lastAddedMedia $mediaRepository->getLastAddedMediaForUser($user);
  50.             }
  51.             $favoriteMedia $favoriteUsersMediaRepository->findAllForUser($user);
  52.             foreach ($favoriteMedia as $fav) {
  53.                 $allUserFavoritesMediaIds[] = $fav->getMedia()->getId();
  54.             }
  55.         } else {
  56.             $modules $moduleRepository->getAllForAnonymous();
  57.             $lastAddedMedia $mediaRepository->getLastAddedMediaForAnonymous();
  58.         }
  59.         $except = [];
  60.         if ($lastAddedMedia) {
  61.             $except[] = $lastAddedMedia;
  62.         }
  63.         if ($lastViewedMedia) {
  64.             $except[] = $lastViewedMedia;
  65.         }
  66.         $suggestedMedia $mediaRepository->findSuggestedMediaExceptMedia(array_merge($except$favoriteMedia));
  67.         return $this->render('pages/home.html.twig', [
  68.             'modules' => $modules,
  69.             'lastViewedMedia' => $lastViewedMedia,
  70.             'lastAddedMedia' => $lastAddedMedia,
  71.             'favoriteMedia' => $favoriteMedia,
  72.             'suggestedMedia' => $suggestedMedia,
  73.             'allUserFavoritesMediaIds' => $allUserFavoritesMediaIds,
  74.             'isLogged' => $this->isGranted('IS_AUTHENTICATED_REMEMBERED'),
  75.         ], $response);
  76.     }
  77. }