File: /var/www/dvpis2025/dvpis.kaunokolegija.lt/src/Form/MeovLecturerPlanType.php
<?php
namespace App\Form;
use App\Entity\FiveYearLecturerPlan;
use App\Repository\FiveYearLecturerPlanRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
class MeovLecturerPlanType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$isEnabledDepartmentHeadComment = $options['isEnabledDepartmentHeadComment'];
$maxHours = $options['maxHours'];
$plannedHours = $options['plannedHours'];
$lecturerId = $options['lecturerId'];
$builder
->add('meov', null, ['label' => 'Veikla', 'attr' => ['class' => 'select2'],])
->add('lecturer', null, ['label' => 'Dėstytojas', 'attr' => ['class' => 'select2'],])
->add('semester', ChoiceType::class, [
'label' => 'Semestras',
'choices' => [
'Pavasario' => '2',
'Rudens' => '1',
]
])
->add('hours', null, [
'label' => 'Planuojamos valandos (nesuplanuota: ' . $maxHours . 'h.)',
'attr' => [
'max' => $maxHours + $plannedHours,
'min' => 0,
],
])
->add('description', null, [
'label' => 'Aprašymas',
'required' => false,
'empty_data' => '',
])
;
if ($lecturerId !== null) {
$builder->add('fiveYearLecturerPlan', EntityType::class, [
'class' => FiveYearLecturerPlan::class,
'query_builder' => function (FiveYearLecturerPlanRepository $repository) use($lecturerId) {
return $repository->createQueryBuilder('f')
->join('f.lecturerAgreement', 'la')
->where('la.lecturer = :lecturer_id')
->setParameter('lecturer_id', $lecturerId);
},
'label' => '5 metų plano veikla',
'placeholder' => '-',
'required' => false,
'attr' => [
'class' => 'select2',
],
]);
}
if ($isEnabledDepartmentHeadComment) {
$builder->add('departmentHeadDescription', null, [
'label' => 'Katedros vedėjo / akademijos vadovo / centro vadovo pastabos',
'required' => false,
]);
}
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults(array(
'data_class' => 'App\Entity\MeovLecturer'
));
$resolver->setRequired(array(
'isEnabledDepartmentHeadComment',
'maxHours',
'plannedHours',
'lecturerId',
));
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix(): string
{
return 'App_meovlecturer';
}
}