Feature: [export][acp] filter by acp which have an evaluation: use

select2
This commit is contained in:
Julien Fastré 2022-10-13 15:32:09 +02:00
parent 5a94ce49f1
commit 75f6c8754e

View File

@ -15,7 +15,7 @@ use Chill\MainBundle\Export\FilterInterface;
use Chill\MainBundle\Templating\TranslatableStringHelper; use Chill\MainBundle\Templating\TranslatableStringHelper;
use Chill\PersonBundle\Entity\SocialWork\Evaluation; use Chill\PersonBundle\Entity\SocialWork\Evaluation;
use Chill\PersonBundle\Export\Declarations; use Chill\PersonBundle\Export\Declarations;
use Doctrine\ORM\Query\Expr\Andx; use Chill\PersonBundle\Repository\SocialWork\EvaluationRepositoryInterface;
use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\QueryBuilder;
use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
@ -23,11 +23,15 @@ use function in_array;
class EvaluationFilter implements FilterInterface class EvaluationFilter implements FilterInterface
{ {
private EvaluationRepositoryInterface $evaluationRepository;
private TranslatableStringHelper $translatableStringHelper; private TranslatableStringHelper $translatableStringHelper;
public function __construct( public function __construct(
EvaluationRepositoryInterface $evaluationRepository,
TranslatableStringHelper $translatableStringHelper TranslatableStringHelper $translatableStringHelper
) { ) {
$this->evaluationRepository = $evaluationRepository;
$this->translatableStringHelper = $translatableStringHelper; $this->translatableStringHelper = $translatableStringHelper;
} }
@ -50,16 +54,8 @@ class EvaluationFilter implements FilterInterface
$qb->join('workeval.evaluation', 'eval'); $qb->join('workeval.evaluation', 'eval');
} }
$where = $qb->getDQLPart('where');
$clause = $qb->expr()->in('eval.id', ':evaluations'); $clause = $qb->expr()->in('eval.id', ':evaluations');
$qb->andWhere($clause);
if ($where instanceof Andx) {
$where->add($clause);
} else {
$where = $qb->expr()->andX($clause);
}
$qb->add('where', $where);
$qb->setParameter('evaluations', $data['accepted_evaluations']); $qb->setParameter('evaluations', $data['accepted_evaluations']);
} }
@ -72,11 +68,13 @@ class EvaluationFilter implements FilterInterface
{ {
$builder->add('accepted_evaluations', EntityType::class, [ $builder->add('accepted_evaluations', EntityType::class, [
'class' => Evaluation::class, 'class' => Evaluation::class,
'choices' => $this->evaluationRepository->findAllActive(),
'choice_label' => function (Evaluation $ev) { 'choice_label' => function (Evaluation $ev) {
return $this->translatableStringHelper->localize($ev->getTitle()); return $this->translatableStringHelper->localize($ev->getTitle());
}, },
'multiple' => true, 'multiple' => true,
'expanded' => true, 'expanded' => false,
'attr' => ['class' => 'select2'],
]); ]);
} }