<?php
namespace Czech\Form\Type;
use Czech\Model\RegisterModel;
use Czech\Validator\Client\ClientBusinessIDUnique;
use Czech\Validator\Client\ClientTaxIDUnique;
use Czech\Validator\Password\PasswordMatch;
use Czech\Validator\User\UserEmailUnique;
use Karser\Recaptcha3Bundle\Form\Recaptcha3Type;
use Karser\Recaptcha3Bundle\Validator\Constraints\Recaptcha3;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\IsTrue;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\NotNull;
class RegisterType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('firstName', TextType::class, [
'required' => false,
'attr' => [
'placeholder' => 'ui.firstName',
'class' => 'intro-x login__input form-control py-3 px-4 block'
],
'constraints' => [new NotBlank()],
'label' => false
])
->add('lastName', TextType::class, [
'required' => false,
'attr' => [
'placeholder' => 'ui.lastName',
'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
],
'constraints' => [new NotBlank()],
'label' => false
])
->add('email', EmailType::class, [
'required' => false,
'attr' => [
'placeholder' => 'ui.email',
'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
],
'constraints' => [new NotBlank(), new UserEmailUnique()],
'label' => false
])
->add('password', PasswordType::class, [
'required' => false,
'attr' => [
'placeholder' => 'ui.password',
'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
],
'constraints' => [new NotBlank(), new Length(['min' => 8])],
'label' => false
])
->add('repeatPassword', PasswordType::class, [
'required' => false,
'attr' => [
'placeholder' => 'ui.repeatPassword',
'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
],
'constraints' => [new NotBlank(), new Length(['min' => 8]), new PasswordMatch()],
'label' => false
])
->add('companyName', TextType::class, [
'required' => false,
'attr' => [
'placeholder' => 'ui.registerCompanyName',
'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
],
'constraints' => [new NotBlank()],
'label' => false
])
->add('businessID', TextType::class, [
'required' => false,
'attr' => [
'placeholder' => 'ui.businessID',
'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
],
'constraints' => [new NotBlank(), new Length(['min' => 6]), new ClientBusinessIDUnique()],
'label' => false
])
->add('taxID', TextType::class, [
'required' => false,
'attr' => [
'placeholder' => 'ui.taxID',
'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
],
'constraints' => [new NotBlank(), new Length(['min' => 8]), new ClientTaxIDUnique()],
'label' => false
])
->add('vatPayerSelect', ChoiceType::class, [
'choices' => [
'ui.vatPayerSelectValueYes' => 1,
'ui.vatPayerSelectValueNo' => 0,
],
'required' => false,
'placeholder' => 'ui.vatPayerSelect',
'attr' => [
'style' => 'color: #ADB9C8',
'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
],
'constraints' => [new NotBlank()],
'label' => false
])
->add('type', TextType::class, [
'required' => false,
'attr' => [
'placeholder' => 'ui.type',
'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
],
'constraints' => [new NotBlank()],
'label' => false
])
->add('agree', CheckboxType::class, [
'required' => false,
'attr' => [
'class' => 'form-check-input border mr-2'
],
'constraints' => [new IsTrue(['message' => 'client.business_conditions'])],
'label' => false
])
->add('captcha', Recaptcha3Type::class, [
'constraints' => new Recaptcha3(),
'action_name' => 'register',
'locale' => 'cz',
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefault('data_class', RegisterModel::class);
}
}