HasNoActivityFilter (in activity)

This commit is contained in:
Mathieu Jaumotte 2022-10-31 16:10:24 +01:00 committed by Julien Fastré
parent 0e553594a0
commit 6d0622aa38
2 changed files with 17 additions and 7 deletions

View File

@ -11,10 +11,12 @@ declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Filter\ACPFilters; namespace Chill\ActivityBundle\Export\Filter\ACPFilters;
use Chill\ActivityBundle\Entity\Activity;
use Chill\MainBundle\Export\FilterInterface; use Chill\MainBundle\Export\FilterInterface;
use Chill\PersonBundle\Export\Declarations; use Chill\PersonBundle\Export\Declarations;
use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Doctrine\ORM\Query\Expr;
class HasNoActivityFilter implements FilterInterface class HasNoActivityFilter implements FilterInterface
{ {
@ -25,11 +27,19 @@ class HasNoActivityFilter implements FilterInterface
public function alterQuery(QueryBuilder $qb, $data) 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 $qb
->andWhere( //->andWhere('COUNT(acp.activities) IS NULL')
$qb->expr()->in('', ':') //TODO check this:
) ->andWhere('
->setParameter('', $data[]); NOT EXISTS (
SELECT 1 FROM '. Activity::class .' activity
WHERE activity.accompanyingPeriod = acp
)
');
} }
public function applyOn(): string public function applyOn(): string
@ -39,13 +49,12 @@ class HasNoActivityFilter implements FilterInterface
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add(); //no form needed
} }
public function describeAction($data, $format = 'string'): array public function describeAction($data, $format = 'string'): array
{ {
return ['', [ return ['Filtered acp which has no activities'];
]];
} }
public function getTitle(): string public function getTitle(): string

View File

@ -278,6 +278,7 @@ Filter activity by userscope: Filtrer les activités par service du créateur
Accepted userscope: Services Accepted userscope: Services
Filter acp which has no activity: Filtrer les parcours qui nont pas dactivité Filter acp which has no activity: Filtrer les parcours qui nont pas dactivité
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 dactivité Group acp by activity number: Grouper les parcours par nombre dactivité
Group activity by sentreceived: Grouper les activités par envoyé / reçu Group activity by sentreceived: Grouper les activités par envoyé / reçu