<?php

use Chill\MainBundle\Export\FilterInterface;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Chill\MainBundle\Export\ExportDataNormalizerTrait;

class MyFilter implements FilterInterface
{
    use ExportDataNormalizerTrait;

    public function getTitle()
    {
        return "some title";
    }

    public function buildForm(\Symfony\Component\Form\FormBuilderInterface $builder)
    {
        $builder->add('entity', EntityType::class, []);
    }

    public function getFormDefaultData(): array
    {
        return [];
    }

    public function describeAction($data, \Chill\MainBundle\Export\ExportGenerationContext $context)
    {
        return [];
    }

    public function addRole(): ?string
    {
        return null;
    }

    public function alterQuery(\Doctrine\ORM\QueryBuilder $qb, $data, \Chill\MainBundle\Export\ExportGenerationContext $exportGenerationContext)
    {
        // nothing to add here
    }

    public function applyOn()
    {
        return ['something'];
    }
}

?>
-----
<?php

use Chill\MainBundle\Export\FilterInterface;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Chill\MainBundle\Export\ExportDataNormalizerTrait;

class MyFilter implements FilterInterface
{
    use ExportDataNormalizerTrait;

    public function getTitle()
    {
        return "some title";
    }

    public function buildForm(\Symfony\Component\Form\FormBuilderInterface $builder)
    {
        $builder->add('entity', EntityType::class, []);
    }
    public function getNormalizationVersion(): int
    {
        return 1;
    }
    public function normalizeFormData(array $formData): array
    {
        return ['entity' => $this->normalizeDoctrineEntity($formData['entity'])];
    }
    public function denormalizeFormData(array $formData, int $fromVersion): array
    {
        return ['entity' => $this->denormalizeDoctrineEntity($formData['entity'], $this->someRepository)];
    }

    public function getFormDefaultData(): array
    {
        return [];
    }

    public function describeAction($data, \Chill\MainBundle\Export\ExportGenerationContext $context)
    {
        return [];
    }

    public function addRole(): ?string
    {
        return null;
    }

    public function alterQuery(\Doctrine\ORM\QueryBuilder $qb, $data, \Chill\MainBundle\Export\ExportGenerationContext $exportGenerationContext)
    {
        // nothing to add here
    }

    public function applyOn()
    {
        return ['something'];
    }
}

?>
