<?php
namespace App\Form;
use App\Entity\Admin;
use App\Entity\Child;
use App\Entity\Lesson;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class BugReportForm extends AbstractType
{
private UrlGeneratorInterface $urlGenerator;
public function __construct(UrlGeneratorInterface $urlGenerator)
{
$this->urlGenerator = $urlGenerator;
// you *must* call the parent constructor
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
// Dynamic form building
$url = $this->urlGenerator->generate('bug_report_form');
$builder
->setAction($url);
if($options['required'] === true) {
$builder->add('status', ChoiceType::class,[
'choices' => [
"Naujas"=>"0",
"Vykdomas"=>"1",
"Laukiama PR"=>"4",
"Išspręstas"=>"2",
"Atšauktas"=>"3",
],
'label' => 'Statusas'
]);
}
$builder
->add('timeInMinutes', IntegerType::class, [
'label' => 'Time in minutes'
])
->add('priority', ChoiceType::class, [
'choices' => [
"Low"=>"low",
"Medium"=>"medium",
"High"=>"high",
],
'label' => 'Proritetas'
])
->add('difficultiesFor', ChoiceType::class, [
'choices' => [
"forms.labels.admin"=>"Admin",
"forms.labels.teacher"=>"Korepetitoriui",
"forms.labels.guardian"=>"Globejui",
"forms.labels.child"=>"Mokiniui",
],
'label' => 'Kam tai nutiko?'
])
->add('stepsToReproduce', TextareaType::class,[
'label' => 'Dabartinis veikimas / problema',
'required' => false,
])
->add('message', TextareaType::class,[
'label' => 'Žingsniai, kaip nutiko problema?',
'required' => false,
'attr'=>[
'class'=>"tinymce"
],
]);
if($options['required'] === false) {
$builder->add('currentUrl', HiddenType::class, [
'required' => false,
'attr' => [
'id' => "currentUrl"
],
]);
}
if($options['required'] === true) {
$builder->add('currentUrl', TextType::class, [
'required' => false,
'attr' => [
'id' => "currentUrl"
],
]);
$builder->add('adminComment', TextareaType::class, [
'label' => 'Admin komentaras',
'required' => false,
]);
$builder->add('assignee', EntityType::class, [
'class' => Admin::class,
'query_builder' => fn($repo) => $repo->createQueryBuilder('a')
->where('a.department = :dept')
->andWhere('a.active = :active')
->setParameter('dept', Admin::DEPARTMENT_DEV)
->setParameter('active', true)
->orderBy('a.fullname', 'ASC'),
'choice_label' => 'fullname',
'label' => 'Atsakingas',
'required' => false,
'placeholder' => '- Nepriskirtas -',
]);
}
if($options['required'] === false) {
$builder->add('status', HiddenType::class,[
'required' => false,
]);
}
}
}