src/Controller/Client/v2/Tv/Vitality/VitalityBalanceController.php line 48

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Client\v2\Tv\Vitality;
  3. use App\Repository\ProgramRepository;
  4. use App\Repository\SurveyRepository;
  5. use App\Repository\TvTagRepository;
  6. use App\Repository\UserRepository;
  7. use App\Repository\VideoRepository;
  8. use App\Service\PlaylistService;
  9. use App\Service\VideoService;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. /**
  16.  * @isGranted("ROLE_CLIENT")
  17.  */
  18. class VitalityBalanceController extends AbstractController
  19. {
  20.    
  21.     private $userRepository;
  22.     private $surveyRepository;
  23.     private $videoRepository;
  24.     private $tvTagRepository;
  25.     
  26.     public function __construct(
  27.         UserRepository $userRepository,
  28.         SurveyRepository $surveyRepository,
  29.         VideoRepository $videoRepository,
  30.         TvTagRepository $tvTagRepository
  31.     )
  32.     {
  33.       
  34.         $this->surveyRepository = $surveyRepository;
  35.         $this->userRepository   = $userRepository;
  36.         $this->videoRepository  = $videoRepository;
  37.         $this->tvTagRepository  = $tvTagRepository;
  38.     }
  39.     /**
  40.      * @Route("/tv/bilan-vitalite/mon-bilan", name="vitality_balance")
  41.      */
  42.     public function index(Request $request): Response
  43.     {   
  44.         $user = $this->userRepository->find($this->getUser());
  45.         // On check si l'utilisateur vient du questionnaire de première connexion
  46.         $fromFirstLogin = $request->get('fl', false);
  47.         
  48.         if ($user->isTv() == false) {
  49.             return $this->redirectToRoute('client_tv_access_denied');
  50.         }
  51.         $vitalityData = $this->surveyRepository->getStatsVitalityBalance($user);
  52.         $dailyCateg = $this->tvTagRepository->getDailyVitalityBalanceTvTag($user);
  53.         $recoVideos = $this->videoRepository->getRecommendedObjectiveVideosByUser($user, [$dailyCateg]);
  54.         $vitalityCategs = [];
  55.         $vitalityStats = [];
  56.         foreach ($vitalityData['stats'] as  $stat) {
  57.             $vitalityCategs[] = ucfirst(strtolower($stat['name']));
  58.             $vitalityStats[] = $stat['percentage_value'];
  59.         }
  60.         
  61.         $vitalityStats = json_encode($vitalityStats);
  62.         $vitalityCategs = json_encode($vitalityCategs);
  63.         
  64.         return $this->render('client/v2/tv/vitality/vitality_balance.html.twig', [
  65.             'controller_name'       => "VitalityBalanceController",
  66.             'menu_name'             => "account",
  67.             'vitalityStats'         => $vitalityStats,
  68.             'vitalityCategs'        => $vitalityCategs,
  69.             'vitalityData'          => $vitalityData,
  70.             'recoVideos'            => $recoVideos,
  71.             'fromFirstLogin'        => $fromFirstLogin
  72.         ]);
  73.     }
  74.     
  75. }