goalRepository = $goalRepository; } public function addRole() { return null; } public function alterQuery(QueryBuilder $qb, $data) { $qb->join('acpw.goals', 'g'); $qb->addSelect('g.id as goal_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); if (!empty($groupBy)) { $qb->addGroupBy('goal_aggregator'); } else { $qb->groupBy('goal_aggregator'); } } public function applyOn() { return Declarations::SOCIAL_WORK_ACTION_TYPE; } public function buildForm(FormBuilderInterface $builder) { // no form } public function getLabels($key, array $values, $data) { return function ($value): string { if ('_header' === $value) { return 'Goal Type'; } $g = $this->goalRepository->find($value); return $g->getTitle()['fr']; }; } public function getQueryKeys($data) { return ['goal_aggregator']; } public function getTitle() { return 'Group social work actions by goal'; } }