From de7ba29853544aa15c5d30827564457349397ef2 Mon Sep 17 00:00:00 2001 From: Mathieu Jaumotte Date: Sun, 16 Oct 2022 18:38:00 +0200 Subject: [PATCH] issue641: form select2 list activated socialissues and sort by ordering --- .../Form/Type/Select2SocialIssueType.php | 11 +++++++++-- .../SocialWork/SocialIssueRepository.php | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/Bundle/ChillPersonBundle/Form/Type/Select2SocialIssueType.php b/src/Bundle/ChillPersonBundle/Form/Type/Select2SocialIssueType.php index aeaeafe34..615c2830d 100644 --- a/src/Bundle/ChillPersonBundle/Form/Type/Select2SocialIssueType.php +++ b/src/Bundle/ChillPersonBundle/Form/Type/Select2SocialIssueType.php @@ -12,6 +12,7 @@ declare(strict_types=1); namespace Chill\PersonBundle\Form\Type; use Chill\PersonBundle\Entity\SocialWork\SocialIssue; +use Chill\PersonBundle\Repository\SocialWork\SocialIssueRepository; use Chill\PersonBundle\Templating\Entity\SocialIssueRender; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; @@ -21,9 +22,14 @@ class Select2SocialIssueType extends AbstractType { private SocialIssueRender $issueRender; - public function __construct(SocialIssueRender $issueRender) - { + private SocialIssueRepository $issueRepository; + + public function __construct( + SocialIssueRender $issueRender, + SocialIssueRepository $issueRepository + ) { $this->issueRender = $issueRender; + $this->issueRepository = $issueRepository; } public function configureOptions(OptionsResolver $resolver) @@ -31,6 +37,7 @@ class Select2SocialIssueType extends AbstractType $resolver ->setDefaults([ 'class' => SocialIssue::class, + 'choices' => $this->issueRepository->findIssuesNotDesactivated(), 'choice_label' => function (SocialIssue $si) { return $this->issueRender->renderString($si, []); }, diff --git a/src/Bundle/ChillPersonBundle/Repository/SocialWork/SocialIssueRepository.php b/src/Bundle/ChillPersonBundle/Repository/SocialWork/SocialIssueRepository.php index 27b4ed4e9..0c18cd970 100644 --- a/src/Bundle/ChillPersonBundle/Repository/SocialWork/SocialIssueRepository.php +++ b/src/Bundle/ChillPersonBundle/Repository/SocialWork/SocialIssueRepository.php @@ -14,6 +14,7 @@ namespace Chill\PersonBundle\Repository\SocialWork; use Chill\PersonBundle\Entity\SocialWork\SocialIssue; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityRepository; +use Doctrine\ORM\QueryBuilder; use Doctrine\Persistence\ObjectRepository; final class SocialIssueRepository implements ObjectRepository @@ -61,4 +62,21 @@ final class SocialIssueRepository implements ObjectRepository { return SocialIssue::class; } + + public function findIssuesNotDesactivated(): array + { + return $this->buildQueryWithDesactivatedDateCriteria()->getQuery()->getResult(); + } + + private function buildQueryWithDesactivatedDateCriteria(): QueryBuilder + { + $qb = $this->repository->createQueryBuilder('si'); + + $qb ->where('si.desactivationDate is null') + ->orWhere('si.desactivationDate > :now') + ->orderBy('si.ordering', 'ASC') + ->setParameter('now', new \DateTime('now')); + + return $qb; + } }