Completed
Push — master ( 28be56...359087 )
by Serhii
13:20
created

PriceCategoryAdmin   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 7

Test Coverage

Coverage 0%

Importance

Changes 2
Bugs 0 Features 2
Metric Value
dl 0
loc 77
ccs 0
cts 32
cp 0
rs 10
c 2
b 0
f 2
wmc 8
lcom 1
cbo 7

1 Method

Rating   Name   Duplication   Size   Complexity  
C configureFormFields() 0 66 8
1
<?php
2
3
namespace AppBundle\Admin;
4
5
use Doctrine\ORM\EntityRepository;
6
use Sonata\AdminBundle\Admin\Admin;
7
use Sonata\AdminBundle\Form\FormMapper;
8
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
9
use Symfony\Component\Form\Extension\Core\Type\TextType;
10
11
class PriceCategoryAdmin extends Admin
12
{
13
    protected $baseRouteName = 'AppBundle\Entity\PriceCategory';
14
    protected $baseRoutePattern = 'PriceCategory';
15
16
    /**
17
     * @param FormMapper $formMapper
18
     *
19
     * @return void
20
     */
21
    protected function configureFormFields(FormMapper $formMapper)
22
    {
23
        $performanceEventId = $this->getRequest()->query->get('performanceEvent_id');
24
        $formMapper
25
            ->add('venueSector', null, [
26
                'required' => true,
27
                'query_builder' => function (EntityRepository $rep) use ($performanceEventId) {
28
                    $qb = $rep->createQueryBuilder('p');
29
                    if ($performanceEventId) {
30
                        $performanceEvent = $this->getConfigurationPool()
31
                            ->getContainer()->get('doctrine.orm.default_entity_manager')
32
                            ->getRepository('AppBundle\Entity\PerformanceEvent')
33
                            ->find($performanceEventId);
34
                        $venueSectors = $performanceEvent->getVenue()->getVenueSector();
35
                        foreach ($venueSectors as $sector) {
36
                            $qb->orWhere("p.id = ".$sector->getId());
37
                        }
38
                    }
39
                    if (($this->getSubject() !== null) && ($performanceEventId === null)) {
40
                        if ($this->getSubject()->getPerformanceEvent() !== null) {
41
                            $performanceEvent = $this->getSubject()->getPerformanceEvent();
42
                            $venueSectors = $performanceEvent->getVenue()->getVenueSector();
43
                            foreach ($venueSectors as $sector) {
44
                                $qb->orWhere("p.id = ".$sector->getId());
45
                            }
46
                        }
47
                    }
48
                    return $qb;
49
                }
50
            ])
51
            ->add('color', 'sonata_type_color_selector', [
52
                'label' => 'Color'
53
            ])
54
            ->add('rows', TextType::class, [
55
                'required' => true,
56
                'attr' => [
57
                    'placeholder' => '1-5,6,7,10-15',
58
                ]
59
            ])
60
            ->add('places', TextType::class, [
61
                'required' => false,
62
                'attr' => [
63
                    'placeholder' => '1-5,6,7,10-15',
64
                ]
65
            ])
66
            ->add('price', IntegerType::class, [
67
                'required' => true,
68
                'attr' => [
69
                    'placeholder' => '50',
70
                ]
71
            ])
72
            ->add('performanceEvent', null, [
73
                'required' => true,
74
                'attr' => ['class' => 'hidden'],
75
                'label' => false,
76
                'query_builder' => function (EntityRepository $rep) use ($performanceEventId) {
77
                    $qb = $rep->createQueryBuilder('p');
78
                    if ($performanceEventId) {
79
                        $qb ->where('p.id = :performanceEvent_id')
80
                            ->setParameter('performanceEvent_id', $performanceEventId);
81
                    }
82
                    return $qb;
83
                }
84
            ])
85
        ;
86
    }
87
}
88