1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace App\Users\Controller; |
4
|
|
|
|
5
|
|
|
use App\Controller\BaseController; |
6
|
|
|
use App\Movies\Repository\MovieRecommendationRepository; |
7
|
|
|
use App\Pagination\PaginatedCollection; |
8
|
|
|
use App\Users\Entity\User; |
9
|
|
|
use App\Users\Entity\UserRoles; |
10
|
|
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; |
11
|
|
|
use Symfony\Component\HttpFoundation\JsonResponse; |
12
|
|
|
use Symfony\Component\HttpFoundation\Request; |
13
|
|
|
use Symfony\Component\Routing\Annotation\Route; |
14
|
|
|
|
15
|
|
|
class RecommendationsController extends BaseController |
16
|
|
|
{ |
17
|
|
|
/** |
18
|
|
|
* @Route("/api/users/{id<\d+>}/recommendations", methods={"GET"}) |
19
|
|
|
* |
20
|
|
|
* @param User $user |
21
|
|
|
* @param Request $request |
22
|
|
|
* @param MovieRecommendationRepository $repository |
23
|
|
|
* |
24
|
|
|
* @return JsonResponse |
25
|
|
|
*/ |
26
|
|
|
public function getUserRecommendations(User $user, Request $request, MovieRecommendationRepository $repository) |
27
|
|
|
{ |
28
|
|
|
$this->denyAccessUnlessGranted(UserRoles::ROLE_USER); |
29
|
|
|
|
30
|
|
|
$offset = (int) $request->get('offset', 0); |
31
|
|
|
$limit = $request->get('limit', null); |
32
|
|
|
$minRating = $request->get('minRating', 7); |
33
|
|
|
|
34
|
|
|
$query = $repository->findAllByUser($user->getId(), abs((int) $minRating)); |
35
|
|
|
$movies = new PaginatedCollection($query, $offset, $limit, false); |
36
|
|
|
|
37
|
|
|
return $this->response($movies, 200, [], [ |
38
|
|
|
'groups' => ['list'], |
39
|
|
|
]); |
40
|
|
|
} |
41
|
|
|
} |
42
|
|
|
|