diff --git a/.changes/unreleased/UX-20240226-143943.yaml b/.changes/unreleased/UX-20240226-143943.yaml new file mode 100644 index 000000000..84c7ffb44 --- /dev/null +++ b/.changes/unreleased/UX-20240226-143943.yaml @@ -0,0 +1,5 @@ +kind: UX +body: Order user jobs and services alphabetically in export filters +time: 2024-02-26T14:39:43.283296338+01:00 +custom: + Issue: "232" diff --git a/src/Bundle/ChillActivityBundle/Export/Filter/CreatorScopeFilter.php b/src/Bundle/ChillActivityBundle/Export/Filter/CreatorScopeFilter.php index a6ab07ade..dad670775 100644 --- a/src/Bundle/ChillActivityBundle/Export/Filter/CreatorScopeFilter.php +++ b/src/Bundle/ChillActivityBundle/Export/Filter/CreatorScopeFilter.php @@ -15,6 +15,7 @@ use Chill\ActivityBundle\Export\Declarations; use Chill\MainBundle\Entity\Scope; use Chill\MainBundle\Entity\User\UserScopeHistory; use Chill\MainBundle\Export\FilterInterface; +use Chill\MainBundle\Repository\ScopeRepositoryInterface; use Chill\MainBundle\Templating\TranslatableStringHelper; use Doctrine\ORM\Query\Expr\Join; use Doctrine\ORM\QueryBuilder; @@ -26,7 +27,8 @@ class CreatorScopeFilter implements FilterInterface private const PREFIX = 'acp_act_filter_creator_scope'; public function __construct( - private readonly TranslatableStringHelper $translatableStringHelper + private readonly TranslatableStringHelper $translatableStringHelper, + private readonly ScopeRepositoryInterface $scopeRepository, ) { } @@ -76,6 +78,7 @@ class CreatorScopeFilter implements FilterInterface $builder ->add('scopes', EntityType::class, [ 'class' => Scope::class, + 'choices' => $this->scopeRepository->findAllActive(), 'choice_label' => fn (Scope $s) => $this->translatableStringHelper->localize( $s->getName() ), diff --git a/src/Bundle/ChillCalendarBundle/Export/Filter/ScopeFilter.php b/src/Bundle/ChillCalendarBundle/Export/Filter/ScopeFilter.php index ef7c14199..179258e41 100644 --- a/src/Bundle/ChillCalendarBundle/Export/Filter/ScopeFilter.php +++ b/src/Bundle/ChillCalendarBundle/Export/Filter/ScopeFilter.php @@ -15,6 +15,7 @@ use Chill\CalendarBundle\Export\Declarations; use Chill\MainBundle\Entity\Scope; use Chill\MainBundle\Entity\User\UserScopeHistory; use Chill\MainBundle\Export\FilterInterface; +use Chill\MainBundle\Repository\ScopeRepositoryInterface; use Chill\MainBundle\Templating\TranslatableStringHelper; use Doctrine\ORM\Query\Expr\Join; use Doctrine\ORM\QueryBuilder; @@ -28,7 +29,8 @@ class ScopeFilter implements FilterInterface public function __construct( protected TranslatorInterface $translator, - private readonly TranslatableStringHelper $translatableStringHelper + private readonly TranslatableStringHelper $translatableStringHelper, + private readonly ScopeRepositoryInterface $scopeRepository ) { } @@ -76,6 +78,7 @@ class ScopeFilter implements FilterInterface $builder ->add('scope', EntityType::class, [ 'class' => Scope::class, + 'choices' => $this->scopeRepository->findAllActive(), 'choice_label' => fn (Scope $s) => $this->translatableStringHelper->localize( $s->getName() ), diff --git a/src/Bundle/ChillMainBundle/Repository/ScopeRepository.php b/src/Bundle/ChillMainBundle/Repository/ScopeRepository.php index ba4ddae9b..aa3c78270 100644 --- a/src/Bundle/ChillMainBundle/Repository/ScopeRepository.php +++ b/src/Bundle/ChillMainBundle/Repository/ScopeRepository.php @@ -12,6 +12,7 @@ declare(strict_types=1); namespace Chill\MainBundle\Repository; use Chill\MainBundle\Entity\Scope; +use Chill\MainBundle\Templating\TranslatableStringHelperInterface; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\QueryBuilder; @@ -20,7 +21,7 @@ final class ScopeRepository implements ScopeRepositoryInterface { private readonly EntityRepository $repository; - public function __construct(EntityManagerInterface $entityManager) + public function __construct(EntityManagerInterface $entityManager, private readonly TranslatableStringHelperInterface $translatableStringHelper) { $this->repository = $entityManager->getRepository(Scope::class); } @@ -45,11 +46,11 @@ final class ScopeRepository implements ScopeRepositoryInterface public function findAllActive(): array { - $qb = $this->repository->createQueryBuilder('s'); + $scopes = $this->repository->findBy(['active' => true]); - $qb->where('s.active = \'TRUE\''); + usort($scopes, fn (Scope $a, Scope $b) => $this->translatableStringHelper->localize($a->getName()) <=> $this->translatableStringHelper->localize($b->getName())); - return $qb->getQuery()->getResult(); + return $scopes; } /** diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ScopeWorkingOnCourseFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ScopeWorkingOnCourseFilter.php index 9aec79c94..554023f1a 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ScopeWorkingOnCourseFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ScopeWorkingOnCourseFilter.php @@ -84,13 +84,10 @@ readonly class ScopeWorkingOnCourseFilter implements FilterInterface public function buildForm(FormBuilderInterface $builder): void { - $scopes = $this->scopeRepository->findAllActive(); - usort($scopes, fn (Scope $a, Scope $b) => $this->translatableStringHelper->localize($a->getName()) <=> $this->translatableStringHelper->localize($b->getName())); - $builder ->add('scopes', EntityType::class, [ 'class' => Scope::class, - 'choices' => $scopes, + 'choices' => $this->scopeRepository->findAllActive(), 'choice_label' => fn (Scope $scope) => $this->translatableStringHelper->localize($scope->getName()), 'multiple' => true, 'expanded' => true, diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ScopeFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ScopeFilter.php index 2569c3d5b..9a0847cfa 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ScopeFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ScopeFilter.php @@ -13,6 +13,7 @@ namespace Chill\PersonBundle\Export\Filter\SocialWorkFilters; use Chill\MainBundle\Entity\Scope; use Chill\MainBundle\Export\FilterInterface; +use Chill\MainBundle\Repository\ScopeRepositoryInterface; use Chill\MainBundle\Service\RollingDate\RollingDate; use Chill\MainBundle\Templating\TranslatableStringHelper; use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkReferrerHistory; @@ -28,7 +29,8 @@ class ScopeFilter implements FilterInterface public function __construct( protected TranslatorInterface $translator, - private readonly TranslatableStringHelper $translatableStringHelper + private readonly TranslatableStringHelper $translatableStringHelper, + private readonly ScopeRepositoryInterface $scopeRepository ) { } @@ -60,6 +62,7 @@ class ScopeFilter implements FilterInterface $builder ->add('scope', EntityType::class, [ 'class' => Scope::class, + 'choices' => $this->scopeRepository->findAllActive(), 'choice_label' => fn (Scope $s) => $this->translatableStringHelper->localize( $s->getName() ),