<?php
namespace App\Model\Form\RegisterParty;
use App\Model\Builder\RegisterParty\UserBuilder;
use App\Model\Form\AbstractUserForm;
use App\Repository\CountryRepository;
use App\Repository\OrganizationRepository;
use App\Repository\StateRepository;
use App\Entity\Country;
use App\Entity\Organization;
use App\Entity\State;
use Gregwar\CaptchaBundle\Type\CaptchaType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\FormBuilderInterface;
/**
* Class UserForm
*/
class UserForm extends AbstractUserForm
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$isMunireg = $options['is_munireg'];
$isNonRegistered = $options['is_non_registered'];
$builder->add('department', TextType::class);
$builder->add('addressFirst', TextType::class, ['label' => 'Address 1']);
$builder->add('addressSecond', TextType::class, [
'label' => 'Address 2',
'required' => false
]);
$builder->add('city', TextType::class);
if ($isMunireg || $isNonRegistered) {
$builder->add(
'organization',
EntityType::class,
[
'class' => Organization::class,
'query_builder' => function (OrganizationRepository $organizationRepository) {
return $organizationRepository->createQueryBuilder('u')
->orderBy('u.name', 'ASC');
},
'choice_label' => 'name',
'placeholder' => '-- Choose an organization --',
]
);
}
if ($isNonRegistered) {
$builder->add('requestedOrganization', TextType::class, [
'label' => 'Organization Name',
'required' => false
]);
$builder->add('isHomeOwner', CheckboxType::class, [
'required' => false,
'data' => true,
'label' => 'Individual User',
]);
$builder->add('registeringOrganization', CheckboxType::class, [
'required' => false,
'label' => 'Registering Organization',
]);
}
$builder->add('zipCode', TextType::class);
$builder->add('state', EntityType::class, [
'class' => State::class,
'query_builder' => function (StateRepository $stateRepository) {
return $stateRepository->createQueryBuilder('s')
->orderBy('s.name', 'ASC');
},
'choice_label' => function (State $state) {
return $state->getName();
},
'placeholder' => '-- Choose an option --',
'required' => true
]);
$builder->add('stateName', TextType::class, ['label' => 'State']);
$isRegisterCaptcha = $options['is_captcha_for_register'];
if ($isRegisterCaptcha) {
$builder->add('captcha', CaptchaType::class, [
'length' => 6,
'background_color' => [255,255,255],
]);
}
$builder->add(
'country',
EntityType::class,
[
'class' => Country::class,
'query_builder' => function (CountryRepository $countryRepository) {
return $countryRepository->createQueryBuilder('c')
->orderBy('c.name', 'ASC');
},
'choice_label' => 'name',
'placeholder' => '-- Choose an option --'
]
);
$isNew = $options['is_new'];
if (!$isNew) {
$builder->add('enabled', CheckboxType::class);
}
$isGrantedAdmin = $options['is_granted_admin'];
if ($isGrantedAdmin) {
$builder->add('isAdmin', CheckboxType::class);
}
if ($isMunireg) {
$label = 'Register As Individual';
if (!$isNew) {
$label = 'Individual User';
}
$builder->add('registerAsIndividual', CheckboxType::class, [
'label' => $label
]);
}
if ($isMunireg) {
// $builder->add(
// 'organization',
// EntityType::class,
// [
// 'class' => Organization::class,
// 'query_builder' => function (OrganizationRepository $organizationRepository) {
// return $organizationRepository->createQueryBuilder('u')
// ->orderBy('u.name', 'ASC');
// },
// 'choice_label' => 'name',
// 'placeholder' => '-- Choose an option --',
// ]
// );
$builder->add('notes', TextareaType::class, [
'required' => false
]);
}
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(['data_class' => UserBuilder::class, 'is_granted_non_admin' => false]);
$resolver->setRequired('is_new');
$resolver->setRequired('is_munireg');
$resolver->setRequired('is_granted_admin');
$resolver->setRequired('is_non_registered');
$resolver->setRequired('is_captcha_for_register');
$resolver->setRequired('only_super_admins');
$resolver->setRequired('is_granted_non_admin');
}
/**
* {@inheritdoc}
*/
public function getName()
{
return 'user_register_party';
}
}