<?php
// src/Form/UserType.php
namespace App\Form;
use App\Entity\User;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$userId = $options['data']->getId();
$dateDeNaissance = $options['data']->getDateDeNaissance();
$phone = $options['data']->getPhone();
$methodForSignEmail = $options['data']->isMethodForSignEmail();
$registrationForm = false;
$prefixs = [
'+7' => "+7",
'+12' => "+12",
'+20' => "+20",
'+27' => "+27",
'+30' => "+30",
'+31' => "+31",
'+32' => "+32",
'+33' => "+33",
'+34' => "+34",
'+36' => "+36",
'+39' => "+39",
'+40' => "+40",
'+41' => "+41",
'+43' => "+43",
'+44' => "+44",
'+45' => "+45",
'+46' => "+46",
'+47' => "+47",
'+48' => "+48",
'+49' => "+49",
'+51' => "+51",
'+52' => "+52",
'+53' => "+53",
'+54' => "+54",
'+55' => "+55",
'+56' => "+56",
'+57' => "+57",
'+58' => "+58",
'+60' => "+60",
'+61' => "+61",
'+62' => "+62",
'+63' => "+63",
'+64' => "+64",
'+65' => "+65",
'+66' => "+66",
'+81' => "+81",
'+82' => "+82",
'+83' => "+83",
'+84' => "+84",
'+86' => "+86",
'+90' => "+90",
'+91' => "+91",
'+92' => "+92",
'+93' => "+93",
'+94' => "+94",
'+95' => "+95",
'+98' => "+98",
'+211' => "+211",
'+212' => "+212",
'+213' => "+213",
'+216' => "+216",
'+218' => "+218",
'+220' => "+220",
'+221' => "+221",
'+222' => "+222",
'+223' => "+223",
'+224' => "+224",
'+225' => "+225",
'+226' => "+226",
'+227' => "+227",
'+228' => "+228",
'+229' => "+229",
'+230' => "+230",
'+231' => "+232",
'+232' => "+233",
'+233' => "+234",
'+235' => "+235",
'+236' => "+236",
'+237' => "+237",
'+238' => "+238",
'+239' => "+239",
'+240' => "+240",
'+241' => "+241",
'+242' => "+242",
'+243' => "+243",
'+244' => "+244",
'+245' => "+245",
'+246' => "+246",
'+247' => "+247",
'+248' => "+248",
'+249' => "+249",
'+250' => "+250",
'+251' => "+251",
'+252' => "+252",
'+253' => "+253",
'+254' => "+254",
'+255' => "+255",
'+256' => "+256",
'+257' => "+257",
'+258' => "+258",
'+260' => "+260",
'+261' => "+261",
'+262' => "+262",
'+263' => "+263",
'+264' => "+264",
'+265' => "+265",
'+266' => "+266",
'+267' => "+267",
'+268' => "+268",
'+269' => "+269",
'+290' => "+290",
'+291' => "+291",
'+297' => "+297",
'+298' => "+298",
'+299' => "+299",
'+350' => "+350",
'+351' => "+351",
'+352' => "+352",
'+353' => "+353",
'+354' => "+354",
'+355' => "+355",
'+356' => "+356",
'+357' => "+357",
'+358' => "+358",
'+359' => "+359",
'+370' => "+370",
'+371' => "+371",
'+372' => "+372",
'+373' => "+373",
'+374' => "+374",
'+375' => "+375",
'+376' => "+376",
'+377' => "+377",
'+378' => "+378",
'+380' => "+380",
'+381' => "+381",
'+382' => "+382",
'+383' => "+383",
'+385' => "+385",
'+386' => "+386",
'+387' => "+387",
'+389' => "+389",
'+420' => "+420",
'+421' => "+421",
'+422' => "+422",
'+423' => "+423",
'+500' => "+500",
'+501' => "+501",
'+502' => "+502",
'+503' => "+503",
'+504' => "+504",
'+505' => "+505",
'+506' => "+506",
'+507' => "+507",
'+508' => "+508",
'+509' => "+509",
'+590' => "+590",
'+591' => "+591",
'+592' => "+592",
'+593' => "+593",
'+594' => "+594",
'+595' => "+595",
'+596' => "+596",
'+597' => "+597",
'+598' => "+598",
'+599' => "+599",
'+670' => "+670",
'+672' => "+672",
'+673' => "+673",
'+674' => "+674",
'+675' => "+675",
'+676' => "+676",
'+677' => "+677",
'+678' => "+678",
'+679' => "+679",
'+680' => "+680",
'+681' => "+681",
'+682' => "+682",
'+683' => "+683",
'+685' => "+685",
'+686' => "+686",
'+687' => "+687",
'+688' => "+688",
'+689' => "+689",
'+690' => "+690",
'+691' => "+691",
'+692' => "+692",
'+850' => "+850",
'+852' => "+852",
'+853' => "+853",
'+855' => "+855",
'+856' => "+856",
'+880' => "+880",
'+881' => "+881",
'+882' => "+882",
'+886' => "+886",
'+960' => "+960",
'+961' => "+961",
'+962' => "+962",
'+963' => "+963",
'+964' => "+964",
'+965' => "+965",
'+966' => "+966",
'+967' => "+967",
'+968' => "+968",
'+970' => "+970",
'+971' => "+971",
'+972' => "+972",
'+973' => "+973",
'+974' => "+974",
'+975' => "+975",
'+976' => "+976",
'+977' => "+977",
'+992' => "+992",
'+993' => "+993",
'+994' => "+994",
'+995' => "+995",
'+996' => "+996",
'+998' => "+998"
];
$builder->add('email', EmailType::class, array(
'label' => 'Email*',
'attr' => array(
'placeholder' => 'j.dupont@mail.com'
)
));
$builder->add('firstName', TextType::class, array(
'label' => 'Prénom*',
'attr' => array(
'placeholder' => 'Jean',
//'pattern' => "^[_A-z0-9 ']{1,}$"
)
));
$builder->add('sex', ChoiceType::class, array(
'label' => 'État civil*',
'choices' => [
'M' => 0,
'Mme' => 1,
],
'attr' => array(
"class" => "select-2"
),
'placeholder' => false,
'required' => true
));
$builder->add('lastName', TextType::class, array(
'label' => 'Nom*',
'attr' => array(
'placeholder' => 'DUPONT'
)
));
if($phone){
$builder->add('phone', TextType::class, array(
'label' => 'Numéro de téléphone*',
'attr' => array(
"placeholder" => '0607080910',
"data-tooltip" => "Ce numéro de téléphone est utilisé pour remplir automatiquement les documents et pour la signature électronique",
)
));
$builder->add('phonePrefix', ChoiceType::class, array(
'label' => '',
'attr' => array(
"data-tooltip" => "",
"class" => "select-2",
),
'choices' => $prefixs,
'required' => true,
"placeholder" => false,
));
}
else{
$builder->add('phone', TextType::class, array(
'label' => 'Numéro de téléphone*',
'attr' => array(
"placeholder" => '0607080910',
"class" => 'phone-control',
"data-tooltip" => "Ce numéro de téléphone est utilisé pour remplir automatiquement les documents et pour la signature électronique",
),
'data' => ''
));
$builder->add('phonePrefix', ChoiceType::class, array(
'label' => '',
'attr' => array(
"data-tooltip" => "",
"class" => "select-2",
),
'choices' => $prefixs,
'required' => true,
"placeholder" => false,
'data' => "+33"
));
}
if($userId != "new-customer"){
if($dateDeNaissance != null && $dateDeNaissance != ""){
$builder->add('dateDeNaissance', TextType::class, array(
'label' => 'Date de naissance*',
'attr' => array(
"data-tooltip" => "Date de naissance",
'placeholder' => 'jj/mm/aaaa'
),
'data' => $dateDeNaissance->format("d/m/Y"),
'required' => true
));
}
else{
$builder->add('dateDeNaissance', TextType::class, array(
'label' => 'Date de naissance*',
'attr' => array(
"data-tooltip" => "Date de naissance",
'placeholder' => 'jj/mm/aaaa'
),
'required' => true
));
}
}
if($userId != "new-customer"){
$builder->add('numeroDeVoie', TextType::class, array(
'label' => 'Adresse (fiscale)*',
'attr' => array(
'placeholder' => '112 Chemin de la République',
'class' => "search_api"
),
'required' => true
));
$builder->add('codePostal', TextType::class, array(
'label' => 'Code postal*',
'attr' => array(
'placeholder' => '69000',
'class' => "code_postal_api"
),
'required' => true
));
$builder->add('ville', TextType::class, array(
'label' => 'Ville*',
'attr' => array(
'placeholder' => 'Lyon',
'class' => "ville_api"
),
'required' => true
));
$builder->add('pays', TextType::class, array(
'label' => 'Pays*',
'attr' => array(
'placeholder' => 'France',
'class' => "pays_api"
),
'required' => true
));
$builder->add('numeroDeVoie', TextType::class, array(
'label' => 'Adresse (fiscale)*',
'attr' => array(
'placeholder' => '112 Chemin de la République',
'class' => "search_api"
),
'required' => true
));
if($methodForSignEmail !== null){
$builder->add('methodForSignEmail', ChoiceType::class, array(
'label' => 'Méthode de réception du code pour la signature électronique',
'label_attr' => array(
"class" => ""
),
'attr' => array(
"data-tooltip" => ""
),
'choices' => [
'Par SMS' => 0,
'Par email' => 1,
],
'expanded' => true,
'placeholder' => false,
'required' => true
));
}
else{
$builder->add('methodForSignEmail', ChoiceType::class, array(
'label' => 'Méthode de réception du code pour la signature électronique',
'label_attr' => array(
"class" => ""
),
'attr' => array(
"data-tooltip" => ""
),
'choices' => [
'Par SMS' => 0,
'Par email' => 1,
],
'data' => 0,
'expanded' => true,
'placeholder' => false,
'required' => true
));
}
$builder->add('acceptRecevoirDocumentGarantieEmail', ChoiceType::class, array(
'label' => 'J’accepte de recevoir les documents et informations relatifs à la gestion de ma garantie par courrier électronique.',
'label_attr' => array(
"class" => ""
),
'attr' => array(
"data-tooltip" => ""
),
'choices' => [
'Oui' => 0,
'Non' => 1,
],
'expanded' => true,
'placeholder' => false,
'required' => true
));
$builder->add('acceptPropositionCommercialEmail', ChoiceType::class, array(
'label' => 'Souhaitez-vous recevoir des propositions commerciales de la part de MER par <b>courrier électronique</b> ?',
'label_attr' => array(
"class" => "small"
),
'attr' => array(
"data-tooltip" => ""
),
'choices' => [
'Oui' => 0,
'Non' => 1,
],
'expanded' => true,
'placeholder' => false,
'required' => true
));
$builder->add('acceptPropositionCommercialTelephone', ChoiceType::class, array(
'label' => 'Souhaitez-vous recevoir des propositions commerciales de la part de MER par <b>téléphone</b> ?',
'label_attr' => array(
"class" => "small"
),
'attr' => array(
"data-tooltip" => ""
),
'choices' => [
'Oui' => 0,
'Non' => 1,
],
'expanded' => true,
'placeholder' => false,
'required' => true
));
}
$builder->add('adherentDistributeur', TextType::class, array(
'label' => "Numéro d’adhérent distributeur*",
'attr' => array(
"data-tooltip" => "Numéro AGPM/GMPA/TEGO. Si non concerné, saisir 0",
"class" => "",
),
'required' => true
));
if($registrationForm){
$builder->add('plainPassword', RepeatedType::class, array(
'type' => PasswordType::class,
'first_options' => array('label' => 'Mot de passe :'),
'second_options' => array('label' => 'Mot de passe de confirmation :'),
));
}
$builder->add('save', SubmitType::class, array(
'label' => 'Enregistrer',
'attr' => array('class' => 'button blue')
));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => User::class,
));
}
}