PerformanceAdmin   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 140
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 84.62%

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 5
dl 0
loc 140
ccs 44
cts 52
cp 0.8462
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A configureShowFields() 0 11 1
B configureFormFields() 0 76 1
A configureListFields() 0 11 1
A configureDatagridFilters() 0 9 1
1
<?php
2
3
namespace App\Admin;
4
5
use FOS\CKEditorBundle\Form\Type\CKEditorType;
6
use Sonata\AdminBundle\Admin\AbstractAdmin;
7
use Sonata\AdminBundle\Datagrid\ListMapper;
8
use Sonata\AdminBundle\Datagrid\DatagridMapper;
9
use Sonata\AdminBundle\Form\FormMapper;
10
use Sonata\AdminBundle\Form\Type\ModelAutocompleteType;
11
use Sonata\AdminBundle\Form\Type\ModelListType;
12
use Sonata\AdminBundle\Form\Type\ModelType;
13
use Sonata\AdminBundle\Show\ShowMapper;
14
use Sonata\Form\Type\CollectionType;
15
use Sonata\Form\Type\DateTimePickerType;
16
17
class PerformanceAdmin extends AbstractAdmin
18
{
19
    protected $baseRouteName = 'App\Entity\Performance';
20
    protected $baseRoutePattern = 'Performance';
21
    protected $datagridValues = [
22
        '_sort_order' => 'DESC',
23
        '_sort_by'    => 'premiere',
24
    ];
25
26
    /**
27
     * @param \Sonata\AdminBundle\Show\ShowMapper $showMapper
28
     *
29
     * @return void
30
     */
31
    protected function configureShowFields(ShowMapper $showMapper)
32
    {
33
        $showMapper
34
            ->add('title')
35
            ->add('type')
36
            ->add('description')
37
            ->add('premiere')
38
            ->add('performanceEvents')
39
            ->add('roles')
40
        ;
41
    }
42
43
    /**
44
     * @param \Sonata\AdminBundle\Form\FormMapper $formMapper
45
     *
46
     * @return void
47
     */
48 2
    protected function configureFormFields(FormMapper $formMapper)
49
    {
50 2
        $em = $this->modelManager->getEntityManager('App\Entity\History');
51
52 2
        $query = $em->createQueryBuilder('h')
53 2
            ->select('h')
54 2
            ->from('App:History', 'h')
55 2
            ->where('h.type = :type')
56 2
            ->orderBy('h.createdAt', 'ASC')
57 2
            ->setParameter('type', 'festival');
58
59
        $formMapper
60 2
            ->add('title')
61 2
            ->add('type')
62 2
            ->add('festival', ModelType::class, [
63 2
                'required' => false,
64 2
                'query' => $query,
65
            ])
66 2
            ->add('description', CKEditorType::class, ['attr' => ['class' => 'wysihtml5', 'style' => 'height: 200px']])
67 2
            ->add('mainPicture', ModelListType::class,
68
                [
69 2
                    'required' => false,
70
                ], [
71
                    'link_parameters' => [
72 2
                        'context'  => 'performance',
73
                        'provider' => 'sonata.media.provider.image',
74
                    ],
75
                ]
76
            )
77 2
            ->add('sliderImage', ModelListType::class,
78
                [
79 2
                    'required' => false,
80
                ], [
81
                    'link_parameters' => [
82 2
                        'context'  => 'slider',
83
                        'provider' => 'sonata.media.provider.image',
84
                    ],
85
                ]
86
            )
87 2
            ->add('premiere', DateTimePickerType::class,
88
                [
89 2
                    'dp_side_by_side'       => true,
90
                    'dp_use_current'        => false,
91
                    'dp_use_seconds'        => false,
92
                    'format' => "dd/MM/yyyy HH:mm",
93
                ]
94
            )
95 2
            ->add('seasons')
96 2
            ->add('roles', CollectionType::class,
97
                [
98 2
                    'required' => false,
99
                    'by_reference' => false,
100
                ], [
101 2
                    'edit' => 'inline',
102
                    'inline' => 'table',
103
                    'sortable'  => 'position',
104
                ]
105
            )
106 2
            ->add('galleryHasMedia', CollectionType::class,
107
                [
108 2
                    'required' => false,
109
                    'label' => 'Gallery',
110
                ], [
111 2
                    'edit' => 'inline',
112
                    'inline' => 'table',
113
                    'sortable'  => 'position',
114
                    'targetEntity' => 'App\Entity\GalleryHasMedia',
115
                    'admin_code' => 'sonata.media.admin.gallery_has_media',
116
                    'link_parameters' => [
117
                        'context'  => 'performance',
118
                        'provider' => 'sonata.media.provider.image',
119
                    ],
120
                ]
121
            )
122
        ;
123 2
    }
124
125
    /**
126
     * @param \Sonata\AdminBundle\Datagrid\ListMapper $listMapper
127
     *
128
     * @return void
129
     */
130 2
    protected function configureListFields(ListMapper $listMapper)
131
    {
132
        $listMapper
133 2
            ->add('mainPicture', 'string', ['template' => 'bundles/SonataAdmin/thumbnail.html.twig'])
134 2
            ->addIdentifier('title')
135 2
            ->add('type')
136 2
            ->add('seasons')
137 2
            ->add('premiere')
138 2
            ->add('festival')
139
        ;
140 2
    }
141
142
    /**
143
     * @param \Sonata\AdminBundle\Datagrid\DatagridMapper $datagridMapper
144
     *
145
     * @return void
146
     */
147 2
    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
148
    {
149
        $datagridMapper
150 2
            ->add('title')
151 2
            ->add('type')
152 2
            ->add('festival')
153 2
            ->add('seasons')
154
        ;
155 2
    }
156
}
157