<?php
namespace App\Form\GuardianRegister;
use App\Entity\GuardianRegister\GuardianRegisterChild;
use App\Entity\GuardianRegister\GuardianRegisterChildPreference;
use App\Utils\HelperUtils;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ButtonType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class GuardianRegisterChildType extends AbstractType
{
private UrlGeneratorInterface $urlGenerator;
public function __construct(UrlGeneratorInterface $urlGenerator)
{
$this->urlGenerator = $urlGenerator;
}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$availabilityUrl = $this->urlGenerator->generate('teacher_availability_index');
$availabilityQuantityUrl = $this->urlGenerator->generate('teacher_availability_quantity');
$builder
->add('name', null, [
'label' => 'guardian_register.firstname',
// 'data' => 'Vardas1'
])
->add('email', null, [
'label' => 'guardian_register.email',
// 'data' => 'Vardas1'
])
->add('class', ChoiceType::class, [
'choices' => [
"<1" => 0,
1 => 1,
2 => 2,
3 => 3,
4 => 4,
5 => 5,
6 => 6,
7 => 7,
8 => 8,
9 => 9,
10 => 10,
11 => 11,
12 => 12,
">12" => 13,
],
'multiple' => false,
'label' => 'forms.labels.class'
])
->add('admin_comment', null, [
'row_attr' => [
'class' => '',
],
])
->add('calendar', null, [
'label' => false,
'mapped' => false,
'row_attr' => [
'class' => 'calendar-block',
],
]
);
$subForm = $builder->create("fittingTimesWrap", FormType::class, [
// 'by_reference' => false,
// 'mapped' => false,
'label' => false,
'inherit_data' => true,
'row_attr' => ['class' => 'fittingTimesWrap'],
])
->add('fittingTimes', TextAreaType::class, [
'label' => 'forms.labels.fittingTimes',
'attr' => ['readonly' => true, 'rows' => 5,],
'row_attr' => [
'class' => 'text-block',
],
'required' => false,
])
->add('fittingTimesPriority', TextAreaType::class, [
'label' => 'Prioritetiniai užsiėmimų laikai',
'attr' => ['readonly' => true, 'rows' => 4,],
'row_attr' => [
'class' => 'text-block',
],
'required' => false,
])
->add('flagRU', CheckboxType::class, ['label' => 'RU', 'required' => false, 'row_attr' => ['class' => 'fit-inline']])
->add('flagPL', CheckboxType::class, ['label' => 'PL', 'required' => false, 'row_attr' => ['class' => 'fit-inline']])
->add('flagENG', CheckboxType::class, ['label' => 'ENG', 'required' => false, 'row_attr' => ['class' => 'fit-inline']])
->add('flagIB', CheckboxType::class, ['label' => 'IB', 'required' => false, 'row_attr' => ['class' => 'fit-inline']])
->add('flagIelts', CheckboxType::class, ['label' => 'IELTS', 'required' => false, 'row_attr' => ['class' => 'fit-inline']])
->add('flagDyslexia', CheckboxType::class, ['label' => 'Disleksija', 'required' => false, 'row_attr' => ['class' => 'fit-inline']])
->add('flagSensitive', CheckboxType::class, ['label' => 'Jautrus', 'required' => false, 'row_attr' => ['class' => 'fit-inline']])
->add('flagStrict', CheckboxType::class, ['label' => 'Griežtumo reikia', 'required' => false, 'row_attr' => ['class' => 'fit-inline']])
->add('vbeOver90', CheckboxType::class, ['label' => 'VBE nuo 90', 'required' => false, 'row_attr' => ['class' => 'fit-inline']])
->add('experienceOver12Month', CheckboxType::class, ['label' => 'Patirtis nuo 12 mėn', 'required' => false, 'row_attr' => ['class' => 'fit-inline']])
->add('flagExperienceAtSchool', CheckboxType::class, ['label' => 'Turi patirties dirbant mokykloje / turi pedagoginį išsilavinimą', 'required' => false, 'row_attr' => ['class' => 'fit-inline']])
->add('gender', ChoiceType::class, [
'choices' => [
"Nesvarbu" => "Nesvarbu",
"Mergina" => "Mergina",
"Vaikinas" => "Vaikinas",
],
'label' => 'Mergina/Vaikinas',
'required' => false,
])
->add('school', ChoiceType::class, [
'label' => 'Mokykla, kurioje mokėsi tutor',
'choices' => HelperUtils::getSchools(),
'placeholder' => 'Prašome pasirinkti',
'required' => false,
]);
// $builder->add('fittingTimes', null, [
// 'label' => 'forms.labels.fittingTimes',
// 'attr' => ['readonly' => true, 'rows' => 5,],
// 'row_attr' => [
// 'class' => 'text-block',
// ],
// ])
// ->add('fittingTimesPriority', null, [
// 'label' => 'Prioritetiniai užsiėmimų laikai',
// 'attr' => ['readonly' => true, 'rows' => 5,],
// 'row_attr' => [
// 'class' => 'text-block',
// ],
// ]);
$builder->add($subForm);
$builder->add('guardianRegisterChildPreferences', CollectionType::class, [
'entry_type' => GuardianRegisterChildPreferenceType::class,
'allow_add' => true,
'allow_delete' => true,
'prototype' => true,
'prototype_data' => (new GuardianRegisterChildPreference())->setDuration(60)->setAmount(2),
'prototype_name' => '__guardianRegisterChildPreferencesName__',
'attr' => [
'inline-add' => true,
'btn-delete-label' => 'Naikinti nustatymą',
'btn-add-label' => 'Pridėti nustatymą',
'class' => 'add-new',
'data-widget-tags' => 'flex-add-new',
'data-widget-delete' => '<button class="btn btn-danger" type="button" onclick="this.parentNode.parentNode.remove()">Naikinti nustatymą</button>'
],
'row_attr' => [
'class' => 'collection-type-flex',
],
'label' => 'guardian_register.guardianRegisterChildPreferences'
])
->add('tutorBadge', FormType::class, [
'label' => 'Laisvi korepetitoriai <span class="pill-count">0</span> <button type="submit" class="pill-preview-action pill-preview-action-search" formmethod="post" formaction="' . $availabilityUrl . '" formtarget="_blank" formnovalidate><i class="ti-search"></i></button> <button type="button" class="pill-preview-action pill-preview-action-reload" data-url="' . $availabilityQuantityUrl . '"><i class="ti-reload"></i></button>',
'label_html' => true,
'mapped' => false,
'required' => false,
'row_attr' => [
'class' => 'pill-preview-row',
],
'label_attr' => [
'class' => 'pill-preview-label',
],
])
->add('tutorComment');
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => GuardianRegisterChild::class,
]);
}
}