Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 43
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
AnalyseImpactType
0.00% covered (danger)
0.00%
0 / 43
0.00% covered (danger)
0.00%
0 / 2
182
0.00% covered (danger)
0.00%
0 / 1
 finishView
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
72
 buildForm
0.00% covered (danger)
0.00%
0 / 30
0.00% covered (danger)
0.00%
0 / 1
30
1<?php
2
3declare(strict_types=1);
4
5namespace App\Domain\AIPD\Form\Type;
6
7use App\Domain\AIPD\Dictionary\BaseCriterePrincipeFondamental;
8use App\Domain\AIPD\Model\CriterePrincipeFondamental;
9use Symfony\Component\Form\AbstractType;
10use Symfony\Component\Form\Extension\Core\Type\CollectionType;
11use Symfony\Component\Form\FormBuilderInterface;
12use Symfony\Component\Form\FormInterface;
13use Symfony\Component\Form\FormView;
14
15class AnalyseImpactType extends AbstractType
16{
17    public function finishView(FormView $view, FormInterface $form, array $options)
18    {
19        switch ($options['flow_step']) {
20            case 1:
21
22                usort($view['criterePrincipeFondamentaux']->children, function (FormView $a, FormView $b) {
23                    /** @var CriterePrincipeFondamental $objectA */
24                    $objectA = $a->vars['data'];
25                    /** @var CriterePrincipeFondamental $objectB */
26                    $objectB = $b->vars['data'];
27
28                    $order = \array_flip(array_keys(BaseCriterePrincipeFondamental::getBaseCritere()));
29
30                    $posA = $objectA->getCode() && in_array($objectA->getCode(), $order) ? $order[$objectA->getCode()] : 0;
31                    $posB = $objectB->getCode() && in_array($objectB->getCode(), $order) ? $order[$objectB->getCode()] : 0;
32
33                    if ($posA == $posB) {
34                        return 0;
35                    }
36
37                    return ($posA < $posB) ? -1 : 1;
38                });
39                break;
40        }
41    }
42
43    public function buildForm(FormBuilderInterface $builder, array $options)
44    {
45        switch ($options['flow_step']) {
46            case 1:
47                $builder
48                    ->add('criterePrincipeFondamentaux', CollectionType::class, [
49                        'entry_type' => AnalyseCriterePrincipeFondamentalType::class,
50                        'required'   => true,
51                    ]);
52                break;
53            case 2:
54                $builder
55                    ->add('questionConformites', CollectionType::class, [
56                        'entry_type' => AnalyseQuestionConformiteType::class,
57                        'required'   => true,
58                    ]);
59                break;
60            case 3:
61                $builder
62                    ->add('scenarioMenaces', CollectionType::class, [
63                        'entry_type' => AnalyseScenarioMenaceType::class,
64                    ]);
65                break;
66            case 4:
67                $builder
68                    ->add('mesureProtections', CollectionType::class, [
69                        'entry_type'    => AnalyseMesureProtectionType::class,
70                        'entry_options' => [
71                            'aipd' => $options['data'],
72                        ],
73                    ]);
74                break;
75        }
76    }
77}