<?php
namespace App\Controller;
use App\Entity\User;
use App\Service\Algo\JwpFilter;
use App\Service\videos\PlaylistFilterService;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
class ProgramController extends AbstractController
{
private PlaylistFilterService $playlistFilterService;
public function __construct(PlaylistFilterService $playlistFilterService)
{
$this->playlistFilterService = $playlistFilterService;
}
/**
* Suggestion videos
* @Security("is_granted('ROLE_USER_ACTIF') or is_granted('ROLE_USER_INACTIF')")
* @Route("/dashboard/mon-programme", name="my-program")
* @Route("/dashboard/mon-programme/{type}", name="my-program-legacy")
*/
public function indexProgram(Request $request, TranslatorInterface $translator)
{
$queryParams = $this->playlistFilterService->buildQueryParams($request);
return $this->render('pages/dashboard/program/index.html.twig', [
'title_page' => $translator->trans('Programme complet'),
'queryParams' => $queryParams,
'baseUri' => $this->generateUrl('content-program'),
'resetUrl' => $this->generateUrl('my-program'),
]);
}
/**
* Suggestion videos
* @Security("is_granted('ROLE_USER_ACTIF') or is_granted('ROLE_USER_INACTIF')")
* @Route("ajax/dashboard/mon-programme", name="content-program")
* @Route("ajax/dashboard/mon-programme/{type}", name="content-program-legacy")
*/
public function contentProgram(Request $request, JwpFilter $jwpFilter)
{
/** @var User $user */
$user = $this->getUser();
$queryParams = $this->playlistFilterService->buildQueryParams($request);
$viewData = $this->playlistFilterService->buildPlaylistViewData($user, $jwpFilter, $queryParams, [
'context' => \App\Service\Utils\Constante\JWPConst::CONTEXT_SUGGEST,
'includeActivityFilters' => true,
]);
$template = $this->renderView('pages/dashboard/videos/blocks/list.playlists.html.twig', array_merge($viewData, [
'queryParams' => $queryParams,
'resetPath' => $this->generateUrl('my-program'),
'showCategoryFilters' => true,
'playlistOrigin' => 'program',
'playlistBackPath' => $this->buildBackPath($this->generateUrl('my-program'), $request),
'playlistBackCategory' => null,
]));
return new JsonResponse($template, 200);
}
private function buildBackPath(string $basePath, Request $request): string
{
$queryString = http_build_query($request->query->all());
if ($queryString === '') {
return $basePath;
}
return sprintf('%s?%s', $basePath, $queryString);
}
}