<?php
namespace App\Controller\Pages;
use App\Entity\FavoriteUsersMedia;
use App\Entity\Media;
use App\Entity\MediaTimeSpentAction;
use App\Entity\Module;
use App\Entity\Notification\NotificationSurveyAvailable;
use App\Entity\Page;
use App\Entity\User;
use App\Repository\FavoriteUsersMediaRepository;
use App\Repository\MediaRepository;
use App\Repository\MediaTimeSpentActionRepository;
use App\Repository\ModuleRepository;
use Doctrine\Common\Collections\Criteria;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class HomeController extends AbstractController
{
/**
* @Route("/", name="home")
*/
public function home()
{
/** @var MediaRepository $mediaRepository */
$mediaRepository = $this->getDoctrine()->getRepository(Media::class);
/** @var ModuleRepository $moduleRepository */
$moduleRepository = $this->getDoctrine()->getRepository(Module::class);
/** @var MediaTimeSpentActionRepository $mediaTimeSpentActionRepository */
$mediaTimeSpentActionRepository = $this->getDoctrine()->getRepository(MediaTimeSpentAction::class);
/** @var FavoriteUsersMediaRepository $favoriteUsersMediaRepository */
$favoriteUsersMediaRepository = $this->getDoctrine()->getRepository(FavoriteUsersMedia::class);
$response = new Response();
$modules = [];
$lastViewedMedia = null;
$lastAddedMedia = null;
$favoriteMedia = [];
$suggestedMedia = [];
$allUserFavoritesMediaIds = [];
if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
/** @var User $user */
$user = $this->getUser();
$modules = $moduleRepository->getAllForUser($user);
$lastViewedMedia = $mediaTimeSpentActionRepository->findNewestByUser($user);
if ($lastViewedMedia) {
$lastViewedMedia = $lastViewedMedia->getMedia();
} else {
$lastAddedMedia = $mediaRepository->getLastAddedMediaForUser($user);
}
$favoriteMedia = $favoriteUsersMediaRepository->findAllForUser($user);
foreach ($favoriteMedia as $fav) {
$allUserFavoritesMediaIds[] = $fav->getMedia()->getId();
}
} else {
$modules = $moduleRepository->getAllForAnonymous();
$lastAddedMedia = $mediaRepository->getLastAddedMediaForAnonymous();
}
$except = [];
if ($lastAddedMedia) {
$except[] = $lastAddedMedia;
}
if ($lastViewedMedia) {
$except[] = $lastViewedMedia;
}
$suggestedMedia = $mediaRepository->findSuggestedMediaExceptMedia(array_merge($except, $favoriteMedia));
return $this->render('pages/home.html.twig', [
'modules' => $modules,
'lastViewedMedia' => $lastViewedMedia,
'lastAddedMedia' => $lastAddedMedia,
'favoriteMedia' => $favoriteMedia,
'suggestedMedia' => $suggestedMedia,
'allUserFavoritesMediaIds' => $allUserFavoritesMediaIds,
'isLogged' => $this->isGranted('IS_AUTHENTICATED_REMEMBERED'),
], $response);
}
}