Feature: [export] add aggregator by "number of activity" for acp

This commit is contained in:
Julien Fastré 2022-11-02 13:33:33 +01:00
parent 84e5be6a60
commit 24873f0cc2

View File

@ -11,6 +11,7 @@ declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Aggregator\ACPAggregators; namespace Chill\ActivityBundle\Export\Aggregator\ACPAggregators;
use Chill\ActivityBundle\Entity\Activity;
use Chill\MainBundle\Export\AggregatorInterface; use Chill\MainBundle\Export\AggregatorInterface;
use Chill\PersonBundle\Export\Declarations; use Chill\PersonBundle\Export\Declarations;
use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\QueryBuilder;
@ -23,9 +24,10 @@ class ByActivityNumberAggregator implements AggregatorInterface
return null; return null;
} }
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data): void
{ {
$qb->addSelect('AS activity_by_number_aggregator') $qb
->addSelect('(SELECT COUNT(activity.id) FROM ' . Activity::class . ' activity WHERE activity.accompanyingPeriod = acp) AS activity_by_number_aggregator')
->addGroupBy('activity_by_number_aggregator'); ->addGroupBy('activity_by_number_aggregator');
} }
@ -34,17 +36,23 @@ class ByActivityNumberAggregator implements AggregatorInterface
return Declarations::ACP_TYPE; return Declarations::ACP_TYPE;
} }
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder): void
{ {
// No form needed // No form needed
} }
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
return static function ($value): string { return static function ($value) {
if ('_header' === $value) { if ('_header' === $value) {
return ''; return '';
} }
if (null === $value) {
return '';
}
return $value;
}; };
} }