TeamRulesSelectorForm   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 23
c 2
b 0
f 0
dl 0
loc 38
ccs 0
cts 22
cp 0
rs 10
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A buildForm() 0 18 3
A configureOptions() 0 5 1
1
<?php
2
3
namespace Obblm\Core\Form\Team;
4
5
use Obblm\Core\Entity\Team;
6
use Obblm\Core\Helper\CoreTranslation;
7
use Obblm\Core\Helper\RuleHelper;
8
use Symfony\Component\Form\AbstractType;
9
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
10
use Symfony\Component\Form\FormBuilderInterface;
11
use Symfony\Component\OptionsResolver\OptionsResolver;
12
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
13
14
class TeamRulesSelectorForm extends AbstractType
15
{
16
    protected $coach;
17
    protected $ruleHelper;
18
19
    public function __construct(TokenStorageInterface $tokenStorage, RuleHelper $ruleHelper)
20
    {
21
        $this->coach = $tokenStorage->getToken()->getUser();
22
        $this->ruleHelper = $ruleHelper;
23
    }
24
25
    public function buildForm(FormBuilderInterface $builder, array $options)
26
    {
27
        if ($builder->getData()) {
28
            $team = $builder->getData();
29
            $rule = $team->getRule();
30
            $rosters = $this->ruleHelper->getAvailableRosters($rule);
31
            $choices = [];
32
            foreach ($rosters as $roster) {
33
                $translationKey = CoreTranslation::getRosterKey($rule->getRuleKey(), $roster);
34
                $choices[$translationKey] = $roster;
35
            }
36
            ksort($choices);
37
            $builder
38
                ->add('name', null, ['required' => true])
39
                ->add('roster', ChoiceType::class, [
40
                'choices' => $choices,
41
                'required' => true,
42
                'choice_translation_domain' => $rule->getRuleKey() ?? false
43
            ]);
44
        }
45
    }
46
47
    public function configureOptions(OptionsResolver $resolver)
48
    {
49
        $resolver->setDefaults(array(
50
            'translation_domain' => 'obblm',
51
            'data_class' => Team::class,
52
        ));
53
    }
54
}
55