<?php
namespace App\Form;
use App\Component\Configuration\Util\Config;
use App\Component\ReCaptcha\Form\ReCaptchaType;
use App\Entity\VRQuote;
use Doctrine\ORM\EntityManagerInterface;
use Flagception\Manager\FeatureManagerInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class VRQuoteType extends AbstractType
{
/**
* @var EntityManagerInterface
*/
protected $manager;
/**
* @var FeatureManagerInterface
*/
protected $featureManager;
/**
* @var ParameterBagInterface
*/
private $config;
private $hotelChoices = [
'3 sterren' => 3,
'4 sterren' => 4,
'5 sterren' => 5,
];
private $transportChoices = [
'Eigen vervoer' => 'Eigen vervoer',
'Vliegtuig' => 'Vliegtuig',
'Trein' => 'Trein',
'Boot' => 'Boot',
];
/**
* ContactType constructor.
*/
public function __construct(
EntityManagerInterface $manager,
FeatureManagerInterface $featureManager,
Config $config,
) {
$this->manager = $manager;
$this->featureManager = $featureManager;
$this->config = $config;
}
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
->add('lastname')
->add('city')
->add('companyname')
->add('telephone')
->add('email')
->add('matchChoice', TextType::class, [
'required' => true,
])
->add('dateFrom', DateType::class, [
'widget' => 'single_text',
'required' => false,
])
->add('dateUntil', DateType::class, [
'widget' => 'single_text',
'required' => false,
])
->add('transportation', ChoiceType::class, [
'choices' => $this->transportChoices,
])
->add('numberOfPersons', TextType::class, [
'required' => true,
])
->add('budget')
->add('typeHotel', ChoiceType::class, [
'choices' => $this->hotelChoices,
])
->add('remarks')
->add('recaptcha', ReCaptchaType::class);
if ($this->config->get('site_contact_privacy_statement_option')) {
$builder->add('privacy_statement', CheckboxHtmlType::class, [
'label' => $this->config->get('site_contact_privacy_statement_text'),
'mapped' => false,
'required' => true,
]);
}
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => VRQuote::class,
'translation_domain' => 'contact',
'attr' => [
'class' => 'recaptcha-form',
],
'recaptcha_vrquote' => null,
]);
}
}