Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
61 / 61
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
AddressType
100.00% covered (success)
100.00%
61 / 61
100.00% covered (success)
100.00%
2 / 2
2
100.00% covered (success)
100.00%
1 / 1
 buildForm
100.00% covered (success)
100.00%
54 / 54
100.00% covered (success)
100.00%
1 / 1
1
 configureOptions
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3/**
4 * This file is part of the MADIS - RGPD Management application.
5 *
6 * @copyright Copyright (c) 2018-2019 Soluris - Solutions Numériques Territoriales Innovantes
7 *
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU Affero General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Affero General Public License for more details.
17 *
18 * You should have received a copy of the GNU Affero General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
20 */
21
22declare(strict_types=1);
23
24namespace App\Domain\Registry\Form\Type\Embeddable;
25
26use App\Domain\Registry\Model\Embeddable\Address;
27use Symfony\Component\Form\AbstractType;
28use Symfony\Component\Form\Extension\Core\Type\EmailType;
29use Symfony\Component\Form\Extension\Core\Type\TextType;
30use Symfony\Component\Form\FormBuilderInterface;
31use Symfony\Component\OptionsResolver\OptionsResolver;
32
33class AddressType extends AbstractType
34{
35    /**
36     * Build type form.
37     */
38    public function buildForm(FormBuilderInterface $builder, array $options)
39    {
40        $required = \in_array('contractor', $options['validation_groups']);
41
42        $builder
43            ->add('lineOne', TextType::class, [
44                'label'    => 'global.label.address.line_one',
45                'required' => $required,
46                'attr'     => [
47                    'maxlength' => 255,
48                ],
49                'purify_html' => true,
50            ])
51            ->add('lineTwo', TextType::class, [
52                'label'    => 'global.label.address.line_two',
53                'required' => false,
54                'attr'     => [
55                    'maxlength' => 255,
56                ],
57                'purify_html' => true,
58            ])
59            ->add('city', TextType::class, [
60                'label'    => 'global.label.address.city',
61                'required' => $required,
62                'attr'     => [
63                    'maxlength' => 255,
64                ],
65                'purify_html' => true,
66            ])
67            ->add('zipCode', TextType::class, [
68                'label'    => 'global.label.address.zip_code',
69                'required' => $required,
70                'attr'     => [
71                    'maxlength' => 5,
72                ],
73                'purify_html' => true,
74            ])
75            ->add('mail', EmailType::class, [
76                'label'    => 'global.label.contact.email',
77                'required' => $required,
78                'attr'     => [
79                    'maxlength' => 255,
80                ],
81            ])
82            ->add('phoneNumber', TextType::class, [
83                'label'       => 'global.label.contact.phone_number',
84                'required'    => $required,
85                'purify_html' => true,
86            ])
87            ->add('country', TextType::class, [
88                'label'    => 'global.label.address.country',
89                'required' => $required,
90                'attr'     => [
91                    'maxlength' => 255,
92                ],
93                'purify_html' => true,
94            ]);
95    }
96
97    /**
98     * Provide type options.
99     */
100    public function configureOptions(OptionsResolver $resolver)
101    {
102        $resolver
103            ->setDefaults([
104                'data_class'        => Address::class,
105                'validation_groups' => [
106                    'default',
107                ],
108            ]);
109    }
110}