<?php
namespace App\Form\Type\GIRDirectMail;
use App\Entity\GIRDirectMail\Etape0;
use App\Form\Type\ReCaptchaType;
use App\Service\SessionManagerLMDVInterface;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TelType;
use Symfony\Contracts\Translation\TranslatorInterface;
class Etape0Type extends AbstractType
{
const MAX_ADULTS = 10;
const MAX_CHILDREN = 10;
/**
* @var \Symfony\Contracts\Translation\TranslatorInterface
*/
protected $translator;
/**
* @var \App\Service\SessionManagerLMDV
*/
protected $sm;
public function __construct(TranslatorInterface $translator, SessionManagerLMDVInterface $sm) {
$this->translator = $translator;
$this->sm = $sm;
}
/**
*
* {@inheritDoc}
* @see \Symfony\Component\Form\AbstractType::configureOptions()
*/
public function configureOptions(OptionsResolver $resolver) {
$resolver->setDefaults([
'data_class' => Etape0::class,
]);
}
/**
*
* {@inheritDoc}
* @see \Symfony\Component\Form\AbstractType::buildForm()
*/
public function buildForm(FormBuilderInterface $builder, array $options) {
$this->sm->setEntityNamespace('App\Entity\GIRDirectMail');
$voyage = $this->sm->getDataFromSession();
$min_adults = max(1, $voyage->getAdults());
$min_children = max(0, $voyage->getChildren());
$choices_adults = [];
for($i = $min_adults; $i < self::MAX_ADULTS; $i++) {
$choices_adults[$this->translator->trans("etape0.adults.counter", ['count' => $i])] = $i;
}
$choices_children = [];
for($i = $min_children; $i < self::MAX_CHILDREN; $i++) {
$choices_children[$this->translator->trans("etape0.children.counter", ['count' => $i])] = $i;
}
$builder
->add('nbrAdultes', ChoiceType::class, [
'choices' => $choices_adults,
'choice_translation_domain' => FALSE
//'disabled' => TRUE,
])
->add('nbrEnfants', ChoiceType::class, [
'choices' => $choices_children,
'choice_translation_domain' => FALSE
//'disabled' => TRUE,
])
->add('villeDepart', TextType::class, [
'label' => 'etape0.form.ville_depart',
'required' => TRUE,
'disabled' => TRUE,
])
->add('codeSociete', TextType::class, [
'label' => 'etape0.form.code_societe',
'required' => TRUE,
'disabled' => TRUE,
])
->add('nomVendeur', TextType::class, [
'label' => 'etape0.form.nom',
'required' => TRUE,
'disabled' => TRUE,
])
->add('prenomVendeur', TextType::class, [
'label' => 'etape0.form.prenom',
'required' => TRUE,
'disabled' => TRUE,
])
->add('telVendeur', TelType::class, [
'label' => 'etape0.form.tel',
'required' => TRUE,
'disabled' => TRUE,
])
->add('mailVendeur', EmailType::class, [
'label' => 'etape0.form.mail',
'required' => TRUE,
'disabled' => TRUE,
])
->add('codeAgent', TextType::class, [
'label' => 'etape0.form.code_agent',
'required' => TRUE,
'disabled' => TRUE,
])
->add('captcha', ReCaptchaType::class, [
'mapped' => FALSE,
'type' => 'invisible' // (invisible, checkbox)
])
->add('next', SubmitType::class, ['attr' => ['class' => 'use_captcha']])
;
}
}