From ac0c221267702537ee4319d936d27b686dc6d8c1 Mon Sep 17 00:00:00 2001 From: Julie Lenaerts Date: Wed, 3 Aug 2022 16:48:33 +0200 Subject: [PATCH] start activity exports adaptations and new additions --- .../Export/Declarations.php | 20 ++++ .../Export/CountActivityLinkedToACP.php | 109 ++++++++++++++++++ .../Export/Filter/ActivityTypeFilter.php | 5 +- .../config/services/export.yaml | 21 ++-- .../translations/messages.fr.yml | 3 + 5 files changed, 148 insertions(+), 10 deletions(-) create mode 100644 src/Bundle/ChillActivityBundle/Export/Declarations.php create mode 100644 src/Bundle/ChillActivityBundle/Export/Export/CountActivityLinkedToACP.php diff --git a/src/Bundle/ChillActivityBundle/Export/Declarations.php b/src/Bundle/ChillActivityBundle/Export/Declarations.php new file mode 100644 index 000000000..76335415f --- /dev/null +++ b/src/Bundle/ChillActivityBundle/Export/Declarations.php @@ -0,0 +1,20 @@ +activityRepository = $activityRepository; + } + + public function buildForm(FormBuilderInterface $builder) + { + } + + public function getAllowedFormattersTypes() + { + return [FormatterInterface::TYPE_TABULAR]; + } + + public function getDescription() + { + return 'Count activities linked to an accompanying period by various parameters.'; + } + + public function getLabels($key, array $values, $data) + { + if ('export_count_activity_acp' !== $key) { + throw new LogicException("the key {$key} is not used by this export"); + } + + return static fn ($value) => '_header' === $value ? 'Number of activities linked to an accompanying period' : $value; + } + + public function getQueryKeys($data) + { + return ['export_count_activity_acp']; + } + + public function getResult($qb, $data) + { + return $qb->getQuery()->getResult(Query::HYDRATE_SCALAR); + } + + public function getTitle() + { + return 'Count activities linked to an accompanying period'; + } + + public function getType() + { + return Declarations::ACTIVITY; + } + + public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) + { + $centers = array_map(static fn ($el) => $el['center'], $acl); + + $qb = $this + ->activityRepository + ->createQueryBuilder('activity') + ->select('COUNT(activity.id) as export_count_activity_acp'); + + $qb->andWhere( + $qb->expr()->isNotNull('activity.accompanyingPeriod') + ); + + return $qb; + } + + public function requiredRole() + { + return new Role(ActivityStatsVoter::STATS); + } + + public function supportsModifiers() + { + return [ExportDeclarations::PERSON_TYPE, Declarations::ACTIVITY, ExportDeclarations::ACP_SHARED]; + } + + public function getGroup(): string + { + return 'Exports of activities'; + } +} diff --git a/src/Bundle/ChillActivityBundle/Export/Filter/ActivityTypeFilter.php b/src/Bundle/ChillActivityBundle/Export/Filter/ActivityTypeFilter.php index d3f35a746..6b7e4eab5 100644 --- a/src/Bundle/ChillActivityBundle/Export/Filter/ActivityTypeFilter.php +++ b/src/Bundle/ChillActivityBundle/Export/Filter/ActivityTypeFilter.php @@ -12,6 +12,7 @@ declare(strict_types=1); namespace Chill\ActivityBundle\Export\Filter; use Chill\ActivityBundle\Entity\ActivityType; +use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Repository\ActivityTypeRepository; use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter; use Chill\MainBundle\Export\ExportElementValidatedInterface; @@ -49,7 +50,7 @@ class ActivityTypeFilter implements ExportElementValidatedInterface, FilterInter public function alterQuery(QueryBuilder $qb, $data) { $where = $qb->getDQLPart('where'); - $clause = $qb->expr()->in('activity.type', ':selected_activity_types'); + $clause = $qb->expr()->in('activity.activityType', ':selected_activity_types'); if ($where instanceof Expr\Andx) { $where->add($clause); @@ -63,7 +64,7 @@ class ActivityTypeFilter implements ExportElementValidatedInterface, FilterInter public function applyOn() { - return 'activity'; + return Declarations::ACTIVITY; } public function buildForm(FormBuilderInterface $builder) diff --git a/src/Bundle/ChillActivityBundle/config/services/export.yaml b/src/Bundle/ChillActivityBundle/config/services/export.yaml index d8aa13098..daef12fed 100644 --- a/src/Bundle/ChillActivityBundle/config/services/export.yaml +++ b/src/Bundle/ChillActivityBundle/config/services/export.yaml @@ -7,16 +7,21 @@ services: class: Chill\ActivityBundle\Export\Export\CountActivity tags: - { name: chill.export, alias: 'count_activity' } - - chill.activity.export.sum_activity_duration: - class: Chill\ActivityBundle\Export\Export\StatActivityDuration + + chill.activity.export.count_activity_linked_to_acp: + class: Chill\ActivityBundle\Export\Export\CountActivityLinkedToACP tags: - - { name: chill.export, alias: 'sum_activity_duration' } + - { name: chill.export, alias: 'count_activity_linked_to_acp' } - chill.activity.export.list_activity: - class: Chill\ActivityBundle\Export\Export\ListActivity - tags: - - { name: chill.export, alias: 'list_activity' } + # chill.activity.export.sum_activity_duration: + # class: Chill\ActivityBundle\Export\Export\StatActivityDuration + # tags: + # - { name: chill.export, alias: 'sum_activity_duration' } + + # chill.activity.export.list_activity: + # class: Chill\ActivityBundle\Export\Export\ListActivity + # tags: + # - { name: chill.export, alias: 'list_activity' } chill.activity.export.reason_filter: class: Chill\ActivityBundle\Export\Filter\ActivityReasonFilter diff --git a/src/Bundle/ChillActivityBundle/translations/messages.fr.yml b/src/Bundle/ChillActivityBundle/translations/messages.fr.yml index 93839327e..4296e6d76 100644 --- a/src/Bundle/ChillActivityBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillActivityBundle/translations/messages.fr.yml @@ -211,6 +211,9 @@ List activities: Liste les activités List activities description: Créer la liste des activités Number of activities: Nombre d'activités Exports of activities: Exports des activités +Number of activities linked to an accompanying course: Nombre d'activités liés à un parcours. +Count activities linked to an accompanying period: Nombre d'activités liés à un parcours. +Count activities linked to an accompanying period by various parameters.: Compte le nombre d'activités enregistrées et liés à un parcours en fonction de différents paramètres. #filters Filter by reason: Filtrer par sujet d'activité