diff --git a/src/Bundle/ChillPersonBundle/Export/Aggregator/ReferrerAggregator.php b/src/Bundle/ChillPersonBundle/Export/Aggregator/ReferrerAggregator.php new file mode 100644 index 000000000..3dbc4b820 --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Export/Aggregator/ReferrerAggregator.php @@ -0,0 +1,86 @@ +userRepository = $userRepository; + } + + public function addRole() + { + return null; + } + + public function alterQuery(QueryBuilder $qb, $data) + { + $qb->join('acpw.referrers', 'r'); + $qb->addSelect('r.id as referrer_aggregator'); + + $groupBy = $qb->getDQLPart('groupBy'); + + if (!empty($groupBy)) { + $qb->addGroupBy('referrer_aggregator'); + } else { + $qb->groupBy('referrer_aggregator'); + } + + } + + public function applyOn() + { + return Declarations::SOCIAL_WORK_ACTION_TYPE; + } + + public function buildForm(FormBuilderInterface $builder) + { + // no form + } + + public function getLabels($key, array $values, $data) + { + dump($values); + return function ($value): string { + if ('_header' === $value) { + return 'Referrer'; + } + + $r = $this->userRepository->find($value); + + return $r->getUsername(); + }; + } + + public function getQueryKeys($data) + { + return ['referrer_aggregator']; + } + + public function getTitle() + { + return 'Group social work actions by referrers'; + } +} diff --git a/src/Bundle/ChillPersonBundle/config/services/exports_social_actions.yaml b/src/Bundle/ChillPersonBundle/config/services/exports_social_actions.yaml index a6b7963c0..96e14d99a 100644 --- a/src/Bundle/ChillPersonBundle/config/services/exports_social_actions.yaml +++ b/src/Bundle/ChillPersonBundle/config/services/exports_social_actions.yaml @@ -30,8 +30,16 @@ services: - { name: chill.export_filter, alias: social_work_actions_userscope_filter } chill.person.export.filter_userjob: - class: Chill\PersonBundle\Export\Filter\UserJobFilter - autowire: true - autoconfigure: true - tags: - - { name: chill.export_filter, alias: social_work_actions_userjob_filter } \ No newline at end of file + class: Chill\PersonBundle\Export\Filter\UserJobFilter + autowire: true + autoconfigure: true + tags: + - { name: chill.export_filter, alias: social_work_actions_userjob_filter } + + ## AGGREGATORS + chill.person.export.aggregator_referrer: + class: Chill\PersonBundle\Export\Aggregator\ReferrerAggregator + autowire: true + autoconfigure: true + tags: + - { name: chill.export_aggregator, alias: social_work_actions_referrer_aggregator }