FixsController::deleteFixAction()   A
last analyzed

Complexity

Conditions 2
Paths 1

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.9666
c 0
b 0
f 0
cc 2
nc 1
nop 1
1
<?php
2
3
namespace KI\ClubinfoBundle\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 FixsController extends ResourceController
12
{
13
    public function setContainer(ContainerInterface $container = null)
14
    {
15
        parent::setContainer($container);
16
        $this->initialize('Fix', 'Clubinfo');
17
    }
18
19
    /**
20
     * @ApiDoc(
21
     *  resource=true,
22
     *  description="Liste les tâches de dépannage",
23
     *  output="KI\ClubinfoBundle\Entity\Fix",
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="Clubinfo"
31
     * )
32
     * @Route("/fixs")
33
     * @Method("GET")
34
     */
35
    public function getFixsAction()
36
    {
37
        return $this->getAll();
38
    }
39
40
    /**
41
     * @ApiDoc(
42
     *  description="Retourne une tâche de dépannage",
43
     *  output="KI\ClubinfoBundle\Entity\Fix",
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="Clubinfo"
52
     * )
53
     * @Route("/fixs/{slug}")
54
     * @Method("GET")
55
     */
56
    public function getFixAction($slug)
57
    {
58
        $fix = $this->getOne($slug);
59
60
        return $this->json($fix);
61
    }
62
63
    /**
64
     * @ApiDoc(
65
     *  description="Crée une tâche de dépannage",
66
     *  input="KI\ClubinfoBundle\Form\FixType",
67
     *  output="KI\ClubinfoBundle\Entity\Fix",
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="Clubinfo"
76
     * )
77
     * @Route("/fixs")
78
     * @Method("POST")
79
     */
80
    public function postFixAction()
81
    {
82
        $data = $this->post($this->is('USER'));
83
84
        return $this->formJson($data);
85
    }
86
87
    /**
88
     * @ApiDoc(
89
     *  description="Modifie une tâche de dépannage",
90
     *  input="KI\ClubinfoBundle\Form\FixType",
91
     *  statusCodes={
92
     *   204="Requête traitée avec succès mais pas d’information à renvoyer",
93
     *   400="La syntaxe de la requête est erronée",
94
     *   401="Une authentification est nécessaire pour effectuer cette action",
95
     *   403="Pas les droits suffisants pour effectuer cette action",
96
     *   404="Ressource non trouvée",
97
     *   503="Service temporairement indisponible ou en maintenance",
98
     *  },
99
     *  section="Clubinfo"
100
     * )
101
     * @Route("/fixs/{slug}")
102
     * @Method("PATCH")
103
     */
104
    public function patchFixAction($slug)
105
    {
106
        $data = $this->patch($slug, $this->isClubMember('ki'));
107
108
        $fix = $data['item'];
109
110
        if ($fix->getFix()) {
111
            $this->get('ki_user.service.notify')->notify(
112
                'notif_fixs',
113
                'Demande de dépannage',
114
                'Ta demande de dépannage a été actualisée par le KI !',
115
                'to',
116
                [$fix->getUser()]
117
            );
118
        }
119
120
        return $this->formJson($data);
121
    }
122
123
    /**
124
     * @ApiDoc(
125
     *  description="Supprime une tâche de dépannage",
126
     *  statusCodes={
127
     *   204="Requête traitée avec succès mais pas d’information à renvoyer",
128
     *   401="Une authentification est nécessaire pour effectuer cette action",
129
     *   403="Pas les droits suffisants pour effectuer cette action",
130
     *   404="Ressource non trouvée",
131
     *   503="Service temporairement indisponible ou en maintenance",
132
     *  },
133
     *  section="Clubinfo"
134
     * )
135
     * @Route("/fixs/{slug}")
136
     * @Method("DELETE")
137
     */
138
    public function deleteFixAction($slug)
139
    {
140
        $fix = $this->getOne($slug);
141
        $this->delete($slug,
142
            $this->user->getUsername() == $fix->getUser()->getUsername() || $this->isClubMember('ki')
143
        );
144
145
        return $this->json(null, 204);
146
    }
147
}
148