<?php
namespace JF\JuridicusBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use JF\JuridicusBundle\Form\Type\BundeslandType;
use JF\JuridicusBundle\Form\Type\StrasseType;
use JF\JuridicusBundle\Form\Type\KundeKenntnisseType;
use JF\JuridicusBundle\Form\Type\KundeSprachKenntnisseType;
use JF\JuridicusBundle\Form\Type\HandynummerType;
use JF\JuridicusBundle\Form\Type\OrtType;
use JF\JuridicusBundle\Form\Type\KennzifferType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Validator\Constraints\NotBlank;
use JF\JuridicusBundle\Form\EventListener\KundeSubscriber;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class KundeType extends AbstractType
{
/**
*
* @param \Symfony\Component\Form\FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$em = $options['em'];
$factory = $builder->getFormFactory();
$subscriber = new KundeSubscriber($factory, $em);
$builder
->addEventSubscriber($subscriber)
->add('bundesland', BundeslandType::class, array(
'required' => true,
'by_reference' => false,
))
->add('examen', HiddenType::class, array(
'required' => true,
))
->add('vorname')
->add('nachname')
/* changedFrom
->add('strasse', StrasseType::class, array(
'label' => 'Straße & Hausnummer',
'data_class' => 'JF\JuridicusBundle\Entity\Kunde',
))
->add('ort', OrtType::class, array(
'label' => 'PLZ & Ort',
'data_class' => 'JF\JuridicusBundle\Entity\Kunde'
)) */
->add('strasse')
->add('hausnummer')
->add('ort')
->add('plz')
->add('geburtsdatum', DateType::class, array(
'widget' => 'single_text',
'html5'=>true,
))
->add('email', RepeatedType::class, array(
'type' => EmailType::class,
'first_options' => array('label' => 'E-Mail'),
'second_options' => array('label' => 'E-Mail (Wiederholung)'),
'invalid_message' => 'Die E-Mail-Adressen stimmen nicht überein.',
))
->add('handynummer', RepeatedType::class, array(
'first_options' => array('label' => 'Handynummer'),
'second_options' => array('label' => 'Handynummer (Wiederholung)'),
'invalid_message' => 'Die Handynummern stimmen nicht überein.',
'type' => HandynummerType::class
))
->add('telefonnummer', null, array(
'required' => false
))
->add('kunde_kenntnisse', KundeKenntnisseType::class, array(
'label' => 'Besondere Interessengebiete',
'by_reference' => false,
'required' => false,
//'help' => '(Seminararbeit etc.) in einem oder mehreren Rechtsgebieten'
))
->add('kunde_englisch_kenntniss', ChoiceType::class, array(
'label' => 'Sprachlevel Englisch',
'required' => true,
'expanded' => false,
'attr' => [
'class' => 'form-select',
],
'choices' => [
'Grundkenntniss' => 'Grundkenntniss',
'Konversationssicher oder gute Kenntnisse' => 'Konversationssicher',
'fließend' => 'fließend',
'verhandlungssicher' => 'verhandlungssicher',
'Muttersprache' => 'Muttersprache'
],
))
->add('kunde_wunsch_arbeitsort', null, array(
'label' => 'Wunscharbeitsort',
'required' => true,
'help' => 'Gib bis zu drei Orte ein (Stadt oder PLZ)'
))
;
$pruefungsamt = $options['pruefungsamt'];
$kennziffer_parts = $pruefungsamt->getKennzifferParts();
if ($pruefungsamt->hasVollbestand()) {
$builder->add('export_erlaubt', null, array(
'required' => false,
));
}
$builder->add('terms_accepted', CheckboxType::class, array(
'label' => false,
'mapped' => false,
'required' => true
));
if ($kennziffer_parts > 0) {
$builder->add('kennziffer', TextType::class, array( //chanedFrom 'kennziffer' //TEST from KennzifferType::class
'label' => 'Kennziffer des Prüflings',
'error_bubbling' => false,
//'kennziffer_parts' => $kennziffer_parts, //Einkommentiert! //TEST
));
} else {
$builder->add('kennziffer', HiddenType::class, array('data' => ''));
}
}
/**
*
* @param \Symfony\Component\OptionsResolver\OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'JF\JuridicusBundle\Entity\Kunde',
));
$resolver->setRequired(array(
'em', 'pruefungsamt'
));
$resolver->setAllowedTypes('em', 'Doctrine\ORM\EntityManager');
$resolver->setAllowedTypes('pruefungsamt', 'JF\JuridicusBundle\Entity\Pruefungsamt');
/* changedFrom
$resolver->setAllowedTypes(array(
'em' => 'Doctrine\ORM\EntityManager',
'pruefungsamt' => 'JF\JuridicusBundle\Entity\Pruefungsamt',
)); */
}
/**
*
* @return string
*/
public function getKundeType()
{
return 'kunde';
}
}