From 8688e4d50297793caa727430f8c638a1c306229a Mon Sep 17 00:00:00 2001 From: Julie Lenaerts Date: Mon, 5 Sep 2022 11:51:17 +0200 Subject: [PATCH 1/2] complete maritalStatusFilter --- .../PersonFilters/FamilySituationFilter.php | 55 ------------ .../PersonFilters/MaritalStatusFilter.php | 84 +++++++++++++++++++ .../translations/messages.fr.yml | 4 + 3 files changed, 88 insertions(+), 55 deletions(-) delete mode 100644 src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/FamilySituationFilter.php create mode 100644 src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/MaritalStatusFilter.php diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/FamilySituationFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/FamilySituationFilter.php deleted file mode 100644 index e1a6c7529..000000000 --- a/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/FamilySituationFilter.php +++ /dev/null @@ -1,55 +0,0 @@ -add('date_calc', DateType::class, [ - 'label' => 'Family composition(s) at this time', - 'data' => new DateTime(), - ]); - } - - public function describeAction($data, $format = 'string') - { - return ['Filtered by person\'s family situation']; - } - - public function getTitle() - { - return 'Filter by person\'s family situation'; - } -} diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/MaritalStatusFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/MaritalStatusFilter.php new file mode 100644 index 000000000..985bfe741 --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/MaritalStatusFilter.php @@ -0,0 +1,84 @@ +getDQLPart('where'); + + $clause = $qb->expr()->andX( + $qb->expr()->in('p.maritalStatus', ':maritalStatus'), + $qb->expr()->eq('p.maritalStatusDate', ':calc_date') + ); + + if ($where instanceof Andx) { + $where->add($clause); + } else { + $where = $qb->expr()->andX($clause); + } + + $qb->add('where', $where); + $qb->setParameter('maritalStatus', $data['maritalStatus']); + $qb->setParameter('maritalStatusDate', $data['calc_date']); + } + + public function applyOn() + { + return Declarations::PERSON_TYPE; + } + + public function buildForm(\Symfony\Component\Form\FormBuilderInterface $builder) + { + $builder->add('maritalStatus', EntityType::class, [ + 'class' => MaritalStatus::class, + 'choice_label' => function (MaritalStatus $ms) { + return $this->translatableStringHelper->localize( + $ms->getLabel() + ); + }, + 'multiple' => true, + 'expanded' => true + ]); + + $builder->add('date_calc', DateType::class, [ + 'label' => 'Marital status at this time', + 'data' => new DateTime(), + ]); + } + + public function describeAction($data, $format = 'string') + { + return ['Filtered by person\'s marital status']; + } + + public function getTitle() + { + return 'Filter by person\'s marital status'; + } +} diff --git a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml index e105dd45f..7cf7d34b9 100644 --- a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml @@ -400,6 +400,10 @@ Filtered by person\'s who have a residential address located at a thirdparty of Family composition: Composition familiale Family composition at this time: Composition familiale à cette date. +Filtered by person's marital status: Filtré par état matrimonial +Filter by person's marital status: Filtrer par état matrimonial à une certaine date. +Marital status at this time: État matrimonial à cette date. + Filter by entrusted child status: Filtrer les usagers qui sont "enfant confié" Filtered by entrusted child status: Uniquement les usagers qui sont "enfant confié" From 3295031bcd7e250849e27296e8f96ea35122ef50 Mon Sep 17 00:00:00 2001 From: Julie Lenaerts Date: Tue, 6 Sep 2022 10:04:59 +0200 Subject: [PATCH 2/2] marital status filter --- .../PersonFilters/MaritalStatusFilter.php | 24 +++++++++++---- .../config/services/exports_person.yaml | 29 ++++++++++++------- .../translations/messages.fr.yml | 4 +-- 3 files changed, 39 insertions(+), 18 deletions(-) diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/MaritalStatusFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/MaritalStatusFilter.php index 985bfe741..7a72179a8 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/MaritalStatusFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/MaritalStatusFilter.php @@ -13,6 +13,8 @@ namespace Chill\PersonBundle\Export\Filter\PersonFilters; use Chill\MainBundle\Entity\UserJob; use Chill\MainBundle\Export\FilterInterface; +use Chill\MainBundle\Form\Type\ChillDateType; +use Chill\MainBundle\Templating\TranslatableStringHelper; use Chill\PersonBundle\Entity\Household\HouseholdCompositionType; use Chill\PersonBundle\Entity\MaritalStatus; use Chill\PersonBundle\Export\Declarations; @@ -20,9 +22,18 @@ use DateTime; use Doctrine\ORM\Query\Expr\Andx; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\Extension\Core\Type\DateType; +use Symfony\Contracts\Translation\TranslatorInterface; class MaritalStatusFilter implements FilterInterface { + private TranslatableStringHelper $translatableStringHelper; + + public function __construct( + TranslatableStringHelper $translatableStringHelper + ) { + $this->translatableStringHelper = $translatableStringHelper; + } + public function addRole() { return null; @@ -33,8 +44,11 @@ class MaritalStatusFilter implements FilterInterface $where = $qb->getDQLPart('where'); $clause = $qb->expr()->andX( - $qb->expr()->in('p.maritalStatus', ':maritalStatus'), - $qb->expr()->eq('p.maritalStatusDate', ':calc_date') + $qb->expr()->in('person.maritalStatus', ':maritalStatus'), + $qb->expr()->orX( + $qb->expr()->eq('person.maritalStatusDate', ':calc_date'), + $qb->expr()->isNull('person.maritalStatusDate') + ) ); if ($where instanceof Andx) { @@ -45,7 +59,7 @@ class MaritalStatusFilter implements FilterInterface $qb->add('where', $where); $qb->setParameter('maritalStatus', $data['maritalStatus']); - $qb->setParameter('maritalStatusDate', $data['calc_date']); + $qb->setParameter('calc_date', $data['calc_date']); } public function applyOn() @@ -59,14 +73,14 @@ class MaritalStatusFilter implements FilterInterface 'class' => MaritalStatus::class, 'choice_label' => function (MaritalStatus $ms) { return $this->translatableStringHelper->localize( - $ms->getLabel() + $ms->getName() ); }, 'multiple' => true, 'expanded' => true ]); - $builder->add('date_calc', DateType::class, [ + $builder->add('calc_date', ChillDateType::class, [ 'label' => 'Marital status at this time', 'data' => new DateTime(), ]); diff --git a/src/Bundle/ChillPersonBundle/config/services/exports_person.yaml b/src/Bundle/ChillPersonBundle/config/services/exports_person.yaml index ae8f90b78..fa1c8df8d 100644 --- a/src/Bundle/ChillPersonBundle/config/services/exports_person.yaml +++ b/src/Bundle/ChillPersonBundle/config/services/exports_person.yaml @@ -14,7 +14,7 @@ services: autoconfigure: true tags: - { name: chill.export, alias: count_person_with_accompanying_course } - + chill.person.export.list_person: class: Chill\PersonBundle\Export\Export\ListPerson autowire: true @@ -39,24 +39,24 @@ services: autoconfigure: true tags: - { name: chill.export_filter, alias: person_gender_filter } - + chill.person.export.filter_age: class: Chill\PersonBundle\Export\Filter\PersonFilters\AgeFilter autowire: true autoconfigure: true tags: - { name: chill.export_filter, alias: person_age_filter } - + chill.person.export.filter_birthdate: class: Chill\PersonBundle\Export\Filter\PersonFilters\BirthdateFilter tags: - { name: chill.export_filter, alias: person_birthdate_filter } - + chill.person.export.filter_deathdate: class: Chill\PersonBundle\Export\Filter\PersonFilters\DeathdateFilter tags: - { name: chill.export_filter, alias: person_deathdate_filter } - + chill.person.export.filter_dead_or_alive: class: Chill\PersonBundle\Export\Filter\PersonFilters\DeadOrAliveFilter tags: @@ -68,7 +68,7 @@ services: autoconfigure: true tags: - { name: chill.export_filter, alias: person_nationality_filter } - + chill.person.export.filter_residential_address_at_user: class: Chill\PersonBundle\Export\Filter\PersonFilters\ResidentialAddressAtUserFilter autowire: true @@ -83,6 +83,13 @@ services: tags: - { name: chill.export_filter, alias: person_residential_address_at_thirdparty_filter } + chill.person.export.filter_marital_status: + class: Chill\PersonBundle\Export\Filter\PersonFilters\MaritalStatusFilter + autowire: true + autoconfigure: true + tags: + - { name: chill.export_filter, alias: person_marital_status_filter } + ## Aggregators chill.person.export.aggregator_nationality: class: Chill\PersonBundle\Export\Aggregator\PersonAggregators\NationalityAggregator @@ -90,35 +97,35 @@ services: autoconfigure: true tags: - { name: chill.export_aggregator, alias: person_nationality_aggregator } - + chill.person.export.aggregator_country_of_birth: class: Chill\PersonBundle\Export\Aggregator\PersonAggregators\CountryOfBirthAggregator autowire: true autoconfigure: true tags: - { name: chill.export_aggregator, alias: person_country_of_birth_aggregator } - + chill.person.export.aggregator_gender: class: Chill\PersonBundle\Export\Aggregator\PersonAggregators\GenderAggregator autowire: true autoconfigure: true tags: - { name: chill.export_aggregator, alias: person_gender_aggregator } - + chill.person.export.aggregator_age: class: Chill\PersonBundle\Export\Aggregator\PersonAggregators\AgeAggregator autowire: true autoconfigure: true tags: - { name: chill.export_aggregator, alias: person_age_aggregator } - + chill.person.export.aggregator_marital_status: class: Chill\PersonBundle\Export\Aggregator\PersonAggregators\MaritalStatusAggregator autowire: true autoconfigure: true tags: - { name: chill.export_aggregator, alias: person_marital_status_aggregator } - + chill.person.export.aggregator_household_position: class: Chill\PersonBundle\Export\Aggregator\PersonAggregators\HouseholdPositionAggregator autowire: true diff --git a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml index 7cf7d34b9..2219fba06 100644 --- a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml @@ -401,8 +401,8 @@ Family composition: Composition familiale Family composition at this time: Composition familiale à cette date. Filtered by person's marital status: Filtré par état matrimonial -Filter by person's marital status: Filtrer par état matrimonial à une certaine date. -Marital status at this time: État matrimonial à cette date. +Filter by person's marital status: Filtrer par état matrimonial +Marital status at this time: État matrimonial par rapport à cette date Filter by entrusted child status: Filtrer les usagers qui sont "enfant confié" Filtered by entrusted child status: Uniquement les usagers qui sont "enfant confié"