mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-08-21 07:03:49 +00:00
Merge branch '172-missing-exports' into 'master'
[Export]: add missing grouping and filters and fix some issues Closes #177 and #172 See merge request Chill-Projet/chill-bundles!598
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
<?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\AccompanyingCourseAggregators;
|
||||
|
||||
use Chill\MainBundle\Export\AggregatorInterface;
|
||||
use Chill\PersonBundle\Export\Declarations;
|
||||
use Chill\PersonBundle\Export\Enum\DateGroupingChoiceEnum;
|
||||
use Chill\PersonBundle\Tests\Export\Aggregator\AccompanyingCourseAggregators\ClosingDateAggregatorTest;
|
||||
use Doctrine\ORM\QueryBuilder;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
|
||||
/**
|
||||
* @see ClosingDateAggregatorTest
|
||||
*/
|
||||
final readonly class ClosingDateAggregator implements AggregatorInterface
|
||||
{
|
||||
private const PREFIX = 'acp_closing_date_agg';
|
||||
|
||||
public function buildForm(FormBuilderInterface $builder): void
|
||||
{
|
||||
$builder->add('frequency', ChoiceType::class, [
|
||||
'choices' => array_combine(
|
||||
array_map(fn (DateGroupingChoiceEnum $c) => 'export.enum.frequency.'.$c->value, DateGroupingChoiceEnum::cases()),
|
||||
array_map(fn (DateGroupingChoiceEnum $c) => $c->value, DateGroupingChoiceEnum::cases()),
|
||||
),
|
||||
'label' => 'export.aggregator.course.by_closing_date.frequency',
|
||||
'multiple' => false,
|
||||
'expanded' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
public function getFormDefaultData(): array
|
||||
{
|
||||
return [
|
||||
'frequency' => 'year',
|
||||
];
|
||||
}
|
||||
|
||||
public function getLabels($key, array $values, mixed $data)
|
||||
{
|
||||
return function (null|string $value): string {
|
||||
if ('_header' === $value) {
|
||||
return 'export.aggregator.course.by_closing_date.header';
|
||||
}
|
||||
|
||||
return (string) $value;
|
||||
};
|
||||
}
|
||||
|
||||
public function getQueryKeys($data)
|
||||
{
|
||||
return [self::PREFIX.'_closing_date'];
|
||||
}
|
||||
|
||||
public function getTitle()
|
||||
{
|
||||
return 'export.aggregator.course.by_closing_date.title';
|
||||
}
|
||||
|
||||
public function addRole(): ?string
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public function alterQuery(QueryBuilder $qb, $data)
|
||||
{
|
||||
$p = self::PREFIX;
|
||||
|
||||
$qb->addSelect(sprintf("TO_CHAR(acp.closingDate, '%s') AS {$p}_closing_date", $data['frequency']));
|
||||
$qb->addGroupBy("{$p}_closing_date");
|
||||
$qb->addOrderBy("{$p}_closing_date", 'DESC');
|
||||
}
|
||||
|
||||
public function applyOn()
|
||||
{
|
||||
return Declarations::ACP_TYPE;
|
||||
}
|
||||
}
|
@@ -0,0 +1,88 @@
|
||||
<?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\AccompanyingCourseAggregators;
|
||||
|
||||
use Chill\MainBundle\Export\AggregatorInterface;
|
||||
use Chill\PersonBundle\Export\Declarations;
|
||||
use Chill\PersonBundle\Export\Enum\DateGroupingChoiceEnum;
|
||||
use Chill\PersonBundle\Tests\Export\Aggregator\AccompanyingCourseAggregators\OpeningDateAggregatorTest;
|
||||
use Doctrine\ORM\QueryBuilder;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
|
||||
/**
|
||||
* @see OpeningDateAggregatorTest
|
||||
*/
|
||||
final readonly class OpeningDateAggregator implements AggregatorInterface
|
||||
{
|
||||
private const PREFIX = 'acp_opening_date_agg';
|
||||
|
||||
public function buildForm(FormBuilderInterface $builder): void
|
||||
{
|
||||
$builder->add('frequency', ChoiceType::class, [
|
||||
'choices' => array_combine(
|
||||
array_map(fn (DateGroupingChoiceEnum $c) => 'export.enum.frequency.'.$c->value, DateGroupingChoiceEnum::cases()),
|
||||
array_map(fn (DateGroupingChoiceEnum $c) => $c->value, DateGroupingChoiceEnum::cases()),
|
||||
),
|
||||
'label' => 'export.aggregator.course.by_opening_date.frequency',
|
||||
'multiple' => false,
|
||||
'expanded' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
public function getFormDefaultData(): array
|
||||
{
|
||||
return [
|
||||
'frequency' => 'year',
|
||||
];
|
||||
}
|
||||
|
||||
public function getLabels($key, array $values, mixed $data)
|
||||
{
|
||||
return function (null|string $value): string {
|
||||
if ('_header' === $value) {
|
||||
return 'export.aggregator.course.by_opening_date.header';
|
||||
}
|
||||
|
||||
return (string) $value;
|
||||
};
|
||||
}
|
||||
|
||||
public function getQueryKeys($data)
|
||||
{
|
||||
return [self::PREFIX.'_opening_date'];
|
||||
}
|
||||
|
||||
public function getTitle()
|
||||
{
|
||||
return 'export.aggregator.course.by_opening_date.title';
|
||||
}
|
||||
|
||||
public function addRole(): ?string
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public function alterQuery(QueryBuilder $qb, $data)
|
||||
{
|
||||
$p = self::PREFIX;
|
||||
|
||||
$qb->addSelect(sprintf("TO_CHAR(acp.openingDate, '%s') AS {$p}_opening_date", $data['frequency']));
|
||||
$qb->addGroupBy("{$p}_opening_date");
|
||||
$qb->addOrderBy("{$p}_opening_date", 'DESC');
|
||||
}
|
||||
|
||||
public function applyOn()
|
||||
{
|
||||
return Declarations::ACP_TYPE;
|
||||
}
|
||||
}
|
@@ -49,7 +49,7 @@ final readonly class StepAggregator implements AggregatorInterface
|
||||
$qb->expr()->lte(self::A.'.startDate', ':'.self::P),
|
||||
$qb->expr()->orX(
|
||||
$qb->expr()->isNull(self::A.'.endDate'),
|
||||
$qb->expr()->lt(self::A.'.endDate', ':'.self::P)
|
||||
$qb->expr()->gt(self::A.'.endDate', ':'.self::P)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
@@ -0,0 +1,73 @@
|
||||
<?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 Chill\PersonBundle\Tests\Export\Aggregator\SocialWorkAggregators\HandlingThirdPartyAggregatorTest;
|
||||
use Chill\ThirdPartyBundle\Export\Helper\LabelThirdPartyHelper;
|
||||
use Doctrine\ORM\QueryBuilder;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
|
||||
/**
|
||||
* @see HandlingThirdPartyAggregatorTest
|
||||
*/
|
||||
final readonly class HandlingThirdPartyAggregator implements AggregatorInterface
|
||||
{
|
||||
private const PREFIX = 'acpw_handling3party_agg';
|
||||
|
||||
public function __construct(private LabelThirdPartyHelper $labelThirdPartyHelper) {}
|
||||
|
||||
public function buildForm(FormBuilderInterface $builder)
|
||||
{
|
||||
// no form needed here
|
||||
}
|
||||
|
||||
public function getFormDefaultData(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
public function getLabels($key, array $values, mixed $data)
|
||||
{
|
||||
return $this->labelThirdPartyHelper->getLabel($key, $values, 'export.aggregator.course_work.by_handling_third_party.header');
|
||||
}
|
||||
|
||||
public function getQueryKeys($data)
|
||||
{
|
||||
return [self::PREFIX.'_h3party'];
|
||||
}
|
||||
|
||||
public function getTitle()
|
||||
{
|
||||
return 'export.aggregator.course_work.by_handling_third_party.title';
|
||||
}
|
||||
|
||||
public function addRole(): ?string
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public function alterQuery(QueryBuilder $qb, $data)
|
||||
{
|
||||
$p = self::PREFIX;
|
||||
|
||||
$qb
|
||||
->addSelect("IDENTITY(acpw.handlingThierParty) AS {$p}_h3party")
|
||||
->addGroupBy("{$p}_h3party");
|
||||
}
|
||||
|
||||
public function applyOn()
|
||||
{
|
||||
return Declarations::SOCIAL_WORK_ACTION_TYPE;
|
||||
}
|
||||
}
|
@@ -0,0 +1,19 @@
|
||||
<?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\Enum;
|
||||
|
||||
enum DateGroupingChoiceEnum: string
|
||||
{
|
||||
case MONTH = 'YYYY-MM';
|
||||
case WEEK = 'YYYY-IW';
|
||||
case YEAR = 'YYYY';
|
||||
}
|
@@ -0,0 +1,78 @@
|
||||
<?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\AccompanyingCourseFilters;
|
||||
|
||||
use Chill\MainBundle\Export\FilterInterface;
|
||||
use Chill\PersonBundle\Export\Declarations;
|
||||
use Chill\ThirdPartyBundle\Entity\ThirdParty;
|
||||
use Chill\ThirdPartyBundle\Form\Type\PickThirdpartyDynamicType;
|
||||
use Chill\ThirdPartyBundle\Templating\Entity\ThirdPartyRender;
|
||||
use Doctrine\ORM\QueryBuilder;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
|
||||
final readonly class HandlingThirdPartyFilter implements FilterInterface
|
||||
{
|
||||
private const PREFIX = 'acpw_handling_3party_filter';
|
||||
|
||||
public function __construct(
|
||||
private ThirdPartyRender $thirdPartyRender,
|
||||
) {}
|
||||
|
||||
public function getTitle()
|
||||
{
|
||||
return 'export.filter.work.by_handling3party.title';
|
||||
}
|
||||
|
||||
public function buildForm(FormBuilderInterface $builder)
|
||||
{
|
||||
$builder->add('handling_3parties', PickThirdpartyDynamicType::class, [
|
||||
'label' => 'export.filter.work.by_handling3party.pick_3parties',
|
||||
'multiple' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
public function getFormDefaultData(): array
|
||||
{
|
||||
return ['handling_3parties' => []];
|
||||
}
|
||||
|
||||
public function describeAction($data, $format = 'string')
|
||||
{
|
||||
return [
|
||||
'export.filter.work.by_handling3party.Only 3 parties %3parties%',
|
||||
[
|
||||
'%3parties%' => implode(
|
||||
', ',
|
||||
array_map(fn (ThirdParty $thirdParty) => $this->thirdPartyRender->renderString($thirdParty, []), $data['handling_3parties'])
|
||||
),
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public function addRole(): ?string
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public function alterQuery(QueryBuilder $qb, $data)
|
||||
{
|
||||
$p = self::PREFIX;
|
||||
|
||||
$qb->andWhere("acpw.handlingThierParty IN (:{$p}_3ps)");
|
||||
$qb->setParameter("{$p}_3ps", $data['handling_3parties']);
|
||||
}
|
||||
|
||||
public function applyOn()
|
||||
{
|
||||
return Declarations::SOCIAL_WORK_ACTION_TYPE;
|
||||
}
|
||||
}
|
@@ -61,7 +61,7 @@ class StepFilterOnDate implements FilterInterface
|
||||
$qb->expr()->lte(self::A.'.startDate', ':'.self::P),
|
||||
$qb->expr()->orX(
|
||||
$qb->expr()->isNull(self::A.'.endDate'),
|
||||
$qb->expr()->lt(self::A.'.endDate', ':'.self::P)
|
||||
$qb->expr()->gt(self::A.'.endDate', ':'.self::P)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
@@ -66,7 +66,7 @@ class AddressRefStatusFilter implements \Chill\MainBundle\Export\FilterInterface
|
||||
{
|
||||
$builder
|
||||
->add('date_calc', PickRollingDateType::class, [
|
||||
'label' => 'Compute address at date',
|
||||
'label' => 'export.filter.person.by_address_ref_status.Address at date',
|
||||
'required' => true,
|
||||
])
|
||||
->add('ref_statuses', ChoiceType::class, [
|
||||
|
@@ -18,6 +18,21 @@ class LabelPersonHelper
|
||||
{
|
||||
public function __construct(private readonly PersonRepository $personRepository, private readonly PersonRenderInterface $personRender) {}
|
||||
|
||||
public function getLabel(string $key, array $values, string $header): callable
|
||||
{
|
||||
return function (null|int|string $value) use ($header): string {
|
||||
if ('_header' === $value) {
|
||||
return $header;
|
||||
}
|
||||
|
||||
if ('' === $value || null === $value || null === $person = $this->personRepository->find($value)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return $this->personRender->renderString($person, []);
|
||||
};
|
||||
}
|
||||
|
||||
public function getLabelMulti(string $key, array $values, string $header): callable
|
||||
{
|
||||
return function ($value) use ($header) {
|
||||
|
@@ -0,0 +1,66 @@
|
||||
<?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\Tests\Export\Aggregator\AccompanyingCourseAggregators;
|
||||
|
||||
use Chill\MainBundle\Test\Export\AbstractAggregatorTest;
|
||||
use Chill\PersonBundle\Entity\AccompanyingPeriod;
|
||||
use Chill\PersonBundle\Export\Aggregator\AccompanyingCourseAggregators\ClosingDateAggregator;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @coversNothing
|
||||
*/
|
||||
class ClosingDateAggregatorTest extends AbstractAggregatorTest
|
||||
{
|
||||
private static ClosingDateAggregator $closingDateAggregator;
|
||||
|
||||
private static EntityManagerInterface $entityManager;
|
||||
|
||||
public static function setUpBeforeClass(): void
|
||||
{
|
||||
parent::setUpBeforeClass();
|
||||
self::bootKernel();
|
||||
|
||||
self::$closingDateAggregator = self::$container->get(ClosingDateAggregator::class);
|
||||
self::$entityManager = self::$container->get(EntityManagerInterface::class);
|
||||
}
|
||||
|
||||
public function getAggregator()
|
||||
{
|
||||
return self::$closingDateAggregator;
|
||||
}
|
||||
|
||||
public function getFormData()
|
||||
{
|
||||
yield ['frequency' => 'YYYY'];
|
||||
yield ['frequency' => 'YYYY-MM'];
|
||||
yield ['frequency' => 'YYYY-IV'];
|
||||
}
|
||||
|
||||
public function getQueryBuilders()
|
||||
{
|
||||
self::bootKernel();
|
||||
self::$entityManager = self::$container->get(EntityManagerInterface::class);
|
||||
|
||||
$data = [
|
||||
self::$entityManager->createQueryBuilder()
|
||||
->select('count(acp.id)')
|
||||
->from(AccompanyingPeriod::class, 'acp'),
|
||||
];
|
||||
|
||||
self::ensureKernelShutdown();
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
@@ -0,0 +1,66 @@
|
||||
<?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\Tests\Export\Aggregator\AccompanyingCourseAggregators;
|
||||
|
||||
use Chill\MainBundle\Test\Export\AbstractAggregatorTest;
|
||||
use Chill\PersonBundle\Entity\AccompanyingPeriod;
|
||||
use Chill\PersonBundle\Export\Aggregator\AccompanyingCourseAggregators\OpeningDateAggregator;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @coversNothing
|
||||
*/
|
||||
class OpeningDateAggregatorTest extends AbstractAggregatorTest
|
||||
{
|
||||
private static OpeningDateAggregator $openingDateAggregator;
|
||||
|
||||
private static EntityManagerInterface $entityManager;
|
||||
|
||||
public static function setUpBeforeClass(): void
|
||||
{
|
||||
parent::setUpBeforeClass();
|
||||
self::bootKernel();
|
||||
|
||||
self::$openingDateAggregator = self::$container->get(OpeningDateAggregator::class);
|
||||
self::$entityManager = self::$container->get(EntityManagerInterface::class);
|
||||
}
|
||||
|
||||
public function getAggregator()
|
||||
{
|
||||
return self::$openingDateAggregator;
|
||||
}
|
||||
|
||||
public function getFormData()
|
||||
{
|
||||
yield ['frequency' => 'YYYY'];
|
||||
yield ['frequency' => 'YYYY-MM'];
|
||||
yield ['frequency' => 'YYYY-IV'];
|
||||
}
|
||||
|
||||
public function getQueryBuilders()
|
||||
{
|
||||
self::bootKernel();
|
||||
self::$entityManager = self::$container->get(EntityManagerInterface::class);
|
||||
|
||||
$data = [
|
||||
self::$entityManager->createQueryBuilder()
|
||||
->select('count(acp.id)')
|
||||
->from(AccompanyingPeriod::class, 'acp'),
|
||||
];
|
||||
|
||||
self::ensureKernelShutdown();
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
@@ -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\Tests\Export\Aggregator\SocialWorkAggregators;
|
||||
|
||||
use Chill\MainBundle\Test\Export\AbstractAggregatorTest;
|
||||
use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWork;
|
||||
use Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\HandlingThirdPartyAggregator;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @coversNothing
|
||||
*/
|
||||
class HandlingThirdPartyAggregatorTest extends AbstractAggregatorTest
|
||||
{
|
||||
private static HandlingThirdPartyAggregator $handlingThirdPartyAggregator;
|
||||
|
||||
public static function setUpBeforeClass(): void
|
||||
{
|
||||
parent::setUpBeforeClass();
|
||||
self::bootKernel();
|
||||
self::$handlingThirdPartyAggregator = self::$container->get(HandlingThirdPartyAggregator::class);
|
||||
}
|
||||
|
||||
public function getAggregator()
|
||||
{
|
||||
return self::$handlingThirdPartyAggregator;
|
||||
}
|
||||
|
||||
public function getFormData()
|
||||
{
|
||||
return [
|
||||
[],
|
||||
];
|
||||
}
|
||||
|
||||
public function getQueryBuilders()
|
||||
{
|
||||
self::bootKernel();
|
||||
|
||||
$em = self::$container
|
||||
->get(EntityManagerInterface::class);
|
||||
|
||||
return [
|
||||
$em->createQueryBuilder()
|
||||
->select('count(acpw.id)')
|
||||
->from(AccompanyingPeriodWork::class, 'acpw'),
|
||||
];
|
||||
}
|
||||
}
|
@@ -0,0 +1,71 @@
|
||||
<?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\Tests\Export\Filter\SocialWorkFilters;
|
||||
|
||||
use Chill\MainBundle\Test\Export\AbstractFilterTest;
|
||||
use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWork;
|
||||
use Chill\PersonBundle\Export\Filter\AccompanyingCourseFilters\HandlingThirdPartyFilter;
|
||||
use Chill\ThirdPartyBundle\Entity\ThirdParty;
|
||||
use Chill\ThirdPartyBundle\Templating\Entity\ThirdPartyRender;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @coversNothing
|
||||
*/
|
||||
class HandlingThirdPartyFilterTest extends AbstractFilterTest
|
||||
{
|
||||
private ThirdPartyRender $thirdPartyRender;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
self::bootKernel();
|
||||
$this->thirdPartyRender = self::$container->get(ThirdPartyRender::class);
|
||||
}
|
||||
|
||||
public function getFilter()
|
||||
{
|
||||
return new HandlingThirdPartyFilter($this->thirdPartyRender);
|
||||
}
|
||||
|
||||
public function getFormData()
|
||||
{
|
||||
self::bootKernel();
|
||||
|
||||
$em = self::$container->get(EntityManagerInterface::class);
|
||||
|
||||
$thirdParties = $em->createQuery('SELECT tp FROM '.ThirdParty::class.' tp')
|
||||
->setMaxResults(2)
|
||||
->getResult();
|
||||
|
||||
return [
|
||||
[
|
||||
'handling_3parties' => $thirdParties,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public function getQueryBuilders()
|
||||
{
|
||||
self::bootKernel();
|
||||
|
||||
$em = self::$container->get(EntityManagerInterface::class);
|
||||
|
||||
return [
|
||||
$em->createQueryBuilder()
|
||||
->select('acpw.id')
|
||||
->from(AccompanyingPeriodWork::class, 'acpw'),
|
||||
];
|
||||
}
|
||||
}
|
@@ -251,3 +251,11 @@ services:
|
||||
Chill\PersonBundle\Export\Aggregator\AccompanyingCourseAggregators\ScopeWorkingOnCourseAggregator:
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: accompanyingcourse_scope_working_on_course_aggregator }
|
||||
|
||||
Chill\PersonBundle\Export\Aggregator\AccompanyingCourseAggregators\OpeningDateAggregator:
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: accompanyingcourse_opening_date_aggregator }
|
||||
|
||||
Chill\PersonBundle\Export\Aggregator\AccompanyingCourseAggregators\ClosingDateAggregator:
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: accompanyingcourse_closing_date_aggregator }
|
||||
|
@@ -1,116 +1,93 @@
|
||||
services:
|
||||
_defaults:
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
|
||||
## Indicators
|
||||
Chill\PersonBundle\Export\Export\CountAccompanyingPeriodWork:
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export, alias: count_social_work_actions }
|
||||
## Indicators
|
||||
Chill\PersonBundle\Export\Export\CountAccompanyingPeriodWork:
|
||||
tags:
|
||||
- { name: chill.export, alias: count_social_work_actions }
|
||||
|
||||
Chill\PersonBundle\Export\Export\ListAccompanyingPeriodWork:
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export, alias: list_social_work_actions }
|
||||
Chill\PersonBundle\Export\Export\ListAccompanyingPeriodWork:
|
||||
tags:
|
||||
- { name: chill.export, alias: list_social_work_actions }
|
||||
|
||||
## FILTERS
|
||||
chill.person.export.filter_social_work_type:
|
||||
class: Chill\PersonBundle\Export\Filter\SocialWorkFilters\SocialWorkTypeFilter
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export_filter, alias: social_work_type_filter }
|
||||
## FILTERS
|
||||
chill.person.export.filter_social_work_type:
|
||||
class: Chill\PersonBundle\Export\Filter\SocialWorkFilters\SocialWorkTypeFilter
|
||||
tags:
|
||||
- { name: chill.export_filter, alias: social_work_type_filter }
|
||||
|
||||
chill.person.export.filter_scope:
|
||||
class: Chill\PersonBundle\Export\Filter\SocialWorkFilters\ScopeFilter
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export_filter, alias: social_work_actions_scope_filter }
|
||||
chill.person.export.filter_scope:
|
||||
class: Chill\PersonBundle\Export\Filter\SocialWorkFilters\ScopeFilter
|
||||
tags:
|
||||
- { name: chill.export_filter, alias: social_work_actions_scope_filter }
|
||||
|
||||
chill.person.export.filter_job:
|
||||
class: Chill\PersonBundle\Export\Filter\SocialWorkFilters\JobFilter
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export_filter, alias: social_work_actions_job_filter }
|
||||
chill.person.export.filter_job:
|
||||
class: Chill\PersonBundle\Export\Filter\SocialWorkFilters\JobFilter
|
||||
tags:
|
||||
- { name: chill.export_filter, alias: social_work_actions_job_filter }
|
||||
|
||||
chill.person.export.filter_treatingagent:
|
||||
class: Chill\PersonBundle\Export\Filter\SocialWorkFilters\ReferrerFilter
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export_filter, alias: social_work_actions_treatingagent_filter }
|
||||
chill.person.export.filter_treatingagent:
|
||||
class: Chill\PersonBundle\Export\Filter\SocialWorkFilters\ReferrerFilter
|
||||
tags:
|
||||
- { name: chill.export_filter, alias: social_work_actions_treatingagent_filter }
|
||||
|
||||
Chill\PersonBundle\Export\Filter\SocialWorkFilters\CurrentActionFilter:
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export_filter, alias: social_work_actions_current_filter }
|
||||
Chill\PersonBundle\Export\Filter\SocialWorkFilters\CurrentActionFilter:
|
||||
tags:
|
||||
- { name: chill.export_filter, alias: social_work_actions_current_filter }
|
||||
|
||||
Chill\PersonBundle\Export\Filter\SocialWorkFilters\AccompanyingPeriodWorkStartDateBetweenDateFilter:
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export_filter, alias: social_work_actions_start_btw_dates_filter }
|
||||
Chill\PersonBundle\Export\Filter\SocialWorkFilters\AccompanyingPeriodWorkStartDateBetweenDateFilter:
|
||||
tags:
|
||||
- { name: chill.export_filter, alias: social_work_actions_start_btw_dates_filter }
|
||||
|
||||
Chill\PersonBundle\Export\Filter\SocialWorkFilters\AccompanyingPeriodWorkEndDateBetweenDateFilter:
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export_filter, alias: social_work_actions_end_btw_dates_filter }
|
||||
Chill\PersonBundle\Export\Filter\SocialWorkFilters\AccompanyingPeriodWorkEndDateBetweenDateFilter:
|
||||
tags:
|
||||
- { name: chill.export_filter, alias: social_work_actions_end_btw_dates_filter }
|
||||
|
||||
## AGGREGATORS
|
||||
chill.person.export.aggregator_action_type:
|
||||
class: Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\ActionTypeAggregator
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_action_type_aggregator }
|
||||
## AGGREGATORS
|
||||
chill.person.export.aggregator_action_type:
|
||||
class: Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\ActionTypeAggregator
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_action_type_aggregator }
|
||||
|
||||
chill.person.export.aggregator_treatingagent_scope:
|
||||
class: Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\ScopeAggregator
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_treatingagent_scope_aggregator }
|
||||
chill.person.export.aggregator_treatingagent_scope:
|
||||
class: Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\ScopeAggregator
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_treatingagent_scope_aggregator }
|
||||
|
||||
chill.person.export.aggregator_treatingagent_job:
|
||||
class: Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\JobAggregator
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_treatingagent_job_aggregator }
|
||||
chill.person.export.aggregator_treatingagent_job:
|
||||
class: Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\JobAggregator
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_treatingagent_job_aggregator }
|
||||
|
||||
Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\ReferrerAggregator:
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_treatingagent_aggregator }
|
||||
Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\ReferrerAggregator:
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_treatingagent_aggregator }
|
||||
|
||||
chill.person.export.aggregator_goal:
|
||||
class: Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\GoalAggregator
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_goal_aggregator }
|
||||
chill.person.export.aggregator_goal:
|
||||
class: Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\GoalAggregator
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_goal_aggregator }
|
||||
|
||||
chill.person.export.aggregator_result:
|
||||
class: Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\ResultAggregator
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_result_aggregator }
|
||||
chill.person.export.aggregator_result:
|
||||
class: Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\ResultAggregator
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_result_aggregator }
|
||||
|
||||
chill.person.export.aggregator_goalresult:
|
||||
class: Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\GoalResultAggregator
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_goal_result_aggregator }
|
||||
chill.person.export.aggregator_goalresult:
|
||||
class: Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\GoalResultAggregator
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_goal_result_aggregator }
|
||||
|
||||
Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\CurrentActionAggregator:
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_current_aggregator }
|
||||
Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\CurrentActionAggregator:
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: social_work_actions_current_aggregator }
|
||||
|
||||
Chill\PersonBundle\Export\Aggregator\SocialWorkAggregators\HandlingThirdPartyAggregator:
|
||||
tags:
|
||||
- { name: chill.export_aggregator, alias: accompanyingcourse_handling3party_aggregator }
|
||||
|
||||
Chill\PersonBundle\Export\Filter\AccompanyingCourseFilters\HandlingThirdPartyFilter:
|
||||
tags:
|
||||
- { name: chill.export_filter, alias: 'acpw_handling3party_filter'}
|
||||
|
@@ -480,7 +480,7 @@ acp_geog_agg_unitrefid: Clé de la zone géographique
|
||||
Geographical layer: Couche géographique
|
||||
Select a geographical layer: Choisir une couche géographique
|
||||
Group people by geographical unit based on his address: Grouper les usagers par zone géographique (sur base de l'adresse)
|
||||
Filter by person's geographical unit (based on address): Filter les usagers par zone géographique (sur base de l'adresse)
|
||||
Filter by person's geographical unit (based on address): Filtrer les usagers par zone géographique (sur base de l'adresse)
|
||||
|
||||
Filter by socialaction: Filtrer les parcours par action d'accompagnement
|
||||
Accepted socialactions: Actions d'accompagnement
|
||||
@@ -981,6 +981,11 @@ notification:
|
||||
personId: Identifiant de l'usager
|
||||
|
||||
export:
|
||||
enum:
|
||||
frequency:
|
||||
YYYY-IW: par semaine
|
||||
YYYY-MM: par mois
|
||||
YYYY: par année
|
||||
export:
|
||||
acp_stats:
|
||||
avg_duration: Moyenne de la durée de participation de chaque usager concerné
|
||||
@@ -1037,6 +1042,14 @@ export:
|
||||
Calc date: Date de calcul du service de l'intervenant
|
||||
by_scope:
|
||||
Group course by scope: Grouper les parcours par service
|
||||
by_opening_date:
|
||||
title: Grouper les parcours par date d'ouverture
|
||||
frequency: Intervalle de regroupement
|
||||
header: Date d'ouverture des parcours (période)
|
||||
by_closing_date:
|
||||
title: Grouper les parcours par date de cloture
|
||||
frequency: Intervalle de regroupement
|
||||
header: Date de cloture des parcours (période)
|
||||
|
||||
course_work:
|
||||
by_treating_agent:
|
||||
@@ -1053,6 +1066,9 @@ export:
|
||||
by_agent_job:
|
||||
Group by treating agent job: Grouper les actions par métier de l'agent traitant
|
||||
Calc date: Date de calcul du métier de l'agent traitant
|
||||
by_handling_third_party:
|
||||
title: Grouper les actions par tiers traitant
|
||||
header: Tiers traitant
|
||||
|
||||
eval:
|
||||
by_end_date:
|
||||
@@ -1084,21 +1100,22 @@ export:
|
||||
Persons filtered by no composition at %date%: Uniquement les usagers sans composition de ménage à la date du %date%
|
||||
Date calc: Date de calcul
|
||||
by_address_ref_status:
|
||||
Filter by person's address ref status: Filtrer par comparaison avec l'adresse de référence
|
||||
Filter by person's address ref status: Filtrer les usagers par comparaison avec l'adresse de référence
|
||||
to_review: Diffère de l'adresse de référence
|
||||
reviewed: Diffère de l'adresse de référence mais conservé par l'utilisateur
|
||||
match: Identique à l'adresse de référence
|
||||
Filtered by person\'s address status computed at %datecalc%, only %statuses%: Filtré par comparaison à l'adresse de référence, calculé à %datecalc%, seulement %statuses%
|
||||
Status: Statut
|
||||
Address at date: Adresse à la date
|
||||
|
||||
course:
|
||||
having_info_within_interval:
|
||||
title: Filter les parcours ayant reçu une intervention entre deux dates
|
||||
title: Filtrer les parcours ayant reçu une intervention entre deux dates
|
||||
start_date: Début de la période
|
||||
end_date: Fin de la période
|
||||
Only course with events between %startDate% and %endDate%: Seulement les parcours ayant reçu une intervention entre le %startDate% et le %endDate%
|
||||
by_user_working:
|
||||
title: Filter les parcours par intervenant, entre deux dates
|
||||
title: Filtrer les parcours par intervenant, entre deux dates
|
||||
'Filtered by user working on course: only %users%, between %start_date% and %end_date%': 'Filtré par intervenants sur le parcours: seulement %users%, entre le %start_date% et le %end_date%'
|
||||
User working after: Intervention après le
|
||||
User working before: Intervention avant le
|
||||
@@ -1168,6 +1185,10 @@ export:
|
||||
Calc date: Date à laquelle l'agent est en situation de désignation sur l'action
|
||||
calc_date_help: Il s'agit de la date à laquelle l'agent est actif comme agent traitant de l'action, et non la date à la quelle l'agent est désigné comme agent traitant.
|
||||
"Filtered by treating agent: only %agents%": "Filtré par agent traitant: uniquement %agents%"
|
||||
by_handling3party:
|
||||
title: Filtrer les actions par tiers traitant
|
||||
Only 3 parties %3parties%: "Seulement les actions d'accompagnement qui ont pour tiers traitant: %3parties%"
|
||||
pick_3parties: Tiers traitants des actions
|
||||
|
||||
list:
|
||||
person_with_acp:
|
||||
|
Reference in New Issue
Block a user