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
Push — master ( 09b634...ff2cc6 )
by Luis Ramón
03:01
created

AdminController::genericFormAction()   B

Complexity

Conditions 6
Paths 18

Size

Total Lines 42
Code Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 42
rs 8.439
cc 6
eloc 26
nc 18
nop 3
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\Company;
24
use AppBundle\Entity\Department;
25
use AppBundle\Entity\Group;
26
use AppBundle\Entity\NonSchoolDay;
27
use AppBundle\Entity\Training;
28
use AppBundle\Entity\Workcenter;
29
use Doctrine\ORM\EntityManager;
30
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
31
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
32
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
33
use Symfony\Component\HttpFoundation\Request;
34
35
/**
36
 * @Route("/admin")
37
 */
38
class AdminController extends Controller
39
{
40
    public static $DEPARTMENT_ENTITY_DATA = [
41
            'entity' => 'department',
42
            'entityClassName' => 'AppBundle\Entity\Department',
43
            'entityFormType' => 'AppBundle\Form\Type\DepartmentType',
44
            'query' => 'SELECT d FROM AppBundle:Department d JOIN d.head h JOIN h.person p',
45
            'defaultSortFieldName' => 'd.name',
46
            'columns' => [
47
                ['size' => '5', 'sort_field' => 'd.name', 'name' => 'department.name'],
48
                ['size' => '4', 'sort_field' => 'p.displayName', 'name' => 'department.head'],
49
            ],
50
            'data_columns' => ['name', 'head']
51
        ];
52
53
    public static $COMPANY_ENTITY_DATA = [
54
        'entity' => 'company',
55
        'entityClassName' => 'AppBundle\Entity\Company',
56
        'entityFormType' => 'AppBundle\Form\Type\CompanyType',
57
        'query' => 'SELECT c FROM AppBundle:Company c',
58
        'defaultSortFieldName' => 'c.name',
59
        'columns' => [
60
            ['size' => '2', 'sort_field' => 'c.code', 'name' => 'company.code'],
61
            ['size' => '7', 'sort_field' => 'c.name', 'name' => 'company.name'],
62
        ],
63
        'data_columns' => ['code', 'name']
64
    ];
65
66
    public static $WORKCENTER_ENTITY_DATA = [
67
        'entity' => 'workcenter',
68
        'entityClassName' => 'AppBundle\Entity\Workcenter',
69
        'entityFormType' => 'AppBundle\Form\Type\WorkcenterType',
70
        'query' => 'SELECT w FROM AppBundle:Workcenter w JOIN w.company c',
71
        'defaultSortFieldName' => 'w.company.name',
72
        'columns' => [
73
            ['size' => '4', 'sort_field' => 'w.company.name', 'name' => 'form.company'],
74
            ['size' => '5', 'sort_field' => 'w.name', 'name' => 'form.name'],
75
        ],
76
        'data_columns' => ['company', 'name']
77
    ];
78
79
    public static $GROUP_ENTITY_DATA = [
80
        'entity' => 'group',
81
        'entityClassName' => 'AppBundle\Entity\Group',
82
        'entityFormType' => 'AppBundle\Form\Type\GroupType',
83
        'query' => 'SELECT g FROM AppBundle:Group g JOIN g.training t',
84
        'defaultSortFieldName' => 'g.name',
85
        'columns' => [
86
            ['size' => '4', 'sort_field' => 'g.name', 'name' => 'form.name'],
87
            ['size' => '5', 'sort_field' => 'g.training', 'name' => 'form.training']
88
        ],
89
        'data_columns' => ['name', 'training']
90
    ];
91
92
    public static $TRAINING_ENTITY_DATA = [
93
        'entity' => 'training',
94
        'entityClassName' => 'AppBundle\Entity\Training',
95
        'entityFormType' => 'AppBundle\Form\Type\TrainingType',
96
        'query' => 'SELECT t FROM AppBundle:Training t JOIN t.department d',
97
        'defaultSortFieldName' => 't.name',
98
        'columns' => [
99
            ['size' => '5', 'sort_field' => 't.name', 'name' => 'form.name'],
100
            ['size' => '4', 'sort_field' => 't.department', 'name' => 'form.department']
101
        ],
102
        'data_columns' => ['name', 'department']
103
    ];
104
105
    public static $NON_SCHOOL_DAY_ENTITY_DATA = [
106
        'entity' => 'non_school_day',
107
        'entityClassName' => 'AppBundle\Entity\NonSchoolDay',
108
        'entityFormType' => 'AppBundle\Form\Type\NonSchoolDayType',
109
        'query' => 'SELECT n FROM AppBundle:NonSchoolDay n',
110
        'defaultSortFieldName' => 'n.date',
111
        'columns' => [
112
            ['size' => '2', 'sort_field' => 'n.date', 'name' => 'form.date'],
113
            ['size' => '7', 'sort_field' => 'n.name', 'name' => 'form.name']
114
        ],
115
        'data_columns' => ['date', 'name']
116
    ];
117
118
    /**
119
     * @Route("/", name="admin_menu", methods={"GET"})
120
     * @Security("is_granted('ROLE_ADMIN')")
121
     */
122
    public function indexAction()
123
    {
124
        $menuItem = $this->get('app.menu_builders_chain')->getMenuItemByRouteName('admin_menu');
125
        
126
        return $this->render('admin/menu.html.twig',
127
            [
128
                'menu_item' => $menuItem
129
            ]);
130
    }
131
132
    public function genericIndexAction($entityData, Request $request)
133
    {
134
        /** @var EntityManager $em */
135
        $em = $this->getDoctrine()->getManager();
136
137
        $query = $em->createQuery($entityData['query']);
138
139
        $paginator  = $this->get('knp_paginator');
140
        $pagination = $paginator->paginate(
141
            $query,
142
            $request->query->getInt('page', 1),
143
            $this->getParameter('page.size'),
144
            [
145
                'defaultSortFieldName' => $entityData['defaultSortFieldName'],
146
                'defaultSortDirection' => 'asc'
147
            ]
148
        );
149
150
        return $this->render('admin/manage_generic.html.twig',
151
            [
152
                'menu_item' => $this->get('app.menu_builders_chain')->getMenuItemByRouteName($request->get('_route')),
153
                'title' => null,
154
                'pagination' => $pagination,
155
                'entity' => $entityData['entity'],
156
                'columns' => $entityData['columns'],
157
                'data_columns' => $entityData['data_columns']
158
            ]);
159
    }
160
161
    public function genericFormAction($entityData, $element, Request $request)
162
    {
163
        $em = $this->getDoctrine()->getManager();
164
165
        $new = (null === $element);
166
        if ($new) {
167
            $element = new $entityData['entityClassName'];
168
            $em->persist($element);
169
        }
170
171
        $form = $this->createForm($entityData['entityFormType'], $element);
172
173
        $form->handleRequest($request);
174
175
        $menuItem = $this->get('app.menu_builders_chain')->getMenuItemByRouteName('admin_' . $entityData['entity']);
176
177
        if ($form->isSubmitted() && $form->isValid()) {
178
179
            // Probar a guardar los cambios
180
            try {
181
                $em->flush();
182
                $this->addFlash('success', $this->get('translator')->trans('alert.saved', [], 'user'));
183
                return $this->redirectToRoute($menuItem->getRouteName(), $menuItem->getRouteParams());
184
            } catch (\Exception $e) {
185
                $this->addFlash('error', $this->get('translator')->trans('alert.not_saved', [], 'user'));
186
            }
187
        }
188
189
        $title = ((string) $element) ?: $this->get('translator')->trans('form.new', [], $entityData['entity']);
190
191
        return $this->render('admin/form_generic.html.twig', [
192
            'form' => $form->createView(),
193
            'new' => $new,
194
            'menu_item' => $menuItem,
195
            'breadcrumb' => [
196
                ['fixed' => $title]
197
            ],
198
            'element' => $element,
199
            'title' => $title,
200
            'entity' => $entityData['entity']
201
        ]);
202
    }
203
204
    public function genericDeleteAction($entityData, $element, Request $request)
205
    {
206
        if ('POST' === $request->getMethod() && $request->request->has('delete')) {
207
208
            // Eliminar el departamento de la base de datos
209
            $this->getDoctrine()->getManager()->remove($element);
210
            try {
211
                $this->getDoctrine()->getManager()->flush();
212
                $this->addFlash('success', $this->get('translator')->trans('alert.deleted', [], $entityData['entity']));
213
            }
214
            catch(\Exception $e) {
215
                $this->addFlash('error', $this->get('translator')->trans('alert.not_deleted', [], $entityData['entity']));
216
            }
217
            return $this->redirectToRoute('admin_' . $entityData['entity']);
218
        }
219
220
        $title = (string) $element;
221
222
        $breadcrumb = [
223
            ['fixed' => $title, 'path' => 'admin_' . $entityData['entity'] . '_form', 'options' => ['id' => $element->getId()]],
224
            ['caption' => 'menu.delete']
225
        ];
226
227
        return $this->render(':admin:delete_generic.html.twig', [
228
            'menu_item' => $this->get('app.menu_builders_chain')->getMenuItemByRouteName('admin_departments'),
229
            'breadcrumb' => $breadcrumb,
230
            'title' => $title,
231
            'element' => $element,
232
            'entity' => $entityData['entity']
233
        ]);
234
    }
235
236
    /**
237
     * @Route("/departamentos", name="admin_department", methods={"GET"})
238
     */
239
    public function departmentsIndexAction(Request $request)
240
    {
241
        return $this->genericIndexAction(self::$DEPARTMENT_ENTITY_DATA, $request);
242
    }
243
244
    /**
245
     * @Route("/departamentos/nuevo", name="admin_department_new", methods={"GET", "POST"})
246
     * @Route("/departamentos/{id}", name="admin_department_form", methods={"GET", "POST"}, requirements={"id": "\d+"})
247
     */
248
    public function departmentsFormAction(Department $element = null, Request $request)
249
    {
250
        return $this->genericFormAction(self::$DEPARTMENT_ENTITY_DATA, $element, $request);
251
    }
252
253
    /**
254
     * @Route("/departamentos/eliminar/{id}", name="admin_department_delete", methods={"GET", "POST"}, requirements={"id": "\d+"} )
255
     */
256
    public function deleteElementAction(Department $element, Request $request)
257
    {
258
        return $this->genericDeleteAction(self::$DEPARTMENT_ENTITY_DATA, $element, $request);
259
    }
260
261
    /**
262
     * @Route("/empresas", name="admin_company", methods={"GET"})
263
     */
264
    public function companiesIndexAction(Request $request)
265
    {
266
        return $this->genericIndexAction(self::$COMPANY_ENTITY_DATA, $request);
267
    }
268
269
    /**
270
     * @Route("/empresas/nueva", name="admin_company_new", methods={"GET", "POST"})
271
     * @Route("/empresas/{id}", name="admin_company_form", methods={"GET", "POST"}, requirements={"id": "\d+"})
272
     */
273
    public function companyFormAction(Company $element = null, Request $request)
274
    {
275
        return $this->genericFormAction(self::$COMPANY_ENTITY_DATA, $element, $request);
276
    }
277
278
    /**
279
     * @Route("/empresas/eliminar/{id}", name="admin_company_delete", methods={"GET", "POST"}, requirements={"id": "\d+"} )
280
     */
281
    public function companyDeleteAction(Company $element, Request $request)
282
    {
283
        return $this->genericDeleteAction(self::$COMPANY_ENTITY_DATA, $element, $request);
284
    }
285
286
    /**
287
     * @Route("/grupos", name="admin_group", methods={"GET"})
288
     */
289
    public function groupIndexAction(Request $request)
290
    {
291
        return $this->genericIndexAction(self::$GROUP_ENTITY_DATA, $request);
292
    }
293
294
    /**
295
     * @Route("/grupos/nuevo", name="admin_group_new", methods={"GET", "POST"})
296
     * @Route("/grupos/{id}", name="admin_group_form", methods={"GET", "POST"}, requirements={"id": "\d+"})
297
     */
298
    public function groupFormAction(Group $element = null, Request $request)
299
    {
300
        return $this->genericFormAction(self::$GROUP_ENTITY_DATA, $element, $request);
301
    }
302
303
    /**
304
     * @Route("/grupos/eliminar/{id}", name="admin_group_delete", methods={"GET", "POST"}, requirements={"id": "\d+"} )
305
     */
306
    public function groupDeleteAction(Group $element, Request $request)
307
    {
308
        return $this->genericDeleteAction(self::$GROUP_ENTITY_DATA, $element, $request);
309
    }
310
311
    /**
312
     * @Route("/ensenanzas", name="admin_training", methods={"GET"})
313
     */
314
    public function trainingIndexAction(Request $request)
315
    {
316
        return $this->genericIndexAction(self::$TRAINING_ENTITY_DATA, $request);
317
    }
318
319
    /**
320
     * @Route("/ensenanzas/nueva", name="admin_training_new", methods={"GET", "POST"})
321
     * @Route("/ensenanzas/{id}", name="admin_training_form", methods={"GET", "POST"}, requirements={"id": "\d+"})
322
     */
323
    public function trainingFormAction(Training $element = null, Request $request)
324
    {
325
        return $this->genericFormAction(self::$TRAINING_ENTITY_DATA, $element, $request);
326
    }
327
328
    /**
329
     * @Route("/ensenanzas/eliminar/{id}", name="admin_training_delete", methods={"GET", "POST"}, requirements={"id": "\d+"} )
330
     */
331
    public function trainingDeleteAction(Training $element, Request $request)
332
    {
333
        return $this->genericDeleteAction(self::$TRAINING_ENTITY_DATA, $element, $request);
334
    }
335
336
    /**
337
     * @Route("/diasnolectivos", name="admin_non_school_day", methods={"GET"})
338
     */
339
    public function nonSchoolDayIndexAction(Request $request)
340
    {
341
        return $this->genericIndexAction(self::$NON_SCHOOL_DAY_ENTITY_DATA, $request);
342
    }
343
344
    /**
345
     * @Route("/diasnolectivos/nuevo", name="admin_non_school_day_new", methods={"GET", "POST"})
346
     * @Route("/diasnolectivos/{id}", name="admin_non_school_day_form", methods={"GET", "POST"})
347
     */
348
    public function nonSchoolDayFormAction(NonSchoolDay $element = null, Request $request)
349
    {
350
        return $this->genericFormAction(self::$NON_SCHOOL_DAY_ENTITY_DATA, $element, $request);
351
    }
352
353
    /**
354
     * @Route("/diasnolectivos/eliminar/{id}", name="admin_non_school_day_delete", methods={"GET", "POST"})
355
     */
356
    public function workcenterDeleteAction(Workcenter $element, Request $request)
357
    {
358
        return $this->genericDeleteAction(self::$WORKCENTER_ENTITY_DATA, $element, $request);
359
    }
360
361
    /**
362
     * @Route("/centros", name="admin_workcenter", methods={"GET"})
363
     */
364
    public function workcenterIndexAction(Request $request)
365
    {
366
        return $this->genericIndexAction(self::$WORKCENTER_ENTITY_DATA, $request);
367
    }
368
369
    /**
370
     * @Route("/centros/nuevo", name="admin_workcenter_new", methods={"GET", "POST"})
371
     * @Route("/centros/{id}", name="admin_workcenter_form", methods={"GET", "POST"})
372
     */
373
    public function workcenterFormAction(Workcenter $element = null, Request $request)
374
    {
375
        return $this->genericFormAction(self::$WORKCENTER_ENTITY_DATA, $element, $request);
376
    }
377
378
    /**
379
     * @Route("/centros/eliminar/{id}", name="admin_workcenter_delete", methods={"GET", "POST"})
380
     */
381
    public function nonSchoolDayDeleteAction(Workcenter $element, Request $request)
382
    {
383
        return $this->genericDeleteAction(self::$WORKCENTER_ENTITY_DATA, $element, $request);
384
    }
385
}
386