create 13 new export/filters/aggregators in Person and AsideActivity Bundles

* minor corrections on last commit
* modify related files (declaration, messages.fr, repository)
* yaml service declaration
This commit is contained in:
2022-10-28 16:26:11 +02:00
parent 43d9ba1ba5
commit f1fb77187f
21 changed files with 923 additions and 40 deletions

View File

@@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Chill\PersonBundle\Export\Aggregator\EvaluationAggregators;
use Chill\MainBundle\Export\AggregatorInterface;
use Chill\PersonBundle\Export\Declarations;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
class ByEndDateAggregator implements AggregatorInterface
{
public function addRole(): ?string
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$qb->addSelect('AS _aggregator')
->addGroupBy('_aggregator');
}
public function applyOn(): string
{
return Declarations::EVAL_TYPE;
}
public function buildForm(FormBuilderInterface $builder)
{
// No form needed
}
public function getLabels($key, array $values, $data)
{
return function ($value): string {
if ('_header' === $value) {
return '';
}
};
}
public function getQueryKeys($data): array
{
return ['_aggregator'];
}
public function getTitle(): string
{
return 'Group by end date evaluations';
}
}

View File

@@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Chill\PersonBundle\Export\Aggregator\EvaluationAggregators;
use Chill\MainBundle\Export\AggregatorInterface;
use Chill\PersonBundle\Export\Declarations;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
class ByMaxDateAggregator implements AggregatorInterface
{
public function addRole(): ?string
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$qb->addSelect('AS _aggregator')
->addGroupBy('_aggregator');
}
public function applyOn(): string
{
return Declarations::EVAL_TYPE;
}
public function buildForm(FormBuilderInterface $builder)
{
// No form needed
}
public function getLabels($key, array $values, $data)
{
return function ($value): string {
if ('_header' === $value) {
return '';
}
};
}
public function getQueryKeys($data): array
{
return ['_aggregator'];
}
public function getTitle(): string
{
return 'Group by max date evaluations';
}
}

View File

@@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Chill\PersonBundle\Export\Aggregator\EvaluationAggregators;
use Chill\MainBundle\Export\AggregatorInterface;
use Chill\PersonBundle\Export\Declarations;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
class ByStartDateAggregator implements AggregatorInterface
{
public function addRole(): ?string
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$qb->addSelect('AS _aggregator')
->addGroupBy('_aggregator');
}
public function applyOn(): string
{
return Declarations::EVAL_TYPE;
}
public function buildForm(FormBuilderInterface $builder)
{
// No form needed
}
public function getLabels($key, array $values, $data)
{
return function ($value): string {
if ('_header' === $value) {
return '';
}
};
}
public function getQueryKeys($data): array
{
return ['_aggregator'];
}
public function getTitle(): string
{
return 'Group by start date evaluations';
}
}

View File

@@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators;
use Chill\MainBundle\Export\AggregatorInterface;
use Chill\PersonBundle\Export\Declarations;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
class CurrentActionAggregator implements AggregatorInterface
{
public function addRole(): ?string
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$qb->addSelect('AS _aggregator')
->addGroupBy('_aggregator');
}
public function applyOn(): string
{
return Declarations::SOCIAL_WORK_ACTION_TYPE;
}
public function buildForm(FormBuilderInterface $builder)
{
// No form needed
}
public function getLabels($key, array $values, $data)
{
return function ($value): string {
if ('_header' === $value) {
return '';
}
};
}
public function getQueryKeys($data): array
{
return ['_aggregator'];
}
public function getTitle(): string
{
return 'Group by current actions';
}
}

View File

@@ -0,0 +1,55 @@
<?php
declare(strict_types=1);
/*
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Chill\PersonBundle\Export\Filter\EvaluationFilters;
use Chill\MainBundle\Export\FilterInterface;
use Chill\PersonBundle\Export\Declarations;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
class ByEndDateFilter implements FilterInterface
{
public function addRole(): ?string
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$qb
->andWhere(
$qb->expr()->in('', ':')
)
->setParameter('', $data[]);
}
public function applyOn(): string
{
return Declarations::EVAL_TYPE;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add();
}
public function describeAction($data, $format = 'string'): array
{
return ['', [
]];
}
public function getTitle(): string
{
return 'Filter by end date evaluations';
}
}

View File

@@ -0,0 +1,55 @@
<?php
declare(strict_types=1);
/*
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Chill\PersonBundle\Export\Filter\EvaluationFilters;
use Chill\MainBundle\Export\FilterInterface;
use Chill\PersonBundle\Export\Declarations;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
class ByMaxDateFilter implements FilterInterface
{
public function addRole(): ?string
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$qb
->andWhere(
$qb->expr()->in('', ':')
)
->setParameter('', $data[]);
}
public function applyOn(): string
{
return Declarations::EVAL_TYPE;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add();
}
public function describeAction($data, $format = 'string'): array
{
return ['', [
]];
}
public function getTitle(): string
{
return 'Filter by max date evaluations';
}
}

View File

@@ -0,0 +1,55 @@
<?php
declare(strict_types=1);
/*
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Chill\PersonBundle\Export\Filter\EvaluationFilters;
use Chill\MainBundle\Export\FilterInterface;
use Chill\PersonBundle\Export\Declarations;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
class ByStartDateFilter implements FilterInterface
{
public function addRole(): ?string
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$qb
->andWhere(
$qb->expr()->in('', ':')
)
->setParameter('', $data[]);
}
public function applyOn(): string
{
return Declarations::EVAL_TYPE;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add();
}
public function describeAction($data, $format = 'string'): array
{
return ['', [
]];
}
public function getTitle(): string
{
return 'Filter by start date evaluations';
}
}

View File

@@ -0,0 +1,55 @@
<?php
declare(strict_types=1);
/*
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Chill\PersonBundle\Export\Filter\EvaluationFilters;
use Chill\MainBundle\Export\FilterInterface;
use Chill\PersonBundle\Export\Declarations;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
class CurrentEvaluationsFilter implements FilterInterface
{
public function addRole(): ?string
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$qb
->andWhere(
$qb->expr()->in('', ':')
)
->setParameter('', $data[]);
}
public function applyOn(): string
{
return Declarations::EVAL_TYPE;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add();
}
public function describeAction($data, $format = 'string'): array
{
return ['', [
]];
}
public function getTitle(): string
{
return 'Filter by current evaluations';
}
}

View File

@@ -0,0 +1,55 @@
<?php
declare(strict_types=1);
/*
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Chill\PersonBundle\Export\Filter\SocialWorkFilters;
use Chill\MainBundle\Export\FilterInterface;
use Chill\PersonBundle\Export\Declarations;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
class CurrentActionFilter implements FilterInterface
{
public function addRole(): ?string
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$qb
->andWhere(
$qb->expr()->in('', ':')
)
->setParameter('', $data[]);
}
public function applyOn(): string
{
return Declarations::SOCIAL_WORK_ACTION_TYPE;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add();
}
public function describeAction($data, $format = 'string'): array
{
return ['', [
]];
}
public function getTitle(): string
{
return 'Filter by current actions';
}
}

View File

@@ -23,6 +23,31 @@ services:
tags:
- { name: chill.export_filter, alias: accompanyingcourse_maxdate_filter }
Chill\PersonBundle\Export\Filter\EvaluationFilters\ByStartDateFilter:
autowire: true
autoconfigure: true
tags:
- { name: chill.export_filter, alias: evaluation_bystartdate_filter }
Chill\PersonBundle\Export\Filter\EvaluationFilters\ByEndDateFilter:
autowire: true
autoconfigure: true
tags:
- { name: chill.export_filter, alias: evaluation_byenddate_filter }
Chill\PersonBundle\Export\Filter\EvaluationFilters\ByMaxDateFilter:
autowire: true
autoconfigure: true
tags:
- { name: chill.export_filter, alias: evaluation_bymaxdate_filter }
Chill\PersonBundle\Export\Filter\EvaluationFilters\CurrentEvaluationsFilter:
autowire: true
autoconfigure: true
tags:
- { name: chill.export_filter, alias: evaluation_currentevaluations_filter }
## Aggregators
chill.person.export.aggregator_evaluationtype:
class: Chill\PersonBundle\Export\Aggregator\EvaluationAggregators\EvaluationTypeAggregator
@@ -30,4 +55,21 @@ services:
autoconfigure: true
tags:
- { name: chill.export_aggregator, alias: accompanyingcourse_evaluationtype_aggregator }
Chill\PersonBundle\Export\Aggregator\EvaluationAggregators\ByStartDateAggregator:
autowire: true
autoconfigure: true
tags:
- { name: chill.export_aggregator, alias: evaluation_bystartdate_aggregator }
Chill\PersonBundle\Export\Aggregator\EvaluationAggregators\ByEndDateAggregator:
autowire: true
autoconfigure: true
tags:
- { name: chill.export_aggregator, alias: evaluation_byenddate_aggregator }
Chill\PersonBundle\Export\Aggregator\EvaluationAggregators\ByMaxDateAggregator:
autowire: true
autoconfigure: true
tags:
- { name: chill.export_aggregator, alias: evaluation_bymaxdate_aggregator }

View File

@@ -37,6 +37,8 @@ services:
tags:
- { name: chill.export_filter, alias: social_work_actions_treatingagent_filter }
Chill\PersonBundle\Export\Filter\SocialWorkFilters\CurrentActionFilter:
## AGGREGATORS
chill.person.export.aggregator_action_type:
class: Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\ActionTypeAggregator
@@ -86,3 +88,5 @@ services:
autoconfigure: true
tags:
- { name: chill.export_aggregator, alias: social_work_actions_goal_result_aggregator }
Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\CurrentActionAggregator:

View File

@@ -559,6 +559,16 @@ Group by number of actions: Grouper les parcours par nombre dactions
Filter by creator: Filtrer les parcours par créateur
Filter by creator job: Filtrer les parcours par métier du créateur
Group by creator job: Grouper les parcours par métier du créateur
Filter by current actions: Filtrer les actions en cours
Group by current actions: Grouper les actions en cours
Filter by start date evaluations: Filtrer les évaluations par date de début
Filter by end date evaluations: Filtrer les évaluations par date de fin
Filter by max date evaluations: Filtrer les évaluations par date d'échéance
Filter by current evaluations: Filtrer les évaluations en cours
Group by start date evaluations: Grouper les évaluations par semaine/mois/année de la date de début
Group by end date evaluations: Grouper les évaluations par semaine/mois/année de la date de fin
Group by max date evaluations: Grouper les évaluations par semaine/mois/année de la date d'échéance
## social actions filters/aggr
Filter by treating agent scope: Filtrer les actions par service de l'agent traitant