Completed
Push — master ( 914c6c...d7f41f )
by Valentyn
04:19
created

RecommendationsController   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 1
lcom 0
cbo 5
dl 0
loc 27
ccs 9
cts 9
cp 1
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 Symfony\Component\HttpFoundation\JsonResponse;
11
use Symfony\Component\HttpFoundation\Request;
12
use Symfony\Component\Routing\Annotation\Route;
13
14
class RecommendationsController extends BaseController
15
{
16
    /**
17
     * @Route("/api/users/{id<\d+>}/recommendations", methods={"GET"})
18
     *
19
     * @param User                          $profileOwner
20
     * @param Request                       $request
21
     * @param MovieRecommendationRepository $repository
22
     *
23
     * @return JsonResponse
24
     */
25 2
    public function getUserRecommendations(User $profileOwner, Request $request, MovieRecommendationRepository $repository)
26
    {
27 2
        $offset = (int) $request->get('offset', 0);
28 2
        $limit = $request->get('limit', null);
29 2
        $minRating = (int) $request->get('minRating', 7);
30
31 2
        $currentUser = $this->getUser();
32
33 2
        $query = $repository->findAllByUser($profileOwner->getId(), abs($minRating), $currentUser);
34 2
        $movies = new PaginatedCollection($query, $offset, $limit, false);
35
36 2
        return $this->response($movies, 200, [], [
37 2
            'groups' => ['list'],
38
        ]);
39
    }
40
}
41