From 8689575e2f24c1e55f31fbace97efa7ed63b2d32 Mon Sep 17 00:00:00 2001 From: Christian Beeznest Date: Fri, 17 Jan 2025 16:33:12 -0500 Subject: [PATCH] User: Add ordering logic for courses and sessions list - refs #1655 --- .../Extension/CourseRelUserExtension.php | 26 +++++++++++-------- .../Repository/SessionRepository.php | 4 ++- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/CoreBundle/DataProvider/Extension/CourseRelUserExtension.php b/src/CoreBundle/DataProvider/Extension/CourseRelUserExtension.php index 15d69dcf96..ae0ae934c0 100644 --- a/src/CoreBundle/DataProvider/Extension/CourseRelUserExtension.php +++ b/src/CoreBundle/DataProvider/Extension/CourseRelUserExtension.php @@ -60,20 +60,24 @@ final class CourseRelUserExtension implements QueryCollectionExtensionInterface } } - if ($this->security->isGranted('ROLE_ADMIN')) { - return; - } - if (CourseRelUser::class === $resourceClass) { if ('collection_query' === $operation?->getName()) { - /** @var User|null $user */ - if (null === $user = $this->security->getUser()) { - throw new AccessDeniedException('Access Denied.'); - } - $rootAlias = $queryBuilder->getRootAliases()[0]; - $queryBuilder->andWhere(\sprintf('%s.user = :current_user', $rootAlias)); - $queryBuilder->setParameter('current_user', $user->getId()); + $queryBuilder->leftJoin("$rootAlias.course", 'c'); + $queryBuilder + ->orderBy('c.title', 'ASC') + ->addOrderBy("$rootAlias.sort", 'ASC') + ->addOrderBy("$rootAlias.userCourseCat", 'ASC'); + + if (!$this->security->isGranted('ROLE_ADMIN')) { + /** @var User|null $user */ + if (null === $user = $this->security->getUser()) { + throw new AccessDeniedException('Access Denied.'); + } + + $queryBuilder->andWhere(\sprintf('%s.user = :current_user', $rootAlias)); + $queryBuilder->setParameter('current_user', $user->getId()); + } } } diff --git a/src/CoreBundle/Repository/SessionRepository.php b/src/CoreBundle/Repository/SessionRepository.php index 4efc2b93ac..4276fb4d8a 100644 --- a/src/CoreBundle/Repository/SessionRepository.php +++ b/src/CoreBundle/Repository/SessionRepository.php @@ -78,7 +78,9 @@ class SessionRepository extends ServiceEntityRepository 'user' => $user, 'url' => $url, ]) - ; + ->orderBy('s.displayStartDate', 'ASC') + ->addOrderBy('s.title', 'ASC') + ->addOrderBy('s.position', 'ASC'); return $qb; }