From 6d0622aa38fe476b57f7a30bea0ed513963d6665 Mon Sep 17 00:00:00 2001 From: Mathieu Jaumotte Date: Mon, 31 Oct 2022 16:10:24 +0100 Subject: [PATCH] HasNoActivityFilter (in activity) --- .../Filter/ACPFilters/HasNoActivityFilter.php | 23 +++++++++++++------ .../translations/messages.fr.yml | 1 + 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/HasNoActivityFilter.php b/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/HasNoActivityFilter.php index 53abd2550..13aaf475a 100644 --- a/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/HasNoActivityFilter.php +++ b/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/HasNoActivityFilter.php @@ -11,10 +11,12 @@ declare(strict_types=1); namespace Chill\ActivityBundle\Export\Filter\ACPFilters; +use Chill\ActivityBundle\Entity\Activity; use Chill\MainBundle\Export\FilterInterface; use Chill\PersonBundle\Export\Declarations; use Doctrine\ORM\QueryBuilder; use Symfony\Component\Form\FormBuilderInterface; +use Doctrine\ORM\Query\Expr; class HasNoActivityFilter implements FilterInterface { @@ -25,11 +27,19 @@ class HasNoActivityFilter implements FilterInterface public function alterQuery(QueryBuilder $qb, $data) { + if (!in_array('activity', $qb->getAllAliases(), true)) { + $qb->join(Activity::class, 'activity', Expr\Join::WITH, 'activity.accompanyingPeriod = acp'); + } + $qb - ->andWhere( - $qb->expr()->in('', ':') - ) - ->setParameter('', $data[]); + //->andWhere('COUNT(acp.activities) IS NULL') + //TODO check this: + ->andWhere(' + NOT EXISTS ( + SELECT 1 FROM '. Activity::class .' activity + WHERE activity.accompanyingPeriod = acp + ) + '); } public function applyOn(): string @@ -39,13 +49,12 @@ class HasNoActivityFilter implements FilterInterface public function buildForm(FormBuilderInterface $builder) { - $builder->add(); + //no form needed } public function describeAction($data, $format = 'string'): array { - return ['', [ - ]]; + return ['Filtered acp which has no activities']; } public function getTitle(): string diff --git a/src/Bundle/ChillActivityBundle/translations/messages.fr.yml b/src/Bundle/ChillActivityBundle/translations/messages.fr.yml index 44c2c65dc..b0ab8ab2b 100644 --- a/src/Bundle/ChillActivityBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillActivityBundle/translations/messages.fr.yml @@ -278,6 +278,7 @@ Filter activity by userscope: Filtrer les activités par service du créateur Accepted userscope: Services Filter acp which has no activity: Filtrer les parcours qui n’ont pas d’activité +Filtered acp which has no activities: Filtrés les parcours qui n'ont pas d'activités Group acp by activity number: Grouper les parcours par nombre d’activité Group activity by sentreceived: Grouper les activités par envoyé / reçu