Completed
Pull Request — master (#162)
by
unknown
03:18
created

PriceCategoryAdmin   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 7

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 2
Metric Value
dl 0
loc 77
ccs 39
cts 39
cp 1
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 1
    protected function configureFormFields(FormMapper $formMapper)
22
    {
23 1
        $performanceEventId = $this->getRequest()->query->get('performanceEvent_id');
24
        $formMapper
25 1
            ->add('venueSector', null, [
26 1
                'required' => true,
27
                'query_builder' => function (EntityRepository $rep) use ($performanceEventId) {
28 1
                    $qb = $rep->createQueryBuilder('p');
29 1
                    if ($performanceEventId) {
30 1
                        $performanceEvent = $this->getConfigurationPool()
31 1
                            ->getContainer()->get('doctrine.orm.default_entity_manager')
32 1
                            ->getRepository('AppBundle\Entity\PerformanceEvent')
33 1
                            ->find($performanceEventId);
34 1
                        $venueSectors = $performanceEvent->getVenue()->getVenueSector();
35 1
                        foreach ($venueSectors as $sector) {
36 1
                            $qb->orWhere("p.id = ".$sector->getId());
37
                        }
38
                    }
39 1
                    if (($this->getSubject() !== null) && ($performanceEventId === null)) {
40 1
                        if ($this->getSubject()->getPerformanceEvent() !== null) {
41 1
                            $performanceEvent = $this->getSubject()->getPerformanceEvent();
42 1
                            $venueSectors = $performanceEvent->getVenue()->getVenueSector();
43 1
                            foreach ($venueSectors as $sector) {
44 1
                                $qb->orWhere("p.id = ".$sector->getId());
45
                            }
46
                        }
47
                    }
48 1
                    return $qb;
49 1
                }
50
            ])
51 1
            ->add('color', 'sonata_type_color_selector', [
52 1
                'label' => 'Color'
53
            ])
54 1
            ->add('rows', TextType::class, [
55 1
                'required' => true,
56
                'attr' => [
57
                    'placeholder' => '1-5,6,7,10-15',
58
                ]
59
            ])
60 1
            ->add('places', TextType::class, [
61 1
                'required' => false,
62
                'attr' => [
63
                    'placeholder' => '1-5,6,7,10-15',
64
                ]
65
            ])
66 1
            ->add('price', IntegerType::class, [
67 1
                'required' => true,
68
                'attr' => [
69
                    'placeholder' => '50',
70
                ]
71
            ])
72 1
            ->add('performanceEvent', null, [
73 1
                'required' => true,
74
                'attr' => ['class' => 'hidden'],
75
                'label' => false,
76 1
                'query_builder' => function (EntityRepository $rep) use ($performanceEventId) {
77 1
                    $qb = $rep->createQueryBuilder('p');
78 1
                    if ($performanceEventId) {
79 1
                        $qb ->where('p.id = :performanceEvent_id')
80 1
                            ->setParameter('performanceEvent_id', $performanceEventId);
81
                    }
82 1
                    return $qb;
83 1
                }
84
            ])
85
        ;
86 1
    }
87
}
88