<?php
namespace App\Form;
use App\Entity\Commission;
use App\Entity\User;
use App\Repository\CommissionRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
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\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Contracts\Translation\TranslatorInterface;
class UserType extends AbstractType
{
private TranslatorInterface $translator;
public function __construct(TranslatorInterface $translator)
{
$this->translator = $translator;
}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('username', TextType::class, [
'label' => $this->translator->trans('username') . '*',
'attr' => [
'class' => 'form-control mb-3 border border-danger',
'placeholder' => $this->translator->trans('username') . '*',
],
'required' => true,
])
->add('email', EmailType::class, [
'label' => $this->translator->trans('email') . '*',
'attr' => [
'class' => 'form-control mb-3 border border-danger',
'placeholder' => $this->translator->trans('email') . '*',
],
'required' => true,
])
->add('password', TextType::class, [
'label' => $this->translator->trans('passwd') . '*',
'attr' => [
'class' => 'form-control mb-3 border border-danger',
'placeholder' => $this->translator->trans('passwd') . '*',
],
'empty_data' => '',
'required' => true,
])
->add('company_name', TextType::class, [
'label' => $this->translator->trans('company') . '*',
'attr' => [
'class' => 'form-control mb-3 border border-danger',
'placeholder' => $this->translator->trans('company') . '*',
],
'required' => true,
])
->add('vat_id', TextType::class, [
'label' => $this->translator->trans('vatId'),
'attr' => [
'class' => 'form-control mb-3',
'placeholder' => $this->translator->trans('vatId'),
],
'required' => false,
])
->add('salutation', ChoiceType::class, [
'label' => $this->translator->trans('salutation'),
'choices' => [
$this->translator->trans('mr') => $this->translator->trans('mr'),
$this->translator->trans('mrs') => $this->translator->trans('mrs'),
],
'attr' => [
'class' => 'form-select mb-3',
'placeholder' => $this->translator->trans('salutation'),
],
'required' => false,
])
->add('first_name', TextType::class, [
'label' => $this->translator->trans('firstName') . '*',
'attr' => [
'class' => 'form-control mb-3 border border-danger',
'placeholder' => $this->translator->trans('firstName') . '*',
],
'required' => true,
])
->add('last_name', TextType::class, [
'label' => $this->translator->trans('lastName') . '*',
'attr' => [
'class' => 'form-control mb-3 border border-danger',
'placeholder' => $this->translator->trans('lastName') . '*',
],
'required' => true,
])
->add('street', TextType::class, [
'label' => $this->translator->trans('streetAndNumber') . '*',
'attr' => [
'class' => 'form-control mb-3 border border-danger',
'placeholder' => $this->translator->trans('streetAndNumber') . '*',
],
'required' => true,
])
->add('street_additional', TextType::class, [
'label' => $this->translator->trans('streetAdditional'),
'attr' => [
'class' => 'form-control mb-3',
'placeholder' => $this->translator->trans('streetAdditional'),
],
'required' => false,
])
->add('zip_code', TextType::class, [
'label' => $this->translator->trans('zipCode') . '*',
'attr' => [
'class' => 'form-control mb-3 border border-danger',
'placeholder' => $this->translator->trans('zipCode') . '*',
],
'required' => true,
])
->add('city', TextType::class, [
'label' => $this->translator->trans('city') . '*',
'attr' => [
'class' => 'form-control mb-3 border border-danger',
'placeholder' => $this->translator->trans('city') . '*',
],
'required' => true,
])
->add('phone', TextType::class, [
'label' => $this->translator->trans('phone') . '*',
'attr' => [
'class' => 'form-control mb-3 border border-danger',
'placeholder' => $this->translator->trans('phone') . '*',
],
'required' => true,
])
->add('country', ChoiceType::class, [
'label' => $this->translator->trans('country') . '*',
'choices' => [
$this->translator->trans('germany') => $this->translator->trans('germany'),
$this->translator->trans('austria') => $this->translator->trans('austria'),
$this->translator->trans('switzerland') => $this->translator->trans('switzerland'),
$this->translator->trans('lichtenstein') => $this->translator->trans('lichtenstein'),
$this->translator->trans('spain') => $this->translator->trans('spain'),
$this->translator->trans('uk') => $this->translator->trans('uk'),
],
'attr' => [
'class' => 'form-select mb-3 border border-danger',
'placeholder' => $this->translator->trans('country') . '*',
],
'required' => true,
])
->add('commission', EntityType::class, [
'class' => Commission::class,
'placeholder' => 'txtFormSelect',
'required' => false,
'query_builder' => function (CommissionRepository $commissionRepository) {
return $commissionRepository->createQueryBuilder('c')
->where('c.is_active = 1')
->orderBy('c.commission_name', 'ASC');
},
'attr' => [
'class' => 'form-select mb-3 border border-danger',
'placeholder' => $this->translator->trans('country') . '*',
],
])
->add('bank_name', TextType::class, [
'label' => $this->translator->trans('bankName') . '*',
'attr' => [
'class' => 'form-control mb-3 border border-danger bank',
'placeholder' => $this->translator->trans('bankName') . '*',
],
'required' => true,
])
->add('bank_account_name', TextType::class, [
'label' => $this->translator->trans('accountOwner') . '*',
'attr' => [
'class' => 'form-control mb-3 border border-danger bank',
'placeholder' => $this->translator->trans('accountOwner') . '*',
],
'required' => true,
])
->add('iban', TextType::class, [
'label' => $this->translator->trans('iban') . '*',
'attr' => [
'class' => 'form-control mb-3 border border-danger bank',
'placeholder' => $this->translator->trans('iban') . '*',
],
'required' => true,
])
->add('bic', TextType::class, [
'label' => $this->translator->trans('bic') . '*',
'attr' => [
'class' => 'form-control mb-3 border border-danger bank',
'placeholder' => $this->translator->trans('bic') . '*',
],
'required' => true,
])
->add('is_invoiced_by_shop', CheckboxType::class, [
'label' => $this->translator->trans('lang.isInvoicedByShop'),
'required' => false,
])
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => User::class,
]);
}
}