Compare commits

..

64 Commits

Author SHA1 Message Date
f7f8319749 Update bundles version to v3.1.1 2024-10-01 10:38:22 +02:00
376ce59917 Fix typing errors in customfieldbundle 2024-10-01 10:35:38 +02:00
06d6227d0e Merge branch 'upgrade-sf5' into 'master'
Upgrade chill to symfony 5

See merge request Chill-Projet/chill-bundles!735
2024-09-26 14:19:40 +00:00
be8901a5c4 Fix referrer scope date comparison in aggregator
Correct the date comparison logic to use openingDate instead of closingDate when evaluating user history end dates. This ensures accurate grouping by referrer in the accompanying course aggregators. Added a changelog entry for Issue #309.
2024-09-16 15:52:48 +02:00
7206e13984 Merge branch 'master' into upgrade-sf5 2024-09-16 15:29:43 +02:00
6f28d154c8 Fix referrers display to show only current referrers.
Updated the view to loop through current referrers in the accompanying period. Added new method `getReferrersHistoryCurrent` to the entity to filter and return only active referrers, ensuring correct display in the UI. Also included documentation for better code clarity.
2024-09-16 15:25:25 +02:00
1c0d334b91 downgrade symfony/event-dispatcher-contracts to version 2.4
This is necessary for using some dependencies which only works with symfony 5.4
2024-09-12 17:34:28 +02:00
bc34d84d63 Merge remote-tracking branch 'origin/master' into upgrade-sf5 2024-09-12 13:36:50 +02:00
f0f651edea update cs after php-cs-fixer upgrade 2024-09-12 12:02:33 +02:00
5dfbdad13d Release 2.24.0 2024-09-11 14:31:52 +02:00
b3e2d4ff9f Merge branch '306-invalidate-downloaded-document' into 'master'
Remove documents from memory after download

Closes #306

See merge request Chill-Projet/chill-bundles!727
2024-09-11 12:29:37 +00:00
01c2848a83 Fix deprecated method in redis 2024-09-11 14:23:23 +02:00
d0ee381627 Upgrade of php-cs-fixer 2024-09-11 14:21:32 +02:00
8b1b255050 Remove documents from memory after download
Implemented functionality to remove documents from browser memory 45 seconds after they are converted or downloaded. This ensures that clicking the download button again re-downloads the document. The reset state function was added to both ConvertButton.vue and DownloadButton.vue components.
2024-09-11 13:22:49 +02:00
5d0b531820 Upgrade chill-bundles to v3.1.0 2024-08-30 10:59:04 +02:00
5be3cae288 Merge branch 'add_household_to_activity_list_export' into 'upgrade-sf5'
Add household info to activity exports

See merge request Chill-Projet/chill-bundles!721
2024-08-30 08:57:27 +00:00
4587f66402 Add household info to activity exports 2024-08-30 08:57:27 +00:00
3738c110f8 Add missing import 2024-08-28 12:38:11 +02:00
f57fdb2b4c Add missing import 2024-08-28 12:32:19 +02:00
b57824fc7e Update Rector skip configuration
Replaced Symfony Rector rules with Doctrine rule in the skip list due to a known issue. Refer to the linked GitHub issue for more details on the bug.
2024-08-28 12:21:43 +02:00
6b4e1ed2d3 PHP CS Fixer updated (3.59.3 -> v3.63.1) 2024-08-28 12:06:08 +02:00
b0485dbcc8 Replace ArrayCollection with Collection&Selectable on some entity typing (fix previous commit)
Updated entity properties to use Collection&Selectable for better type safety and interoperability. This change affects User, Household, Calendar, Person, AccompanyingPeriod, and EntityWorkflow classes.
2024-08-28 12:04:43 +02:00
c16219dc6d Force typing for ArrayIterator in EntityWorkflow 2024-08-28 11:48:24 +02:00
ad47804c91 Apply rector changes to Collection typing 2024-08-27 16:23:08 +02:00
85e2466611 Cherry-pick phpstan fixes after rector changes 2024-08-27 16:09:12 +02:00
94d6b5eff8 Merge branch 'upgrade-sf5' of gitlab.com:Chill-Projet/chill-bundles into upgrade-sf5 2024-08-26 18:15:13 +02:00
d87f380f16 Update chill bundles to version 3.0.0 2024-08-26 18:14:48 +02:00
58bf722fae remove the "v" prefix for file, to create release with tags starting with "v". 2024-08-26 14:21:43 +00:00
50fb79ebbf Remove enforcement of https scheme within controller method 2024-08-26 15:42:28 +02:00
58912f1d98 Add changie for fixes to CollectionType js 2024-08-22 14:24:58 +02:00
9604ba5f4b Merge branch 'person_resource_abstract_class' into 'upgrade-sf5'
Create abstract class for person resource and corrections made to CollectionType js

See merge request Chill-Projet/chill-bundles!716
2024-08-22 12:22:52 +00:00
b689a51a48 Changie added for fix connection to azure 2024-08-21 16:56:05 +02:00
8c0d2f58ba Add missing [ ] for schemes option 2024-08-21 16:53:26 +02:00
212230448b Add changie for fix of delete action accompanying periods 2024-08-21 15:14:48 +02:00
2bfb8fe387 Fix delete action for accompanying periods, missed in previous correction 2024-08-21 15:13:18 +02:00
6362b98a00 Specifiy https scheme for the connectAzureCheck controller method 2024-08-21 14:20:37 +02:00
6e2a08cae8 Resolve multiple entries not being saved in collectiontype 2024-08-21 10:22:13 +02:00
305105faae Fix CalendarContextTest after faulty php cs fix 2024-08-14 15:27:00 +02:00
85811cc6ae Run php-cs-fixer and rector 2024-08-14 14:45:59 +02:00
7eee995627 Merge branch 'upgrade-sf5' into person_resource_abstract_class 2024-08-14 14:26:24 +02:00
c0c448fb39 Remove dump from code 2024-08-14 14:26:04 +02:00
6445342136 Fix remove button not showing in CollectionType forms with allow_delete option 2024-08-14 14:23:03 +02:00
d52e54fd2a Make loadDynamicPicker available within windows where dynamicPicker tags are added 2024-08-14 13:38:58 +02:00
2f9884072c Add missing use statement for Groups annotation 2024-07-31 15:12:36 +02:00
ee45ff61a6 Reorganize person resource code to create an abstract class 2024-07-31 14:55:35 +02:00
2bef3c3878 french translation for the version 2.23.0 [ci-skip] 2024-07-19 15:32:45 +02:00
cea44d1788 Release 2.23.0 2024-07-19 14:03:53 +02:00
84069e03dc Add filename display on file upload
This update introduces a new feature to the DropFile component; now filenames are displayed when they are uploaded. This provides a user-friendly way to view the file being managed. Additionally, some styling adjustments were made to accommodate this new addition.
2024-07-19 13:55:22 +02:00
ad5e780936 Do not update the createdAt column when importing postal code which does not change
The conflict resolution clause in the SQL command of the PostalCodeBaseImporter service has been updated. It now only changes the 'updatedAt' timestamp if either the 'center' position or the 'label' actually differs from the existing entry. This ensures that the 'updatedAt' field reflects when meaningful changes occurred.
2024-07-19 13:42:48 +02:00
19accc4d00 Handle duplicate addresses in AddressReferenceBaseImporter
Refactored the AddressReferenceBaseImporter to optimize address import and reconciliation. The code now identifies duplicate addresses in the temporary table and handles them according to the 'allowRemoveDoubleRefId' flag. This enhances data consistency during import operations.
2024-07-19 13:41:17 +02:00
6cb085f5f7 fix cs 2024-07-19 13:39:36 +02:00
97239ada84 More documentation for cronjob 2024-07-18 10:09:12 +02:00
643156f822 Merge branch 'issue271_account_acp_closing_date' into 'master'
#271 Account for acp closing date inn action filters (export)

See merge request Chill-Projet/chill-bundles!707
2024-07-05 13:42:06 +00:00
ff0b205591 Merge branch '273-notif-all-read' into 'master'
added unread and read all function with endpoints for notifications

See merge request Chill-Projet/chill-bundles!671
2024-07-05 13:36:31 +00:00
2d67843901 added unread and read all function with endpoints for notifications 2024-07-05 13:36:31 +00:00
2b09e1459c Merge branch '274-active-status-filter' into 'master'
Resolve "Add active/inactive filter to user list in admin"

Closes #274

See merge request Chill-Projet/chill-bundles!694
2024-07-05 08:52:46 +00:00
029524ba2c Resolve "Add active/inactive filter to user list in admin" 2024-07-05 08:52:46 +00:00
fa91e9494d Merge branch 'issue123_duplicate_calendar_range_by_week' into 'master'
Add a button to duplicate calendar ranges from a week to another one

See merge request Chill-Projet/chill-bundles!706
2024-07-05 08:07:49 +00:00
4e72d6fea1 Update slot duration in calendar
The slot duration in the 'MyCalendarRange' module has been updated to a new time. The previous duration was 5 minutes, but it has now been increased to 15 minutes to provide users with longer time slots.
2024-07-05 10:01:09 +02:00
5666b8b647 Expand range of calendar weeks in App2.vue to get weeks int the future and in the past
The code has been altered to increase the range of weeks computed from 15 to 30, with a modification to the 'getMonday' method accordingly. This enhances the user calendar experience by providing a wider time array to choose from.
2024-07-05 09:58:49 +02:00
nobohan
0573f56782 copy week in my calendar - improve layout 2024-07-03 11:35:33 +02:00
nobohan
3bee18b0fa #271 Account for acp closing date inn action filters (export) 2024-07-02 16:31:18 +02:00
nobohan
843698a1d8 DX vuejs code style 2024-07-01 15:39:52 +02:00
nobohan
499640e48b Add a button to duplicate calendar ranges from a week to another one 2024-07-01 15:33:39 +02:00
1931 changed files with 3249 additions and 8225 deletions

View File

@@ -1,4 +1,4 @@
## v2.23.0 - 2024-07-23 ## v2.23.0 - 2024-07-23 & 2024-07-19
### Feature ### Feature
* ([#221](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/221)) [DX] move async-upload-bundle features into chill-bundles * ([#221](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/221)) [DX] move async-upload-bundle features into chill-bundles
* Add job bundle (module emploi) * Add job bundle (module emploi)
@@ -6,6 +6,25 @@
* Upgrade CKEditor and refactor configuration with use of typescript * Upgrade CKEditor and refactor configuration with use of typescript
* ([#123](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/123)) Add a button to duplicate calendar ranges from a week to another one
* [admin] filter users by active / inactive in the admin user's list
* ([#273](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/273)) Add the possibility to mark all notifications as read
* Handle duplicate reference id in the import of reference addresses
* Do not update the "createdAt" column when importing postal code which does not change
* Display filename on file upload within the UI interface
### Fixed ### Fixed
* Fix resolving of centers for an household, which will fix in turn the access control * Fix resolving of centers for an household, which will fix in turn the access control
* Resolved type hinting error in activity list export * Resolved type hinting error in activity list export
* ([#271](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/271)) Take into account the acp closing date in the acp works date filter
### Traduction française des principaux changements
- Ajout d'un bouton pour dupliquer les périodes de disponibilités d'une semaine à une autre;
- dans l'interface d'administration, filtre sur les utilisateurs actifs. Par défaut, seul les utilisateurs
actifs sont affichés;
- Nouveau bouton pour indiquer toutes les notifications comme lues;
- Améliorations sur l'import des adresses et des codes postaux;
- Affiche le nom du fichier déposé quand on téléverse un fichier depuis le poste de travail local;
- Agrandit l'icône du type de fichier dans l'interface de dépôt de fichier;
- correction: tient compte de la date de fermeture du parcours dans les filtres sur les actions d'accompagnement.

3
.changes/v2.24.0.md Normal file
View File

@@ -0,0 +1,3 @@
## v2.24.0 - 2024-09-11
### Feature
* ([#306](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/306)) When a document is converted or downloaded in the browser, this document is removed from the browser memory after 45s. Future click on the button re-download the document.

5
.changes/v3.0.0.md Normal file
View File

@@ -0,0 +1,5 @@
## v3.0.0 - 2024-08-26
### Fixed
* Fix delete action for accompanying periods in draft state
* Fix connection to azure when making an calendar event in chill
* CollectionType js fixes for remove button and adding multiple entries

3
.changes/v3.1.0.md Normal file
View File

@@ -0,0 +1,3 @@
## v3.1.0 - 2024-08-30
### Feature
* Add export aggregator to aggregate activities by household + filter persons that are not part of an accompanyingperiod during a certain timeframe.

6
.changes/v3.1.1.md Normal file
View File

@@ -0,0 +1,6 @@
## v3.1.1 - 2024-10-01
### Fixed
* ([#308](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/308)) Show only the current referrer in the page "show" for an accompanying period workf
* ([#309](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/309)) Correctly compute the grouping by referrer aggregator
* Fixed typing of custom field long choice and custom field group

View File

@@ -138,4 +138,4 @@ release:
- echo "running release_job" - echo "running release_job"
release: release:
tag_name: '$CI_COMMIT_TAG' tag_name: '$CI_COMMIT_TAG'
description: "./.changes/v$CI_COMMIT_TAG.md" description: "./.changes/$CI_COMMIT_TAG.md"

View File

@@ -6,7 +6,28 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
and is generated by [Changie](https://github.com/miniscruff/changie). and is generated by [Changie](https://github.com/miniscruff/changie).
## v2.23.0 - 2024-07-23 ## v3.1.1 - 2024-10-01
### Fixed
* ([#308](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/308)) Show only the current referrer in the page "show" for an accompanying period workf
* ([#309](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/309)) Correctly compute the grouping by referrer aggregator
* Fixed typing of custom field long choice and custom field group
## v3.1.0 - 2024-08-30
### Feature
* Add export aggregator to aggregate activities by household + filter persons that are not part of an accompanyingperiod during a certain timeframe.
## v3.0.0 - 2024-08-26
### Fixed
* Fix delete action for accompanying periods in draft state
* Fix connection to azure when making an calendar event in chill
* CollectionType js fixes for remove button and adding multiple entries
## v2.24.0 - 2024-09-11
### Feature
* ([#306](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/306)) When a document is converted or downloaded in the browser, this document is removed from the browser memory after 45s. Future click on the button re-download the document.
## v2.23.0 - 2024-07-23 & 2024-07-19
### Feature ### Feature
* ([#221](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/221)) [DX] move async-upload-bundle features into chill-bundles * ([#221](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/221)) [DX] move async-upload-bundle features into chill-bundles
* Add job bundle (module emploi) * Add job bundle (module emploi)
@@ -14,9 +35,28 @@ and is generated by [Changie](https://github.com/miniscruff/changie).
* Upgrade CKEditor and refactor configuration with use of typescript * Upgrade CKEditor and refactor configuration with use of typescript
* ([#123](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/123)) Add a button to duplicate calendar ranges from a week to another one
* [admin] filter users by active / inactive in the admin user's list
* ([#273](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/273)) Add the possibility to mark all notifications as read
* Handle duplicate reference id in the import of reference addresses
* Do not update the "createdAt" column when importing postal code which does not change
* Display filename on file upload within the UI interface
### Fixed ### Fixed
* Fix resolving of centers for an household, which will fix in turn the access control * Fix resolving of centers for an household, which will fix in turn the access control
* Resolved type hinting error in activity list export * Resolved type hinting error in activity list export
* ([#271](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/271)) Take into account the acp closing date in the acp works date filter
### Traduction française des principaux changements
- Ajout d'un bouton pour dupliquer les périodes de disponibilités d'une semaine à une autre;
- dans l'interface d'administration, filtre sur les utilisateurs actifs. Par défaut, seul les utilisateurs
actifs sont affichés;
- Nouveau bouton pour indiquer toutes les notifications comme lues;
- Améliorations sur l'import des adresses et des codes postaux;
- Affiche le nom du fichier déposé quand on téléverse un fichier depuis le poste de travail local;
- Agrandit l'icône du type de fichier dans l'interface de dépôt de fichier;
- correction: tient compte de la date de fermeture du parcours dans les filtres sur les actions d'accompagnement.
## v2.22.2 - 2024-07-03 ## v2.22.2 - 2024-07-03
### Fixed ### Fixed

View File

@@ -8,7 +8,7 @@
"social worker" "social worker"
], ],
"require": { "require": {
"php": "^8.3", "php": "^8.2",
"ext-dom": "*", "ext-dom": "*",
"ext-json": "*", "ext-json": "*",
"ext-openssl": "*", "ext-openssl": "*",
@@ -30,48 +30,50 @@
"ovh/ovh": "^3.0", "ovh/ovh": "^3.0",
"phpoffice/phpspreadsheet": "^1.16", "phpoffice/phpspreadsheet": "^1.16",
"ramsey/uuid-doctrine": "^1.7", "ramsey/uuid-doctrine": "^1.7",
"sensio/framework-extra-bundle": "^6.0", "sensio/framework-extra-bundle": "^5.5",
"spomky-labs/base64url": "^2.0", "spomky-labs/base64url": "^2.0",
"symfony/asset": "6.0.*", "symfony/asset": "^5.4",
"symfony/browser-kit": "6.0.*", "symfony/browser-kit": "^5.4",
"symfony/cache": "6.0.*", "symfony/cache": "^5.4",
"symfony/clock": "^6.2", "symfony/clock": "^6.2",
"symfony/config": "^6.0", "symfony/config": "^5.4",
"symfony/console": "6.0.*", "symfony/console": "^5.4",
"symfony/css-selector": "6.0.*", "symfony/css-selector": "^5.4",
"symfony/dom-crawler": "6.0.*", "symfony/dom-crawler": "^5.4",
"symfony/error-handler": "6.0.*", "symfony/error-handler": "^5.4",
"symfony/event-dispatcher": "6.0.*", "symfony/event-dispatcher": "^5.4",
"symfony/expression-language": "6.0.*", "symfony/event-dispatcher-contracts": "^2.4",
"symfony/filesystem": "6.0.*", "symfony/expression-language": "^5.4",
"symfony/finder": "6.0.*", "symfony/filesystem": "^5.4",
"symfony/form": "6.0.*", "symfony/finder": "^5.4",
"symfony/framework-bundle": "6.0.*", "symfony/form": "^5.4",
"symfony/http-client": "6.0.*", "symfony/framework-bundle": "^5.4",
"symfony/http-foundation": "6.0.*", "symfony/http-client": "^5.4",
"symfony/intl": "6.0.*", "symfony/http-foundation": "^5.4",
"symfony/mailer": "6.0.*", "symfony/intl": "^5.4",
"symfony/messenger": "6.0.*", "symfony/mailer": "^5.4",
"symfony/mime": "6.0.*", "symfony/messenger": "^5.4",
"symfony/mime": "^5.4",
"symfony/monolog-bundle": "^3.5", "symfony/monolog-bundle": "^3.5",
"symfony/options-resolver": "6.0.*", "symfony/options-resolver": "^5.4",
"symfony/process": "6.0.*", "symfony/process": "^5.4",
"symfony/property-access": "6.0.*", "symfony/property-access": "^5.4",
"symfony/property-info": "6.0.*", "symfony/property-info": "^5.4",
"symfony/routing": "6.0.*", "symfony/routing": "^5.4",
"symfony/security-bundle": "^6.0", "symfony/security-bundle": "^5.4",
"symfony/security-core": "6.0.*", "symfony/security-core": "^5.4",
"symfony/security-csrf": "6.0.*", "symfony/security-csrf": "^5.4",
"symfony/security-http": "6.0.*", "symfony/security-guard": "^5.4",
"symfony/serializer": "6.0.*", "symfony/security-http": "^5.4",
"symfony/string": "6.0.*", "symfony/serializer": "^5.4",
"symfony/templating": "6.0.*", "symfony/string": "^5.4",
"symfony/translation": "6.0.*", "symfony/templating": "^5.4",
"symfony/twig-bundle": "6.0.*", "symfony/translation": "^5.4",
"symfony/validator": "6.0.*", "symfony/twig-bundle": "^5.4",
"symfony/validator": "^5.4",
"symfony/webpack-encore-bundle": "^1.11", "symfony/webpack-encore-bundle": "^1.11",
"symfony/workflow": "6.0.*", "symfony/workflow": "^5.4",
"symfony/yaml": "6.0.*", "symfony/yaml": "^5.4",
"thenetworg/oauth2-azure": "^2.0", "thenetworg/oauth2-azure": "^2.0",
"twig/extra-bundle": "^3.0", "twig/extra-bundle": "^3.0",
"twig/intl-extra": "^3.0", "twig/intl-extra": "^3.0",
@@ -92,13 +94,13 @@
"phpstan/phpstan-strict-rules": "^1.0", "phpstan/phpstan-strict-rules": "^1.0",
"phpunit/phpunit": "^10.5.24", "phpunit/phpunit": "^10.5.24",
"rector/rector": "^1.1.0", "rector/rector": "^1.1.0",
"symfony/debug-bundle": "6.0.*", "symfony/debug-bundle": "^5.4",
"symfony/dotenv": "6.0.*", "symfony/dotenv": "^5.4",
"symfony/maker-bundle": "^1.20", "symfony/maker-bundle": "^1.20",
"symfony/phpunit-bridge": "^7.1", "symfony/phpunit-bridge": "^7.1",
"symfony/runtime": "6.0.*", "symfony/runtime": "^5.4",
"symfony/stopwatch": "6.0.*", "symfony/stopwatch": "^5.4",
"symfony/var-dumper": "6.0.*" "symfony/var-dumper": "^5.4"
}, },
"conflict": { "conflict": {
"symfony/symfony": "*" "symfony/symfony": "*"
@@ -151,11 +153,5 @@
"cache:clear": "symfony-cmd" "cache:clear": "symfony-cmd"
}, },
"php-cs-fixer": "php-cs-fixer fix --config=./.php-cs-fixer.dist.php --show-progress=none" "php-cs-fixer": "php-cs-fixer fix --config=./.php-cs-fixer.dist.php --show-progress=none"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "6.0.*"
}
} }
} }

View File

@@ -21,7 +21,6 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface;
class BirthdateFilter implements ExportElementValidatedInterface, FilterInterface class BirthdateFilter implements ExportElementValidatedInterface, FilterInterface
{ {
// add specific role for this filter // add specific role for this filter
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
// we do not need any new role for this filter, so we return null // we do not need any new role for this filter, so we return null
@@ -29,7 +28,6 @@ class BirthdateFilter implements ExportElementValidatedInterface, FilterInterfac
} }
// here, we alter the query created by Export // here, we alter the query created by Export
#[\Override]
public function alterQuery(\Doctrine\ORM\QueryBuilder $qb, $data) public function alterQuery(\Doctrine\ORM\QueryBuilder $qb, $data)
{ {
$where = $qb->getDQLPart('where'); $where = $qb->getDQLPart('where');
@@ -54,14 +52,12 @@ class BirthdateFilter implements ExportElementValidatedInterface, FilterInterfac
} }
// we give information on which type of export this filter applies // we give information on which type of export this filter applies
#[\Override]
public function applyOn() public function applyOn()
{ {
return 'person'; return 'person';
} }
// we build a form to collect some parameters from the users // we build a form to collect some parameters from the users
#[\Override]
public function buildForm(\Symfony\Component\Form\FormBuilderInterface $builder) public function buildForm(\Symfony\Component\Form\FormBuilderInterface $builder)
{ {
$builder->add('date_from', DateType::class, [ $builder->add('date_from', DateType::class, [
@@ -78,7 +74,6 @@ class BirthdateFilter implements ExportElementValidatedInterface, FilterInterfac
'format' => 'dd-MM-yyyy', 'format' => 'dd-MM-yyyy',
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return ['date_from' => new DateTime(), 'date_to' => new DateTime()]; return ['date_from' => new DateTime(), 'date_to' => new DateTime()];
@@ -86,7 +81,6 @@ class BirthdateFilter implements ExportElementValidatedInterface, FilterInterfac
// here, we create a simple string which will describe the action of // here, we create a simple string which will describe the action of
// the filter in the Response // the filter in the Response
#[\Override]
public function describeAction($data, $format = 'string') public function describeAction($data, $format = 'string')
{ {
return ['Filtered by person\'s birtdate: ' return ['Filtered by person\'s birtdate: '
@@ -96,7 +90,6 @@ class BirthdateFilter implements ExportElementValidatedInterface, FilterInterfac
], ]; ], ];
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'Filter by person\'s birthdate'; return 'Filter by person\'s birthdate';
@@ -106,7 +99,6 @@ class BirthdateFilter implements ExportElementValidatedInterface, FilterInterfac
// is executed here. This function is added by the interface // is executed here. This function is added by the interface
// `ExportElementValidatedInterface`, and can be ignore if there is // `ExportElementValidatedInterface`, and can be ignore if there is
// no need for a validation // no need for a validation
#[\Override]
public function validateForm($data, ExecutionContextInterface $context) public function validateForm($data, ExecutionContextInterface $context)
{ {
$date_from = $data['date_from']; $date_from = $data['date_from'];

View File

@@ -32,30 +32,25 @@ class CountPerson implements ExportInterface
$this->entityManager = $em; $this->entityManager = $em;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// this export does not add any form // this export does not add any form
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getAllowedFormattersTypes() public function getAllowedFormattersTypes()
{ {
return [FormatterInterface::TYPE_TABULAR]; return [FormatterInterface::TYPE_TABULAR];
} }
#[\Override]
public function getDescription() public function getDescription()
{ {
return 'Count peoples by various parameters.'; return 'Count peoples by various parameters.';
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
// the Closure which will be executed by the formatter. // the Closure which will be executed by the formatter.
@@ -65,7 +60,6 @@ class CountPerson implements ExportInterface
}; };
} }
#[\Override]
public function getQueryKeys($data) public function getQueryKeys($data)
{ {
// this array match the result keys in the query. We have only // this array match the result keys in the query. We have only
@@ -73,25 +67,21 @@ class CountPerson implements ExportInterface
return ['export_result']; return ['export_result'];
} }
#[\Override]
public function getResult($query, $data) public function getResult($query, $data)
{ {
return $query->getQuery()->getResult(Query::HYDRATE_SCALAR); return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'Count peoples'; return 'Count peoples';
} }
#[\Override]
public function getType() public function getType()
{ {
return Declarations::PERSON_TYPE; return Declarations::PERSON_TYPE;
} }
#[\Override]
public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{ {
// we gather all center the user choose. // we gather all center the user choose.
@@ -108,13 +98,11 @@ class CountPerson implements ExportInterface
return $qb; return $qb;
} }
#[\Override]
public function requiredRole(): string public function requiredRole(): string
{ {
return PersonVoter::STATS; return PersonVoter::STATS;
} }
#[\Override]
public function supportsModifiers() public function supportsModifiers()
{ {
// explain the export manager which formatters and filters are allowed // explain the export manager which formatters and filters are allowed

View File

@@ -39,9 +39,12 @@ Implements a :code:`Chill\MainBundle\Cron\CronJobInterface`. Here is an example:
use Chill\MainBundle\Entity\CronJobExecution; use Chill\MainBundle\Entity\CronJobExecution;
use DateInterval; use DateInterval;
use DateTimeImmutable; use DateTimeImmutable;
use Symfony\Component\Clock\ClockInterface;
class MyCronJob implements CronJobInterface class MyCronJob implements CronJobInterface
{ {
function __construct(private ClockInterface $clock) {}
public function canRun(?CronJobExecution $cronJobExecution): bool public function canRun(?CronJobExecution $cronJobExecution): bool
{ {
// the parameter $cronJobExecution contains data about the last execution of the cronjob // the parameter $cronJobExecution contains data about the last execution of the cronjob
@@ -56,7 +59,7 @@ Implements a :code:`Chill\MainBundle\Cron\CronJobInterface`. Here is an example:
// this cron job should be executed if the last execution is greater than one day, but only during the night // this cron job should be executed if the last execution is greater than one day, but only during the night
$now = new DateTimeImmutable('now'); $now = $clock->now();
return $cronJobExecution->getLastStart() < $now->sub(new DateInterval('P1D')) return $cronJobExecution->getLastStart() < $now->sub(new DateInterval('P1D'))
&& in_array($now->format('H'), self::ACCEPTED_HOURS, true) && in_array($now->format('H'), self::ACCEPTED_HOURS, true)
@@ -69,9 +72,14 @@ Implements a :code:`Chill\MainBundle\Cron\CronJobInterface`. Here is an example:
return 'arbitrary-and-unique-key'; return 'arbitrary-and-unique-key';
} }
public function run(): void public function run(array $lastExecutionData): void
{ {
// here, we execute the command // here, we execute the command
// we return execution data, which will be served for next execution
// this data should be easily serializable in a json column: it should contains
// only int, string, etc. Avoid storing object
return ['last-execution-id' => 0];
} }
} }

View File

@@ -31,7 +31,6 @@ class ChillMainConfiguration implements ConfigurationInterface
$this->setWidgetFactories($widgetFactories); $this->setWidgetFactories($widgetFactories);
} }
#[\Override]
public function getConfigTreeBuilder() public function getConfigTreeBuilder()
{ {
$treeBuilder = new TreeBuilder('chill_main'); $treeBuilder = new TreeBuilder('chill_main');

View File

@@ -27,13 +27,11 @@ class ChillMainExtension extends Extension implements Widget\HasWidgetFactoriesE
*/ */
protected $widgetFactories = []; protected $widgetFactories = [];
#[\Override]
public function addWidgetFactory(WidgetFactoryInterface $factory) public function addWidgetFactory(WidgetFactoryInterface $factory)
{ {
$this->widgetFactories[] = $factory; $this->widgetFactories[] = $factory;
} }
#[\Override]
public function getConfiguration(array $config, ContainerBuilder $container) public function getConfiguration(array $config, ContainerBuilder $container)
{ {
return new Configuration($this->widgetFactories, $container); return new Configuration($this->widgetFactories, $container);
@@ -42,13 +40,11 @@ class ChillMainExtension extends Extension implements Widget\HasWidgetFactoriesE
/** /**
* @return WidgetFactoryInterface[] * @return WidgetFactoryInterface[]
*/ */
#[\Override]
public function getWidgetFactories() public function getWidgetFactories()
{ {
return $this->widgetFactories; return $this->widgetFactories;
} }
#[\Override]
public function load(array $configs, ContainerBuilder $container) public function load(array $configs, ContainerBuilder $container)
{ {
// configuration for main bundle // configuration for main bundle

View File

@@ -25,7 +25,6 @@ class ChillPersonAddAPersonListWidgetFactory extends AbstractWidgetFactory
* see http://symfony.com/doc/current/components/config/definition.html * see http://symfony.com/doc/current/components/config/definition.html
* *
*/ */
#[\Override]
public function configureOptions($place, NodeBuilder $node) public function configureOptions($place, NodeBuilder $node)
{ {
$node->booleanNode('only_active') $node->booleanNode('only_active')
@@ -57,7 +56,6 @@ class ChillPersonAddAPersonListWidgetFactory extends AbstractWidgetFactory
* the service must exists in the container, and it is not required that the service * the service must exists in the container, and it is not required that the service
* has the `chill_main` tag. * has the `chill_main` tag.
*/ */
#[\Override]
public function getServiceId(ContainerBuilder $containerBuilder, $place, $order, array $config) public function getServiceId(ContainerBuilder $containerBuilder, $place, $order, array $config)
{ {
return 'chill_person.widget.person_list'; return 'chill_person.widget.person_list';
@@ -68,7 +66,6 @@ class ChillPersonAddAPersonListWidgetFactory extends AbstractWidgetFactory
* *
* @return string * @return string
*/ */
#[\Override]
public function getWidgetAlias() public function getWidgetAlias()
{ {
return 'person_list'; return 'person_list';

View File

@@ -79,7 +79,6 @@ class ChillPersonAddAPersonWidget implements WidgetInterface
* *
* @return string * @return string
*/ */
#[\Override]
public function render(Twig_Environment $env, $place, array $context, array $config) public function render(Twig_Environment $env, $place, array $context, array $config)
{ {
$qb = $this->personRepository $qb = $this->personRepository

View File

@@ -22,7 +22,6 @@ use Symfony\Component\HttpKernel\DependencyInjection\Extension;
*/ */
class ChillPersonExtension extends Extension implements PrependExtensionInterface class ChillPersonExtension extends Extension implements PrependExtensionInterface
{ {
#[\Override]
public function load(array $configs, ContainerBuilder $container) public function load(array $configs, ContainerBuilder $container)
{ {
// ... // ...
@@ -33,7 +32,6 @@ class ChillPersonExtension extends Extension implements PrependExtensionInterfac
* *
* @param \Chill\PersonBundle\DependencyInjection\containerBuilder $container * @param \Chill\PersonBundle\DependencyInjection\containerBuilder $container
*/ */
#[\Override]
public function prepend(ContainerBuilder $container) public function prepend(ContainerBuilder $container)
{ {
$container->prependExtensionConfig('chill_main', [ $container->prependExtensionConfig('chill_main', [

View File

@@ -39,19 +39,14 @@ return static function (RectorConfig $rectorConfig): void {
//define sets of rules //define sets of rules
$rectorConfig->sets([ $rectorConfig->sets([
LevelSetList::UP_TO_PHP_83, LevelSetList::UP_TO_PHP_82,
// \Rector\Symfony\Set\SymfonySetList::SYMFONY_40, \Rector\Symfony\Set\SymfonySetList::SYMFONY_40,
// \Rector\Symfony\Set\SymfonySetList::SYMFONY_41, \Rector\Symfony\Set\SymfonySetList::SYMFONY_41,
// \Rector\Symfony\Set\SymfonySetList::SYMFONY_42, \Rector\Symfony\Set\SymfonySetList::SYMFONY_42,
// \Rector\Symfony\Set\SymfonySetList::SYMFONY_43, \Rector\Symfony\Set\SymfonySetList::SYMFONY_43,
// \Rector\Symfony\Set\SymfonySetList::SYMFONY_44, \Rector\Symfony\Set\SymfonySetList::SYMFONY_44,
\Rector\Symfony\Set\SymfonySetList::SYMFONY_50, \Rector\Doctrine\Set\DoctrineSetList::DOCTRINE_CODE_QUALITY,
\Rector\Symfony\Set\SymfonySetList::SYMFONY_51, \Rector\PHPUnit\Set\PHPUnitSetList::PHPUNIT_90,
\Rector\Symfony\Set\SymfonySetList::SYMFONY_52,
\Rector\Symfony\Set\SymfonySetList::SYMFONY_53,
\Rector\Symfony\Set\SymfonySetList::SYMFONY_54,
// \Rector\Doctrine\Set\DoctrineSetList::DOCTRINE_CODE_QUALITY,
// \Rector\PHPUnit\Set\PHPUnitSetList::PHPUNIT_90,
]); ]);
$rectorConfig->ruleWithConfiguration(\Rector\Php80\Rector\Class_\AnnotationToAttributeRector::class, [ $rectorConfig->ruleWithConfiguration(\Rector\Php80\Rector\Class_\AnnotationToAttributeRector::class, [
@@ -74,9 +69,8 @@ return static function (RectorConfig $rectorConfig): void {
// skip some path... // skip some path...
$rectorConfig->skip([ $rectorConfig->skip([
// we must adapt service definition // waiting for fixing this bug: https://github.com/rectorphp/rector-doctrine/issues/342
\Rector\Symfony\Symfony28\Rector\MethodCall\GetToConstructorInjectionRector::class, \Rector\Doctrine\CodeQuality\Rector\Property\ImproveDoctrineCollectionDocTypeInEntityRector::class,
\Rector\Symfony\Symfony34\Rector\Closure\ContainerGetNameToTypeInTestsRector::class,
]); ]);
$rectorConfig->ruleWithConfiguration(AnnotationToAttributeRector::class, [ $rectorConfig->ruleWithConfiguration(AnnotationToAttributeRector::class, [

View File

@@ -68,7 +68,7 @@ final class ActivityController extends AbstractController
private readonly FilterOrderHelperFactoryInterface $filterOrderHelperFactory, private readonly FilterOrderHelperFactoryInterface $filterOrderHelperFactory,
private readonly TranslatableStringHelperInterface $translatableStringHelper, private readonly TranslatableStringHelperInterface $translatableStringHelper,
private readonly PaginatorFactory $paginatorFactory, private readonly PaginatorFactory $paginatorFactory,
private readonly ChillSecurity $security private readonly ChillSecurity $security,
) {} ) {}
/** /**

View File

@@ -22,7 +22,6 @@ class AdminActivityPresenceController extends CRUDController
* *
* @return \Doctrine\ORM\QueryBuilder|mixed * @return \Doctrine\ORM\QueryBuilder|mixed
*/ */
#[\Override]
protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator) protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator)
{ {
/* @var \Doctrine\ORM\QueryBuilder $query */ /* @var \Doctrine\ORM\QueryBuilder $query */

View File

@@ -22,7 +22,6 @@ class AdminActivityTypeCategoryController extends CRUDController
* *
* @return \Doctrine\ORM\QueryBuilder|mixed * @return \Doctrine\ORM\QueryBuilder|mixed
*/ */
#[\Override]
protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator) protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator)
{ {
/* @var \Doctrine\ORM\QueryBuilder $query */ /* @var \Doctrine\ORM\QueryBuilder $query */

View File

@@ -22,7 +22,6 @@ class AdminActivityTypeController extends CRUDController
* *
* @return \Doctrine\ORM\QueryBuilder|mixed * @return \Doctrine\ORM\QueryBuilder|mixed
*/ */
#[\Override]
protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator) protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator)
{ {
/* @var \Doctrine\ORM\QueryBuilder $query */ /* @var \Doctrine\ORM\QueryBuilder $query */

View File

@@ -32,13 +32,11 @@ class LoadActivity extends AbstractFixture implements OrderedFixtureInterface
$this->faker = FakerFactory::create('fr_FR'); $this->faker = FakerFactory::create('fr_FR');
} }
#[\Override]
public function getOrder() public function getOrder()
{ {
return 16400; return 16400;
} }
#[\Override]
public function load(ObjectManager $manager) public function load(ObjectManager $manager)
{ {
$persons = $this->em $persons = $this->em

View File

@@ -38,7 +38,6 @@ class LoadActivityNotifications extends AbstractFixture implements DependentFixt
], ],
]; ];
#[\Override]
public function getDependencies() public function getDependencies()
{ {
return [ return [

View File

@@ -23,13 +23,11 @@ class LoadActivityReason extends AbstractFixture implements OrderedFixtureInterf
{ {
public static $references = []; public static $references = [];
#[\Override]
public function getOrder() public function getOrder()
{ {
return 16300; return 16300;
} }
#[\Override]
public function load(ObjectManager $manager) public function load(ObjectManager $manager)
{ {
$reasons = [ $reasons = [

View File

@@ -21,13 +21,11 @@ use Doctrine\Persistence\ObjectManager;
*/ */
class LoadActivityReasonCategory extends AbstractFixture implements OrderedFixtureInterface class LoadActivityReasonCategory extends AbstractFixture implements OrderedFixtureInterface
{ {
#[\Override]
public function getOrder() public function getOrder()
{ {
return 16200; return 16200;
} }
#[\Override]
public function load(ObjectManager $manager) public function load(ObjectManager $manager)
{ {
$categs = [ $categs = [

View File

@@ -23,13 +23,11 @@ class LoadActivityType extends Fixture implements OrderedFixtureInterface
{ {
public static $references = []; public static $references = [];
#[\Override]
public function getOrder() public function getOrder()
{ {
return 16100; return 16100;
} }
#[\Override]
public function load(ObjectManager $manager) public function load(ObjectManager $manager)
{ {
$types = [ $types = [

View File

@@ -23,13 +23,11 @@ class LoadActivityTypeCategory extends Fixture implements OrderedFixtureInterfac
{ {
public static $references = []; public static $references = [];
#[\Override]
public function getOrder() public function getOrder()
{ {
return 16050; return 16050;
} }
#[\Override]
public function load(ObjectManager $manager) public function load(ObjectManager $manager)
{ {
$categories = [ $categories = [

View File

@@ -26,13 +26,11 @@ use Doctrine\Persistence\ObjectManager;
*/ */
class LoadActivitytACL extends AbstractFixture implements OrderedFixtureInterface class LoadActivitytACL extends AbstractFixture implements OrderedFixtureInterface
{ {
#[\Override]
public function getOrder() public function getOrder()
{ {
return 16000; return 16000;
} }
#[\Override]
public function load(ObjectManager $manager) public function load(ObjectManager $manager)
{ {
foreach (LoadPermissionsGroup::$refs as $permissionsGroupRef) { foreach (LoadPermissionsGroup::$refs as $permissionsGroupRef) {

View File

@@ -25,7 +25,6 @@ use Symfony\Component\HttpKernel\DependencyInjection\Extension;
*/ */
class ChillActivityExtension extends Extension implements PrependExtensionInterface class ChillActivityExtension extends Extension implements PrependExtensionInterface
{ {
#[\Override]
public function load(array $configs, ContainerBuilder $container) public function load(array $configs, ContainerBuilder $container)
{ {
$configuration = new Configuration(); $configuration = new Configuration();
@@ -45,7 +44,6 @@ class ChillActivityExtension extends Extension implements PrependExtensionInterf
$loader->load('services/doctrine.entitylistener.yaml'); $loader->load('services/doctrine.entitylistener.yaml');
} }
#[\Override]
public function prepend(ContainerBuilder $container) public function prepend(ContainerBuilder $container)
{ {
$this->prependRoutes($container); $this->prependRoutes($container);

View File

@@ -22,7 +22,6 @@ use function is_int;
*/ */
class Configuration implements ConfigurationInterface class Configuration implements ConfigurationInterface
{ {
#[\Override]
public function getConfigTreeBuilder() public function getConfigTreeBuilder()
{ {
$treeBuilder = new TreeBuilder('chill_activity'); $treeBuilder = new TreeBuilder('chill_activity');

View File

@@ -53,9 +53,9 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
use TrackUpdateTrait; use TrackUpdateTrait;
final public const string SENTRECEIVED_RECEIVED = 'received'; final public const SENTRECEIVED_RECEIVED = 'received';
final public const string SENTRECEIVED_SENT = 'sent'; final public const SENTRECEIVED_SENT = 'sent';
#[Groups(['read'])] #[Groups(['read'])]
#[ORM\ManyToOne(targetEntity: AccompanyingPeriod::class)] #[ORM\ManyToOne(targetEntity: AccompanyingPeriod::class)]
@@ -80,7 +80,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
private \DateTime $date; private \DateTime $date;
/** /**
* @var Collection<StoredObject> * @var Collection<int, StoredObject>
*/ */
#[Assert\Valid(traverse: true)] #[Assert\Valid(traverse: true)]
#[ORM\ManyToMany(targetEntity: StoredObject::class, cascade: ['persist'])] #[ORM\ManyToMany(targetEntity: StoredObject::class, cascade: ['persist'])]
@@ -107,7 +107,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
private ?Person $person = null; private ?Person $person = null;
/** /**
* @var Collection<Person> * @var Collection<int, \Chill\PersonBundle\Entity\Person>
*/ */
#[Groups(['read', 'docgen:read'])] #[Groups(['read', 'docgen:read'])]
#[ORM\ManyToMany(targetEntity: Person::class)] #[ORM\ManyToMany(targetEntity: Person::class)]
@@ -117,7 +117,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
private PrivateCommentEmbeddable $privateComment; private PrivateCommentEmbeddable $privateComment;
/** /**
* @var Collection<ActivityReason> * @var Collection<int, ActivityReason>
*/ */
#[Groups(['docgen:read'])] #[Groups(['docgen:read'])]
#[ORM\ManyToMany(targetEntity: ActivityReason::class)] #[ORM\ManyToMany(targetEntity: ActivityReason::class)]
@@ -132,7 +132,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
private string $sentReceived = ''; private string $sentReceived = '';
/** /**
* @var Collection<SocialAction> * @var Collection<int, \Chill\PersonBundle\Entity\SocialWork\SocialAction>
*/ */
#[Groups(['read', 'docgen:read'])] #[Groups(['read', 'docgen:read'])]
#[ORM\ManyToMany(targetEntity: SocialAction::class)] #[ORM\ManyToMany(targetEntity: SocialAction::class)]
@@ -140,7 +140,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
private Collection $socialActions; private Collection $socialActions;
/** /**
* @var Collection<SocialIssue> * @var Collection<int, SocialIssue>
*/ */
#[Groups(['read', 'docgen:read'])] #[Groups(['read', 'docgen:read'])]
#[ORM\ManyToMany(targetEntity: SocialIssue::class)] #[ORM\ManyToMany(targetEntity: SocialIssue::class)]
@@ -148,7 +148,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
private Collection $socialIssues; private Collection $socialIssues;
/** /**
* @var Collection<ThirdParty> * @var Collection<int, ThirdParty>
*/ */
#[Groups(['read', 'docgen:read'])] #[Groups(['read', 'docgen:read'])]
#[ORM\ManyToMany(targetEntity: ThirdParty::class)] #[ORM\ManyToMany(targetEntity: ThirdParty::class)]
@@ -162,7 +162,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
private ?User $user = null; private ?User $user = null;
/** /**
* @var Collection<User> * @var Collection<int, User>
*/ */
#[Groups(['read', 'docgen:read'])] #[Groups(['read', 'docgen:read'])]
#[ORM\ManyToMany(targetEntity: User::class)] #[ORM\ManyToMany(targetEntity: User::class)]
@@ -262,7 +262,6 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
return $this; return $this;
} }
#[\Override]
public function getAccompanyingPeriod(): ?AccompanyingPeriod public function getAccompanyingPeriod(): ?AccompanyingPeriod
{ {
return $this->accompanyingPeriod; return $this->accompanyingPeriod;
@@ -282,7 +281,6 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
* get the center * get the center
* center is extracted from person. * center is extracted from person.
*/ */
#[\Override]
public function getCenters(): iterable public function getCenters(): iterable
{ {
if ($this->person instanceof Person) { if ($this->person instanceof Person) {
@@ -401,7 +399,6 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
return $this->scope; return $this->scope;
} }
#[\Override]
public function getScopes(): iterable public function getScopes(): iterable
{ {
if (null !== $this->getAccompanyingPeriod()) { if (null !== $this->getAccompanyingPeriod()) {
@@ -425,7 +422,6 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
return $this->socialActions; return $this->socialActions;
} }
#[\Override]
public function getSocialIssues(): Collection public function getSocialIssues(): Collection
{ {
return $this->socialIssues; return $this->socialIssues;
@@ -496,7 +492,6 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
return $this; return $this;
} }
#[\Override]
public function removeSocialIssue(SocialIssue $socialIssue): self public function removeSocialIssue(SocialIssue $socialIssue): self
{ {
$this->socialIssues->removeElement($socialIssue); $this->socialIssues->removeElement($socialIssue);

View File

@@ -40,9 +40,9 @@ class ActivityReasonCategory implements \Stringable
/** /**
* Array of ActivityReason. * Array of ActivityReason.
* *
* @var Collection<ActivityReason> * @var Collection<int, ActivityReason>
*/ */
#[ORM\OneToMany(targetEntity: ActivityReason::class, mappedBy: 'category')] #[ORM\OneToMany(mappedBy: 'category', targetEntity: ActivityReason::class)]
private Collection $reasons; private Collection $reasons;
/** /**
@@ -53,7 +53,6 @@ class ActivityReasonCategory implements \Stringable
$this->reasons = new ArrayCollection(); $this->reasons = new ArrayCollection();
} }
#[\Override]
public function __toString(): string public function __toString(): string
{ {
return 'ActivityReasonCategory('.$this->getName('x').')'; return 'ActivityReasonCategory('.$this->getName('x').')';

View File

@@ -25,11 +25,11 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface;
#[ORM\Table(name: 'activitytype')] #[ORM\Table(name: 'activitytype')]
class ActivityType class ActivityType
{ {
final public const int FIELD_INVISIBLE = 0; final public const FIELD_INVISIBLE = 0;
final public const int FIELD_OPTIONAL = 1; final public const FIELD_OPTIONAL = 1;
final public const int FIELD_REQUIRED = 2; final public const FIELD_REQUIRED = 2;
/** /**
* @deprecated not in use * @deprecated not in use

View File

@@ -19,13 +19,11 @@ use Symfony\Component\Form\FormBuilderInterface;
class ByActivityNumberAggregator implements AggregatorInterface class ByActivityNumberAggregator implements AggregatorInterface
{ {
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data): void public function alterQuery(QueryBuilder $qb, $data): void
{ {
$qb $qb
@@ -33,25 +31,21 @@ class ByActivityNumberAggregator implements AggregatorInterface
->addGroupBy('activity_by_number_aggregator'); ->addGroupBy('activity_by_number_aggregator');
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACP_TYPE; return Declarations::ACP_TYPE;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder): void public function buildForm(FormBuilderInterface $builder): void
{ {
// No form needed // No form needed
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
return static function ($value) { return static function ($value) {
@@ -67,13 +61,11 @@ class ByActivityNumberAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return ['activity_by_number_aggregator']; return ['activity_by_number_aggregator'];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Group acp by activity number'; return 'Group acp by activity number';

View File

@@ -25,7 +25,7 @@ use Symfony\Component\Form\FormBuilderInterface;
final readonly class ByActivityTypeAggregator implements AggregatorInterface final readonly class ByActivityTypeAggregator implements AggregatorInterface
{ {
private const string PREFIX = 'acp_by_activity_type_agg'; private const PREFIX = 'acp_by_activity_type_agg';
public function __construct( public function __construct(
private RollingDateConverterInterface $rollingDateConverter, private RollingDateConverterInterface $rollingDateConverter,
@@ -33,7 +33,6 @@ final readonly class ByActivityTypeAggregator implements AggregatorInterface
private TranslatableStringHelperInterface $translatableStringHelper, private TranslatableStringHelperInterface $translatableStringHelper,
) {} ) {}
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder $builder
@@ -47,7 +46,6 @@ final readonly class ByActivityTypeAggregator implements AggregatorInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return [ return [
@@ -56,7 +54,6 @@ final readonly class ByActivityTypeAggregator implements AggregatorInterface
]; ];
} }
#[\Override]
public function getLabels($key, array $values, mixed $data) public function getLabels($key, array $values, mixed $data)
{ {
return function (int|string|null $value): string { return function (int|string|null $value): string {
@@ -72,25 +69,21 @@ final readonly class ByActivityTypeAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data) public function getQueryKeys($data)
{ {
return [self::PREFIX.'_actype_id']; return [self::PREFIX.'_actype_id'];
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'export.aggregator.acp.by_activity_type.title'; return 'export.aggregator.acp.by_activity_type.title';
} }
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$p = self::PREFIX; $p = self::PREFIX;
@@ -122,7 +115,6 @@ final readonly class ByActivityTypeAggregator implements AggregatorInterface
->addGroupBy("{$p}_actype_id"); ->addGroupBy("{$p}_actype_id");
} }
#[\Override]
public function applyOn() public function applyOn()
{ {
return Declarations::ACP_TYPE; return Declarations::ACP_TYPE;

View File

@@ -22,13 +22,11 @@ class BySocialActionAggregator implements AggregatorInterface
{ {
public function __construct(private readonly SocialActionRender $actionRender, private readonly SocialActionRepository $actionRepository) {} public function __construct(private readonly SocialActionRender $actionRender, private readonly SocialActionRepository $actionRepository) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
if (!\in_array('actsocialaction', $qb->getAllAliases(), true)) { if (!\in_array('actsocialaction', $qb->getAllAliases(), true)) {
@@ -39,25 +37,21 @@ class BySocialActionAggregator implements AggregatorInterface
$qb->addGroupBy('socialaction_aggregator'); $qb->addGroupBy('socialaction_aggregator');
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY_ACP;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// no form // no form
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
return function ($value) { return function ($value) {
@@ -75,13 +69,11 @@ class BySocialActionAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return ['socialaction_aggregator']; return ['socialaction_aggregator'];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Group activity by linked socialaction'; return 'Group activity by linked socialaction';

View File

@@ -22,13 +22,11 @@ class BySocialIssueAggregator implements AggregatorInterface
{ {
public function __construct(private readonly SocialIssueRepository $issueRepository, private readonly SocialIssueRender $issueRender) {} public function __construct(private readonly SocialIssueRepository $issueRepository, private readonly SocialIssueRender $issueRender) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
if (!\in_array('actsocialissue', $qb->getAllAliases(), true)) { if (!\in_array('actsocialissue', $qb->getAllAliases(), true)) {
@@ -39,25 +37,21 @@ class BySocialIssueAggregator implements AggregatorInterface
$qb->addGroupBy('socialissue_aggregator'); $qb->addGroupBy('socialissue_aggregator');
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY_ACP;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// no form // no form
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
return function ($value): string { return function ($value): string {
@@ -75,13 +69,11 @@ class BySocialIssueAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return ['socialissue_aggregator']; return ['socialissue_aggregator'];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Group activity by linked socialissue'; return 'Group activity by linked socialissue';

View File

@@ -18,15 +18,13 @@ use Symfony\Component\Form\FormBuilderInterface;
final readonly class ActivityLocationAggregator implements AggregatorInterface final readonly class ActivityLocationAggregator implements AggregatorInterface
{ {
public const string KEY = 'activity_location_aggregator'; public const KEY = 'activity_location_aggregator';
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
if (!\in_array('actloc', $qb->getAllAliases(), true)) { if (!\in_array('actloc', $qb->getAllAliases(), true)) {
@@ -36,25 +34,21 @@ final readonly class ActivityLocationAggregator implements AggregatorInterface
$qb->addGroupBy(self::KEY); $qb->addGroupBy(self::KEY);
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// no form required for this aggregator // no form required for this aggregator
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, $data): \Closure public function getLabels($key, array $values, $data): \Closure
{ {
return function ($value): string { return function ($value): string {
@@ -70,13 +64,11 @@ final readonly class ActivityLocationAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return [self::KEY]; return [self::KEY];
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'export.aggregator.activity.by_location.Title'; return 'export.aggregator.activity.by_location.Title';

View File

@@ -22,16 +22,13 @@ final readonly class ActivityPresenceAggregator implements AggregatorInterface
{ {
public function __construct(private ActivityPresenceRepositoryInterface $activityPresenceRepository, private TranslatableStringHelperInterface $translatableStringHelper) {} public function __construct(private ActivityPresenceRepositoryInterface $activityPresenceRepository, private TranslatableStringHelperInterface $translatableStringHelper) {}
#[\Override]
public function buildForm(FormBuilderInterface $builder) {} public function buildForm(FormBuilderInterface $builder) {}
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, mixed $data) public function getLabels($key, array $values, mixed $data)
{ {
return function (int|string|null $value): string { return function (int|string|null $value): string {
@@ -47,32 +44,27 @@ final readonly class ActivityPresenceAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data) public function getQueryKeys($data)
{ {
return ['activity_presence_aggregator_attendee']; return ['activity_presence_aggregator_attendee'];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'export.aggregator.activity.by_activity_presence.Group activity by presence'; return 'export.aggregator.activity.by_activity_presence.Group activity by presence';
} }
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data): void public function alterQuery(QueryBuilder $qb, $data): void
{ {
$qb->addSelect('IDENTITY(activity.attendee) AS activity_presence_aggregator_attendee'); $qb->addSelect('IDENTITY(activity.attendee) AS activity_presence_aggregator_attendee');
$qb->addGroupBy('activity_presence_aggregator_attendee'); $qb->addGroupBy('activity_presence_aggregator_attendee');
} }
#[\Override]
public function applyOn() public function applyOn()
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;

View File

@@ -28,16 +28,14 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
public function __construct( public function __construct(
protected ActivityReasonCategoryRepository $activityReasonCategoryRepository, protected ActivityReasonCategoryRepository $activityReasonCategoryRepository,
protected ActivityReasonRepository $activityReasonRepository, protected ActivityReasonRepository $activityReasonRepository,
protected TranslatableStringHelper $translatableStringHelper protected TranslatableStringHelper $translatableStringHelper,
) {} ) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
// add select element // add select element
@@ -69,13 +67,11 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
$qb->addGroupBy($alias); $qb->addGroupBy($alias);
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add( $builder->add(
@@ -93,7 +89,6 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
); );
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return [ return [
@@ -101,7 +96,6 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
]; ];
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
return function ($value) use ($data) { return function ($value) use ($data) {
@@ -131,7 +125,6 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
}; };
} }
#[\Override]
public function getQueryKeys($data) public function getQueryKeys($data)
{ {
// add select element // add select element
@@ -146,13 +139,11 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
throw new \RuntimeException('The data provided are not recognised.'); throw new \RuntimeException('The data provided are not recognised.');
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'Aggregate by activity reason'; return 'Aggregate by activity reason';
} }
#[\Override]
public function validateForm($data, ExecutionContextInterface $context) public function validateForm($data, ExecutionContextInterface $context)
{ {
if (null === $data['level']) { if (null === $data['level']) {

View File

@@ -20,17 +20,15 @@ use Symfony\Component\Form\FormBuilderInterface;
class ActivityTypeAggregator implements AggregatorInterface class ActivityTypeAggregator implements AggregatorInterface
{ {
final public const string KEY = 'activity_type_aggregator'; final public const KEY = 'activity_type_aggregator';
public function __construct(protected ActivityTypeRepositoryInterface $activityTypeRepository, protected TranslatableStringHelperInterface $translatableStringHelper) {} public function __construct(protected ActivityTypeRepositoryInterface $activityTypeRepository, protected TranslatableStringHelperInterface $translatableStringHelper) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
if (!\in_array('acttype', $qb->getAllAliases(), true)) { if (!\in_array('acttype', $qb->getAllAliases(), true)) {
@@ -41,25 +39,21 @@ class ActivityTypeAggregator implements AggregatorInterface
$qb->addGroupBy(self::KEY); $qb->addGroupBy(self::KEY);
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// no form required for this aggregator // no form required for this aggregator
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, $data): \Closure public function getLabels($key, array $values, $data): \Closure
{ {
return function (int|string|null $value): string { return function (int|string|null $value): string {
@@ -75,13 +69,11 @@ class ActivityTypeAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return [self::KEY]; return [self::KEY];
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'Aggregate by activity type'; return 'Aggregate by activity type';

View File

@@ -20,17 +20,15 @@ use Symfony\Component\Form\FormBuilderInterface;
class ActivityUserAggregator implements AggregatorInterface class ActivityUserAggregator implements AggregatorInterface
{ {
final public const string KEY = 'activity_user_id'; final public const KEY = 'activity_user_id';
public function __construct(private readonly UserRepository $userRepository, private readonly UserRender $userRender) {} public function __construct(private readonly UserRepository $userRepository, private readonly UserRender $userRender) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
// add select element // add select element
@@ -40,25 +38,21 @@ class ActivityUserAggregator implements AggregatorInterface
$qb->addGroupBy(self::KEY); $qb->addGroupBy(self::KEY);
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// nothing to add // nothing to add
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, $values, $data): \Closure public function getLabels($key, $values, $data): \Closure
{ {
return function ($value) { return function ($value) {
@@ -76,13 +70,11 @@ class ActivityUserAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data) public function getQueryKeys($data)
{ {
return [self::KEY]; return [self::KEY];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Aggregate by activity user'; return 'Aggregate by activity user';

View File

@@ -22,13 +22,11 @@ class ActivityUsersAggregator implements AggregatorInterface
{ {
public function __construct(private readonly UserRepositoryInterface $userRepository, private readonly UserRender $userRender) {} public function __construct(private readonly UserRepositoryInterface $userRepository, private readonly UserRender $userRender) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
if (!\in_array('actusers', $qb->getAllAliases(), true)) { if (!\in_array('actusers', $qb->getAllAliases(), true)) {
@@ -40,25 +38,21 @@ class ActivityUsersAggregator implements AggregatorInterface
->addGroupBy('activity_users_aggregator'); ->addGroupBy('activity_users_aggregator');
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// nothing to add on the form // nothing to add on the form
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
return function ($value) { return function ($value) {
@@ -76,13 +70,11 @@ class ActivityUsersAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data) public function getQueryKeys($data)
{ {
return ['activity_users_aggregator']; return ['activity_users_aggregator'];
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'Aggregate by activity users'; return 'Aggregate by activity users';

View File

@@ -22,20 +22,18 @@ use Symfony\Component\Form\FormBuilderInterface;
class ActivityUsersJobAggregator implements AggregatorInterface class ActivityUsersJobAggregator implements AggregatorInterface
{ {
private const string PREFIX = 'act_agg_user_job'; private const PREFIX = 'act_agg_user_job';
public function __construct( public function __construct(
private readonly UserJobRepositoryInterface $userJobRepository, private readonly UserJobRepositoryInterface $userJobRepository,
private readonly TranslatableStringHelperInterface $translatableStringHelper private readonly TranslatableStringHelperInterface $translatableStringHelper,
) {} ) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$p = self::PREFIX; $p = self::PREFIX;
@@ -62,22 +60,18 @@ class ActivityUsersJobAggregator implements AggregatorInterface
->addGroupBy("{$p}_select"); ->addGroupBy("{$p}_select");
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) {} public function buildForm(FormBuilderInterface $builder) {}
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
return function ($value): string { return function ($value): string {
@@ -97,13 +91,11 @@ class ActivityUsersJobAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return [self::PREFIX.'_select']; return [self::PREFIX.'_select'];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'export.aggregator.activity.by_user_job.Aggregate by users job'; return 'export.aggregator.activity.by_user_job.Aggregate by users job';

View File

@@ -22,20 +22,18 @@ use Symfony\Component\Form\FormBuilderInterface;
class ActivityUsersScopeAggregator implements AggregatorInterface class ActivityUsersScopeAggregator implements AggregatorInterface
{ {
private const string PREFIX = 'act_agg_user_scope'; private const PREFIX = 'act_agg_user_scope';
public function __construct( public function __construct(
private readonly ScopeRepositoryInterface $scopeRepository, private readonly ScopeRepositoryInterface $scopeRepository,
private readonly TranslatableStringHelperInterface $translatableStringHelper private readonly TranslatableStringHelperInterface $translatableStringHelper,
) {} ) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$p = self::PREFIX; $p = self::PREFIX;
@@ -62,22 +60,18 @@ class ActivityUsersScopeAggregator implements AggregatorInterface
->addGroupBy("{$p}_select"); ->addGroupBy("{$p}_select");
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) {} public function buildForm(FormBuilderInterface $builder) {}
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
return function ($value): string { return function ($value): string {
@@ -97,13 +91,11 @@ class ActivityUsersScopeAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return [self::PREFIX.'_select']; return [self::PREFIX.'_select'];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'export.aggregator.activity.by_user_scope.Aggregate by users scope'; return 'export.aggregator.activity.by_user_scope.Aggregate by users scope';

View File

@@ -22,38 +22,32 @@ class ByCreatorAggregator implements AggregatorInterface
{ {
public function __construct(private readonly UserRepositoryInterface $userRepository, private readonly UserRender $userRender) {} public function __construct(private readonly UserRepositoryInterface $userRepository, private readonly UserRender $userRender) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$qb->addSelect('IDENTITY(activity.createdBy) AS creator_aggregator'); $qb->addSelect('IDENTITY(activity.createdBy) AS creator_aggregator');
$qb->addGroupBy('creator_aggregator'); $qb->addGroupBy('creator_aggregator');
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// no form // no form
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
return function ($value): string { return function ($value): string {
@@ -71,13 +65,11 @@ class ByCreatorAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return ['creator_aggregator']; return ['creator_aggregator'];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Group activity by creator'; return 'Group activity by creator';

View File

@@ -22,13 +22,11 @@ class ByThirdpartyAggregator implements AggregatorInterface
{ {
public function __construct(private readonly ThirdPartyRepository $thirdPartyRepository, private readonly ThirdPartyRender $thirdPartyRender) {} public function __construct(private readonly ThirdPartyRepository $thirdPartyRepository, private readonly ThirdPartyRender $thirdPartyRender) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
if (!\in_array('acttparty', $qb->getAllAliases(), true)) { if (!\in_array('acttparty', $qb->getAllAliases(), true)) {
@@ -39,25 +37,21 @@ class ByThirdpartyAggregator implements AggregatorInterface
$qb->addGroupBy('thirdparty_aggregator'); $qb->addGroupBy('thirdparty_aggregator');
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// no form // no form
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
return function ($value): string { return function ($value): string {
@@ -75,13 +69,11 @@ class ByThirdpartyAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return ['thirdparty_aggregator']; return ['thirdparty_aggregator'];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Group activity by linked thirdparties'; return 'Group activity by linked thirdparties';

View File

@@ -22,20 +22,18 @@ use Symfony\Component\Form\FormBuilderInterface;
class CreatorJobAggregator implements AggregatorInterface class CreatorJobAggregator implements AggregatorInterface
{ {
private const string PREFIX = 'acp_agg_creator_job'; private const PREFIX = 'acp_agg_creator_job';
public function __construct( public function __construct(
private readonly UserJobRepositoryInterface $userJobRepository, private readonly UserJobRepositoryInterface $userJobRepository,
private readonly TranslatableStringHelper $translatableStringHelper private readonly TranslatableStringHelper $translatableStringHelper,
) {} ) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$p = self::PREFIX; $p = self::PREFIX;
@@ -62,22 +60,18 @@ class CreatorJobAggregator implements AggregatorInterface
->addGroupBy("{$p}_select"); ->addGroupBy("{$p}_select");
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) {} public function buildForm(FormBuilderInterface $builder) {}
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
return function ($value): string { return function ($value): string {
@@ -95,13 +89,11 @@ class CreatorJobAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return [self::PREFIX.'_select']; return [self::PREFIX.'_select'];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'export.aggregator.activity.by_creator_job.Group activity by creator job'; return 'export.aggregator.activity.by_creator_job.Group activity by creator job';

View File

@@ -22,20 +22,18 @@ use Symfony\Component\Form\FormBuilderInterface;
class CreatorScopeAggregator implements AggregatorInterface class CreatorScopeAggregator implements AggregatorInterface
{ {
private const string PREFIX = 'acp_agg_creator_scope'; private const PREFIX = 'acp_agg_creator_scope';
public function __construct( public function __construct(
private readonly ScopeRepository $scopeRepository, private readonly ScopeRepository $scopeRepository,
private readonly TranslatableStringHelper $translatableStringHelper private readonly TranslatableStringHelper $translatableStringHelper,
) {} ) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$p = self::PREFIX; $p = self::PREFIX;
@@ -62,22 +60,18 @@ class CreatorScopeAggregator implements AggregatorInterface
->addGroupBy("{$p}_select"); ->addGroupBy("{$p}_select");
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) {} public function buildForm(FormBuilderInterface $builder) {}
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
return function ($value): string { return function ($value): string {
@@ -97,13 +91,11 @@ class CreatorScopeAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return [self::PREFIX.'_select']; return [self::PREFIX.'_select'];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'export.aggregator.activity.by_creator_scope.Group activity by creator scope'; return 'export.aggregator.activity.by_creator_scope.Group activity by creator scope';

View File

@@ -19,21 +19,19 @@ use Symfony\Component\Form\FormBuilderInterface;
class DateAggregator implements AggregatorInterface class DateAggregator implements AggregatorInterface
{ {
private const array CHOICES = [ private const CHOICES = [
'by month' => 'month', 'by month' => 'month',
'by week' => 'week', 'by week' => 'week',
'by year' => 'year', 'by year' => 'year',
]; ];
private const string DEFAULT_CHOICE = 'year'; private const DEFAULT_CHOICE = 'year';
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$order = null; $order = null;
@@ -64,13 +62,11 @@ class DateAggregator implements AggregatorInterface
$qb->addOrderBy('date_aggregator', $order); $qb->addOrderBy('date_aggregator', $order);
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('frequency', ChoiceType::class, [ $builder->add('frequency', ChoiceType::class, [
@@ -80,13 +76,11 @@ class DateAggregator implements AggregatorInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return ['frequency' => self::DEFAULT_CHOICE]; return ['frequency' => self::DEFAULT_CHOICE];
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
return static function ($value) use ($data): string { return static function ($value) use ($data): string {
@@ -104,13 +98,11 @@ class DateAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return ['date_aggregator']; return ['date_aggregator'];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Group activity by date'; return 'Group activity by date';

View File

@@ -22,13 +22,11 @@ class LocationTypeAggregator implements AggregatorInterface
{ {
public function __construct(private readonly LocationTypeRepository $locationTypeRepository, private readonly TranslatableStringHelper $translatableStringHelper) {} public function __construct(private readonly LocationTypeRepository $locationTypeRepository, private readonly TranslatableStringHelper $translatableStringHelper) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
if (!\in_array('actloc', $qb->getAllAliases(), true)) { if (!\in_array('actloc', $qb->getAllAliases(), true)) {
@@ -39,25 +37,21 @@ class LocationTypeAggregator implements AggregatorInterface
$qb->addGroupBy('locationtype_aggregator'); $qb->addGroupBy('locationtype_aggregator');
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// no form // no form
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
return function ($value): string { return function ($value): string {
@@ -79,13 +73,11 @@ class LocationTypeAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return ['locationtype_aggregator']; return ['locationtype_aggregator'];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Group activity by locationtype'; return 'Group activity by locationtype';

View File

@@ -0,0 +1,99 @@
<?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\ActivityBundle\Export\Aggregator\PersonAggregators;
use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\AggregatorInterface;
use Chill\PersonBundle\Entity\Household\Household;
use Chill\PersonBundle\Entity\Household\HouseholdMember;
use Chill\PersonBundle\Repository\Household\HouseholdRepository;
use Doctrine\ORM\Query\Expr\Join;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
final readonly class HouseholdAggregator implements AggregatorInterface
{
public function __construct(private HouseholdRepository $householdRepository) {}
public function buildForm(FormBuilderInterface $builder)
{
// nothing to add here
}
public function getFormDefaultData(): array
{
return [];
}
public function getLabels($key, array $values, mixed $data)
{
return function (int|string|null $value): string|int {
if ('_header' === $value) {
return 'export.aggregator.person.by_household.household';
}
if ('' === $value || null === $value || null === $household = $this->householdRepository->find($value)) {
return '';
}
return $household->getId();
};
}
public function getQueryKeys($data)
{
return ['activity_household_agg'];
}
public function getTitle()
{
return 'export.aggregator.person.by_household.title';
}
public function addRole(): ?string
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$qb->join(
HouseholdMember::class,
'activity_household_agg_household_member',
Join::WITH,
$qb->expr()->andX(
$qb->expr()->eq('activity_household_agg_household_member.person', 'activity.person'),
$qb->expr()->lte('activity_household_agg_household_member.startDate', 'activity.date'),
$qb->expr()->orX(
$qb->expr()->gte('activity_household_agg_household_member.endDate', 'activity.date'),
$qb->expr()->isNull('activity_household_agg_household_member.endDate')
)
)
);
$qb->join(
Household::class,
'activity_household_agg_household',
Join::WITH,
$qb->expr()->eq('activity_household_agg_household_member.household', 'activity_household_agg_household')
);
$qb
->addSelect('activity_household_agg_household.id AS activity_household_agg')
->addGroupBy('activity_household_agg');
}
public function applyOn()
{
return Declarations::ACTIVITY_PERSON;
}
}

View File

@@ -21,43 +21,36 @@ final readonly class PersonAggregator implements AggregatorInterface
{ {
public function __construct(private LabelPersonHelper $labelPersonHelper) {} public function __construct(private LabelPersonHelper $labelPersonHelper) {}
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// nothing to add here // nothing to add here
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, mixed $data) public function getLabels($key, array $values, mixed $data)
{ {
return $this->labelPersonHelper->getLabel($key, $values, 'export.aggregator.person.by_person.person'); return $this->labelPersonHelper->getLabel($key, $values, 'export.aggregator.person.by_person.person');
} }
#[\Override]
public function getQueryKeys($data) public function getQueryKeys($data)
{ {
return ['activity_by_person_agg']; return ['activity_by_person_agg'];
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'export.aggregator.person.by_person.title'; return 'export.aggregator.person.by_person.title';
} }
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$qb $qb
@@ -65,7 +58,6 @@ final readonly class PersonAggregator implements AggregatorInterface
->addGroupBy('activity_by_person_agg'); ->addGroupBy('activity_by_person_agg');
} }
#[\Override]
public function applyOn() public function applyOn()
{ {
return Declarations::ACTIVITY_PERSON; return Declarations::ACTIVITY_PERSON;

View File

@@ -23,23 +23,20 @@ use Symfony\Component\Form\FormBuilderInterface;
*/ */
final readonly class PersonsAggregator implements AggregatorInterface final readonly class PersonsAggregator implements AggregatorInterface
{ {
private const string PREFIX = 'act_persons_agg'; private const PREFIX = 'act_persons_agg';
public function __construct(private LabelPersonHelper $labelPersonHelper) {} public function __construct(private LabelPersonHelper $labelPersonHelper) {}
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// nothing to add here // nothing to add here
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, mixed $data) public function getLabels($key, array $values, mixed $data)
{ {
if ($key !== self::PREFIX.'_pid') { if ($key !== self::PREFIX.'_pid') {
@@ -49,25 +46,21 @@ final readonly class PersonsAggregator implements AggregatorInterface
return $this->labelPersonHelper->getLabel($key, $values, 'export.aggregator.activity.by_persons.Persons'); return $this->labelPersonHelper->getLabel($key, $values, 'export.aggregator.activity.by_persons.Persons');
} }
#[\Override]
public function getQueryKeys($data) public function getQueryKeys($data)
{ {
return [self::PREFIX.'_pid']; return [self::PREFIX.'_pid'];
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'export.aggregator.activity.by_persons.Group activity by persons'; return 'export.aggregator.activity.by_persons.Group activity by persons';
} }
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$p = self::PREFIX; $p = self::PREFIX;
@@ -78,7 +71,6 @@ final readonly class PersonsAggregator implements AggregatorInterface
->addGroupBy("{$p}_pid"); ->addGroupBy("{$p}_pid");
} }
#[\Override]
public function applyOn() public function applyOn()
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;

View File

@@ -21,38 +21,32 @@ class SentReceivedAggregator implements AggregatorInterface
{ {
public function __construct(private readonly TranslatorInterface $translator) {} public function __construct(private readonly TranslatorInterface $translator) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data): void public function alterQuery(QueryBuilder $qb, $data): void
{ {
$qb->addSelect('activity.sentReceived AS activity_sentreceived_aggregator') $qb->addSelect('activity.sentReceived AS activity_sentreceived_aggregator')
->addGroupBy('activity_sentreceived_aggregator'); ->addGroupBy('activity_sentreceived_aggregator');
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder): void public function buildForm(FormBuilderInterface $builder): void
{ {
// No form needed // No form needed
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getLabels($key, array $values, $data): callable public function getLabels($key, array $values, $data): callable
{ {
return function (?string $value): string { return function (?string $value): string {
@@ -77,13 +71,11 @@ class SentReceivedAggregator implements AggregatorInterface
}; };
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return ['activity_sentreceived_aggregator']; return ['activity_sentreceived_aggregator'];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'export.aggregator.activity.by_sent_received.Group activity by sentreceived'; return 'export.aggregator.activity.by_sent_received.Group activity by sentreceived';

View File

@@ -36,34 +36,28 @@ class AvgActivityDuration implements ExportInterface, GroupedExportInterface
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center']; $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) {} public function buildForm(FormBuilderInterface $builder) {}
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getAllowedFormattersTypes(): array public function getAllowedFormattersTypes(): array
{ {
return [FormatterInterface::TYPE_TABULAR]; return [FormatterInterface::TYPE_TABULAR];
} }
#[\Override]
public function getDescription(): string public function getDescription(): string
{ {
return 'Average activities linked to an accompanying period duration by various parameters.'; return 'Average activities linked to an accompanying period duration by various parameters.';
} }
#[\Override]
public function getGroup(): string public function getGroup(): string
{ {
return 'Exports of activities linked to an accompanying period'; return 'Exports of activities linked to an accompanying period';
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
if ('export_avg_activity_duration' !== $key) { if ('export_avg_activity_duration' !== $key) {
@@ -73,31 +67,26 @@ class AvgActivityDuration implements ExportInterface, GroupedExportInterface
return static fn ($value) => '_header' === $value ? 'Average activities linked to an accompanying period duration' : $value; return static fn ($value) => '_header' === $value ? 'Average activities linked to an accompanying period duration' : $value;
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return ['export_avg_activity_duration']; return ['export_avg_activity_duration'];
} }
#[\Override]
public function getResult($query, $data) public function getResult($query, $data)
{ {
return $query->getQuery()->getResult(Query::HYDRATE_SCALAR); return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Average activity linked to an accompanying period duration'; return 'Average activity linked to an accompanying period duration';
} }
#[\Override]
public function getType(): string public function getType(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{ {
$centers = array_map(static fn ($el) => $el['center'], $acl); $centers = array_map(static fn ($el) => $el['center'], $acl);
@@ -127,13 +116,11 @@ class AvgActivityDuration implements ExportInterface, GroupedExportInterface
return $qb; return $qb;
} }
#[\Override]
public function requiredRole(): string public function requiredRole(): string
{ {
return ActivityStatsVoter::STATS; return ActivityStatsVoter::STATS;
} }
#[\Override]
public function supportsModifiers(): array public function supportsModifiers(): array
{ {
return [ return [

View File

@@ -41,37 +41,31 @@ class AvgActivityVisitDuration implements ExportInterface, GroupedExportInterfac
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center']; $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// TODO: Implement buildForm() method. // TODO: Implement buildForm() method.
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getAllowedFormattersTypes(): array public function getAllowedFormattersTypes(): array
{ {
return [FormatterInterface::TYPE_TABULAR]; return [FormatterInterface::TYPE_TABULAR];
} }
#[\Override]
public function getDescription(): string public function getDescription(): string
{ {
return 'Average activities linked to an accompanying period visit duration by various parameters.'; return 'Average activities linked to an accompanying period visit duration by various parameters.';
} }
#[\Override]
public function getGroup(): string public function getGroup(): string
{ {
return 'Exports of activities linked to an accompanying period'; return 'Exports of activities linked to an accompanying period';
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
if ('export_avg_activity_visit_duration' !== $key) { if ('export_avg_activity_visit_duration' !== $key) {
@@ -81,31 +75,26 @@ class AvgActivityVisitDuration implements ExportInterface, GroupedExportInterfac
return static fn ($value) => '_header' === $value ? 'Average activities linked to an accompanying period visit duration' : $value; return static fn ($value) => '_header' === $value ? 'Average activities linked to an accompanying period visit duration' : $value;
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return ['export_avg_activity_visit_duration']; return ['export_avg_activity_visit_duration'];
} }
#[\Override]
public function getResult($query, $data) public function getResult($query, $data)
{ {
return $query->getQuery()->getResult(Query::HYDRATE_SCALAR); return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Average activity linked to an accompanying period visit duration'; return 'Average activity linked to an accompanying period visit duration';
} }
#[\Override]
public function getType(): string public function getType(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{ {
$centers = array_map(static fn ($el) => $el['center'], $acl); $centers = array_map(static fn ($el) => $el['center'], $acl);
@@ -135,13 +124,11 @@ class AvgActivityVisitDuration implements ExportInterface, GroupedExportInterfac
return $qb; return $qb;
} }
#[\Override]
public function requiredRole(): string public function requiredRole(): string
{ {
return ActivityStatsVoter::STATS; return ActivityStatsVoter::STATS;
} }
#[\Override]
public function supportsModifiers(): array public function supportsModifiers(): array
{ {
return [ return [

View File

@@ -41,34 +41,28 @@ class CountActivity implements ExportInterface, GroupedExportInterface
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center']; $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) {} public function buildForm(FormBuilderInterface $builder) {}
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getAllowedFormattersTypes(): array public function getAllowedFormattersTypes(): array
{ {
return [FormatterInterface::TYPE_TABULAR]; return [FormatterInterface::TYPE_TABULAR];
} }
#[\Override]
public function getDescription(): string public function getDescription(): string
{ {
return 'Count activities linked to an accompanying period by various parameters.'; return 'Count activities linked to an accompanying period by various parameters.';
} }
#[\Override]
public function getGroup(): string public function getGroup(): string
{ {
return 'Exports of activities linked to an accompanying period'; return 'Exports of activities linked to an accompanying period';
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
if ('export_count_activity' !== $key) { if ('export_count_activity' !== $key) {
@@ -78,31 +72,26 @@ class CountActivity implements ExportInterface, GroupedExportInterface
return static fn ($value) => '_header' === $value ? 'Number of activities linked to an accompanying period' : $value; return static fn ($value) => '_header' === $value ? 'Number of activities linked to an accompanying period' : $value;
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return ['export_count_activity']; return ['export_count_activity'];
} }
#[\Override]
public function getResult($query, $data) public function getResult($query, $data)
{ {
return $query->getQuery()->getResult(Query::HYDRATE_SCALAR); return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Count activities linked to an accompanying period'; return 'Count activities linked to an accompanying period';
} }
#[\Override]
public function getType(): string public function getType(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{ {
$centers = array_map(static fn ($el) => $el['center'], $acl); $centers = array_map(static fn ($el) => $el['center'], $acl);
@@ -131,13 +120,11 @@ class CountActivity implements ExportInterface, GroupedExportInterface
return $qb; return $qb;
} }
#[\Override]
public function requiredRole(): string public function requiredRole(): string
{ {
return ActivityStatsVoter::STATS; return ActivityStatsVoter::STATS;
} }
#[\Override]
public function supportsModifiers(): array public function supportsModifiers(): array
{ {
return [ return [

View File

@@ -42,34 +42,28 @@ final readonly class CountHouseholdOnActivity implements ExportInterface, Groupe
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center']; $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) {} public function buildForm(FormBuilderInterface $builder) {}
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getAllowedFormattersTypes(): array public function getAllowedFormattersTypes(): array
{ {
return [FormatterInterface::TYPE_TABULAR]; return [FormatterInterface::TYPE_TABULAR];
} }
#[\Override]
public function getDescription(): string public function getDescription(): string
{ {
return 'export.export.count_household_on_activity.description'; return 'export.export.count_household_on_activity.description';
} }
#[\Override]
public function getGroup(): string public function getGroup(): string
{ {
return 'Exports of activities linked to an accompanying period'; return 'Exports of activities linked to an accompanying period';
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
if ('export_count_activity' !== $key) { if ('export_count_activity' !== $key) {
@@ -79,31 +73,26 @@ final readonly class CountHouseholdOnActivity implements ExportInterface, Groupe
return static fn ($value) => '_header' === $value ? 'export.export.count_household_on_activity.header' : $value; return static fn ($value) => '_header' === $value ? 'export.export.count_household_on_activity.header' : $value;
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return ['export_count_activity']; return ['export_count_activity'];
} }
#[\Override]
public function getResult($query, $data) public function getResult($query, $data)
{ {
return $query->getQuery()->getResult(Query::HYDRATE_SCALAR); return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'export.export.count_household_on_activity.title'; return 'export.export.count_household_on_activity.title';
} }
#[\Override]
public function getType(): string public function getType(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{ {
$centers = array_map(static fn ($el) => $el['center'], $acl); $centers = array_map(static fn ($el) => $el['center'], $acl);
@@ -140,13 +129,11 @@ final readonly class CountHouseholdOnActivity implements ExportInterface, Groupe
return $qb; return $qb;
} }
#[\Override]
public function requiredRole(): string public function requiredRole(): string
{ {
return ActivityStatsVoter::STATS; return ActivityStatsVoter::STATS;
} }
#[\Override]
public function supportsModifiers(): array public function supportsModifiers(): array
{ {
return [ return [

View File

@@ -41,34 +41,28 @@ class CountPersonsOnActivity implements ExportInterface, GroupedExportInterface
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center']; $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) {} public function buildForm(FormBuilderInterface $builder) {}
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getAllowedFormattersTypes(): array public function getAllowedFormattersTypes(): array
{ {
return [FormatterInterface::TYPE_TABULAR]; return [FormatterInterface::TYPE_TABULAR];
} }
#[\Override]
public function getDescription(): string public function getDescription(): string
{ {
return 'export.export.count_person_on_activity.description'; return 'export.export.count_person_on_activity.description';
} }
#[\Override]
public function getGroup(): string public function getGroup(): string
{ {
return 'Exports of activities linked to an accompanying period'; return 'Exports of activities linked to an accompanying period';
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
if ('export_count_activity' !== $key) { if ('export_count_activity' !== $key) {
@@ -78,31 +72,26 @@ class CountPersonsOnActivity implements ExportInterface, GroupedExportInterface
return static fn ($value) => '_header' === $value ? 'export.export.count_person_on_activity.header' : $value; return static fn ($value) => '_header' === $value ? 'export.export.count_person_on_activity.header' : $value;
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return ['export_count_activity']; return ['export_count_activity'];
} }
#[\Override]
public function getResult($query, $data) public function getResult($query, $data)
{ {
return $query->getQuery()->getResult(Query::HYDRATE_SCALAR); return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'export.export.count_person_on_activity.title'; return 'export.export.count_person_on_activity.title';
} }
#[\Override]
public function getType(): string public function getType(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{ {
$centers = array_map(static fn ($el) => $el['center'], $acl); $centers = array_map(static fn ($el) => $el['center'], $acl);
@@ -132,13 +121,11 @@ class CountPersonsOnActivity implements ExportInterface, GroupedExportInterface
return $qb; return $qb;
} }
#[\Override]
public function requiredRole(): string public function requiredRole(): string
{ {
return ActivityStatsVoter::STATS; return ActivityStatsVoter::STATS;
} }
#[\Override]
public function supportsModifiers(): array public function supportsModifiers(): array
{ {
return [ return [

View File

@@ -33,37 +33,31 @@ final readonly class ListActivity implements ListInterface, GroupedExportInterfa
private FilterListAccompanyingPeriodHelperInterface $filterListAccompanyingPeriodHelper, private FilterListAccompanyingPeriodHelperInterface $filterListAccompanyingPeriodHelper,
) {} ) {}
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$this->helper->buildForm($builder); $this->helper->buildForm($builder);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getAllowedFormattersTypes() public function getAllowedFormattersTypes()
{ {
return $this->helper->getAllowedFormattersTypes(); return $this->helper->getAllowedFormattersTypes();
} }
#[\Override]
public function getDescription() public function getDescription()
{ {
return ListActivityHelper::MSG_KEY.'List activities linked to an accompanying course'; return ListActivityHelper::MSG_KEY.'List activities linked to an accompanying course';
} }
#[\Override]
public function getGroup(): string public function getGroup(): string
{ {
return 'Exports of activities linked to an accompanying period'; return 'Exports of activities linked to an accompanying period';
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
return match ($key) { return match ($key) {
@@ -79,7 +73,6 @@ final readonly class ListActivity implements ListInterface, GroupedExportInterfa
}; };
} }
#[\Override]
public function getQueryKeys($data) public function getQueryKeys($data)
{ {
return return
@@ -92,25 +85,21 @@ final readonly class ListActivity implements ListInterface, GroupedExportInterfa
); );
} }
#[\Override]
public function getResult($query, $data) public function getResult($query, $data)
{ {
return $this->helper->getResult($query, $data); return $this->helper->getResult($query, $data);
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return ListActivityHelper::MSG_KEY.'List activity linked to a course'; return ListActivityHelper::MSG_KEY.'List activity linked to a course';
} }
#[\Override]
public function getType() public function getType()
{ {
return $this->helper->getType(); return $this->helper->getType();
} }
#[\Override]
public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{ {
$centers = array_map(static fn ($el) => $el['center'], $acl); $centers = array_map(static fn ($el) => $el['center'], $acl);
@@ -146,13 +135,11 @@ final readonly class ListActivity implements ListInterface, GroupedExportInterfa
return $qb; return $qb;
} }
#[\Override]
public function requiredRole(): string public function requiredRole(): string
{ {
return ActivityStatsVoter::LISTS; return ActivityStatsVoter::LISTS;
} }
#[\Override]
public function supportsModifiers() public function supportsModifiers()
{ {
return array_merge( return array_merge(

View File

@@ -40,37 +40,31 @@ class SumActivityDuration implements ExportInterface, GroupedExportInterface
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center']; $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// TODO: Implement buildForm() method. // TODO: Implement buildForm() method.
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getAllowedFormattersTypes(): array public function getAllowedFormattersTypes(): array
{ {
return [FormatterInterface::TYPE_TABULAR]; return [FormatterInterface::TYPE_TABULAR];
} }
#[\Override]
public function getDescription(): string public function getDescription(): string
{ {
return 'Sum activities linked to an accompanying period duration by various parameters.'; return 'Sum activities linked to an accompanying period duration by various parameters.';
} }
#[\Override]
public function getGroup(): string public function getGroup(): string
{ {
return 'Exports of activities linked to an accompanying period'; return 'Exports of activities linked to an accompanying period';
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
if ('export_sum_activity_duration' !== $key) { if ('export_sum_activity_duration' !== $key) {
@@ -80,31 +74,26 @@ class SumActivityDuration implements ExportInterface, GroupedExportInterface
return static fn ($value) => '_header' === $value ? 'Sum activities linked to an accompanying period duration' : $value; return static fn ($value) => '_header' === $value ? 'Sum activities linked to an accompanying period duration' : $value;
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return ['export_sum_activity_duration']; return ['export_sum_activity_duration'];
} }
#[\Override]
public function getResult($query, $data) public function getResult($query, $data)
{ {
return $query->getQuery()->getResult(Query::HYDRATE_SCALAR); return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Sum activity linked to an accompanying period duration'; return 'Sum activity linked to an accompanying period duration';
} }
#[\Override]
public function getType(): string public function getType(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{ {
$centers = array_map(static fn ($el) => $el['center'], $acl); $centers = array_map(static fn ($el) => $el['center'], $acl);
@@ -134,13 +123,11 @@ class SumActivityDuration implements ExportInterface, GroupedExportInterface
return $qb; return $qb;
} }
#[\Override]
public function requiredRole(): string public function requiredRole(): string
{ {
return ActivityStatsVoter::STATS; return ActivityStatsVoter::STATS;
} }
#[\Override]
public function supportsModifiers(): array public function supportsModifiers(): array
{ {
return [ return [

View File

@@ -40,37 +40,31 @@ class SumActivityVisitDuration implements ExportInterface, GroupedExportInterfac
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center']; $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// TODO: Implement buildForm() method. // TODO: Implement buildForm() method.
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getAllowedFormattersTypes(): array public function getAllowedFormattersTypes(): array
{ {
return [FormatterInterface::TYPE_TABULAR]; return [FormatterInterface::TYPE_TABULAR];
} }
#[\Override]
public function getDescription(): string public function getDescription(): string
{ {
return 'Sum activities linked to an accompanying period visit duration by various parameters.'; return 'Sum activities linked to an accompanying period visit duration by various parameters.';
} }
#[\Override]
public function getGroup(): string public function getGroup(): string
{ {
return 'Exports of activities linked to an accompanying period'; return 'Exports of activities linked to an accompanying period';
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
if ('export_sum_activity_visit_duration' !== $key) { if ('export_sum_activity_visit_duration' !== $key) {
@@ -80,31 +74,26 @@ class SumActivityVisitDuration implements ExportInterface, GroupedExportInterfac
return static fn ($value) => '_header' === $value ? 'Sum activities linked to an accompanying period visit duration' : $value; return static fn ($value) => '_header' === $value ? 'Sum activities linked to an accompanying period visit duration' : $value;
} }
#[\Override]
public function getQueryKeys($data): array public function getQueryKeys($data): array
{ {
return ['export_sum_activity_visit_duration']; return ['export_sum_activity_visit_duration'];
} }
#[\Override]
public function getResult($query, $data) public function getResult($query, $data)
{ {
return $query->getQuery()->getResult(Query::HYDRATE_SCALAR); return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Sum activity linked to an accompanying period visit duration'; return 'Sum activity linked to an accompanying period visit duration';
} }
#[\Override]
public function getType(): string public function getType(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{ {
$centers = array_map(static fn ($el) => $el['center'], $acl); $centers = array_map(static fn ($el) => $el['center'], $acl);
@@ -134,13 +123,11 @@ class SumActivityVisitDuration implements ExportInterface, GroupedExportInterfac
return $qb; return $qb;
} }
#[\Override]
public function requiredRole(): string public function requiredRole(): string
{ {
return ActivityStatsVoter::STATS; return ActivityStatsVoter::STATS;
} }
#[\Override]
public function supportsModifiers(): array public function supportsModifiers(): array
{ {
return [ return [

View File

@@ -33,34 +33,28 @@ class CountActivity implements ExportInterface, GroupedExportInterface
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center']; $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) {} public function buildForm(FormBuilderInterface $builder) {}
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getAllowedFormattersTypes() public function getAllowedFormattersTypes()
{ {
return [FormatterInterface::TYPE_TABULAR]; return [FormatterInterface::TYPE_TABULAR];
} }
#[\Override]
public function getDescription() public function getDescription()
{ {
return 'Count activities linked to a person by various parameters.'; return 'Count activities linked to a person by various parameters.';
} }
#[\Override]
public function getGroup(): string public function getGroup(): string
{ {
return 'Exports of activities linked to a person'; return 'Exports of activities linked to a person';
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
if ('export_count_activity' !== $key) { if ('export_count_activity' !== $key) {
@@ -70,31 +64,26 @@ class CountActivity implements ExportInterface, GroupedExportInterface
return static fn ($value) => '_header' === $value ? 'Number of activities linked to a person' : $value; return static fn ($value) => '_header' === $value ? 'Number of activities linked to a person' : $value;
} }
#[\Override]
public function getQueryKeys($data) public function getQueryKeys($data)
{ {
return ['export_count_activity']; return ['export_count_activity'];
} }
#[\Override]
public function getResult($query, $data) public function getResult($query, $data)
{ {
return $query->getQuery()->getResult(Query::HYDRATE_SCALAR); return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'Count activities linked to a person'; return 'Count activities linked to a person';
} }
#[\Override]
public function getType(): string public function getType(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{ {
$centers = array_map(static fn ($el) => $el['center'], $acl); $centers = array_map(static fn ($el) => $el['center'], $acl);
@@ -124,13 +113,11 @@ class CountActivity implements ExportInterface, GroupedExportInterface
return $qb; return $qb;
} }
#[\Override]
public function requiredRole(): string public function requiredRole(): string
{ {
return ActivityStatsVoter::STATS; return ActivityStatsVoter::STATS;
} }
#[\Override]
public function supportsModifiers() public function supportsModifiers()
{ {
return [ return [

View File

@@ -34,34 +34,28 @@ final readonly class CountHouseholdOnActivity implements ExportInterface, Groupe
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center']; $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) {} public function buildForm(FormBuilderInterface $builder) {}
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getAllowedFormattersTypes() public function getAllowedFormattersTypes()
{ {
return [FormatterInterface::TYPE_TABULAR]; return [FormatterInterface::TYPE_TABULAR];
} }
#[\Override]
public function getDescription() public function getDescription()
{ {
return 'export.export.count_household_on_activity_person.description'; return 'export.export.count_household_on_activity_person.description';
} }
#[\Override]
public function getGroup(): string public function getGroup(): string
{ {
return 'Exports of activities linked to a person'; return 'Exports of activities linked to a person';
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
if ('export_count_activity' !== $key) { if ('export_count_activity' !== $key) {
@@ -71,31 +65,26 @@ final readonly class CountHouseholdOnActivity implements ExportInterface, Groupe
return static fn ($value) => '_header' === $value ? 'export.export.count_household_on_activity_person.header' : $value; return static fn ($value) => '_header' === $value ? 'export.export.count_household_on_activity_person.header' : $value;
} }
#[\Override]
public function getQueryKeys($data) public function getQueryKeys($data)
{ {
return ['export_count_activity']; return ['export_count_activity'];
} }
#[\Override]
public function getResult($query, $data) public function getResult($query, $data)
{ {
return $query->getQuery()->getResult(Query::HYDRATE_SCALAR); return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'export.export.count_household_on_activity_person.title'; return 'export.export.count_household_on_activity_person.title';
} }
#[\Override]
public function getType(): string public function getType(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{ {
$centers = array_map(static fn ($el) => $el['center'], $acl); $centers = array_map(static fn ($el) => $el['center'], $acl);
@@ -132,13 +121,11 @@ final readonly class CountHouseholdOnActivity implements ExportInterface, Groupe
return $qb; return $qb;
} }
#[\Override]
public function requiredRole(): string public function requiredRole(): string
{ {
return ActivityStatsVoter::STATS; return ActivityStatsVoter::STATS;
} }
#[\Override]
public function supportsModifiers() public function supportsModifiers()
{ {
return [ return [

View File

@@ -19,6 +19,7 @@ use Chill\MainBundle\Export\FormatterInterface;
use Chill\MainBundle\Export\GroupedExportInterface; use Chill\MainBundle\Export\GroupedExportInterface;
use Chill\MainBundle\Export\ListInterface; use Chill\MainBundle\Export\ListInterface;
use Chill\MainBundle\Templating\TranslatableStringHelperInterface; use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
use Chill\PersonBundle\Entity\Household\HouseholdMember;
use Chill\PersonBundle\Export\Declarations as PersonDeclarations; use Chill\PersonBundle\Export\Declarations as PersonDeclarations;
use Doctrine\DBAL\Exception\InvalidArgumentException; use Doctrine\DBAL\Exception\InvalidArgumentException;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
@@ -44,6 +45,7 @@ class ListActivity implements ListInterface, GroupedExportInterface
'person_firstname', 'person_firstname',
'person_lastname', 'person_lastname',
'person_id', 'person_id',
'household_id',
]; ];
private readonly bool $filterStatsByCenters; private readonly bool $filterStatsByCenters;
@@ -57,7 +59,6 @@ class ListActivity implements ListInterface, GroupedExportInterface
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center']; $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('fields', ChoiceType::class, [ $builder->add('fields', ChoiceType::class, [
@@ -77,31 +78,26 @@ class ListActivity implements ListInterface, GroupedExportInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getAllowedFormattersTypes() public function getAllowedFormattersTypes()
{ {
return [FormatterInterface::TYPE_LIST]; return [FormatterInterface::TYPE_LIST];
} }
#[\Override]
public function getDescription() public function getDescription()
{ {
return 'List activities linked to a person description'; return 'List activities linked to a person description';
} }
#[\Override]
public function getGroup(): string public function getGroup(): string
{ {
return 'Exports of activities linked to a person'; return 'Exports of activities linked to a person';
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
switch ($key) { switch ($key) {
@@ -171,48 +167,50 @@ class ListActivity implements ListInterface, GroupedExportInterface
} }
} }
#[\Override]
public function getQueryKeys($data) public function getQueryKeys($data)
{ {
return $data['fields']; return $data['fields'];
} }
#[\Override]
public function getResult($query, $data) public function getResult($query, $data)
{ {
return $query->getQuery()->getResult(Query::HYDRATE_SCALAR); return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'List activity linked to a person'; return 'List activity linked to a person';
} }
#[\Override]
public function getType(): string public function getType(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{ {
$centers = array_map(static fn ($el) => $el['center'], $acl); $centers = array_map(static fn ($el) => $el['center'], $acl);
// throw an error if any fields are present // throw an error if no fields are present
if (!\array_key_exists('fields', $data)) { if (!\array_key_exists('fields', $data)) {
throw new InvalidArgumentException('Any fields have been checked.'); throw new InvalidArgumentException('No fields have been checked.');
} }
$qb = $this->entityManager->createQueryBuilder(); $qb = $this->entityManager->createQueryBuilder();
$qb $qb
->from('ChillActivityBundle:Activity', 'activity') ->from('ChillActivityBundle:Activity', 'activity')
->join('activity.person', 'actperson'); ->join('activity.person', 'person')
->join(
HouseholdMember::class,
'householdmember',
Query\Expr\Join::WITH,
'person = householdmember.person AND householdmember.startDate <= activity.date AND (householdmember.endDate IS NULL OR householdmember.endDate > activity.date)'
)
->join('householdmember.household', 'household');
if ($this->filterStatsByCenters) { if ($this->filterStatsByCenters) {
$qb->join('actperson.centerHistory', 'centerHistory'); $qb->join('person.centerHistory', 'centerHistory');
$qb->where( $qb->where(
$qb->expr()->andX( $qb->expr()->andX(
$qb->expr()->lte('centerHistory.startDate', 'activity.date'), $qb->expr()->lte('centerHistory.startDate', 'activity.date'),
@@ -235,17 +233,22 @@ class ListActivity implements ListInterface, GroupedExportInterface
break; break;
case 'person_firstname': case 'person_firstname':
$qb->addSelect('actperson.firstName AS person_firstname'); $qb->addSelect('person.firstName AS person_firstname');
break; break;
case 'person_lastname': case 'person_lastname':
$qb->addSelect('actperson.lastName AS person_lastname'); $qb->addSelect('person.lastName AS person_lastname');
break; break;
case 'person_id': case 'person_id':
$qb->addSelect('actperson.id AS person_id'); $qb->addSelect('person.id AS person_id');
break;
case 'household_id':
$qb->addSelect('household.id AS household_id');
break; break;
@@ -290,14 +293,12 @@ class ListActivity implements ListInterface, GroupedExportInterface
return $qb; return $qb;
} }
#[\Override]
public function requiredRole(): string public function requiredRole(): string
{ {
return ActivityStatsVoter::LISTS; return ActivityStatsVoter::LISTS;
} }
#[\Override] public function supportsModifiers(): array
public function supportsModifiers()
{ {
return [ return [
Declarations::ACTIVITY, Declarations::ACTIVITY,

View File

@@ -30,7 +30,7 @@ use Symfony\Component\Form\FormBuilderInterface;
*/ */
class StatActivityDuration implements ExportInterface, GroupedExportInterface class StatActivityDuration implements ExportInterface, GroupedExportInterface
{ {
final public const string SUM = 'sum'; final public const SUM = 'sum';
private readonly bool $filterStatsByCenters; private readonly bool $filterStatsByCenters;
/** /**
@@ -42,27 +42,23 @@ class StatActivityDuration implements ExportInterface, GroupedExportInterface
/** /**
* The action for this report. * The action for this report.
*/ */
protected string $action = 'sum' protected string $action = 'sum',
) { ) {
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center']; $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) {} public function buildForm(FormBuilderInterface $builder) {}
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function getAllowedFormattersTypes() public function getAllowedFormattersTypes()
{ {
return [FormatterInterface::TYPE_TABULAR]; return [FormatterInterface::TYPE_TABULAR];
} }
#[\Override]
public function getDescription() public function getDescription()
{ {
if (self::SUM === $this->action) { if (self::SUM === $this->action) {
@@ -72,13 +68,11 @@ class StatActivityDuration implements ExportInterface, GroupedExportInterface
throw new \LogicException('this action is not supported: '.$this->action); throw new \LogicException('this action is not supported: '.$this->action);
} }
#[\Override]
public function getGroup(): string public function getGroup(): string
{ {
return 'Exports of activities linked to a person'; return 'Exports of activities linked to a person';
} }
#[\Override]
public function getLabels($key, array $values, $data) public function getLabels($key, array $values, $data)
{ {
if ('export_stat_activity' !== $key) { if ('export_stat_activity' !== $key) {
@@ -90,19 +84,16 @@ class StatActivityDuration implements ExportInterface, GroupedExportInterface
return static fn (string $value) => '_header' === $value ? $header : $value; return static fn (string $value) => '_header' === $value ? $header : $value;
} }
#[\Override]
public function getQueryKeys($data) public function getQueryKeys($data)
{ {
return ['export_stat_activity']; return ['export_stat_activity'];
} }
#[\Override]
public function getResult($query, $data) public function getResult($query, $data)
{ {
return $query->getQuery()->getResult(Query::HYDRATE_SCALAR); return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
if (self::SUM === $this->action) { if (self::SUM === $this->action) {
@@ -112,13 +103,11 @@ class StatActivityDuration implements ExportInterface, GroupedExportInterface
throw new \LogicException('This action is not supported: '.$this->action); throw new \LogicException('This action is not supported: '.$this->action);
} }
#[\Override]
public function getType(): string public function getType(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{ {
$centers = array_map( $centers = array_map(
@@ -156,13 +145,11 @@ class StatActivityDuration implements ExportInterface, GroupedExportInterface
return $qb; return $qb;
} }
#[\Override]
public function requiredRole(): string public function requiredRole(): string
{ {
return ActivityStatsVoter::STATS; return ActivityStatsVoter::STATS;
} }
#[\Override]
public function supportsModifiers() public function supportsModifiers()
{ {
return [ return [

View File

@@ -28,7 +28,7 @@ use Symfony\Contracts\Translation\TranslatorInterface;
class ListActivityHelper class ListActivityHelper
{ {
final public const string MSG_KEY = 'export.list.activity.'; final public const MSG_KEY = 'export.list.activity.';
public function __construct( public function __construct(
private readonly ActivityPresenceRepositoryInterface $activityPresenceRepository, private readonly ActivityPresenceRepositoryInterface $activityPresenceRepository,
@@ -39,7 +39,7 @@ class ListActivityHelper
private readonly TranslatorInterface $translator, private readonly TranslatorInterface $translator,
private readonly TranslatableStringHelperInterface $translatableStringHelper, private readonly TranslatableStringHelperInterface $translatableStringHelper,
private readonly TranslatableStringExportLabelHelper $translatableStringLabelHelper, private readonly TranslatableStringExportLabelHelper $translatableStringLabelHelper,
private readonly UserHelper $userHelper private readonly UserHelper $userHelper,
) {} ) {}
public function addSelect(QueryBuilder $qb): void public function addSelect(QueryBuilder $qb): void

View File

@@ -25,7 +25,7 @@ use Symfony\Component\Form\FormBuilderInterface;
final readonly class ActivityTypeFilter implements FilterInterface final readonly class ActivityTypeFilter implements FilterInterface
{ {
private const string BASE_EXISTS = 'SELECT 1 FROM '.Activity::class.' act_type_filter_activity WHERE act_type_filter_activity.accompanyingPeriod = acp'; private const BASE_EXISTS = 'SELECT 1 FROM '.Activity::class.' act_type_filter_activity WHERE act_type_filter_activity.accompanyingPeriod = acp';
public function __construct( public function __construct(
private ActivityTypeRepositoryInterface $activityTypeRepository, private ActivityTypeRepositoryInterface $activityTypeRepository,
@@ -33,13 +33,11 @@ final readonly class ActivityTypeFilter implements FilterInterface
private RollingDateConverterInterface $rollingDateConverter, private RollingDateConverterInterface $rollingDateConverter,
) {} ) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$exists = self::BASE_EXISTS; $exists = self::BASE_EXISTS;
@@ -64,13 +62,11 @@ final readonly class ActivityTypeFilter implements FilterInterface
} }
} }
#[\Override]
public function applyOn() public function applyOn()
{ {
return Declarations::ACP_TYPE; return Declarations::ACP_TYPE;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('accepted_activitytypes', EntityType::class, [ $builder->add('accepted_activitytypes', EntityType::class, [
@@ -96,7 +92,6 @@ final readonly class ActivityTypeFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return [ return [
@@ -106,7 +101,6 @@ final readonly class ActivityTypeFilter implements FilterInterface
]; ];
} }
#[\Override]
public function describeAction($data, $format = 'string'): array public function describeAction($data, $format = 'string'): array
{ {
$types = []; $types = [];
@@ -124,7 +118,6 @@ final readonly class ActivityTypeFilter implements FilterInterface
]]; ]];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Filter accompanying course by activity type'; return 'Filter accompanying course by activity type';

View File

@@ -23,13 +23,11 @@ class BySocialActionFilter implements FilterInterface
{ {
public function __construct(private readonly SocialActionRender $actionRender) {} public function __construct(private readonly SocialActionRender $actionRender) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
if (!\in_array('actsocialaction', $qb->getAllAliases(), true)) { if (!\in_array('actsocialaction', $qb->getAllAliases(), true)) {
@@ -45,13 +43,11 @@ class BySocialActionFilter implements FilterInterface
); );
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY_ACP;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('accepted_socialactions', PickSocialActionType::class, [ $builder->add('accepted_socialactions', PickSocialActionType::class, [
@@ -59,13 +55,11 @@ class BySocialActionFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function describeAction($data, $format = 'string'): array public function describeAction($data, $format = 'string'): array
{ {
$actions = []; $actions = [];
@@ -81,7 +75,6 @@ class BySocialActionFilter implements FilterInterface
]]; ]];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Filter activity by linked socialaction'; return 'Filter activity by linked socialaction';

View File

@@ -23,13 +23,11 @@ class BySocialIssueFilter implements FilterInterface
{ {
public function __construct(private readonly SocialIssueRender $issueRender) {} public function __construct(private readonly SocialIssueRender $issueRender) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
if (!\in_array('actsocialissue', $qb->getAllAliases(), true)) { if (!\in_array('actsocialissue', $qb->getAllAliases(), true)) {
@@ -45,13 +43,11 @@ class BySocialIssueFilter implements FilterInterface
); );
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY_ACP;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('accepted_socialissues', PickSocialIssueType::class, [ $builder->add('accepted_socialissues', PickSocialIssueType::class, [
@@ -59,13 +55,11 @@ class BySocialIssueFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function describeAction($data, $format = 'string'): array public function describeAction($data, $format = 'string'): array
{ {
$issues = []; $issues = [];
@@ -81,7 +75,6 @@ class BySocialIssueFilter implements FilterInterface
]]; ]];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Filter activity by linked socialissue'; return 'Filter activity by linked socialissue';

View File

@@ -22,13 +22,11 @@ use Symfony\Component\Form\FormBuilderInterface;
*/ */
class HasNoActivityFilter implements FilterInterface class HasNoActivityFilter implements FilterInterface
{ {
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$qb $qb
@@ -40,31 +38,26 @@ class HasNoActivityFilter implements FilterInterface
'); ');
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACP_TYPE; return Declarations::ACP_TYPE;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
// no form needed // no form needed
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function describeAction($data, $format = 'string'): array public function describeAction($data, $format = 'string'): array
{ {
return ['Filtered acp which has no activities', []]; return ['Filtered acp which has no activities', []];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Filter acp which has no activity'; return 'Filter acp which has no activity';

View File

@@ -25,13 +25,11 @@ final readonly class PeriodHavingActivityBetweenDatesFilter implements FilterInt
private RollingDateConverterInterface $rollingDateConverter, private RollingDateConverterInterface $rollingDateConverter,
) {} ) {}
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'export.filter.activity.course_having_activity_between_date.Title'; return 'export.filter.activity.course_having_activity_between_date.Title';
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder $builder
@@ -43,7 +41,6 @@ final readonly class PeriodHavingActivityBetweenDatesFilter implements FilterInt
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return [ return [
@@ -52,7 +49,6 @@ final readonly class PeriodHavingActivityBetweenDatesFilter implements FilterInt
]; ];
} }
#[\Override]
public function describeAction($data, $format = 'string') public function describeAction($data, $format = 'string')
{ {
return [ return [
@@ -64,13 +60,11 @@ final readonly class PeriodHavingActivityBetweenDatesFilter implements FilterInt
]; ];
} }
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$alias = 'act_period_having_act_betw_date_alias'; $alias = 'act_period_having_act_betw_date_alias';
@@ -79,7 +73,7 @@ final readonly class PeriodHavingActivityBetweenDatesFilter implements FilterInt
$qb->andWhere( $qb->andWhere(
$qb->expr()->exists( $qb->expr()->exists(
'SELECT 1 FROM '.Activity::class." {$alias} WHERE {$alias}.date >= :{$from} AND {$alias}.date < :{$to} AND {$alias}.accompanyingPeriod = activity.accompanyingPeriod" 'SELECT 1 FROM '.Activity::class." {$alias} WHERE {$alias}.date >= :{$from} AND {$alias}.date < :{$to} AND {$alias}.accompanyingPeriod = acp"
) )
); );
@@ -88,7 +82,6 @@ final readonly class PeriodHavingActivityBetweenDatesFilter implements FilterInt
->setParameter($to, $this->rollingDateConverter->convert($data['end_date'])); ->setParameter($to, $this->rollingDateConverter->convert($data['end_date']));
} }
#[\Override]
public function applyOn() public function applyOn()
{ {
return \Chill\PersonBundle\Export\Declarations::ACP_TYPE; return \Chill\PersonBundle\Export\Declarations::ACP_TYPE;

View File

@@ -25,13 +25,11 @@ class ActivityDateFilter implements FilterInterface
{ {
public function __construct(protected TranslatorInterface $translator, private readonly RollingDateConverterInterface $rollingDateConverter) {} public function __construct(protected TranslatorInterface $translator, private readonly RollingDateConverterInterface $rollingDateConverter) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$where = $qb->getDQLPart('where'); $where = $qb->getDQLPart('where');
@@ -58,13 +56,11 @@ class ActivityDateFilter implements FilterInterface
); );
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder $builder
@@ -76,13 +72,11 @@ class ActivityDateFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return ['date_from' => new RollingDate(RollingDate::T_YEAR_PREVIOUS_START), 'date_to' => new RollingDate(RollingDate::T_TODAY)]; return ['date_from' => new RollingDate(RollingDate::T_YEAR_PREVIOUS_START), 'date_to' => new RollingDate(RollingDate::T_TODAY)];
} }
#[\Override]
public function describeAction($data, $format = 'string') public function describeAction($data, $format = 'string')
{ {
return [ return [
@@ -94,7 +88,6 @@ class ActivityDateFilter implements FilterInterface
]; ];
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'Filtered by date activity'; return 'Filtered by date activity';

View File

@@ -25,16 +25,14 @@ final readonly class ActivityPresenceFilter implements FilterInterface
{ {
public function __construct( public function __construct(
private TranslatableStringHelperInterface $translatableStringHelper, private TranslatableStringHelperInterface $translatableStringHelper,
private TranslatorInterface $translator private TranslatorInterface $translator,
) {} ) {}
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'export.filter.activity.by_presence.Filter activity by activity presence'; return 'export.filter.activity.by_presence.Filter activity by activity presence';
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('presences', EntityType::class, [ $builder->add('presences', EntityType::class, [
@@ -47,13 +45,11 @@ final readonly class ActivityPresenceFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function describeAction($data, $format = 'string') public function describeAction($data, $format = 'string')
{ {
$presences = array_map( $presences = array_map(
@@ -67,13 +63,11 @@ final readonly class ActivityPresenceFilter implements FilterInterface
]; ];
} }
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$qb $qb
@@ -81,7 +75,6 @@ final readonly class ActivityPresenceFilter implements FilterInterface
->setParameter('activity_presence_filter_presences', $data['presences']); ->setParameter('activity_presence_filter_presences', $data['presences']);
} }
#[\Override]
public function applyOn() public function applyOn()
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;

View File

@@ -26,16 +26,14 @@ class ActivityTypeFilter implements ExportElementValidatedInterface, FilterInter
{ {
public function __construct( public function __construct(
protected TranslatableStringHelperInterface $translatableStringHelper, protected TranslatableStringHelperInterface $translatableStringHelper,
protected ActivityTypeRepositoryInterface $activityTypeRepository protected ActivityTypeRepositoryInterface $activityTypeRepository,
) {} ) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$clause = $qb->expr()->in('activity.activityType', ':selected_activity_types'); $clause = $qb->expr()->in('activity.activityType', ':selected_activity_types');
@@ -44,13 +42,11 @@ class ActivityTypeFilter implements ExportElementValidatedInterface, FilterInter
$qb->setParameter('selected_activity_types', $data['types']); $qb->setParameter('selected_activity_types', $data['types']);
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('types', EntityType::class, [ $builder->add('types', EntityType::class, [
@@ -74,13 +70,11 @@ class ActivityTypeFilter implements ExportElementValidatedInterface, FilterInter
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function describeAction($data, $format = 'string') public function describeAction($data, $format = 'string')
{ {
// collect all the reasons'name used in this filter in one array // collect all the reasons'name used in this filter in one array
@@ -94,13 +88,11 @@ class ActivityTypeFilter implements ExportElementValidatedInterface, FilterInter
]]; ]];
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'Filter by activity type'; return 'Filter by activity type';
} }
#[\Override]
public function validateForm($data, ExecutionContextInterface $context) public function validateForm($data, ExecutionContextInterface $context)
{ {
if (null === $data['types'] || 0 === \count($data['types'])) { if (null === $data['types'] || 0 === \count($data['types'])) {

View File

@@ -22,13 +22,11 @@ class ActivityUsersFilter implements FilterInterface
{ {
public function __construct(private readonly UserRender $userRender) {} public function __construct(private readonly UserRender $userRender) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$orX = $qb->expr()->orX(); $orX = $qb->expr()->orX();
@@ -41,13 +39,11 @@ class ActivityUsersFilter implements FilterInterface
$qb->andWhere($orX); $qb->andWhere($orX);
} }
#[\Override]
public function applyOn() public function applyOn()
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('accepted_users', PickUserDynamicType::class, [ $builder->add('accepted_users', PickUserDynamicType::class, [
@@ -56,13 +52,11 @@ class ActivityUsersFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function describeAction($data, $format = 'string') public function describeAction($data, $format = 'string')
{ {
$users = []; $users = [];
@@ -76,7 +70,6 @@ class ActivityUsersFilter implements FilterInterface
]]; ]];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Filter activity by users'; return 'Filter activity by users';

View File

@@ -22,13 +22,11 @@ class ByCreatorFilter implements FilterInterface
{ {
public function __construct(private readonly UserRender $userRender) {} public function __construct(private readonly UserRender $userRender) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$qb $qb
@@ -38,13 +36,11 @@ class ByCreatorFilter implements FilterInterface
->setParameter('users', $data['accepted_users']); ->setParameter('users', $data['accepted_users']);
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('accepted_users', PickUserDynamicType::class, [ $builder->add('accepted_users', PickUserDynamicType::class, [
@@ -52,13 +48,11 @@ class ByCreatorFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function describeAction($data, $format = 'string'): array public function describeAction($data, $format = 'string'): array
{ {
$users = []; $users = [];
@@ -72,7 +66,6 @@ class ByCreatorFilter implements FilterInterface
]]; ]];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Filter activity by creator'; return 'Filter activity by creator';

View File

@@ -26,7 +26,7 @@ use Symfony\Contracts\Translation\TranslatorInterface;
final readonly class CreatorJobFilter implements FilterInterface final readonly class CreatorJobFilter implements FilterInterface
{ {
private const string PREFIX = 'acp_act_filter_creator_job'; private const PREFIX = 'acp_act_filter_creator_job';
public function __construct( public function __construct(
private TranslatableStringHelper $translatableStringHelper, private TranslatableStringHelper $translatableStringHelper,
@@ -34,13 +34,11 @@ final readonly class CreatorJobFilter implements FilterInterface
private UserJobRepositoryInterface $userJobRepository, private UserJobRepositoryInterface $userJobRepository,
) {} ) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$p = self::PREFIX; $p = self::PREFIX;
@@ -72,13 +70,11 @@ final readonly class CreatorJobFilter implements FilterInterface
); );
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder $builder
@@ -94,7 +90,6 @@ final readonly class CreatorJobFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function describeAction($data, $format = 'string'): array public function describeAction($data, $format = 'string'): array
{ {
$jobs = array_map( $jobs = array_map(
@@ -107,7 +102,6 @@ final readonly class CreatorJobFilter implements FilterInterface
]]; ]];
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return [ return [
@@ -115,7 +109,6 @@ final readonly class CreatorJobFilter implements FilterInterface
]; ];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'export.filter.activity.by_creator_job.Filter activity by user job'; return 'export.filter.activity.by_creator_job.Filter activity by user job';

View File

@@ -24,20 +24,18 @@ use Symfony\Component\Form\FormBuilderInterface;
class CreatorScopeFilter implements FilterInterface class CreatorScopeFilter implements FilterInterface
{ {
private const string PREFIX = 'acp_act_filter_creator_scope'; private const PREFIX = 'acp_act_filter_creator_scope';
public function __construct( public function __construct(
private readonly TranslatableStringHelper $translatableStringHelper, private readonly TranslatableStringHelper $translatableStringHelper,
private readonly ScopeRepositoryInterface $scopeRepository, private readonly ScopeRepositoryInterface $scopeRepository,
) {} ) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$p = self::PREFIX; $p = self::PREFIX;
@@ -69,13 +67,11 @@ class CreatorScopeFilter implements FilterInterface
); );
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder $builder
@@ -90,7 +86,6 @@ class CreatorScopeFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function describeAction($data, $format = 'string'): array public function describeAction($data, $format = 'string'): array
{ {
$scopes = []; $scopes = [];
@@ -106,7 +101,6 @@ class CreatorScopeFilter implements FilterInterface
]]; ]];
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return [ return [
@@ -114,7 +108,6 @@ class CreatorScopeFilter implements FilterInterface
]; ];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'export.filter.activity.by_creator_scope.Filter activity by user scope'; return 'export.filter.activity.by_creator_scope.Filter activity by user scope';

View File

@@ -21,22 +21,20 @@ use Symfony\Contracts\Translation\TranslatorInterface;
class EmergencyFilter implements FilterInterface class EmergencyFilter implements FilterInterface
{ {
private const array CHOICES = [ private const CHOICES = [
'activity is emergency' => 'true', 'activity is emergency' => 'true',
'activity is not emergency' => 'false', 'activity is not emergency' => 'false',
]; ];
private const string DEFAULT_CHOICE = 'false'; private const DEFAULT_CHOICE = 'false';
public function __construct(private readonly TranslatorInterface $translator) {} public function __construct(private readonly TranslatorInterface $translator) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$where = $qb->getDQLPart('where'); $where = $qb->getDQLPart('where');
@@ -53,13 +51,11 @@ class EmergencyFilter implements FilterInterface
$qb->setParameter('emergency', $data['accepted_emergency']); $qb->setParameter('emergency', $data['accepted_emergency']);
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('accepted_emergency', ChoiceType::class, [ $builder->add('accepted_emergency', ChoiceType::class, [
@@ -70,13 +66,11 @@ class EmergencyFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return ['accepted_emergency' => self::DEFAULT_CHOICE]; return ['accepted_emergency' => self::DEFAULT_CHOICE];
} }
#[\Override]
public function describeAction($data, $format = 'string'): array public function describeAction($data, $format = 'string'): array
{ {
return [ return [
@@ -88,7 +82,6 @@ class EmergencyFilter implements FilterInterface
]; ];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Filter activity by emergency'; return 'Filter activity by emergency';

View File

@@ -19,13 +19,11 @@ use Symfony\Component\Form\FormBuilderInterface;
class LocationFilter implements FilterInterface class LocationFilter implements FilterInterface
{ {
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$qb->andWhere( $qb->andWhere(
@@ -35,13 +33,11 @@ class LocationFilter implements FilterInterface
$qb->setParameter('location', $data['accepted_location']); $qb->setParameter('location', $data['accepted_location']);
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('accepted_location', PickUserLocationType::class, [ $builder->add('accepted_location', PickUserLocationType::class, [
@@ -50,13 +46,11 @@ class LocationFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function describeAction($data, $format = 'string'): array public function describeAction($data, $format = 'string'): array
{ {
$locations = []; $locations = [];
@@ -70,7 +64,6 @@ class LocationFilter implements FilterInterface
]]; ]];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Filter activity by location'; return 'Filter activity by location';

View File

@@ -23,13 +23,11 @@ class LocationTypeFilter implements FilterInterface
{ {
public function __construct(private readonly TranslatableStringHelper $translatableStringHelper) {} public function __construct(private readonly TranslatableStringHelper $translatableStringHelper) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
if (!\in_array('actloc', $qb->getAllAliases(), true)) { if (!\in_array('actloc', $qb->getAllAliases(), true)) {
@@ -49,13 +47,11 @@ class LocationTypeFilter implements FilterInterface
$qb->setParameter('locationtype', $data['accepted_locationtype']); $qb->setParameter('locationtype', $data['accepted_locationtype']);
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('accepted_locationtype', PickLocationTypeType::class, [ $builder->add('accepted_locationtype', PickLocationTypeType::class, [
@@ -64,13 +60,11 @@ class LocationTypeFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function describeAction($data, $format = 'string'): array public function describeAction($data, $format = 'string'): array
{ {
$types = []; $types = [];
@@ -86,7 +80,6 @@ class LocationTypeFilter implements FilterInterface
]]; ]];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Filter activity by locationtype'; return 'Filter activity by locationtype';

View File

@@ -28,13 +28,11 @@ class ActivityReasonFilter implements ExportElementValidatedInterface, FilterInt
{ {
public function __construct(protected TranslatableStringHelper $translatableStringHelper, protected ActivityReasonRepository $activityReasonRepository) {} public function __construct(protected TranslatableStringHelper $translatableStringHelper, protected ActivityReasonRepository $activityReasonRepository) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$where = $qb->getDQLPart('where'); $where = $qb->getDQLPart('where');
@@ -55,13 +53,11 @@ class ActivityReasonFilter implements ExportElementValidatedInterface, FilterInt
$qb->setParameter('selected_activity_reasons', $data['reasons']); $qb->setParameter('selected_activity_reasons', $data['reasons']);
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_PERSON; return Declarations::ACTIVITY_PERSON;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('reasons', EntityType::class, [ $builder->add('reasons', EntityType::class, [
@@ -74,13 +70,11 @@ class ActivityReasonFilter implements ExportElementValidatedInterface, FilterInt
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function describeAction($data, $format = 'string') public function describeAction($data, $format = 'string')
{ {
// collect all the reasons'name used in this filter in one array // collect all the reasons'name used in this filter in one array
@@ -97,13 +91,11 @@ class ActivityReasonFilter implements ExportElementValidatedInterface, FilterInt
]; ];
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'Filter by reason'; return 'Filter by reason';
} }
#[\Override]
public function validateForm($data, ExecutionContextInterface $context) public function validateForm($data, ExecutionContextInterface $context)
{ {
if (null === $data['reasons'] || 0 === \count($data['reasons'])) { if (null === $data['reasons'] || 0 === \count($data['reasons'])) {

View File

@@ -34,14 +34,12 @@ final readonly class PersonHavingActivityBetweenDateFilter implements ExportElem
private RollingDateConverterInterface $rollingDateConverter, private RollingDateConverterInterface $rollingDateConverter,
) {} ) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override] public function alterQuery(QueryBuilder $qb, $data): void
public function alterQuery(QueryBuilder $qb, $data)
{ {
// create a subquery for activity // create a subquery for activity
$sqb = $qb->getEntityManager()->createQueryBuilder(); $sqb = $qb->getEntityManager()->createQueryBuilder();
@@ -85,13 +83,11 @@ final readonly class PersonHavingActivityBetweenDateFilter implements ExportElem
); );
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::PERSON_TYPE; return Declarations::PERSON_TYPE;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('date_from_rolling', PickRollingDateType::class, [ $builder->add('date_from_rolling', PickRollingDateType::class, [
@@ -116,7 +112,6 @@ final readonly class PersonHavingActivityBetweenDateFilter implements ExportElem
} }
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return [ return [
@@ -126,8 +121,7 @@ final readonly class PersonHavingActivityBetweenDateFilter implements ExportElem
]; ];
} }
#[\Override] public function describeAction($data, $format = 'string'): array
public function describeAction($data, $format = 'string')
{ {
return [ return [
[] === $data['reasons'] ? [] === $data['reasons'] ?
@@ -147,13 +141,11 @@ final readonly class PersonHavingActivityBetweenDateFilter implements ExportElem
]; ];
} }
#[\Override] public function getTitle(): string
public function getTitle()
{ {
return 'export.filter.activity.person_between_dates.title'; return 'export.filter.activity.person_between_dates.title';
} }
#[\Override]
public function validateForm($data, ExecutionContextInterface $context) public function validateForm($data, ExecutionContextInterface $context)
{ {
if ($this->rollingDateConverter->convert($data['date_from_rolling']) if ($this->rollingDateConverter->convert($data['date_from_rolling'])

View File

@@ -24,17 +24,15 @@ use Symfony\Component\Form\FormBuilderInterface;
*/ */
final readonly class PersonsFilter implements FilterInterface final readonly class PersonsFilter implements FilterInterface
{ {
private const string PREFIX = 'act_persons_filter'; private const PREFIX = 'act_persons_filter';
public function __construct(private PersonRenderInterface $personRender) {} public function __construct(private PersonRenderInterface $personRender) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$p = self::PREFIX; $p = self::PREFIX;
@@ -49,13 +47,11 @@ final readonly class PersonsFilter implements FilterInterface
$qb->andWhere($orX); $qb->andWhere($orX);
} }
#[\Override]
public function applyOn() public function applyOn()
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('accepted_persons', PickPersonDynamicType::class, [ $builder->add('accepted_persons', PickPersonDynamicType::class, [
@@ -64,7 +60,6 @@ final readonly class PersonsFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return [ return [
@@ -72,7 +67,6 @@ final readonly class PersonsFilter implements FilterInterface
]; ];
} }
#[\Override]
public function describeAction($data, $format = 'string') public function describeAction($data, $format = 'string')
{ {
$users = []; $users = [];
@@ -86,7 +80,6 @@ final readonly class PersonsFilter implements FilterInterface
]]; ]];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'export.filter.activity.by_persons.Filter activity by persons'; return 'export.filter.activity.by_persons.Filter activity by persons';

View File

@@ -22,22 +22,20 @@ use Symfony\Contracts\Translation\TranslatorInterface;
class SentReceivedFilter implements FilterInterface class SentReceivedFilter implements FilterInterface
{ {
private const array CHOICES = [ private const CHOICES = [
'export.filter.activity.by_sent_received.is sent' => Activity::SENTRECEIVED_SENT, 'export.filter.activity.by_sent_received.is sent' => Activity::SENTRECEIVED_SENT,
'export.filter.activity.by_sent_received.is received' => Activity::SENTRECEIVED_RECEIVED, 'export.filter.activity.by_sent_received.is received' => Activity::SENTRECEIVED_RECEIVED,
]; ];
private const string DEFAULT_CHOICE = Activity::SENTRECEIVED_SENT; private const DEFAULT_CHOICE = Activity::SENTRECEIVED_SENT;
public function __construct(private readonly TranslatorInterface $translator) {} public function __construct(private readonly TranslatorInterface $translator) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$where = $qb->getDQLPart('where'); $where = $qb->getDQLPart('where');
@@ -54,13 +52,11 @@ class SentReceivedFilter implements FilterInterface
$qb->setParameter('sentreceived', $data['accepted_sentreceived']); $qb->setParameter('sentreceived', $data['accepted_sentreceived']);
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('accepted_sentreceived', ChoiceType::class, [ $builder->add('accepted_sentreceived', ChoiceType::class, [
@@ -72,13 +68,11 @@ class SentReceivedFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return ['accepted_sentreceived' => self::DEFAULT_CHOICE]; return ['accepted_sentreceived' => self::DEFAULT_CHOICE];
} }
#[\Override]
public function describeAction($data, $format = 'string'): array public function describeAction($data, $format = 'string'): array
{ {
$sentreceived = array_flip(self::CHOICES)[$data['accepted_sentreceived']]; $sentreceived = array_flip(self::CHOICES)[$data['accepted_sentreceived']];
@@ -88,7 +82,6 @@ class SentReceivedFilter implements FilterInterface
]]; ]];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Filter activity by sentreceived'; return 'Filter activity by sentreceived';

View File

@@ -23,13 +23,11 @@ class UserFilter implements FilterInterface
{ {
public function __construct(private readonly UserRender $userRender) {} public function __construct(private readonly UserRender $userRender) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$where = $qb->getDQLPart('where'); $where = $qb->getDQLPart('where');
@@ -46,13 +44,11 @@ class UserFilter implements FilterInterface
$qb->setParameter('users', $data['accepted_users']); $qb->setParameter('users', $data['accepted_users']);
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('accepted_users', PickUserDynamicType::class, [ $builder->add('accepted_users', PickUserDynamicType::class, [
@@ -61,13 +57,11 @@ class UserFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return []; return [];
} }
#[\Override]
public function describeAction($data, $format = 'string'): array public function describeAction($data, $format = 'string'): array
{ {
$users = []; $users = [];
@@ -81,7 +75,6 @@ class UserFilter implements FilterInterface
]]; ]];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'Filter activity by user'; return 'Filter activity by user';

View File

@@ -25,20 +25,18 @@ use Symfony\Component\Form\FormBuilderInterface;
class UsersJobFilter implements FilterInterface class UsersJobFilter implements FilterInterface
{ {
private const string PREFIX = 'act_filter_user_job'; private const PREFIX = 'act_filter_user_job';
public function __construct( public function __construct(
private readonly TranslatableStringHelperInterface $translatableStringHelper, private readonly TranslatableStringHelperInterface $translatableStringHelper,
private readonly UserJobRepositoryInterface $userJobRepository private readonly UserJobRepositoryInterface $userJobRepository,
) {} ) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$p = self::PREFIX; $p = self::PREFIX;
@@ -62,13 +60,11 @@ class UsersJobFilter implements FilterInterface
); );
} }
#[\Override]
public function applyOn() public function applyOn()
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder $builder
@@ -81,7 +77,6 @@ class UsersJobFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function describeAction($data, $format = 'string') public function describeAction($data, $format = 'string')
{ {
return ['export.filter.activity.by_users_job.Filtered activity by users job: only %jobs%', [ return ['export.filter.activity.by_users_job.Filtered activity by users job: only %jobs%', [
@@ -95,7 +90,6 @@ class UsersJobFilter implements FilterInterface
]]; ]];
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return [ return [
@@ -103,7 +97,6 @@ class UsersJobFilter implements FilterInterface
]; ];
} }
#[\Override]
public function getTitle() public function getTitle()
{ {
return 'export.filter.activity.by_users_job.Filter by users job'; return 'export.filter.activity.by_users_job.Filter by users job';

View File

@@ -25,20 +25,18 @@ use Symfony\Component\Form\FormBuilderInterface;
class UsersScopeFilter implements FilterInterface class UsersScopeFilter implements FilterInterface
{ {
private const string PREFIX = 'act_filter_user_scope'; private const PREFIX = 'act_filter_user_scope';
public function __construct( public function __construct(
private readonly ScopeRepositoryInterface $scopeRepository, private readonly ScopeRepositoryInterface $scopeRepository,
private readonly TranslatableStringHelperInterface $translatableStringHelper private readonly TranslatableStringHelperInterface $translatableStringHelper,
) {} ) {}
#[\Override]
public function addRole(): ?string public function addRole(): ?string
{ {
return null; return null;
} }
#[\Override]
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$p = self::PREFIX; $p = self::PREFIX;
@@ -62,13 +60,11 @@ class UsersScopeFilter implements FilterInterface
); );
} }
#[\Override]
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY; return Declarations::ACTIVITY;
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)
{ {
$builder $builder
@@ -81,7 +77,6 @@ class UsersScopeFilter implements FilterInterface
]); ]);
} }
#[\Override]
public function describeAction($data, $format = 'string'): array public function describeAction($data, $format = 'string'): array
{ {
return ['export.filter.activity.by_users_scope.Filtered activity by users scope: only %scopes%', [ return ['export.filter.activity.by_users_scope.Filtered activity by users scope: only %scopes%', [
@@ -95,7 +90,6 @@ class UsersScopeFilter implements FilterInterface
]]; ]];
} }
#[\Override]
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return [ return [
@@ -103,7 +97,6 @@ class UsersScopeFilter implements FilterInterface
]; ];
} }
#[\Override]
public function getTitle(): string public function getTitle(): string
{ {
return 'export.filter.activity.by_users_scope.Filter by users scope'; return 'export.filter.activity.by_users_scope.Filter by users scope';

View File

@@ -20,7 +20,6 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
class ActivityPresenceType extends AbstractType class ActivityPresenceType extends AbstractType
{ {
#[\Override]
public function buildForm(FormBuilderInterface $builder, array $options): void public function buildForm(FormBuilderInterface $builder, array $options): void
{ {
$builder $builder
@@ -34,7 +33,6 @@ class ActivityPresenceType extends AbstractType
]); ]);
} }
#[\Override]
public function configureOptions(OptionsResolver $resolver): void public function configureOptions(OptionsResolver $resolver): void
{ {
$resolver->setDefaults([ $resolver->setDefaults([

View File

@@ -19,7 +19,6 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
class ActivityReasonCategoryType extends AbstractType class ActivityReasonCategoryType extends AbstractType
{ {
#[\Override]
public function buildForm(FormBuilderInterface $builder, array $options) public function buildForm(FormBuilderInterface $builder, array $options)
{ {
$builder $builder
@@ -30,7 +29,6 @@ class ActivityReasonCategoryType extends AbstractType
/** /**
* @param OptionsResolverInterface $resolver * @param OptionsResolverInterface $resolver
*/ */
#[\Override]
public function configureOptions(OptionsResolver $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults([ $resolver->setDefaults([
@@ -41,7 +39,6 @@ class ActivityReasonCategoryType extends AbstractType
/** /**
* @return string * @return string
*/ */
#[\Override]
public function getBlockPrefix() public function getBlockPrefix()
{ {
return 'chill_activitybundle_activityreasoncategory'; return 'chill_activitybundle_activityreasoncategory';

View File

@@ -21,7 +21,6 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
class ActivityReasonType extends AbstractType class ActivityReasonType extends AbstractType
{ {
#[\Override]
public function buildForm(FormBuilderInterface $builder, array $options) public function buildForm(FormBuilderInterface $builder, array $options)
{ {
$builder $builder
@@ -30,7 +29,6 @@ class ActivityReasonType extends AbstractType
->add('category', TranslatableActivityReasonCategoryType::class); ->add('category', TranslatableActivityReasonCategoryType::class);
} }
#[\Override]
public function configureOptions(OptionsResolver $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults([ $resolver->setDefaults([
@@ -41,7 +39,6 @@ class ActivityReasonType extends AbstractType
/** /**
* @return string * @return string
*/ */
#[\Override]
public function getBlockPrefix() public function getBlockPrefix()
{ {
return 'chill_activitybundle_activityreason'; return 'chill_activitybundle_activityreason';

View File

@@ -59,7 +59,7 @@ class ActivityType extends AbstractType
protected TranslatableStringHelper $translatableStringHelper, protected TranslatableStringHelper $translatableStringHelper,
protected array $timeChoices, protected array $timeChoices,
protected SocialIssueRender $socialIssueRender, protected SocialIssueRender $socialIssueRender,
protected SocialActionRender $socialActionRender protected SocialActionRender $socialActionRender,
) { ) {
if (!$tokenStorage->getToken()->getUser() instanceof User) { if (!$tokenStorage->getToken()->getUser() instanceof User) {
throw new \RuntimeException('you should have a valid user'); throw new \RuntimeException('you should have a valid user');
@@ -68,7 +68,6 @@ class ActivityType extends AbstractType
$this->user = $tokenStorage->getToken()->getUser(); $this->user = $tokenStorage->getToken()->getUser();
} }
#[\Override]
public function buildForm(FormBuilderInterface $builder, array $options): void public function buildForm(FormBuilderInterface $builder, array $options): void
{ {
// handle times choices // handle times choices
@@ -387,7 +386,6 @@ class ActivityType extends AbstractType
} }
} }
#[\Override]
public function configureOptions(OptionsResolver $resolver): void public function configureOptions(OptionsResolver $resolver): void
{ {
$resolver->setDefaults([ $resolver->setDefaults([
@@ -402,7 +400,6 @@ class ActivityType extends AbstractType
->setAllowedTypes('accompanyingPeriod', [AccompanyingPeriod::class, 'null']); ->setAllowedTypes('accompanyingPeriod', [AccompanyingPeriod::class, 'null']);
} }
#[\Override]
public function getBlockPrefix(): string public function getBlockPrefix(): string
{ {
return 'chill_activitybundle_activity'; return 'chill_activitybundle_activity';

View File

@@ -21,7 +21,6 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
class ActivityTypeCategoryType extends AbstractType class ActivityTypeCategoryType extends AbstractType
{ {
#[\Override]
public function buildForm(FormBuilderInterface $builder, array $options): void public function buildForm(FormBuilderInterface $builder, array $options): void
{ {
$builder $builder
@@ -39,7 +38,6 @@ class ActivityTypeCategoryType extends AbstractType
]); ]);
} }
#[\Override]
public function configureOptions(OptionsResolver $resolver): void public function configureOptions(OptionsResolver $resolver): void
{ {
$resolver->setDefaults([ $resolver->setDefaults([

View File

@@ -27,7 +27,6 @@ class ActivityTypeType extends AbstractType
{ {
public function __construct(private readonly TranslatableStringHelper $translatableStringHelper) {} public function __construct(private readonly TranslatableStringHelper $translatableStringHelper) {}
#[\Override]
public function buildForm(FormBuilderInterface $builder, array $options) public function buildForm(FormBuilderInterface $builder, array $options)
{ {
$builder $builder
@@ -68,7 +67,6 @@ class ActivityTypeType extends AbstractType
->add('commentVisible', ActivityFieldPresence::class); ->add('commentVisible', ActivityFieldPresence::class);
} }
#[\Override]
public function configureOptions(OptionsResolver $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults([ $resolver->setDefaults([

View File

@@ -18,7 +18,6 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
class ActivityFieldPresence extends AbstractType class ActivityFieldPresence extends AbstractType
{ {
#[\Override]
public function configureOptions(OptionsResolver $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults( $resolver->setDefaults(
@@ -32,7 +31,6 @@ class ActivityFieldPresence extends AbstractType
); );
} }
#[\Override]
public function getParent() public function getParent()
{ {
return ChoiceType::class; return ChoiceType::class;

View File

@@ -27,10 +27,9 @@ class PickActivityReasonType extends AbstractType
public function __construct( public function __construct(
private readonly ActivityReasonRepository $activityReasonRepository, private readonly ActivityReasonRepository $activityReasonRepository,
private readonly ActivityReasonRender $reasonRender, private readonly ActivityReasonRender $reasonRender,
private readonly TranslatableStringHelperInterface $translatableStringHelper private readonly TranslatableStringHelperInterface $translatableStringHelper,
) {} ) {}
#[\Override]
public function configureOptions(OptionsResolver $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults( $resolver->setDefaults(
@@ -50,13 +49,11 @@ class PickActivityReasonType extends AbstractType
); );
} }
#[\Override]
public function getBlockPrefix() public function getBlockPrefix()
{ {
return 'translatable_activity_reason'; return 'translatable_activity_reason';
} }
#[\Override]
public function getParent() public function getParent()
{ {
return EntityType::class; return EntityType::class;

View File

@@ -25,7 +25,6 @@ class TranslatableActivityReasonCategoryType extends AbstractType
{ {
public function __construct(private readonly TranslatableStringHelperInterface $translatableStringHelper, private readonly TranslatorInterface $translator) {} public function __construct(private readonly TranslatableStringHelperInterface $translatableStringHelper, private readonly TranslatorInterface $translator) {}
#[\Override]
public function configureOptions(OptionsResolver $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults( $resolver->setDefaults(
@@ -37,7 +36,6 @@ class TranslatableActivityReasonCategoryType extends AbstractType
); );
} }
#[\Override]
public function getParent() public function getParent()
{ {
return EntityType::class; return EntityType::class;

View File

@@ -22,7 +22,6 @@ class TranslatableActivityType extends AbstractType
{ {
public function __construct(protected TranslatableStringHelperInterface $translatableStringHelper, protected ActivityTypeRepositoryInterface $activityTypeRepository) {} public function __construct(protected TranslatableStringHelperInterface $translatableStringHelper, protected ActivityTypeRepositoryInterface $activityTypeRepository) {}
#[\Override]
public function configureOptions(OptionsResolver $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults( $resolver->setDefaults(
@@ -35,13 +34,11 @@ class TranslatableActivityType extends AbstractType
); );
} }
#[\Override]
public function getBlockPrefix() public function getBlockPrefix()
{ {
return 'translatable_activity_type'; return 'translatable_activity_type';
} }
#[\Override]
public function getParent() public function getParent()
{ {
return EntityType::class; return EntityType::class;

Some files were not shown because too many files have changed in this diff Show More