RequestsController::downvoteRequestAction()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 8

Duplication

Lines 8
Ratio 100 %

Importance

Changes 0
Metric Value
dl 8
loc 8
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace KI\PonthubBundle\Controller;
4
5
use KI\CoreBundle\Controller\ResourceController;
6
use Nelmio\ApiDocBundle\Annotation\ApiDoc;
7
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
8
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
9
use Symfony\Component\DependencyInjection\ContainerInterface;
10
11
class RequestsController extends ResourceController
12
{
13
    public function setContainer(ContainerInterface $container = null)
14
    {
15
        parent::setContainer($container);
16
        $this->initialize('Request', 'Ponthub');
17
    }
18
19
    /**
20
     * @ApiDoc(
21
     *  resource=true,
22
     *  description="Liste les demandes d'ajout de fichier",
23
     *  output="KI\PonthubBundle\Entity\Request",
24
     *  statusCodes={
25
     *   200="Requête traitée avec succès",
26
     *   401="Une authentification est nécessaire pour effectuer cette action",
27
     *   403="Pas les droits suffisants pour effectuer cette action",
28
     *   503="Service temporairement indisponible ou en maintenance",
29
     *  },
30
     *  section="Ponthub"
31
     * )
32
     * @Route("/requests")
33
     * @Method("GET")
34
     */
35
    public function getRequestsAction()
36
    {
37
        return $this->getAll();
38
    }
39
40
    /**
41
     * @ApiDoc(
42
     *  description="Retourne une demande d'ajout de fichier",
43
     *  output="KI\PonthubBundle\Entity\Request",
44
     *  statusCodes={
45
     *   200="Requête traitée avec succès",
46
     *   401="Une authentification est nécessaire pour effectuer cette action",
47
     *   403="Pas les droits suffisants pour effectuer cette action",
48
     *   404="Ressource non trouvée",
49
     *   503="Service temporairement indisponible ou en maintenance",
50
     *  },
51
     *  section="Ponthub"
52
     * )
53
     * @Route("/requests/{slug}")
54
     * @Method("GET")
55
     */
56
    public function getRequestAction($slug)
57
    {
58
        $request = $this->getOne($slug);
59
60
        return $this->json($request);
61
    }
62
63
    /**
64
     * @ApiDoc(
65
     *  description="Crée une demande d'ajout de fichier",
66
     *  input="KI\PonthubBundle\Form\RequestType",
67
     *  output="KI\PonthubBundle\Entity\Request",
68
     *  statusCodes={
69
     *   201="Requête traitée avec succès avec création d’un document",
70
     *   400="La syntaxe de la requête est erronée",
71
     *   401="Une authentification est nécessaire pour effectuer cette action",
72
     *   403="Pas les droits suffisants pour effectuer cette action",
73
     *   503="Service temporairement indisponible ou en maintenance",
74
     *  },
75
     *  section="Ponthub"
76
     * )
77
     * @Route("/requests")
78
     * @Method("POST")
79
     */
80
    public function postRequestAction()
81
    {
82
        $data = $this->post($this->is('USER'));
83
84
        return $this->formJson($data);
85
    }
86
87
    /**
88
     * @ApiDoc(
89
     *  description="Supprime une demande d'ajout de fichier",
90
     *  statusCodes={
91
     *   204="Requête traitée avec succès mais pas d’information à renvoyer",
92
     *   401="Une authentification est nécessaire pour effectuer cette action",
93
     *   403="Pas les droits suffisants pour effectuer cette action",
94
     *   404="Ressource non trouvée",
95
     *   503="Service temporairement indisponible ou en maintenance",
96
     *  },
97
     *  section="Ponthub"
98
     * )
99
     * @Route("/requests/{slug}")
100
     * @Method("DELETE")
101
     */
102
    public function deleteRequestAction($slug)
103
    {
104
        $this->delete($slug, $this->is('USER'));
105
106
        return $this->json(null, 204);
107
    }
108
109
    /**
110
     * @ApiDoc(
111
     *  description="Approuve une demande d'ajout de fichier",
112
     *  statusCodes={
113
     *   204="Requête traitée avec succès mais pas d’information à renvoyer",
114
     *   401="Une authentification est nécessaire pour effectuer cette action",
115
     *   403="Pas les droits suffisants pour effectuer cette action",
116
     *   404="Ressource non trouvée",
117
     *   503="Service temporairement indisponible ou en maintenance",
118
     *  },
119
     *  section="Ponthub"
120
     * )
121
     * @Route("/requests/{slug}/upvote")
122
     * @Method("PATCH")
123
     */
124 View Code Duplication
    public function upvoteRequestAction($slug)
125
    {
126
        $item = $this->getOne($slug);
127
        $item->setVotes($item->getVotes() + 1);
128
        $this->manager->flush();
129
130
        return $this->json(null, 204);
131
    }
132
133
    /**
134
     * @ApiDoc(
135
     *  description="Désapprouve une demande d'ajout de fichier",
136
     *  statusCodes={
137
     *   204="Requête traitée avec succès mais pas d’information à renvoyer",
138
     *   401="Une authentification est nécessaire pour effectuer cette action",
139
     *   403="Pas les droits suffisants pour effectuer cette action",
140
     *   404="Ressource non trouvée",
141
     *   503="Service temporairement indisponible ou en maintenance",
142
     *  },
143
     *  section="Ponthub"
144
     * )
145
     * @Route("/requests/{slug}/downvote")
146
     * @Method("PATCH")
147
     */
148 View Code Duplication
    public function downvoteRequestAction($slug)
149
    {
150
        $item = $this->getOne($slug);
151
        $item->setVotes($item->getVotes() - 1);
152
        $this->manager->flush();
153
154
        return $this->json(null, 204);
155
    }
156
}
157