<?php
namespace App\Controller;
use App\Entity\User;
use App\Entity\UserFavorites;
use App\Service\api\JwpHttp;
use App\Service\email\GMailApi;
use App\Service\favorites\UserFavoritesService;
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\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class FavoritesController extends AbstractController
{
/**
* @Security("is_granted('ROLE_USER_ACTIF') or is_granted('ROLE_USER_INACTIF')")
* @Route("/favorites", name="favorites")
*/
public function index(UserFavoritesService $userFavoritesService, JwpHttp $jwpHttp): Response
{
/* @var $user User*/
$user = $this->getUser();
$playlistFavorite = $userFavoritesService->getPlaylistFavorites($user);
return $this->render('favorites/index.html.twig', [
'playlists' => $playlistFavorite,
'title_page'=> 'Favoris'
]);
}
/**
* @Security("is_granted('ROLE_USER_ACTIF') or is_granted('ROLE_USER_INACTIF')")
* @Route("/favorite/remove-favorite", name="remove-favorite")
*/
public function removeFavorite(Request $request, UserFavoritesService $userFavoritesService)
{
$favoriteId = $request->get('id');
$userFavoritesService->removeById($favoriteId);
return $this->forward('App\Controller\FavoritesController::index',[]);
}
/**
* @Security("is_granted('ROLE_USER_ACTIF') or is_granted('ROLE_USER_INACTIF')")
* @Route("/api/toggle-favorite", name="toggle-favorite")
*/
public function toggleFavorite(Request $request, UserFavoritesService $userFavoritesService): JsonResponse
{
/* @var $user User*/
$user = $this->getUser();
$entityId = $request->get('entityId');
$entity = $request->get('entity');
$data = $userFavoritesService->toggle($user,$entityId,$entity);
return new JsonResponse($data);
}
/**
* @Security("is_granted('ROLE_USER_ACTIF') or is_granted('ROLE_USER_INACTIF')")
* @Route("/api/add-favorite", name="add-favorite")
*/
public function addFavorite(Request $request, UserFavoritesService $userFavoritesService): JsonResponse
{
/* @var $user User*/
$user = $this->getUser();
$entityId = $request->get('entityId');
$userFavoritesService->add($user,$entityId);
return new JsonResponse('ok');
}
/**
* @Security("is_granted('ROLE_USER_ACTIF') or is_granted('ROLE_USER_INACTIF')")
* @Route("/api/list-favorite", name="list-favorite")
*/
public function listFavorite(UserFavoritesService $userFavoritesService): JsonResponse
{
$favorites =$userFavoritesService->findAll($this->getUser(),'playlist');
return new JsonResponse($favorites);
}
/**
* @Security("is_granted('ROLE_USER_ACTIF') or is_granted('ROLE_USER_INACTIF')")
* @Route("/api/favorite-exist", name="favorite-exist")
*/
public function favoriteExist(Request $request, UserFavoritesService $userFavoritesService): JsonResponse
{
if( ! $request->query->has('entityId') ){
return new JsonResponse('ko');
}
$entityId = $request->query->get('entityId');
$favoriteExist = $userFavoritesService->exist($this->getUser(),$entityId,'playlist') ? true : false;
return new JsonResponse(['favoriteExist'=>$favoriteExist]);
}
}