src/Controller/ProgramController.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Service\Algo\JwpFilter;
  5. use App\Service\videos\PlaylistFilterService;
  6. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\JsonResponse;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Contracts\Translation\TranslatorInterface;
  12. class ProgramController extends AbstractController
  13. {
  14.     private PlaylistFilterService $playlistFilterService;
  15.     public function __construct(PlaylistFilterService $playlistFilterService)
  16.     {
  17.         $this->playlistFilterService $playlistFilterService;
  18.     }
  19.     /**
  20.      * Suggestion videos
  21.      * @Security("is_granted('ROLE_USER_ACTIF') or is_granted('ROLE_USER_INACTIF')")
  22.      * @Route("/dashboard/mon-programme", name="my-program")
  23.      * @Route("/dashboard/mon-programme/{type}", name="my-program-legacy")
  24.      */
  25.     public function indexProgram(Request $requestTranslatorInterface $translator)
  26.     {
  27.         $queryParams $this->playlistFilterService->buildQueryParams($request);
  28.         return $this->render('pages/dashboard/program/index.html.twig', [
  29.             'title_page' => $translator->trans('Programme complet'),
  30.             'queryParams' => $queryParams,
  31.             'baseUri' => $this->generateUrl('content-program'),
  32.             'resetUrl' => $this->generateUrl('my-program'),
  33.         ]);
  34.     }
  35.     /**
  36.      * Suggestion videos
  37.      * @Security("is_granted('ROLE_USER_ACTIF') or is_granted('ROLE_USER_INACTIF')")
  38.      * @Route("ajax/dashboard/mon-programme", name="content-program")
  39.      * @Route("ajax/dashboard/mon-programme/{type}", name="content-program-legacy")
  40.      */
  41.     public function contentProgram(Request $requestJwpFilter $jwpFilter)
  42.     {
  43.         /** @var User $user */
  44.         $user $this->getUser();
  45.         $queryParams $this->playlistFilterService->buildQueryParams($request);
  46.         $viewData $this->playlistFilterService->buildPlaylistViewData($user$jwpFilter$queryParams, [
  47.             'context' => \App\Service\Utils\Constante\JWPConst::CONTEXT_SUGGEST,
  48.             'includeActivityFilters' => true,
  49.         ]);
  50.         $template $this->renderView('pages/dashboard/videos/blocks/list.playlists.html.twig'array_merge($viewData, [
  51.             'queryParams' => $queryParams,
  52.             'resetPath' => $this->generateUrl('my-program'),
  53.             'showCategoryFilters' => true,
  54.             'playlistOrigin' => 'program',
  55.             'playlistBackPath' => $this->buildBackPath($this->generateUrl('my-program'), $request),
  56.             'playlistBackCategory' => null,
  57.         ]));
  58.         return new JsonResponse($template200);
  59.     }
  60.     private function buildBackPath(string $basePathRequest $request): string
  61.     {
  62.         $queryString http_build_query($request->query->all());
  63.         if ($queryString === '') {
  64.             return $basePath;
  65.         }
  66.         return sprintf('%s?%s'$basePath$queryString);
  67.     }
  68. }