HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
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';
    }
}