Passed
Branch master (1fd71c)
by Nicolas
03:28
created

UnfavoriteArticleController   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 36
ccs 9
cts 9
cp 1
rs 10
c 0
b 0
f 0
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A __invoke() 0 7 1
1
<?php
2
3
namespace App\Controller\Article;
4
5
use App\Entity\Article;
6
use App\Security\UserResolver;
7
use Doctrine\ORM\EntityManagerInterface;
8
use FOS\RestBundle\Controller\Annotations\View;
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/{slug}/favorite", name="api_article_unfavorite")
15
 * @Method("DELETE")
16
 *
17
 * @View(statusCode=200)
18
 *
19
 * @Security("is_granted('ROLE_USER')")
20
 */
21
final class UnfavoriteArticleController
22
{
23
    /**
24
     * @var EntityManagerInterface
25
     */
26
    private $entityManager;
27
28
    /**
29
     * @var UserResolver
30
     */
31
    private $userResolver;
32
33
    /**
34
     * @param EntityManagerInterface $entityManager
35
     * @param UserResolver           $userResolver
36
     */
37 2
    public function __construct(EntityManagerInterface $entityManager, UserResolver $userResolver)
38
    {
39 2
        $this->entityManager = $entityManager;
40 2
        $this->userResolver = $userResolver;
41 2
    }
42
43
    /**
44
     * @param Article $article
45
     *
46
     * @throws \Exception
47
     *
48
     * @return array
49
     */
50 1
    public function __invoke(Article $article)
51
    {
52 1
        $user = $this->userResolver->getCurrentUser();
53 1
        $user->removeFromFavorites($article);
54 1
        $this->entityManager->flush();
55
56 1
        return ['article' => $article];
57
    }
58
}
59