CoursesController::parseCoursesAction()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace KI\PublicationBundle\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
use Symfony\Component\HttpFoundation\Request;
11
12
class CoursesController extends ResourceController
13
{
14
    public function setContainer(ContainerInterface $container = null)
15
    {
16
        parent::setContainer($container);
17
        $this->initialize('Course', 'Publication');
18
    }
19
20
    /**
21
     * @ApiDoc(
22
     *  description="Parse l'emploi du temps emploidutemps.enpc.fr",
23
     *  statusCodes={
24
     *   202="Requête traitée mais sans garantie de résultat",
25
     *   401="Une authentification est nécessaire pour effectuer cette action",
26
     *   403="Pas les droits suffisants pour effectuer cette action",
27
     *   503="Service temporairement indisponible ou en maintenance",
28
     *  },
29
     *  section="Général"
30
     * )
31
     * @Route("/courses")
32
     * @Method("HEAD")
33
     */
34
    public function parseCoursesAction()
35
    {
36
        $this->get('ki_publication.helper.courseparser')->updateCourses();
37
        return $this->json(null, 202);
38
    }
39
40
    /**
41
     * @ApiDoc(
42
     *  resource=true,
43
     *  description="Liste les cours disponibles",
44
     *  output="KI\PublicationBundle\Entity\Course",
45
     *  statusCodes={
46
     *   200="Requête traitée avec succès",
47
     *   401="Une authentification est nécessaire pour effectuer cette action",
48
     *   403="Pas les droits suffisants pour effectuer cette action",
49
     *   503="Service temporairement indisponible ou en maintenance",
50
     *  },
51
     *  section="Publications"
52
     * )
53
     * @Route("/courses")
54
     * @Method("GET")
55
     */
56
    public function getCoursesAction(Request $request)
57
    {
58
        if ($request->query->has('exercices')) {
59
            return $this->getAll(null, 'exercices');
0 ignored issues
show
Documentation introduced by
null is of type null, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
Unused Code introduced by
The call to CoursesController::getAll() has too many arguments starting with 'exercices'.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
60
        }
61
        return $this->getAll();
62
    }
63
64
    /**
65
     * @ApiDoc(
66
     *  description="Retourne un cours",
67
     *  output="KI\PublicationBundle\Entity\Course",
68
     *  statusCodes={
69
     *   200="Requête traitée avec succès",
70
     *   401="Une authentification est nécessaire pour effectuer cette action",
71
     *   403="Pas les droits suffisants pour effectuer cette action",
72
     *   404="Ressource non trouvée",
73
     *   503="Service temporairement indisponible ou en maintenance",
74
     *  },
75
     *  section="Publications"
76
     * )
77
     * @Route("/courses/{slug}")
78
     * @Method("GET")
79
     */
80
    public function getCourseAction($slug)
81
    {
82
        $course =  $this->getOne($slug);
83
84
        return $this->json($course);
85
    }
86
87
    /**
88
     * @ApiDoc(
89
     *  description="Crée un cours",
90
     *  input="KI\PublicationBundle\Form\CourseType",
91
     *  output="KI\PublicationBundle\Entity\Course",
92
     *  statusCodes={
93
     *   201="Requête traitée avec succès avec création d’un document",
94
     *   400="La syntaxe de la requête est erronée",
95
     *   401="Une authentification est nécessaire pour effectuer cette action",
96
     *   403="Pas les droits suffisants pour effectuer cette action",
97
     *   503="Service temporairement indisponible ou en maintenance",
98
     *  },
99
     *  section="Publications"
100
     * )
101
     * @Route("/courses")
102
     * @Method("POST")
103
     */
104
    public function postCourseAction()
105
    {
106
        $data = $this->post();
107
108
        return $this->formJson($data);
109
    }
110
111
    /**
112
     * @ApiDoc(
113
     *  description="Modifie un cours",
114
     *  input="KI\PublicationBundle\Form\CourseType",
115
     *  statusCodes={
116
     *   204="Requête traitée avec succès mais pas d’information à renvoyer",
117
     *   400="La syntaxe de la requête est erronée",
118
     *   401="Une authentification est nécessaire pour effectuer cette action",
119
     *   403="Pas les droits suffisants pour effectuer cette action",
120
     *   404="Ressource non trouvée",
121
     *   503="Service temporairement indisponible ou en maintenance",
122
     *  },
123
     *  section="Publications"
124
     * )
125
     * @Route("/courses/{slug}")
126
     * @Method("PATCH")
127
     */
128
    public function patchCourseAction($slug)
129
    {
130
        $data = $this->patch($slug);
131
132
        return $this->formJson($data);
133
    }
134
135
    /**
136
     * @ApiDoc(
137
     *  description="Supprime un cours",
138
     *  statusCodes={
139
     *   204="Requête traitée avec succès mais pas d’information à renvoyer",
140
     *   401="Une authentification est nécessaire pour effectuer cette action",
141
     *   403="Pas les droits suffisants pour effectuer cette action",
142
     *   404="Ressource non trouvée",
143
     *   503="Service temporairement indisponible ou en maintenance",
144
     *  },
145
     *  section="Publications"
146
     * )
147
     * @Route("/courses/{slug}")
148
     * @Method("DELETE")
149
     */
150
    public function deleteCourseAction($slug)
151
    {
152
        // Les cours possèdent plein de sous propriétés, il faut faire gaffe à toutes les supprimer
153
        $course = $this->getOne($slug);
154
        $repository = $this->manager->getRepository('KIPublicationBundle:CourseUser');
155
156
        foreach ($repository->findByCourse($course) as $courseUser) {
157
            $this->manager->remove($courseUser);
158
        }
159
160
        $this->delete($slug);
161
162
        return $this->json(null, 204);
163
    }
164
165
    /**
166
     * @ApiDoc(
167
     *  description="Ajoute un utilisateur au cours",
168
     *  statusCodes={
169
     *   204="Requête traitée avec succès mais pas d’information à renvoyer",
170
     *   401="Une authentification est nécessaire pour effectuer cette action",
171
     *   403="Pas les droits suffisants pour effectuer cette action",
172
     *   404="Ressource non trouvée",
173
     *   503="Service temporairement indisponible ou en maintenance",
174
     *  },
175
     *  section="Publications"
176
     * )
177
     * @Route("/courses/{slug}/attend")
178
     * @Method("POST")
179
     */
180
    public function postCourseUserAction(Request $request, $slug)
181
    {
182
        $course = $this->findBySlug($slug);
183
184
        $group = $request->request->get('group', 0);
185
        $this->get('ki_publication.helper.course')->linkCourseUser($course, $this->user, $group);
186
        return $this->json(null, 204);
187
    }
188
189
    /**
190
     * @ApiDoc(
191
     *  description="Retire la demande d'inscription",
192
     *  statusCodes={
193
     *   204="Requête traitée avec succès mais pas d’information à renvoyer",
194
     *   401="Une authentification est nécessaire pour effectuer cette action",
195
     *   403="Pas les droits suffisants pour effectuer cette action",
196
     *   404="Ressource non trouvée",
197
     *   503="Service temporairement indisponible ou en maintenance",
198
     *  },
199
     *  section="Publications"
200
     * )
201
     * @Route("/courses/{slug}/attend")
202
     * @Method("DELETE")
203
     */
204
    public function deleteCourseUserAction($slug)
205
    {
206
        $course = $this->findBySlug($slug);
207
        $this->get('ki_publication.helper.course')->unlinkCourseUser($course, $this->user);
208
        return $this->json(null, 204);
209
    }
210
211
212
}
213