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

getUserRecommendations()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 15
ccs 9
cts 9
cp 1
rs 9.7666
c 0
b 0
f 0
cc 1
nc 1
nop 3
crap 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