GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Branch user-entity (5d2483)
by Luis Ramón
03:29
created

AdminController::nonSchoolDayDeleteAction()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 2
1
<?php
2
/*
3
  ÁTICA - Aplicación web para la gestión documental de centros educativos
4
5
  Copyright (C) 2015-2016: Luis Ramón López López
6
7
  This program is free software: you can redistribute it and/or modify
8
  it under the terms of the GNU Affero General Public License as published by
9
  the Free Software Foundation, either version 3 of the License, or
10
  (at your option) any later version.
11
12
  This program is distributed in the hope that it will be useful,
13
  but WITHOUT ANY WARRANTY; without even the implied warranty of
14
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
  GNU Affero General Public License for more details.
16
17
  You should have received a copy of the GNU Affero General Public License
18
  along with this program.  If not, see [http://www.gnu.org/licenses/].
19
*/
20
21
namespace AppBundle\Controller;
22
23
use AppBundle\Entity\Agreement;
24
use AppBundle\Entity\Company;
25
use AppBundle\Entity\Department;
26
use AppBundle\Entity\Group;
27
use AppBundle\Entity\NonSchoolDay;
28
use AppBundle\Entity\Training;
29
use AppBundle\Entity\Workcenter;
30
use Doctrine\ORM\EntityManager;
31
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
32
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
33
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
34
use Symfony\Component\HttpFoundation\Request;
35
36
/**
37
 * @Route("/admin")
38
 */
39
class AdminController extends Controller
40
{
41
    public static $DEPARTMENT_ENTITY_DATA = [
42
            'entity' => 'department',
43
            'entityClassName' => 'AppBundle\Entity\Department',
44
            'entityFormType' => 'AppBundle\Form\Type\DepartmentType',
45
            'query' => 'SELECT d FROM AppBundle:Department d LEFT JOIN d.head h',
46
            'defaultSortFieldName' => 'd.name',
47
            'columns' => [
48
                ['size' => '5', 'sort_field' => 'd.name', 'name' => 'department.name'],
49
                ['size' => '4', 'sort_field' => 'h.displayName', 'name' => 'department.head'],
50
            ],
51
            'data_columns' => ['name', 'head']
52
        ];
53
54
    public static $COMPANY_ENTITY_DATA = [
55
        'entity' => 'company',
56
        'entityClassName' => 'AppBundle\Entity\Company',
57
        'entityFormType' => 'AppBundle\Form\Type\CompanyType',
58
        'query' => 'SELECT c FROM AppBundle:Company c',
59
        'defaultSortFieldName' => 'c.name',
60
        'columns' => [
61
            ['size' => '2', 'sort_field' => 'c.code', 'name' => 'company.code'],
62
            ['size' => '7', 'sort_field' => 'c.name', 'name' => 'company.name'],
63
        ],
64
        'data_columns' => ['code', 'name']
65
    ];
66
67
    public static $WORKCENTER_ENTITY_DATA = [
68
        'entity' => 'workcenter',
69
        'entityClassName' => 'AppBundle\Entity\Workcenter',
70
        'entityFormType' => 'AppBundle\Form\Type\WorkcenterType',
71
        'query' => 'SELECT w FROM AppBundle:Workcenter w JOIN w.company c',
72
        'defaultSortFieldName' => 'c.name',
73
        'columns' => [
74
            ['size' => '4', 'sort_field' => 'c.name', 'name' => 'form.company'],
75
            ['size' => '5', 'sort_field' => 'w.name', 'name' => 'form.name'],
76
        ],
77
        'data_columns' => ['company', 'name']
78
    ];
79
80
    public static $GROUP_ENTITY_DATA = [
81
        'entity' => 'group',
82
        'entityClassName' => 'AppBundle\Entity\Group',
83
        'entityFormType' => 'AppBundle\Form\Type\GroupType',
84
        'query' => 'SELECT g FROM AppBundle:Group g JOIN g.training t',
85
        'defaultSortFieldName' => 'g.name',
86
        'columns' => [
87
            ['size' => '4', 'sort_field' => 'g.name', 'name' => 'form.name'],
88
            ['size' => '5', 'sort_field' => 'g.training', 'name' => 'form.training']
89
        ],
90
        'data_columns' => ['name', 'training']
91
    ];
92
93
    public static $TRAINING_ENTITY_DATA = [
94
        'entity' => 'training',
95
        'entityClassName' => 'AppBundle\Entity\Training',
96
        'entityFormType' => 'AppBundle\Form\Type\TrainingType',
97
        'query' => 'SELECT t FROM AppBundle:Training t JOIN t.department d',
98
        'defaultSortFieldName' => 't.name',
99
        'columns' => [
100
            ['size' => '4', 'sort_field' => 't.name', 'name' => 'form.name'],
101
            ['size' => '3', 'sort_field' => 't.department', 'name' => 'form.department'],
102
            ['size' => '2', 'sort_field' => 't.programHours', 'name' => 'form.program_hours']
103
        ],
104
        'data_columns' => ['name', 'department', 'programHours']
105
    ];
106
107
    public static $NON_SCHOOL_DAY_ENTITY_DATA = [
108
        'entity' => 'non_school_day',
109
        'entityClassName' => 'AppBundle\Entity\NonSchoolDay',
110
        'entityFormType' => 'AppBundle\Form\Type\NonSchoolDayType',
111
        'query' => 'SELECT n FROM AppBundle:NonSchoolDay n',
112
        'defaultSortFieldName' => 'n.date',
113
        'columns' => [
114
            ['size' => '2', 'sort_field' => 'n.date', 'name' => 'form.date'],
115
            ['size' => '7', 'sort_field' => 'n.name', 'name' => 'form.name']
116
        ],
117
        'data_columns' => ['date', 'name']
118
    ];
119
120
    public static $AGREEMENT_ENTITY_DATA = [
121
        'entity' => 'agreement',
122
        'entityClassName' => 'AppBundle\Entity\Agreement',
123
        'entityFormType' => 'AppBundle\Form\Type\AgreementType',
124
        'query' => 'SELECT a FROM AppBundle:Agreement a JOIN a.student s',
125
        'defaultSortFieldName' => 's.lastName',
126
        'columns' => [
127
            ['size' => '4', 'sort_field' => 's.displayName', 'name' => 'form.student'],
128
            ['size' => '5', 'sort_field' => 'a.workcenter', 'name' => 'form.workcenter']
129
        ],
130
        'data_columns' => ['student', 'workcenter']
131
    ];
132
133
    /**
134
     * @Route("/", name="admin_menu", methods={"GET"})
135
     * @Security("is_granted('ROLE_ADMIN')")
136
     */
137
    public function indexAction()
138
    {
139
        $menuItem = $this->get('app.menu_builders_chain')->getMenuItemByRouteName('admin_menu');
140
        
141
        return $this->render('admin/menu.html.twig',
142
            [
143
                'menu_item' => $menuItem
144
            ]);
145
    }
146
147
    public function genericIndexAction($entityData, Request $request)
148
    {
149
        /** @var EntityManager $em */
150
        $em = $this->getDoctrine()->getManager();
151
152
        $query = $em->createQuery($entityData['query']);
153
154
        $paginator  = $this->get('knp_paginator');
155
        $pagination = $paginator->paginate(
156
            $query,
157
            $request->query->getInt('page', 1),
158
            $this->getParameter('page.size'),
159
            [
160
                'defaultSortFieldName' => $entityData['defaultSortFieldName'],
161
                'defaultSortDirection' => 'asc'
162
            ]
163
        );
164
165
        return $this->render('admin/manage_generic.html.twig',
166
            [
167
                'menu_item' => $this->get('app.menu_builders_chain')->getMenuItemByRouteName($request->get('_route')),
168
                'title' => null,
169
                'pagination' => $pagination,
170
                'entity' => $entityData['entity'],
171
                'columns' => $entityData['columns'],
172
                'data_columns' => $entityData['data_columns']
173
            ]);
174
    }
175
176
    public function genericFormAction($entityData, $element, Request $request)
177
    {
178
        $em = $this->getDoctrine()->getManager();
179
180
        $new = (null === $element);
181
        if ($new) {
182
            $element = new $entityData['entityClassName'];
183
            $em->persist($element);
184
        }
185
186
        $form = $this->createForm($entityData['entityFormType'], $element);
187
188
        $form->handleRequest($request);
189
190
        $menuItem = $this->get('app.menu_builders_chain')->getMenuItemByRouteName('admin_' . $entityData['entity']);
191
192
        if ($form->isSubmitted() && $form->isValid()) {
193
194
            // Probar a guardar los cambios
195
            try {
196
                $em->flush();
197
                $this->addFlash('success', $this->get('translator')->trans('alert.saved', [], 'user'));
198
                return $this->redirectToRoute($menuItem->getRouteName(), $menuItem->getRouteParams());
199
            } catch (\Exception $e) {
200
                $this->addFlash('error', $this->get('translator')->trans('alert.not_saved', [], 'user'));
201
            }
202
        }
203
204
        $title = ((string) $element) ?: $this->get('translator')->trans('form.new', [], $entityData['entity']);
205
206
        return $this->render('admin/form_generic.html.twig', [
207
            'form' => $form->createView(),
208
            'new' => $new,
209
            'menu_item' => $menuItem,
210
            'breadcrumb' => [
211
                ['fixed' => $title]
212
            ],
213
            'element' => $element,
214
            'title' => $title,
215
            'entity' => $entityData['entity']
216
        ]);
217
    }
218
219
    public function genericDeleteAction($entityData, $element, Request $request)
220
    {
221
        if ('POST' === $request->getMethod() && $request->request->has('delete')) {
222
223
            // Eliminar el departamento de la base de datos
224
            $this->getDoctrine()->getManager()->remove($element);
225
            try {
226
                $this->getDoctrine()->getManager()->flush();
227
                $this->addFlash('success', $this->get('translator')->trans('alert.deleted', [], $entityData['entity']));
228
            }
229
            catch(\Exception $e) {
230
                $this->addFlash('error', $this->get('translator')->trans('alert.not_deleted', [], $entityData['entity']));
231
            }
232
            return $this->redirectToRoute('admin_' . $entityData['entity']);
233
        }
234
235
        $title = (string) $element;
236
237
        $breadcrumb = [
238
            ['fixed' => $title, 'path' => 'admin_' . $entityData['entity'] . '_form', 'options' => ['id' => $element->getId()]],
239
            ['caption' => 'menu.delete']
240
        ];
241
242
        return $this->render(':admin:delete_generic.html.twig', [
243
            'menu_item' => $this->get('app.menu_builders_chain')->getMenuItemByRouteName('admin_departments'),
244
            'breadcrumb' => $breadcrumb,
245
            'title' => $title,
246
            'element' => $element,
247
            'entity' => $entityData['entity']
248
        ]);
249
    }
250
251
    /**
252
     * @Route("/departamentos", name="admin_department", methods={"GET"})
253
     */
254
    public function departmentsIndexAction(Request $request)
255
    {
256
        return $this->genericIndexAction(self::$DEPARTMENT_ENTITY_DATA, $request);
257
    }
258
259
    /**
260
     * @Route("/departamentos/nuevo", name="admin_department_new", methods={"GET", "POST"})
261
     * @Route("/departamentos/{id}", name="admin_department_form", methods={"GET", "POST"}, requirements={"id": "\d+"})
262
     */
263
    public function departmentsFormAction(Department $element = null, Request $request)
264
    {
265
        return $this->genericFormAction(self::$DEPARTMENT_ENTITY_DATA, $element, $request);
266
    }
267
268
    /**
269
     * @Route("/departamentos/eliminar/{id}", name="admin_department_delete", methods={"GET", "POST"}, requirements={"id": "\d+"} )
270
     */
271
    public function deleteElementAction(Department $element, Request $request)
272
    {
273
        return $this->genericDeleteAction(self::$DEPARTMENT_ENTITY_DATA, $element, $request);
274
    }
275
276
    /**
277
     * @Route("/empresas", name="admin_company", methods={"GET"})
278
     */
279
    public function companiesIndexAction(Request $request)
280
    {
281
        return $this->genericIndexAction(self::$COMPANY_ENTITY_DATA, $request);
282
    }
283
284
    /**
285
     * @Route("/empresas/nueva", name="admin_company_new", methods={"GET", "POST"})
286
     * @Route("/empresas/{id}", name="admin_company_form", methods={"GET", "POST"}, requirements={"id": "\d+"})
287
     */
288
    public function companyFormAction(Company $element = null, Request $request)
289
    {
290
        return $this->genericFormAction(self::$COMPANY_ENTITY_DATA, $element, $request);
291
    }
292
293
    /**
294
     * @Route("/empresas/eliminar/{id}", name="admin_company_delete", methods={"GET", "POST"}, requirements={"id": "\d+"} )
295
     */
296
    public function companyDeleteAction(Company $element, Request $request)
297
    {
298
        return $this->genericDeleteAction(self::$COMPANY_ENTITY_DATA, $element, $request);
299
    }
300
301
    /**
302
     * @Route("/grupos", name="admin_group", methods={"GET"})
303
     */
304
    public function groupIndexAction(Request $request)
305
    {
306
        return $this->genericIndexAction(self::$GROUP_ENTITY_DATA, $request);
307
    }
308
309
    /**
310
     * @Route("/grupos/nuevo", name="admin_group_new", methods={"GET", "POST"})
311
     * @Route("/grupos/{id}", name="admin_group_form", methods={"GET", "POST"}, requirements={"id": "\d+"})
312
     */
313
    public function groupFormAction(Group $element = null, Request $request)
314
    {
315
        return $this->genericFormAction(self::$GROUP_ENTITY_DATA, $element, $request);
316
    }
317
318
    /**
319
     * @Route("/grupos/eliminar/{id}", name="admin_group_delete", methods={"GET", "POST"}, requirements={"id": "\d+"} )
320
     */
321
    public function groupDeleteAction(Group $element, Request $request)
322
    {
323
        return $this->genericDeleteAction(self::$GROUP_ENTITY_DATA, $element, $request);
324
    }
325
326
    /**
327
     * @Route("/ensenanzas", name="admin_training", methods={"GET"})
328
     */
329
    public function trainingIndexAction(Request $request)
330
    {
331
        return $this->genericIndexAction(self::$TRAINING_ENTITY_DATA, $request);
332
    }
333
334
    /**
335
     * @Route("/ensenanzas/nueva", name="admin_training_new", methods={"GET", "POST"})
336
     * @Route("/ensenanzas/{id}", name="admin_training_form", methods={"GET", "POST"}, requirements={"id": "\d+"})
337
     */
338
    public function trainingFormAction(Training $element = null, Request $request)
339
    {
340
        return $this->genericFormAction(self::$TRAINING_ENTITY_DATA, $element, $request);
341
    }
342
343
    /**
344
     * @Route("/ensenanzas/eliminar/{id}", name="admin_training_delete", methods={"GET", "POST"}, requirements={"id": "\d+"} )
345
     */
346
    public function trainingDeleteAction(Training $element, Request $request)
347
    {
348
        return $this->genericDeleteAction(self::$TRAINING_ENTITY_DATA, $element, $request);
349
    }
350
351
    /**
352
     * @Route("/diasnolectivos", name="admin_non_school_day", methods={"GET"})
353
     */
354
    public function nonSchoolDayIndexAction(Request $request)
355
    {
356
        return $this->genericIndexAction(self::$NON_SCHOOL_DAY_ENTITY_DATA, $request);
357
    }
358
359
    /**
360
     * @Route("/diasnolectivos/nuevo", name="admin_non_school_day_new", methods={"GET", "POST"})
361
     * @Route("/diasnolectivos/{id}", name="admin_non_school_day_form", methods={"GET", "POST"})
362
     */
363
    public function nonSchoolDayFormAction(NonSchoolDay $element = null, Request $request)
364
    {
365
        return $this->genericFormAction(self::$NON_SCHOOL_DAY_ENTITY_DATA, $element, $request);
366
    }
367
368
    /**
369
     * @Route("/diasnolectivos/eliminar/{id}", name="admin_non_school_day_delete", methods={"GET", "POST"})
370
     */
371
    public function workcenterDeleteAction(Workcenter $element, Request $request)
372
    {
373
        return $this->genericDeleteAction(self::$WORKCENTER_ENTITY_DATA, $element, $request);
374
    }
375
376
    /**
377
     * @Route("/centros", name="admin_workcenter", methods={"GET"})
378
     */
379
    public function workcenterIndexAction(Request $request)
380
    {
381
        return $this->genericIndexAction(self::$WORKCENTER_ENTITY_DATA, $request);
382
    }
383
384
    /**
385
     * @Route("/centros/nuevo", name="admin_workcenter_new", methods={"GET", "POST"})
386
     * @Route("/centros/{id}", name="admin_workcenter_form", methods={"GET", "POST"})
387
     */
388
    public function workcenterFormAction(Workcenter $element = null, Request $request)
389
    {
390
        return $this->genericFormAction(self::$WORKCENTER_ENTITY_DATA, $element, $request);
391
    }
392
393
    /**
394
     * @Route("/centros/eliminar/{id}", name="admin_workcenter_delete", methods={"GET", "POST"})
395
     */
396
    public function nonSchoolDayDeleteAction(Workcenter $element, Request $request)
397
    {
398
        return $this->genericDeleteAction(self::$WORKCENTER_ENTITY_DATA, $element, $request);
399
    }
400
401
    /**
402
     * @Route("/acuerdos", name="admin_agreement", methods={"GET"})
403
     */
404
    public function agreementIndexAction(Request $request)
405
    {
406
        return $this->genericIndexAction(self::$AGREEMENT_ENTITY_DATA, $request);
407
    }
408
409
    /**
410
     * @Route("/acuerdos/nuevo", name="admin_agreement_new", methods={"GET", "POST"})
411
     * @Route("/acuerdos/{id}", name="admin_agreement_form", methods={"GET", "POST"})
412
     */
413
    public function agreementFormAction(Agreement $element = null, Request $request)
414
    {
415
        return $this->genericFormAction(self::$AGREEMENT_ENTITY_DATA, $element, $request);
416
    }
417
418
    /**
419
     * @Route("/acuerdos/eliminar/{id}", name="admin_agreement_delete", methods={"GET", "POST"})
420
     */
421
    public function agreementDeleteAction(Agreement $element, Request $request)
422
    {
423
        return $this->genericDeleteAction(self::$AGREEMENT_ENTITY_DATA, $element, $request);
424
    }
425
}
426