<?php

namespace App\Form;

use App\Entity\Target;
use App\Entity\Goal;
use App\Repository\GoalRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\OptionsResolver\OptionsResolver;

class TargetType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        if($options['agenda']==2063){
            $label = 'basics.aspiration';
            $placeholder = 'basics.aspiration.placeholder';
        }else{
            $label = 'basics.goal';
            $placeholder = 'basics.goal.placeholder';
        }
        $builder
            ->add('code', TextType::class, [
                'label' => 'basics.code'
            ])
            ->add('name', TextType::class, [
                'label' => 'basics.name'
                ])
            ->add('goal', EntityType::class, [
                'label' => $label,
                'class' => Goal::class,
                'query_builder' => function(GoalRepository $items) use($options) {
                    return $items ->createQueryBuilder('g')
                                  ->where('g.agenda = :agenda')
                                  ->setParameter('agenda', $options['agenda'])
                                  ->orderBy('g.code', 'ASC');
                },
                'placeholder' => $placeholder, 
                ])
            ->add('description', TextareaType::class, [
                'label' => 'basics.description'
                ])
            ;

    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'agenda' => 0,
            'data_class' => Target::class
        ));
    }
}
