Passed
Push — master ( d346aa...fd2cec )
by Nicolas
04:54
created

GetArticlesFeedController::__invoke()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 9
nc 1
nop 1
dl 0
loc 13
ccs 9
cts 9
cp 1
crap 1
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace App\Controller\Article;
4
5
use App\Repository\ArticleRepository;
6
use App\Security\UserResolver;
7
use FOS\RestBundle\Controller\Annotations\QueryParam;
8
use FOS\RestBundle\Request\ParamFetcher;
9
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
10
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
11
use Symfony\Component\Routing\Annotation\Route;
12
13
/**
14
 * @Route("/api/articles/feed", name="api_articles_feed")
15
 * @Method("GET")
16
 *
17
 * @QueryParam(name="limit", requirements="\d+", default="20")
18
 * @QueryParam(name="offset", requirements="\d+", default="0")
19
 *
20
 * @Security("is_granted('ROLE_USER')")
21
 */
22
final class GetArticlesFeedController
23
{
24
    /**
25
     * @var ArticleRepository
26
     */
27
    private $articleRepository;
28
29
    /**
30
     * @var UserResolver
31
     */
32
    private $userResolver;
33
34
    /**
35
     * @param ArticleRepository $repository
36
     * @param UserResolver      $userResolver
37
     */
38 4
    public function __construct(ArticleRepository $repository, UserResolver $userResolver)
39
    {
40 4
        $this->articleRepository = $repository;
41 4
        $this->userResolver = $userResolver;
42 4
    }
43
44
    /**
45
     * @param ParamFetcher $paramFetcher
46
     *
47
     * @throws \Exception
48
     *
49
     * @return array
50
     */
51 3
    public function __invoke(ParamFetcher $paramFetcher)
52
    {
53 3
        $user = $this->userResolver->getCurrentUser();
54 3
        $articlesCount = $this->articleRepository->getArticlesFeedCount($user);
55 3
        $articles = $this->articleRepository->getArticlesFeed(
56 3
            $user,
57 3
            (int) $paramFetcher->get('offset'),
58 3
            (int) $paramFetcher->get('limit')
59
        );
60
61
        return [
62 3
            'articles' => $articles,
63 3
            'articlesCount' => $articlesCount,
64
        ];
65
    }
66
}
67