<?php
namespace App\Controller\Client\v2\Tv\Vitality;
use App\Repository\ProgramRepository;
use App\Repository\SurveyRepository;
use App\Repository\TvTagRepository;
use App\Repository\UserRepository;
use App\Repository\VideoRepository;
use App\Service\PlaylistService;
use App\Service\VideoService;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @isGranted("ROLE_CLIENT")
*/
class VitalityBalanceController extends AbstractController
{
private $userRepository;
private $surveyRepository;
private $videoRepository;
private $tvTagRepository;
public function __construct(
UserRepository $userRepository,
SurveyRepository $surveyRepository,
VideoRepository $videoRepository,
TvTagRepository $tvTagRepository
)
{
$this->surveyRepository = $surveyRepository;
$this->userRepository = $userRepository;
$this->videoRepository = $videoRepository;
$this->tvTagRepository = $tvTagRepository;
}
/**
* @Route("/tv/bilan-vitalite/mon-bilan", name="vitality_balance")
*/
public function index(Request $request): Response
{
$user = $this->userRepository->find($this->getUser());
// On check si l'utilisateur vient du questionnaire de première connexion
$fromFirstLogin = $request->get('fl', false);
if ($user->isTv() == false) {
return $this->redirectToRoute('client_tv_access_denied');
}
$vitalityData = $this->surveyRepository->getStatsVitalityBalance($user);
$dailyCateg = $this->tvTagRepository->getDailyVitalityBalanceTvTag($user);
$recoVideos = $this->videoRepository->getRecommendedObjectiveVideosByUser($user, [$dailyCateg]);
$vitalityCategs = [];
$vitalityStats = [];
foreach ($vitalityData['stats'] as $stat) {
$vitalityCategs[] = ucfirst(strtolower($stat['name']));
$vitalityStats[] = $stat['percentage_value'];
}
$vitalityStats = json_encode($vitalityStats);
$vitalityCategs = json_encode($vitalityCategs);
return $this->render('client/v2/tv/vitality/vitality_balance.html.twig', [
'controller_name' => "VitalityBalanceController",
'menu_name' => "account",
'vitalityStats' => $vitalityStats,
'vitalityCategs' => $vitalityCategs,
'vitalityData' => $vitalityData,
'recoVideos' => $recoVideos,
'fromFirstLogin' => $fromFirstLogin
]);
}
}