Completed
Push — master ( 93eb40...50cc67 )
by Valentyn
05:54
created

RecommendationsController   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 1
lcom 0
cbo 5
dl 0
loc 27
ccs 0
cts 9
cp 0
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A getUserRecommendations() 0 15 1
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