mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-11-04 11:18:25 +00:00 
			
		
		
		
	Compare commits
	
		
			270 Commits
		
	
	
		
			v4.0.0-RC2
			...
			295-cancel
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						fad7bdf235
	
				 | 
					
					
						|||
| 
						
						
							
						
						8521cea46c
	
				 | 
					
					
						|||
| 
						
						
							
						
						4ead7ba761
	
				 | 
					
					
						|||
| 
						
						
							
						
						9721b166eb
	
				 | 
					
					
						|||
| 
						
						
							
						
						1b21cd6c33
	
				 | 
					
					
						|||
| 
						
						
							
						
						97860a9487
	
				 | 
					
					
						|||
| 
						
						
							
						
						2fb46c65c2
	
				 | 
					
					
						|||
| 
						
						
							
						
						f4356ac249
	
				 | 
					
					
						|||
| 
						
						
							
						
						d152efe084
	
				 | 
					
					
						|||
| 
						
						
							
						
						ee9530d03f
	
				 | 
					
					
						|||
| 
						
						
							
						
						b97eabf0d2
	
				 | 
					
					
						|||
| 
						
						
							
						
						2e69d2df90
	
				 | 
					
					
						|||
| 
						
						
							
						
						cb446edd18
	
				 | 
					
					
						|||
| 
						
						
							
						
						5d84e997c1
	
				 | 
					
					
						|||
| 
						
						
							
						
						35199b6993
	
				 | 
					
					
						|||
| 
						
						
							
						
						dab68fb409
	
				 | 
					
					
						|||
| 
						
						
							
						
						6001bb6447
	
				 | 
					
					
						|||
| 
						
						
							
						
						29fec50515
	
				 | 
					
					
						|||
| 
						
						
							
						
						34edb02cd0
	
				 | 
					
					
						|||
| 
						
						
							
						
						860ae5cedf
	
				 | 
					
					
						|||
| 
						
						
							
						
						bf056046ab
	
				 | 
					
					
						|||
| 
						
						
							
						
						4d73f9b81a
	
				 | 
					
					
						|||
| dd159f4379 | |||
| 
						
						
							
						
						49ad25b4c8
	
				 | 
					
					
						|||
| 
						
						
							
						
						ad94310981
	
				 | 
					
					
						|||
| 
						
						
							
						
						e8f09b507f
	
				 | 
					
					
						|||
| 
						
						
							
						
						e29e1db6ed
	
				 | 
					
					
						|||
| 
						
						
							
						
						8c4f342ca1
	
				 | 
					
					
						|||
| 
						
						
							
						
						745a29f742
	
				 | 
					
					
						|||
| 
						
						
							
						
						41ffc470a0
	
				 | 
					
					
						|||
| 
						
						
							
						
						46b31ae1ea
	
				 | 
					
					
						|||
| 
						
						
							
						
						8c5e94e295
	
				 | 
					
					
						|||
| 
						
						
							
						
						9c8a84cdbd
	
				 | 
					
					
						|||
| 
						
						
							
						
						a82b99aecc
	
				 | 
					
					
						|||
| 
						
						
							
						
						deb4bda16e
	
				 | 
					
					
						|||
| 
						
						
							
						
						c1e5f4a57e
	
				 | 
					
					
						|||
| 
						
						
							
						
						6fc5a10dc4
	
				 | 
					
					
						|||
| 
						
						
							
						
						18abc84e68
	
				 | 
					
					
						|||
| 
						
						
							
						
						e85c31826f
	
				 | 
					
					
						|||
| 
						
						
							
						
						d119ba49f7
	
				 | 
					
					
						|||
| 
						
						
							
						
						c21de777fd
	
				 | 
					
					
						|||
| 
						
						
							
						
						15eaf648df
	
				 | 
					
					
						|||
| 
						
						
							
						
						42471269db
	
				 | 
					
					
						|||
| 
						
						
							
						
						9475a708c3
	
				 | 
					
					
						|||
| bf1af1aaad | |||
| 
						
						
							
						
						8ea87053f0
	
				 | 
					
					
						|||
| 
						
						
							
						
						3c9ee41b3b
	
				 | 
					
					
						|||
| 
						
						
							
						
						d0031e82e8
	
				 | 
					
					
						|||
| 
						
						
							
						
						20f2bc6c35
	
				 | 
					
					
						|||
| 
						
						
							
						
						71d3aa3969
	
				 | 
					
					
						|||
| 
						
						
							
						
						ce781a5b58
	
				 | 
					
					
						|||
| 2dd275a074 | |||
| 5f5d4b8f06 | |||
| 
						
						
							
						
						cc8214d52c
	
				 | 
					
					
						|||
| 
						
						
							
						
						0c797c2997
	
				 | 
					
					
						|||
| 
						
						
							
						
						ee6edba206
	
				 | 
					
					
						|||
| 
						
						
							
						
						3e6d764b9b
	
				 | 
					
					
						|||
| 
						
						
							
						
						3e5a558cdf
	
				 | 
					
					
						|||
| 
						
						
							
						
						0e6b7d76a4
	
				 | 
					
					
						|||
| b2042bd1e4 | |||
| 
						
						
							
						
						6e9f111fd9
	
				 | 
					
					
						|||
| 
						
						
							
						
						313fb9ffdf
	
				 | 
					
					
						|||
| 
						
						
							
						
						063bc2857f
	
				 | 
					
					
						|||
| 
						
						
							
						
						615629d1b4
	
				 | 
					
					
						|||
| 
						
						
							
						
						667e144681
	
				 | 
					
					
						|||
| 
						
						
							
						
						e17203ca3a
	
				 | 
					
					
						|||
| 
						
						
							
						
						c6a6d76790
	
				 | 
					
					
						|||
| 
						
						
							
						
						3d49c959e0
	
				 | 
					
					
						|||
| 
						 | 
					86896a12e6 | ||
| 
						 | 
					3a959b7044 | ||
| 
						 | 
					f8d95384ea | ||
| 
						
						
							
						
						b6edbb3eed
	
				 | 
					
					
						|||
| 
						
						
							
						
						00cc3b7806
	
				 | 
					
					
						|||
| 
						
						
							
						
						7ab52ff09e
	
				 | 
					
					
						|||
| 
						
						
							
						
						2d82c1e105
	
				 | 
					
					
						|||
| 
						
						
							
						
						e477a49c92
	
				 | 
					
					
						|||
| 
						
						
							
						
						0db2652f08
	
				 | 
					
					
						|||
| 
						
						
							
						
						c38f7c1179
	
				 | 
					
					
						|||
| 
						
						
							
						
						67d24cb951
	
				 | 
					
					
						|||
| 
						
						
							
						
						cb90261309
	
				 | 
					
					
						|||
| 
						
						
							
						
						2feea24c41
	
				 | 
					
					
						|||
| 
						
						
							
						
						1b16d4fe3b
	
				 | 
					
					
						|||
| 
						
						
							
						
						ce5659219a
	
				 | 
					
					
						|||
| 
						
						
							
						
						5fefe09a39
	
				 | 
					
					
						|||
| 
						
						
							
						
						e21db73b84
	
				 | 
					
					
						|||
| 
						
						
							
						
						3978ea9a47
	
				 | 
					
					
						|||
| 
						
						
							
						
						4fbb7811ac
	
				 | 
					
					
						|||
| 
						
						
							
						
						2b7ea4178b
	
				 | 
					
					
						|||
| 
						
						
							
						
						8a374864fa
	
				 | 
					
					
						|||
| 
						
						
							
						
						bb848746d5
	
				 | 
					
					
						|||
| 
						
						
							
						
						3738c110f8
	
				 | 
					
					
						|||
| 
						
						
							
						
						f57fdb2b4c
	
				 | 
					
					
						|||
| 
						
						
							
						
						b57824fc7e
	
				 | 
					
					
						|||
| 
						
						
							
						
						6b4e1ed2d3
	
				 | 
					
					
						|||
| 
						
						
							
						
						b0485dbcc8
	
				 | 
					
					
						|||
| 
						
						
							
						
						c16219dc6d
	
				 | 
					
					
						|||
| ad47804c91 | |||
| 85e2466611 | |||
| 94d6b5eff8 | |||
| d87f380f16 | |||
| 58bf722fae | |||
| 50fb79ebbf | |||
| 58912f1d98 | |||
| 9604ba5f4b | |||
| b689a51a48 | |||
| 8c0d2f58ba | |||
| 212230448b | |||
| 2bfb8fe387 | |||
| 6362b98a00 | |||
| 6e2a08cae8 | |||
| 305105faae | |||
| 85811cc6ae | |||
| 7eee995627 | |||
| c0c448fb39 | |||
| 6445342136 | |||
| d52e54fd2a | |||
| 2f9884072c | |||
| ee45ff61a6 | |||
| 
						
						
							
						
						564813ef3d
	
				 | 
					
					
						|||
| 
						
						
							
						
						5fed42a623
	
				 | 
					
					
						|||
| b19dd4fc11 | |||
| 
						
						
							
						
						44226d6f7f
	
				 | 
					
					
						|||
| d75607a1d2 | |||
| bf66af0f25 | |||
| 15f3e474a0 | |||
| 5623cf946e | |||
| 0a6f3a99da | |||
| 50bd9f32c3 | |||
| 1396304af5 | |||
| c33e4adeec | |||
| 7351a35c42 | |||
| 72e3325626 | |||
| 0a46b5304d | |||
| 
						 | 
					e57d52d00e | ||
| 64e527672d | |||
| 
						
						
							
						
						123168a5ee
	
				 | 
					
					
						|||
| 
						
						
							
						
						3836d0dc9b
	
				 | 
					
					
						|||
| 
						
						
							
						
						51ab4bef38
	
				 | 
					
					
						|||
| 
						 | 
					567ca8a26f | ||
| 
						 | 
					111305d09c | ||
| 
						 | 
					67395f52b5 | ||
| 
						 | 
					421226c0dc | ||
| 
						 | 
					77da2c1ac6 | ||
| 
						 | 
					39d3ba2f40 | ||
| 
						 | 
					fb62e54d63 | ||
| 
						 | 
					c968d6c541 | ||
| 
						 | 
					c428e6665f | ||
| 
						 | 
					5b7e3f0336 | ||
| 
						 | 
					0c8ef37860 | ||
| 
						 | 
					794c479b9e | ||
| 
						 | 
					1bee3114ac | ||
| 
						 | 
					1344b65dd4 | ||
| 
						 | 
					68dcf4dd28 | ||
| 
						 | 
					b0a8fd54a8 | ||
| 
						 | 
					0f589ec57e | ||
| 
						 | 
					2d4fc45a0c | ||
| 
						 | 
					c80f23f0db | ||
| 
						 | 
					c950400fe2 | ||
| 
						 | 
					21c1e77d36 | ||
| 
						 | 
					bbfd0caf10 | ||
| 
						 | 
					9192883217 | ||
| 3836622d27 | |||
| cc2c4be1b0 | |||
| 873940786f | |||
| db73dcffc7 | |||
| 
						
						
							
						
						8aec69f0f9
	
				 | 
					
					
						|||
| 
						
						
							
						
						9f88eef249
	
				 | 
					
					
						|||
| 
						
						
							
						
						d689ce9aef
	
				 | 
					
					
						|||
| 
						
						
							
						
						d5e4991982
	
				 | 
					
					
						|||
| 
						
						
							
						
						ca68b58246
	
				 | 
					
					
						|||
| 
						
						
							
						
						747a1de321
	
				 | 
					
					
						|||
| 
						
						
							
						
						9e92ede16f
	
				 | 
					
					
						|||
| 
						
						
							
						
						31f842471a
	
				 | 
					
					
						|||
| 
						
						
							
						
						7d0f9175be
	
				 | 
					
					
						|||
| 
						
						
							
						
						e83307ca6d
	
				 | 
					
					
						|||
| 215eba41b7 | |||
| 52a3d1be1b | |||
| 8d543be5cc | |||
| 0474b25859 | |||
| 
						
						
							
						
						db94af0958
	
				 | 
					
					
						|||
| 3e8805bdda | |||
| 
						
						
							
						
						a887602f4f
	
				 | 
					
					
						|||
| 
						
						
							
						
						c1cf27c42d
	
				 | 
					
					
						|||
| 
						
						
							
						
						fe6b4848e6
	
				 | 
					
					
						|||
| 
						
						
							
						
						b5af9f7b63
	
				 | 
					
					
						|||
| 
						
						
							
						
						7f3de62b2c
	
				 | 
					
					
						|||
| cfa51cd659 | |||
| facc4affed | |||
| f9122341d1 | |||
| 7dd5f542a6 | |||
| 3b80d9a93b | |||
| 790576863f | |||
| 25e89571f7 | |||
| 435836c7d1 | |||
| af4db22184 | |||
| 2adc8b3bf6 | |||
| 21b79c1981 | |||
| 428494ca1f | |||
| 5d57ec8a3b | |||
| 719fabc878 | |||
| e9a9a3430f | |||
| c648a560cc | |||
| 3d7c8596ee | |||
| 345f379650 | |||
| 3262a1dd02 | |||
| a9f4f8c973 | |||
| c19c597ba0 | |||
| 03800029c9 | |||
| 064dfc5a56 | |||
| ba95687f46 | |||
| 
						
						
							
						
						a309cc0774
	
				 | 
					
					
						|||
| 5b0babb9b0 | |||
| ac2f314395 | |||
| 8c92d11722 | |||
| 
						
						
							
						
						3db4fff80d
	
				 | 
					
					
						|||
| fb743b522d | |||
| d1653a074b | |||
| 254122d125 | |||
| c9d2e37cee | |||
| 
						
						
							
						
						c9d54a5fea
	
				 | 
					
					
						|||
| 
						
						
							
						
						86c862e69d
	
				 | 
					
					
						|||
| 
						
						
							
						
						9bc6fe6aff
	
				 | 
					
					
						|||
| 
						
						
							
						
						18a03fd740
	
				 | 
					
					
						|||
| e9d4b9e2ab | |||
| efaad1981d | |||
| 742f2540f6 | |||
| bab6528ed6 | |||
| a25f2c7539 | |||
| c06e76a0ee | |||
| 4607c36b57 | |||
| 7c03a25f1a | |||
| cce04ee490 | |||
| e54633d14d | |||
| d9892f6822 | |||
| f75c7a0232 | |||
| 062afd6695 | |||
| 830dace1ba | |||
| 2ce9810243 | |||
| 26b3d84d62 | |||
| 30078db841 | |||
| aaac80be84 | |||
| a0fead48e1 | |||
| 2d09efb2e0 | |||
| 3a87513a11 | |||
| d3956319ca | |||
| bd36735cb1 | |||
| 1310d53589 | |||
| 
						
						
							
						
						610239930b
	
				 | 
					
					
						|||
| b65e2c62c4 | |||
| 
						
						
							
						
						89f5231649
	
				 | 
					
					
						|||
| 73797b98f6 | |||
| 3d40db7493 | |||
| 760d65b972 | |||
| d26fa6bde6 | |||
| 427f232ab8 | |||
| 
						
						
							
						
						99818c211d
	
				 | 
					
					
						|||
| 
						
						
							
						
						a9f0059743
	
				 | 
					
					
						|||
| 
						
						
							
						
						5bc542a567
	
				 | 
					
					
						|||
| 482f279dc5 | |||
| e0828b1f0f | |||
| e015f71bb0 | |||
| 04a48f22ad | |||
| ad4fe80240 | |||
| 4b82e67952 | |||
| 
						
						
							
						
						c8ccce83fd
	
				 | 
					
					
						|||
| e9a9262fae | |||
| d9e37d0958 | |||
| 65c41e6fa9 | |||
| 7923b5a1ef | |||
| 4a229ebf6b | 
							
								
								
									
										8
									
								
								.changes/unreleased/Feature-20240614-153236.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.changes/unreleased/Feature-20240614-153236.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
kind: Feature
 | 
			
		||||
body: |-
 | 
			
		||||
  Electronic signature
 | 
			
		||||
 | 
			
		||||
  Implementation of the electronic signature for documents within chill.
 | 
			
		||||
time: 2024-06-14T15:32:36.875891692+02:00
 | 
			
		||||
custom:
 | 
			
		||||
  Issue: ""
 | 
			
		||||
							
								
								
									
										7
									
								
								.changes/unreleased/Feature-20240614-153537.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								.changes/unreleased/Feature-20240614-153537.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
kind: Feature
 | 
			
		||||
body: The behavoir of the voters for stored objects is adjusted so as to limit edit
 | 
			
		||||
  and delete possibilities to users related to the activity, social action or workflow
 | 
			
		||||
  entity.
 | 
			
		||||
time: 2024-06-14T15:35:37.582159301+02:00
 | 
			
		||||
custom:
 | 
			
		||||
  Issue: "286"
 | 
			
		||||
							
								
								
									
										5
									
								
								.changes/unreleased/Feature-20240718-151233.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.changes/unreleased/Feature-20240718-151233.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
kind: Feature
 | 
			
		||||
body: Metadata form added for person signatures
 | 
			
		||||
time: 2024-07-18T15:12:33.8134266+02:00
 | 
			
		||||
custom:
 | 
			
		||||
  Issue: "288"
 | 
			
		||||
							
								
								
									
										5
									
								
								.changes/v3.0.0.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.changes/v3.0.0.md
									
									
									
									
									
										Normal 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 
 | 
			
		||||
@@ -122,7 +122,7 @@ unit_tests:
 | 
			
		||||
        - php tests/console chill:db:sync-views --env=test
 | 
			
		||||
        - php -d memory_limit=2G tests/console cache:clear --env=test
 | 
			
		||||
        - php -d memory_limit=3G tests/console doctrine:fixtures:load -n --env=test
 | 
			
		||||
        - php -d memory_limit=4G bin/phpunit --colors=never --exclude-group dbIntensive
 | 
			
		||||
        - php -d memory_limit=4G bin/phpunit --colors=never --exclude-group dbIntensive,openstack-integration,collabora-integration
 | 
			
		||||
    artifacts:
 | 
			
		||||
        expire_in: 1 day
 | 
			
		||||
        paths:
 | 
			
		||||
@@ -138,4 +138,4 @@ release:
 | 
			
		||||
        - echo "running release_job"
 | 
			
		||||
    release:
 | 
			
		||||
        tag_name: '$CI_COMMIT_TAG'
 | 
			
		||||
        description: "./.changes/v$CI_COMMIT_TAG.md"
 | 
			
		||||
        description: "./.changes/$CI_COMMIT_TAG.md"
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,12 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
 | 
			
		||||
and is generated by [Changie](https://github.com/miniscruff/changie).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 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.23.0 - 2024-07-23
 | 
			
		||||
### Feature
 | 
			
		||||
* ([#221](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/221)) [DX] move async-upload-bundle features into chill-bundles 
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
        "social worker"
 | 
			
		||||
    ],
 | 
			
		||||
    "require": {
 | 
			
		||||
        "php": "^8.3",
 | 
			
		||||
        "php": "^8.2",
 | 
			
		||||
        "ext-dom": "*",
 | 
			
		||||
        "ext-json": "*",
 | 
			
		||||
        "ext-openssl": "*",
 | 
			
		||||
@@ -30,48 +30,50 @@
 | 
			
		||||
        "ovh/ovh": "^3.0",
 | 
			
		||||
        "phpoffice/phpspreadsheet": "^1.16",
 | 
			
		||||
        "ramsey/uuid-doctrine": "^1.7",
 | 
			
		||||
        "sensio/framework-extra-bundle": "^6.0",
 | 
			
		||||
        "sensio/framework-extra-bundle": "^5.5",
 | 
			
		||||
        "smalot/pdfparser": "^2.10",
 | 
			
		||||
        "spomky-labs/base64url": "^2.0",
 | 
			
		||||
        "symfony/asset": "6.4.*",
 | 
			
		||||
        "symfony/browser-kit": "6.4.*",
 | 
			
		||||
        "symfony/cache": "6.4.*",
 | 
			
		||||
        "symfony/asset": "^5.4",
 | 
			
		||||
        "symfony/browser-kit": "^5.4",
 | 
			
		||||
        "symfony/cache": "^5.4",
 | 
			
		||||
        "symfony/clock": "^6.2",
 | 
			
		||||
        "symfony/config": "^6.4",
 | 
			
		||||
        "symfony/console": "6.4.*",
 | 
			
		||||
        "symfony/css-selector": "6.4.*",
 | 
			
		||||
        "symfony/dom-crawler": "6.4.*",
 | 
			
		||||
        "symfony/error-handler": "6.4.*",
 | 
			
		||||
        "symfony/event-dispatcher": "6.4.*",
 | 
			
		||||
        "symfony/expression-language": "6.4.*",
 | 
			
		||||
        "symfony/filesystem": "6.4.*",
 | 
			
		||||
        "symfony/finder": "6.4.*",
 | 
			
		||||
        "symfony/form": "6.4.*",
 | 
			
		||||
        "symfony/framework-bundle": "6.4.*",
 | 
			
		||||
        "symfony/http-client": "6.4.*",
 | 
			
		||||
        "symfony/http-foundation": "6.4.*",
 | 
			
		||||
        "symfony/intl": "6.4.*",
 | 
			
		||||
        "symfony/mailer": "6.4.*",
 | 
			
		||||
        "symfony/messenger": "6.4.*",
 | 
			
		||||
        "symfony/mime": "6.4.*",
 | 
			
		||||
        "symfony/config": "^5.4",
 | 
			
		||||
        "symfony/console": "^5.4",
 | 
			
		||||
        "symfony/css-selector": "^5.4",
 | 
			
		||||
        "symfony/dom-crawler": "^5.4",
 | 
			
		||||
        "symfony/error-handler": "^5.4",
 | 
			
		||||
        "symfony/event-dispatcher": "^5.4",
 | 
			
		||||
        "symfony/expression-language": "^5.4",
 | 
			
		||||
        "symfony/filesystem": "^5.4",
 | 
			
		||||
        "symfony/finder": "^5.4",
 | 
			
		||||
        "symfony/form": "^5.4",
 | 
			
		||||
        "symfony/framework-bundle": "^5.4",
 | 
			
		||||
        "symfony/http-client": "^5.4",
 | 
			
		||||
        "symfony/http-foundation": "^5.4",
 | 
			
		||||
        "symfony/intl": "^5.4",
 | 
			
		||||
        "symfony/mailer": "^5.4",
 | 
			
		||||
        "symfony/messenger": "^5.4",
 | 
			
		||||
        "symfony/mime": "^5.4",
 | 
			
		||||
        "symfony/monolog-bundle": "^3.5",
 | 
			
		||||
        "symfony/options-resolver": "6.4.*",
 | 
			
		||||
        "symfony/process": "6.4.*",
 | 
			
		||||
        "symfony/property-access": "6.4.*",
 | 
			
		||||
        "symfony/property-info": "6.4.*",
 | 
			
		||||
        "symfony/routing": "6.4.*",
 | 
			
		||||
        "symfony/security-bundle": "^6.4",
 | 
			
		||||
        "symfony/security-core": "6.4.*",
 | 
			
		||||
        "symfony/security-csrf": "6.4.*",
 | 
			
		||||
        "symfony/security-http": "6.4.*",
 | 
			
		||||
        "symfony/serializer": "6.4.*",
 | 
			
		||||
        "symfony/string": "6.4.*",
 | 
			
		||||
        "symfony/templating": "6.4.*",
 | 
			
		||||
        "symfony/translation": "6.4.*",
 | 
			
		||||
        "symfony/twig-bundle": "6.4.*",
 | 
			
		||||
        "symfony/validator": "6.4.*",
 | 
			
		||||
        "symfony/options-resolver": "^5.4",
 | 
			
		||||
        "symfony/process": "^5.4",
 | 
			
		||||
        "symfony/property-access": "^5.4",
 | 
			
		||||
        "symfony/property-info": "^5.4",
 | 
			
		||||
        "symfony/routing": "^5.4",
 | 
			
		||||
        "symfony/security-bundle": "^5.4",
 | 
			
		||||
        "symfony/security-core": "^5.4",
 | 
			
		||||
        "symfony/security-csrf": "^5.4",
 | 
			
		||||
        "symfony/security-guard": "^5.4",
 | 
			
		||||
        "symfony/security-http": "^5.4",
 | 
			
		||||
        "symfony/serializer": "^5.4",
 | 
			
		||||
        "symfony/string": "^5.4",
 | 
			
		||||
        "symfony/templating": "^5.4",
 | 
			
		||||
        "symfony/translation": "^5.4",
 | 
			
		||||
        "symfony/twig-bundle": "^5.4",
 | 
			
		||||
        "symfony/validator": "^5.4",
 | 
			
		||||
        "symfony/webpack-encore-bundle": "^1.11",
 | 
			
		||||
        "symfony/workflow": "6.4.*",
 | 
			
		||||
        "symfony/yaml": "6.4.*",
 | 
			
		||||
        "symfony/workflow": "^5.4",
 | 
			
		||||
        "symfony/yaml": "^5.4",
 | 
			
		||||
        "thenetworg/oauth2-azure": "^2.0",
 | 
			
		||||
        "twig/extra-bundle": "^3.0",
 | 
			
		||||
        "twig/intl-extra": "^3.0",
 | 
			
		||||
@@ -92,13 +94,13 @@
 | 
			
		||||
        "phpstan/phpstan-strict-rules": "^1.0",
 | 
			
		||||
        "phpunit/phpunit": "^10.5.24",
 | 
			
		||||
        "rector/rector": "^1.1.0",
 | 
			
		||||
        "symfony/debug-bundle": "6.4.*",
 | 
			
		||||
        "symfony/dotenv": "6.4.*",
 | 
			
		||||
        "symfony/debug-bundle": "^5.4",
 | 
			
		||||
        "symfony/dotenv": "^5.4",
 | 
			
		||||
        "symfony/maker-bundle": "^1.20",
 | 
			
		||||
        "symfony/phpunit-bridge": "^7.1",
 | 
			
		||||
        "symfony/runtime": "6.4.*",
 | 
			
		||||
        "symfony/stopwatch": "6.4.*",
 | 
			
		||||
        "symfony/var-dumper": "6.4.*"
 | 
			
		||||
        "symfony/runtime": "^5.4",
 | 
			
		||||
        "symfony/stopwatch": "^5.4",
 | 
			
		||||
        "symfony/var-dumper": "^5.4"
 | 
			
		||||
    },
 | 
			
		||||
    "conflict": {
 | 
			
		||||
        "symfony/symfony": "*"
 | 
			
		||||
@@ -151,11 +153,5 @@
 | 
			
		||||
            "cache:clear": "symfony-cmd"
 | 
			
		||||
        },
 | 
			
		||||
        "php-cs-fixer": "php-cs-fixer fix --config=./.php-cs-fixer.dist.php --show-progress=none"
 | 
			
		||||
    },
 | 
			
		||||
    "extra": {
 | 
			
		||||
        "symfony": {
 | 
			
		||||
            "allow-contrib": false,
 | 
			
		||||
            "require": "6.4.*"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,6 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface;
 | 
			
		||||
class BirthdateFilter implements ExportElementValidatedInterface, FilterInterface
 | 
			
		||||
{
 | 
			
		||||
    // add specific role for this filter
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        // 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
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(\Doctrine\ORM\QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $where = $qb->getDQLPart('where');
 | 
			
		||||
@@ -54,14 +52,12 @@ class BirthdateFilter implements ExportElementValidatedInterface, FilterInterfac
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // we give information on which type of export this filter applies
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn()
 | 
			
		||||
    {
 | 
			
		||||
        return 'person';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // we build a form to collect some parameters from the users
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(\Symfony\Component\Form\FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('date_from', DateType::class, [
 | 
			
		||||
@@ -78,7 +74,6 @@ class BirthdateFilter implements ExportElementValidatedInterface, FilterInterfac
 | 
			
		||||
            'format' => 'dd-MM-yyyy',
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        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
 | 
			
		||||
    // the filter in the Response
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string')
 | 
			
		||||
    {
 | 
			
		||||
        return ['Filtered by person\'s birtdate: '
 | 
			
		||||
@@ -96,7 +90,6 @@ class BirthdateFilter implements ExportElementValidatedInterface, FilterInterfac
 | 
			
		||||
            ], ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        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
 | 
			
		||||
    // `ExportElementValidatedInterface`, and can be ignore if there is
 | 
			
		||||
    // no need for a validation
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function validateForm($data, ExecutionContextInterface $context)
 | 
			
		||||
    {
 | 
			
		||||
        $date_from = $data['date_from'];
 | 
			
		||||
 
 | 
			
		||||
@@ -32,30 +32,25 @@ class CountPerson implements ExportInterface
 | 
			
		||||
        $this->entityManager = $em;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // this export does not add any form
 | 
			
		||||
    }
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getAllowedFormattersTypes()
 | 
			
		||||
    {
 | 
			
		||||
        return [FormatterInterface::TYPE_TABULAR];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getDescription()
 | 
			
		||||
    {
 | 
			
		||||
        return 'Count peoples by various parameters.';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        // the Closure which will be executed by the formatter.
 | 
			
		||||
@@ -65,7 +60,6 @@ class CountPerson implements ExportInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data)
 | 
			
		||||
    {
 | 
			
		||||
        // this array match the result keys in the query. We have only
 | 
			
		||||
@@ -73,25 +67,21 @@ class CountPerson implements ExportInterface
 | 
			
		||||
        return ['export_result'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getResult($query, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'Count peoples';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getType()
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::PERSON_TYPE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
 | 
			
		||||
    {
 | 
			
		||||
        // we gather all center the user choose.
 | 
			
		||||
@@ -108,13 +98,11 @@ class CountPerson implements ExportInterface
 | 
			
		||||
        return $qb;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function requiredRole(): string
 | 
			
		||||
    {
 | 
			
		||||
        return PersonVoter::STATS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function supportsModifiers()
 | 
			
		||||
    {
 | 
			
		||||
        // explain the export manager which formatters and filters are allowed
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,6 @@ class ChillMainConfiguration implements ConfigurationInterface
 | 
			
		||||
        $this->setWidgetFactories($widgetFactories);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getConfigTreeBuilder()
 | 
			
		||||
    {
 | 
			
		||||
        $treeBuilder = new TreeBuilder('chill_main');
 | 
			
		||||
 
 | 
			
		||||
@@ -27,13 +27,11 @@ class ChillMainExtension extends Extension implements Widget\HasWidgetFactoriesE
 | 
			
		||||
     */
 | 
			
		||||
    protected $widgetFactories = [];
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addWidgetFactory(WidgetFactoryInterface $factory)
 | 
			
		||||
    {
 | 
			
		||||
        $this->widgetFactories[] = $factory;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getConfiguration(array $config, ContainerBuilder $container)
 | 
			
		||||
    {
 | 
			
		||||
        return new Configuration($this->widgetFactories, $container);
 | 
			
		||||
@@ -42,13 +40,11 @@ class ChillMainExtension extends Extension implements Widget\HasWidgetFactoriesE
 | 
			
		||||
    /**
 | 
			
		||||
     * @return WidgetFactoryInterface[]
 | 
			
		||||
     */
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getWidgetFactories()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->widgetFactories;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function load(array $configs, ContainerBuilder $container)
 | 
			
		||||
    {
 | 
			
		||||
        // configuration for main bundle
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,6 @@ class ChillPersonAddAPersonListWidgetFactory extends AbstractWidgetFactory
 | 
			
		||||
     * see http://symfony.com/doc/current/components/config/definition.html
 | 
			
		||||
     *
 | 
			
		||||
     */
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function configureOptions($place, NodeBuilder $node)
 | 
			
		||||
    {
 | 
			
		||||
        $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
 | 
			
		||||
     * has the `chill_main` tag.
 | 
			
		||||
     */
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getServiceId(ContainerBuilder $containerBuilder, $place, $order, array $config)
 | 
			
		||||
    {
 | 
			
		||||
        return 'chill_person.widget.person_list';
 | 
			
		||||
@@ -68,7 +66,6 @@ class ChillPersonAddAPersonListWidgetFactory extends AbstractWidgetFactory
 | 
			
		||||
     *
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getWidgetAlias()
 | 
			
		||||
    {
 | 
			
		||||
        return 'person_list';
 | 
			
		||||
 
 | 
			
		||||
@@ -79,7 +79,6 @@ class ChillPersonAddAPersonWidget implements WidgetInterface
 | 
			
		||||
     *
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function render(Twig_Environment $env, $place, array $context, array $config)
 | 
			
		||||
    {
 | 
			
		||||
        $qb = $this->personRepository
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,6 @@ use Symfony\Component\HttpKernel\DependencyInjection\Extension;
 | 
			
		||||
 */
 | 
			
		||||
class ChillPersonExtension extends Extension implements PrependExtensionInterface
 | 
			
		||||
{
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function load(array $configs, ContainerBuilder $container)
 | 
			
		||||
    {
 | 
			
		||||
        // ...
 | 
			
		||||
@@ -33,7 +32,6 @@ class ChillPersonExtension extends Extension implements PrependExtensionInterfac
 | 
			
		||||
     *
 | 
			
		||||
     * @param \Chill\PersonBundle\DependencyInjection\containerBuilder $container
 | 
			
		||||
     */
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function prepend(ContainerBuilder $container)
 | 
			
		||||
    {
 | 
			
		||||
        $container->prependExtensionConfig('chill_main', [
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										125
									
								
								docs/source/installation/enable-collabora-for-dev.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								docs/source/installation/enable-collabora-for-dev.rst
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,125 @@
 | 
			
		||||
 | 
			
		||||
Enable CODE for development
 | 
			
		||||
===========================
 | 
			
		||||
 | 
			
		||||
For editing a document, there must be a way to communicate between the collabora server and the symfony server, in
 | 
			
		||||
both direction. The domain name should also be the same for collabora server and for the browser which access to the
 | 
			
		||||
online editor.
 | 
			
		||||
 | 
			
		||||
Using ngrok (or other http tunnel)
 | 
			
		||||
----------------------------------
 | 
			
		||||
 | 
			
		||||
One can configure a tunnel server to expose your local install to the web, and access to your local server using the
 | 
			
		||||
tunnel url.
 | 
			
		||||
 | 
			
		||||
Start ngrok
 | 
			
		||||
^^^^^^^^^^^
 | 
			
		||||
 | 
			
		||||
This can be achieve using `ngrok <https://ngrok.com/>`_.
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
 | 
			
		||||
   The configuration of ngrok is outside of the scope of this document. Refers to the ngrok's documentation.
 | 
			
		||||
 | 
			
		||||
.. code-block:: bash
 | 
			
		||||
 | 
			
		||||
   # ensuring that your server is running through http and port 8000
 | 
			
		||||
   ngrok http 8000
 | 
			
		||||
   # then open the link given by the ngrok utility and you should reach your app
 | 
			
		||||
 | 
			
		||||
At this step, ensure that you can reach your local app using the ngrok url.
 | 
			
		||||
 | 
			
		||||
Configure Collabora
 | 
			
		||||
^^^^^^^^^^^^^^^^^^^
 | 
			
		||||
 | 
			
		||||
The collabora server must be executed online and configure to access to your ngrok installation. Ensure that the aliasgroup
 | 
			
		||||
exists for your ngrok application (`See the CODE documentation: <https://sdk.collaboraonline.com/docs/installation/Configuration.html#multihost-configuration>`_).
 | 
			
		||||
 | 
			
		||||
Configure your app
 | 
			
		||||
^^^^^^^^^^^^^^^^^^
 | 
			
		||||
 | 
			
		||||
Set the :code:`EDITOR_SERVER` variable to point to your collabora server, this should be done in your :code:`.env.local` file.
 | 
			
		||||
 | 
			
		||||
At this point, everything must be fine. In case of errors, watch the log from your collabora server, use the `profiler <https://symfony.com/doc/current/profiler.html>`_
 | 
			
		||||
to debug the requests.
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
 | 
			
		||||
   In case of error while validating proof (you'll see those message in the collabora's logs), you can temporarily disable
 | 
			
		||||
   the proof validation adding this code snippet in `config/services.yaml`:
 | 
			
		||||
 | 
			
		||||
   .. code-block:: yaml
 | 
			
		||||
 | 
			
		||||
      when@dev:
 | 
			
		||||
          # add only in dev environment, to avoid security problems
 | 
			
		||||
          services:
 | 
			
		||||
              ChampsLibres\WopiLib\Contract\Service\ProofValidatorInterface:
 | 
			
		||||
                  # this class will always validate proof
 | 
			
		||||
                  alias: Chill\WopiBundle\Service\Wopi\NullProofValidator
 | 
			
		||||
 | 
			
		||||
With a local CODE image
 | 
			
		||||
-----------------------
 | 
			
		||||
 | 
			
		||||
.. warning::
 | 
			
		||||
 | 
			
		||||
   This configuration is not sure, and must be refined. The documentation does not seems to be entirely valid.
 | 
			
		||||
 | 
			
		||||
Use a local domain name and https for your app
 | 
			
		||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
			
		||||
 | 
			
		||||
Use the proxy feature from embedded symfony server to run your app. `See the dedicated doc <https://symfony.com/doc/current/setup/symfony_server.html#local-domain-names>`
 | 
			
		||||
 | 
			
		||||
Configure also the `https certificate <https://symfony.com/doc/current/setup/symfony_server.html#enabling-tls>`_
 | 
			
		||||
 | 
			
		||||
In this example, your local domain name will be :code:`my-domain` and the url will be :code:`https://my-domain.wip`.
 | 
			
		||||
 | 
			
		||||
Ensure that the proxy is running.
 | 
			
		||||
 | 
			
		||||
Create a certificate database for collabora
 | 
			
		||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
			
		||||
 | 
			
		||||
Collabora must validate your certificate generated by symfony console. For that, you need `to create a NSS database <https://sdk.collaboraonline.com/docs/installation/Configuration.html#validating-digital-signatures>`
 | 
			
		||||
and configure collabora to use it.
 | 
			
		||||
 | 
			
		||||
At first, export the certificate for symfony development. Use the graphical interface from your browser to get the
 | 
			
		||||
certificate as a PEM file.
 | 
			
		||||
 | 
			
		||||
.. code-block:: bash
 | 
			
		||||
 | 
			
		||||
   # create your database in a custom directory
 | 
			
		||||
   mkdir /path/to/your/directory
 | 
			
		||||
   certutil -N -d /path/to/your/directory
 | 
			
		||||
   cat /path/to/your/ca.crt | certutil -d . -A symfony -t -t C,P,C,u,w -a
 | 
			
		||||
 | 
			
		||||
Launch CODE properly configured
 | 
			
		||||
 | 
			
		||||
.. code-block:: yaml
 | 
			
		||||
 | 
			
		||||
     collabora:
 | 
			
		||||
         image: collabora/code:latest
 | 
			
		||||
         environment:
 | 
			
		||||
             - SLEEPFORDEBUGGER=0
 | 
			
		||||
             - DONT_GEN_SSL_CERT="True"
 | 
			
		||||
             # add path to the database
 | 
			
		||||
             - extra_params=--o:ssl.enable=false --o:ssl.termination=false --o:logging.level=7 -o:certificates.database_path=/etc/custom-certificates/nss-database
 | 
			
		||||
             - username=admin
 | 
			
		||||
             - password=admin
 | 
			
		||||
             - dictionaries=en_US
 | 
			
		||||
             - aliasgroup1=https://my-domain.wip
 | 
			
		||||
         ports:
 | 
			
		||||
             - "127.0.0.1:9980:9980"
 | 
			
		||||
         volumes:
 | 
			
		||||
             - "/path/to/your/directory/nss-database:/etc/custom-certificates/nss-database"
 | 
			
		||||
         extra_hosts:
 | 
			
		||||
             - "my-domain.wip:host-gateway"
 | 
			
		||||
 | 
			
		||||
Configure your app
 | 
			
		||||
^^^^^^^^^^^^^^^^^^
 | 
			
		||||
 | 
			
		||||
Into your :code:`.env.local` file:
 | 
			
		||||
 | 
			
		||||
.. code-block:: env
 | 
			
		||||
 | 
			
		||||
   EDITOR_SERVER=http://${COLLABORA_HOST}:${COLLABORA_PORT}
 | 
			
		||||
 | 
			
		||||
At this step, you should be able to edit a document through collabora.
 | 
			
		||||
@@ -53,7 +53,7 @@
 | 
			
		||||
    "marked": "^12.0.2",
 | 
			
		||||
    "masonry-layout": "^4.2.2",
 | 
			
		||||
    "mime": "^4.0.0",
 | 
			
		||||
    "swagger-ui": "^4.15.5",
 | 
			
		||||
    "pdfjs-dist": "^4.3.136",
 | 
			
		||||
    "vis-network": "^9.1.0",
 | 
			
		||||
    "vue": "^3.2.37",
 | 
			
		||||
    "vue-i18n": "^9.1.6",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								rector.php
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								rector.php
									
									
									
									
									
								
							@@ -39,19 +39,14 @@ return static function (RectorConfig $rectorConfig): void {
 | 
			
		||||
 | 
			
		||||
    //define sets of rules
 | 
			
		||||
    $rectorConfig->sets([
 | 
			
		||||
        LevelSetList::UP_TO_PHP_83,
 | 
			
		||||
//        \Rector\Symfony\Set\SymfonySetList::SYMFONY_40,
 | 
			
		||||
//        \Rector\Symfony\Set\SymfonySetList::SYMFONY_41,
 | 
			
		||||
//        \Rector\Symfony\Set\SymfonySetList::SYMFONY_42,
 | 
			
		||||
//        \Rector\Symfony\Set\SymfonySetList::SYMFONY_43,
 | 
			
		||||
//        \Rector\Symfony\Set\SymfonySetList::SYMFONY_44,
 | 
			
		||||
        \Rector\Symfony\Set\SymfonySetList::SYMFONY_50,
 | 
			
		||||
        \Rector\Symfony\Set\SymfonySetList::SYMFONY_51,
 | 
			
		||||
        \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,
 | 
			
		||||
        LevelSetList::UP_TO_PHP_82,
 | 
			
		||||
        \Rector\Symfony\Set\SymfonySetList::SYMFONY_40,
 | 
			
		||||
        \Rector\Symfony\Set\SymfonySetList::SYMFONY_41,
 | 
			
		||||
        \Rector\Symfony\Set\SymfonySetList::SYMFONY_42,
 | 
			
		||||
        \Rector\Symfony\Set\SymfonySetList::SYMFONY_43,
 | 
			
		||||
        \Rector\Symfony\Set\SymfonySetList::SYMFONY_44,
 | 
			
		||||
        \Rector\Doctrine\Set\DoctrineSetList::DOCTRINE_CODE_QUALITY,
 | 
			
		||||
        \Rector\PHPUnit\Set\PHPUnitSetList::PHPUNIT_90,
 | 
			
		||||
    ]);
 | 
			
		||||
 | 
			
		||||
    $rectorConfig->ruleWithConfiguration(\Rector\Php80\Rector\Class_\AnnotationToAttributeRector::class, [
 | 
			
		||||
@@ -74,9 +69,8 @@ return static function (RectorConfig $rectorConfig): void {
 | 
			
		||||
 | 
			
		||||
    // skip some path...
 | 
			
		||||
    $rectorConfig->skip([
 | 
			
		||||
        // we must adapt service definition
 | 
			
		||||
        \Rector\Symfony\Symfony28\Rector\MethodCall\GetToConstructorInjectionRector::class,
 | 
			
		||||
        \Rector\Symfony\Symfony34\Rector\Closure\ContainerGetNameToTypeInTestsRector::class,
 | 
			
		||||
        // waiting for fixing this bug: https://github.com/rectorphp/rector-doctrine/issues/342
 | 
			
		||||
        \Rector\Doctrine\CodeQuality\Rector\Property\ImproveDoctrineCollectionDocTypeInEntityRector::class,
 | 
			
		||||
    ]);
 | 
			
		||||
 | 
			
		||||
    $rectorConfig->ruleWithConfiguration(AnnotationToAttributeRector::class, [
 | 
			
		||||
 
 | 
			
		||||
@@ -68,7 +68,7 @@ final class ActivityController extends AbstractController
 | 
			
		||||
        private readonly FilterOrderHelperFactoryInterface $filterOrderHelperFactory,
 | 
			
		||||
        private readonly TranslatableStringHelperInterface $translatableStringHelper,
 | 
			
		||||
        private readonly PaginatorFactory $paginatorFactory,
 | 
			
		||||
        private readonly ChillSecurity $security
 | 
			
		||||
        private readonly ChillSecurity $security,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,6 @@ class AdminActivityPresenceController extends CRUDController
 | 
			
		||||
     *
 | 
			
		||||
     * @return \Doctrine\ORM\QueryBuilder|mixed
 | 
			
		||||
     */
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator)
 | 
			
		||||
    {
 | 
			
		||||
        /* @var \Doctrine\ORM\QueryBuilder $query */
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,6 @@ class AdminActivityTypeCategoryController extends CRUDController
 | 
			
		||||
     *
 | 
			
		||||
     * @return \Doctrine\ORM\QueryBuilder|mixed
 | 
			
		||||
     */
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator)
 | 
			
		||||
    {
 | 
			
		||||
        /* @var \Doctrine\ORM\QueryBuilder $query */
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,6 @@ class AdminActivityTypeController extends CRUDController
 | 
			
		||||
     *
 | 
			
		||||
     * @return \Doctrine\ORM\QueryBuilder|mixed
 | 
			
		||||
     */
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator)
 | 
			
		||||
    {
 | 
			
		||||
        /* @var \Doctrine\ORM\QueryBuilder $query */
 | 
			
		||||
 
 | 
			
		||||
@@ -32,13 +32,11 @@ class LoadActivity extends AbstractFixture implements OrderedFixtureInterface
 | 
			
		||||
        $this->faker = FakerFactory::create('fr_FR');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getOrder()
 | 
			
		||||
    {
 | 
			
		||||
        return 16400;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function load(ObjectManager $manager)
 | 
			
		||||
    {
 | 
			
		||||
        $persons = $this->em
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,6 @@ class LoadActivityNotifications extends AbstractFixture implements DependentFixt
 | 
			
		||||
        ],
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getDependencies()
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
 
 | 
			
		||||
@@ -23,13 +23,11 @@ class LoadActivityReason extends AbstractFixture implements OrderedFixtureInterf
 | 
			
		||||
{
 | 
			
		||||
    public static $references = [];
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getOrder()
 | 
			
		||||
    {
 | 
			
		||||
        return 16300;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function load(ObjectManager $manager)
 | 
			
		||||
    {
 | 
			
		||||
        $reasons = [
 | 
			
		||||
 
 | 
			
		||||
@@ -21,13 +21,11 @@ use Doctrine\Persistence\ObjectManager;
 | 
			
		||||
 */
 | 
			
		||||
class LoadActivityReasonCategory extends AbstractFixture implements OrderedFixtureInterface
 | 
			
		||||
{
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getOrder()
 | 
			
		||||
    {
 | 
			
		||||
        return 16200;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function load(ObjectManager $manager)
 | 
			
		||||
    {
 | 
			
		||||
        $categs = [
 | 
			
		||||
 
 | 
			
		||||
@@ -23,13 +23,11 @@ class LoadActivityType extends Fixture implements OrderedFixtureInterface
 | 
			
		||||
{
 | 
			
		||||
    public static $references = [];
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getOrder()
 | 
			
		||||
    {
 | 
			
		||||
        return 16100;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function load(ObjectManager $manager)
 | 
			
		||||
    {
 | 
			
		||||
        $types = [
 | 
			
		||||
 
 | 
			
		||||
@@ -23,13 +23,11 @@ class LoadActivityTypeCategory extends Fixture implements OrderedFixtureInterfac
 | 
			
		||||
{
 | 
			
		||||
    public static $references = [];
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getOrder()
 | 
			
		||||
    {
 | 
			
		||||
        return 16050;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function load(ObjectManager $manager)
 | 
			
		||||
    {
 | 
			
		||||
        $categories = [
 | 
			
		||||
 
 | 
			
		||||
@@ -26,13 +26,11 @@ use Doctrine\Persistence\ObjectManager;
 | 
			
		||||
 */
 | 
			
		||||
class LoadActivitytACL extends AbstractFixture implements OrderedFixtureInterface
 | 
			
		||||
{
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getOrder()
 | 
			
		||||
    {
 | 
			
		||||
        return 16000;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function load(ObjectManager $manager)
 | 
			
		||||
    {
 | 
			
		||||
        foreach (LoadPermissionsGroup::$refs as $permissionsGroupRef) {
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,6 @@ use Symfony\Component\HttpKernel\DependencyInjection\Extension;
 | 
			
		||||
 */
 | 
			
		||||
class ChillActivityExtension extends Extension implements PrependExtensionInterface
 | 
			
		||||
{
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function load(array $configs, ContainerBuilder $container)
 | 
			
		||||
    {
 | 
			
		||||
        $configuration = new Configuration();
 | 
			
		||||
@@ -45,7 +44,6 @@ class ChillActivityExtension extends Extension implements PrependExtensionInterf
 | 
			
		||||
        $loader->load('services/doctrine.entitylistener.yaml');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function prepend(ContainerBuilder $container)
 | 
			
		||||
    {
 | 
			
		||||
        $this->prependRoutes($container);
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,6 @@ use function is_int;
 | 
			
		||||
 */
 | 
			
		||||
class Configuration implements ConfigurationInterface
 | 
			
		||||
{
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getConfigTreeBuilder()
 | 
			
		||||
    {
 | 
			
		||||
        $treeBuilder = new TreeBuilder('chill_activity');
 | 
			
		||||
 
 | 
			
		||||
@@ -53,9 +53,9 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
 | 
			
		||||
 | 
			
		||||
    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'])]
 | 
			
		||||
    #[ORM\ManyToOne(targetEntity: AccompanyingPeriod::class)]
 | 
			
		||||
@@ -80,7 +80,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
 | 
			
		||||
    private \DateTime $date;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var Collection<StoredObject>
 | 
			
		||||
     * @var Collection<int, StoredObject>
 | 
			
		||||
     */
 | 
			
		||||
    #[Assert\Valid(traverse: true)]
 | 
			
		||||
    #[ORM\ManyToMany(targetEntity: StoredObject::class, cascade: ['persist'])]
 | 
			
		||||
@@ -107,7 +107,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
 | 
			
		||||
    private ?Person $person = null;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var Collection<Person>
 | 
			
		||||
     * @var Collection<int, \Chill\PersonBundle\Entity\Person>
 | 
			
		||||
     */
 | 
			
		||||
    #[Groups(['read', 'docgen:read'])]
 | 
			
		||||
    #[ORM\ManyToMany(targetEntity: Person::class)]
 | 
			
		||||
@@ -117,7 +117,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
 | 
			
		||||
    private PrivateCommentEmbeddable $privateComment;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var Collection<ActivityReason>
 | 
			
		||||
     * @var Collection<int, ActivityReason>
 | 
			
		||||
     */
 | 
			
		||||
    #[Groups(['docgen:read'])]
 | 
			
		||||
    #[ORM\ManyToMany(targetEntity: ActivityReason::class)]
 | 
			
		||||
@@ -132,7 +132,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
 | 
			
		||||
    private string $sentReceived = '';
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var Collection<SocialAction>
 | 
			
		||||
     * @var Collection<int, \Chill\PersonBundle\Entity\SocialWork\SocialAction>
 | 
			
		||||
     */
 | 
			
		||||
    #[Groups(['read', 'docgen:read'])]
 | 
			
		||||
    #[ORM\ManyToMany(targetEntity: SocialAction::class)]
 | 
			
		||||
@@ -140,7 +140,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
 | 
			
		||||
    private Collection $socialActions;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var Collection<SocialIssue>
 | 
			
		||||
     * @var Collection<int, SocialIssue>
 | 
			
		||||
     */
 | 
			
		||||
    #[Groups(['read', 'docgen:read'])]
 | 
			
		||||
    #[ORM\ManyToMany(targetEntity: SocialIssue::class)]
 | 
			
		||||
@@ -148,7 +148,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
 | 
			
		||||
    private Collection $socialIssues;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var Collection<ThirdParty>
 | 
			
		||||
     * @var Collection<int, ThirdParty>
 | 
			
		||||
     */
 | 
			
		||||
    #[Groups(['read', 'docgen:read'])]
 | 
			
		||||
    #[ORM\ManyToMany(targetEntity: ThirdParty::class)]
 | 
			
		||||
@@ -162,7 +162,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
 | 
			
		||||
    private ?User $user = null;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var Collection<User>
 | 
			
		||||
     * @var Collection<int, User>
 | 
			
		||||
     */
 | 
			
		||||
    #[Groups(['read', 'docgen:read'])]
 | 
			
		||||
    #[ORM\ManyToMany(targetEntity: User::class)]
 | 
			
		||||
@@ -262,7 +262,6 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getAccompanyingPeriod(): ?AccompanyingPeriod
 | 
			
		||||
    {
 | 
			
		||||
        return $this->accompanyingPeriod;
 | 
			
		||||
@@ -282,7 +281,6 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
 | 
			
		||||
     * get the center
 | 
			
		||||
     * center is extracted from person.
 | 
			
		||||
     */
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getCenters(): iterable
 | 
			
		||||
    {
 | 
			
		||||
        if ($this->person instanceof Person) {
 | 
			
		||||
@@ -401,7 +399,6 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
 | 
			
		||||
        return $this->scope;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getScopes(): iterable
 | 
			
		||||
    {
 | 
			
		||||
        if (null !== $this->getAccompanyingPeriod()) {
 | 
			
		||||
@@ -425,7 +422,6 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
 | 
			
		||||
        return $this->socialActions;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getSocialIssues(): Collection
 | 
			
		||||
    {
 | 
			
		||||
        return $this->socialIssues;
 | 
			
		||||
@@ -496,7 +492,6 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function removeSocialIssue(SocialIssue $socialIssue): self
 | 
			
		||||
    {
 | 
			
		||||
        $this->socialIssues->removeElement($socialIssue);
 | 
			
		||||
 
 | 
			
		||||
@@ -40,9 +40,9 @@ class ActivityReasonCategory implements \Stringable
 | 
			
		||||
    /**
 | 
			
		||||
     * 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;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -53,7 +53,6 @@ class ActivityReasonCategory implements \Stringable
 | 
			
		||||
        $this->reasons = new ArrayCollection();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function __toString(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'ActivityReasonCategory('.$this->getName('x').')';
 | 
			
		||||
 
 | 
			
		||||
@@ -25,11 +25,11 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface;
 | 
			
		||||
#[ORM\Table(name: '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
 | 
			
		||||
 
 | 
			
		||||
@@ -19,13 +19,11 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
class ByActivityNumberAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data): void
 | 
			
		||||
    {
 | 
			
		||||
        $qb
 | 
			
		||||
@@ -33,25 +31,21 @@ class ByActivityNumberAggregator implements AggregatorInterface
 | 
			
		||||
            ->addGroupBy('activity_by_number_aggregator');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACP_TYPE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder): void
 | 
			
		||||
    {
 | 
			
		||||
        // No form needed
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return static function ($value) {
 | 
			
		||||
@@ -67,13 +61,11 @@ class ByActivityNumberAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['activity_by_number_aggregator'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Group acp by activity number';
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
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(
 | 
			
		||||
        private RollingDateConverterInterface $rollingDateConverter,
 | 
			
		||||
@@ -33,7 +33,6 @@ final readonly class ByActivityTypeAggregator implements AggregatorInterface
 | 
			
		||||
        private TranslatableStringHelperInterface $translatableStringHelper,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder
 | 
			
		||||
@@ -47,7 +46,6 @@ final readonly class ByActivityTypeAggregator implements AggregatorInterface
 | 
			
		||||
            ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
@@ -56,7 +54,6 @@ final readonly class ByActivityTypeAggregator implements AggregatorInterface
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, mixed $data)
 | 
			
		||||
    {
 | 
			
		||||
        return function (int|string|null $value): string {
 | 
			
		||||
@@ -72,25 +69,21 @@ final readonly class ByActivityTypeAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data)
 | 
			
		||||
    {
 | 
			
		||||
        return [self::PREFIX.'_actype_id'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.aggregator.acp.by_activity_type.title';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $p = self::PREFIX;
 | 
			
		||||
@@ -122,7 +115,6 @@ final readonly class ByActivityTypeAggregator implements AggregatorInterface
 | 
			
		||||
            ->addGroupBy("{$p}_actype_id");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn()
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACP_TYPE;
 | 
			
		||||
 
 | 
			
		||||
@@ -22,13 +22,11 @@ class BySocialActionAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly SocialActionRender $actionRender, private readonly SocialActionRepository $actionRepository) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        if (!\in_array('actsocialaction', $qb->getAllAliases(), true)) {
 | 
			
		||||
@@ -39,25 +37,21 @@ class BySocialActionAggregator implements AggregatorInterface
 | 
			
		||||
        $qb->addGroupBy('socialaction_aggregator');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY_ACP;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // no form
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return function ($value) {
 | 
			
		||||
@@ -75,13 +69,11 @@ class BySocialActionAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['socialaction_aggregator'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Group activity by linked socialaction';
 | 
			
		||||
 
 | 
			
		||||
@@ -22,13 +22,11 @@ class BySocialIssueAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly SocialIssueRepository $issueRepository, private readonly SocialIssueRender $issueRender) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        if (!\in_array('actsocialissue', $qb->getAllAliases(), true)) {
 | 
			
		||||
@@ -39,25 +37,21 @@ class BySocialIssueAggregator implements AggregatorInterface
 | 
			
		||||
        $qb->addGroupBy('socialissue_aggregator');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY_ACP;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // no form
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return function ($value): string {
 | 
			
		||||
@@ -75,13 +69,11 @@ class BySocialIssueAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['socialissue_aggregator'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Group activity by linked socialissue';
 | 
			
		||||
 
 | 
			
		||||
@@ -18,15 +18,13 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
final readonly class ActivityLocationAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    public const string KEY = 'activity_location_aggregator';
 | 
			
		||||
    public const KEY = 'activity_location_aggregator';
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        if (!\in_array('actloc', $qb->getAllAliases(), true)) {
 | 
			
		||||
@@ -36,25 +34,21 @@ final readonly class ActivityLocationAggregator implements AggregatorInterface
 | 
			
		||||
        $qb->addGroupBy(self::KEY);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // no form required for this aggregator
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data): \Closure
 | 
			
		||||
    {
 | 
			
		||||
        return function ($value): string {
 | 
			
		||||
@@ -70,13 +64,11 @@ final readonly class ActivityLocationAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return [self::KEY];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.aggregator.activity.by_location.Title';
 | 
			
		||||
 
 | 
			
		||||
@@ -22,16 +22,13 @@ final readonly class ActivityPresenceAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private ActivityPresenceRepositoryInterface $activityPresenceRepository, private TranslatableStringHelperInterface $translatableStringHelper) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, mixed $data)
 | 
			
		||||
    {
 | 
			
		||||
        return function (int|string|null $value): string {
 | 
			
		||||
@@ -47,32 +44,27 @@ final readonly class ActivityPresenceAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data)
 | 
			
		||||
    {
 | 
			
		||||
        return ['activity_presence_aggregator_attendee'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.aggregator.activity.by_activity_presence.Group activity by presence';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data): void
 | 
			
		||||
    {
 | 
			
		||||
        $qb->addSelect('IDENTITY(activity.attendee) AS activity_presence_aggregator_attendee');
 | 
			
		||||
        $qb->addGroupBy('activity_presence_aggregator_attendee');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn()
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
 
 | 
			
		||||
@@ -28,16 +28,14 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        protected ActivityReasonCategoryRepository $activityReasonCategoryRepository,
 | 
			
		||||
        protected ActivityReasonRepository $activityReasonRepository,
 | 
			
		||||
        protected TranslatableStringHelper $translatableStringHelper
 | 
			
		||||
        protected TranslatableStringHelper $translatableStringHelper,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        // add select element
 | 
			
		||||
@@ -69,13 +67,11 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
 | 
			
		||||
        $qb->addGroupBy($alias);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add(
 | 
			
		||||
@@ -93,7 +89,6 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
@@ -101,7 +96,6 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return function ($value) use ($data) {
 | 
			
		||||
@@ -131,7 +125,6 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data)
 | 
			
		||||
    {
 | 
			
		||||
        // add select element
 | 
			
		||||
@@ -146,13 +139,11 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
 | 
			
		||||
        throw new \RuntimeException('The data provided are not recognised.');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'Aggregate by activity reason';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function validateForm($data, ExecutionContextInterface $context)
 | 
			
		||||
    {
 | 
			
		||||
        if (null === $data['level']) {
 | 
			
		||||
 
 | 
			
		||||
@@ -20,17 +20,15 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
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) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        if (!\in_array('acttype', $qb->getAllAliases(), true)) {
 | 
			
		||||
@@ -41,25 +39,21 @@ class ActivityTypeAggregator implements AggregatorInterface
 | 
			
		||||
        $qb->addGroupBy(self::KEY);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // no form required for this aggregator
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data): \Closure
 | 
			
		||||
    {
 | 
			
		||||
        return function (int|string|null $value): string {
 | 
			
		||||
@@ -75,13 +69,11 @@ class ActivityTypeAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return [self::KEY];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'Aggregate by activity type';
 | 
			
		||||
 
 | 
			
		||||
@@ -20,17 +20,15 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
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) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        // add select element
 | 
			
		||||
@@ -40,25 +38,21 @@ class ActivityUserAggregator implements AggregatorInterface
 | 
			
		||||
        $qb->addGroupBy(self::KEY);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // nothing to add
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, $values, $data): \Closure
 | 
			
		||||
    {
 | 
			
		||||
        return function ($value) {
 | 
			
		||||
@@ -76,13 +70,11 @@ class ActivityUserAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data)
 | 
			
		||||
    {
 | 
			
		||||
        return [self::KEY];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Aggregate by activity user';
 | 
			
		||||
 
 | 
			
		||||
@@ -22,13 +22,11 @@ class ActivityUsersAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly UserRepositoryInterface $userRepository, private readonly UserRender $userRender) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        if (!\in_array('actusers', $qb->getAllAliases(), true)) {
 | 
			
		||||
@@ -40,25 +38,21 @@ class ActivityUsersAggregator implements AggregatorInterface
 | 
			
		||||
            ->addGroupBy('activity_users_aggregator');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // nothing to add on the form
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return function ($value) {
 | 
			
		||||
@@ -76,13 +70,11 @@ class ActivityUsersAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data)
 | 
			
		||||
    {
 | 
			
		||||
        return ['activity_users_aggregator'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'Aggregate by activity users';
 | 
			
		||||
 
 | 
			
		||||
@@ -22,20 +22,18 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
class ActivityUsersJobAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    private const string PREFIX = 'act_agg_user_job';
 | 
			
		||||
    private const PREFIX = 'act_agg_user_job';
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        private readonly UserJobRepositoryInterface $userJobRepository,
 | 
			
		||||
        private readonly TranslatableStringHelperInterface $translatableStringHelper
 | 
			
		||||
        private readonly TranslatableStringHelperInterface $translatableStringHelper,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $p = self::PREFIX;
 | 
			
		||||
@@ -62,22 +60,18 @@ class ActivityUsersJobAggregator implements AggregatorInterface
 | 
			
		||||
            ->addGroupBy("{$p}_select");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return function ($value): string {
 | 
			
		||||
@@ -97,13 +91,11 @@ class ActivityUsersJobAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return [self::PREFIX.'_select'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.aggregator.activity.by_user_job.Aggregate by users job';
 | 
			
		||||
 
 | 
			
		||||
@@ -22,20 +22,18 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
class ActivityUsersScopeAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    private const string PREFIX = 'act_agg_user_scope';
 | 
			
		||||
    private const PREFIX = 'act_agg_user_scope';
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        private readonly ScopeRepositoryInterface $scopeRepository,
 | 
			
		||||
        private readonly TranslatableStringHelperInterface $translatableStringHelper
 | 
			
		||||
        private readonly TranslatableStringHelperInterface $translatableStringHelper,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $p = self::PREFIX;
 | 
			
		||||
@@ -62,22 +60,18 @@ class ActivityUsersScopeAggregator implements AggregatorInterface
 | 
			
		||||
            ->addGroupBy("{$p}_select");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return function ($value): string {
 | 
			
		||||
@@ -97,13 +91,11 @@ class ActivityUsersScopeAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return [self::PREFIX.'_select'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.aggregator.activity.by_user_scope.Aggregate by users scope';
 | 
			
		||||
 
 | 
			
		||||
@@ -22,38 +22,32 @@ class ByCreatorAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly UserRepositoryInterface $userRepository, private readonly UserRender $userRender) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $qb->addSelect('IDENTITY(activity.createdBy) AS creator_aggregator');
 | 
			
		||||
        $qb->addGroupBy('creator_aggregator');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // no form
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return function ($value): string {
 | 
			
		||||
@@ -71,13 +65,11 @@ class ByCreatorAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['creator_aggregator'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Group activity by creator';
 | 
			
		||||
 
 | 
			
		||||
@@ -22,13 +22,11 @@ class ByThirdpartyAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly ThirdPartyRepository $thirdPartyRepository, private readonly ThirdPartyRender $thirdPartyRender) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        if (!\in_array('acttparty', $qb->getAllAliases(), true)) {
 | 
			
		||||
@@ -39,25 +37,21 @@ class ByThirdpartyAggregator implements AggregatorInterface
 | 
			
		||||
        $qb->addGroupBy('thirdparty_aggregator');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // no form
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return function ($value): string {
 | 
			
		||||
@@ -75,13 +69,11 @@ class ByThirdpartyAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['thirdparty_aggregator'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Group activity by linked thirdparties';
 | 
			
		||||
 
 | 
			
		||||
@@ -22,20 +22,18 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
class CreatorJobAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    private const string PREFIX = 'acp_agg_creator_job';
 | 
			
		||||
    private const PREFIX = 'acp_agg_creator_job';
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        private readonly UserJobRepositoryInterface $userJobRepository,
 | 
			
		||||
        private readonly TranslatableStringHelper $translatableStringHelper
 | 
			
		||||
        private readonly TranslatableStringHelper $translatableStringHelper,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $p = self::PREFIX;
 | 
			
		||||
@@ -62,22 +60,18 @@ class CreatorJobAggregator implements AggregatorInterface
 | 
			
		||||
            ->addGroupBy("{$p}_select");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return function ($value): string {
 | 
			
		||||
@@ -95,13 +89,11 @@ class CreatorJobAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return [self::PREFIX.'_select'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.aggregator.activity.by_creator_job.Group activity by creator job';
 | 
			
		||||
 
 | 
			
		||||
@@ -22,20 +22,18 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
class CreatorScopeAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    private const string PREFIX = 'acp_agg_creator_scope';
 | 
			
		||||
    private const PREFIX = 'acp_agg_creator_scope';
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        private readonly ScopeRepository $scopeRepository,
 | 
			
		||||
        private readonly TranslatableStringHelper $translatableStringHelper
 | 
			
		||||
        private readonly TranslatableStringHelper $translatableStringHelper,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $p = self::PREFIX;
 | 
			
		||||
@@ -62,22 +60,18 @@ class CreatorScopeAggregator implements AggregatorInterface
 | 
			
		||||
            ->addGroupBy("{$p}_select");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return function ($value): string {
 | 
			
		||||
@@ -97,13 +91,11 @@ class CreatorScopeAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return [self::PREFIX.'_select'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.aggregator.activity.by_creator_scope.Group activity by creator scope';
 | 
			
		||||
 
 | 
			
		||||
@@ -19,21 +19,19 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
class DateAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    private const array CHOICES = [
 | 
			
		||||
    private const CHOICES = [
 | 
			
		||||
        'by month' => 'month',
 | 
			
		||||
        'by week' => 'week',
 | 
			
		||||
        'by year' => 'year',
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    private const string DEFAULT_CHOICE = 'year';
 | 
			
		||||
    private const DEFAULT_CHOICE = 'year';
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $order = null;
 | 
			
		||||
@@ -64,13 +62,11 @@ class DateAggregator implements AggregatorInterface
 | 
			
		||||
        $qb->addOrderBy('date_aggregator', $order);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('frequency', ChoiceType::class, [
 | 
			
		||||
@@ -80,13 +76,11 @@ class DateAggregator implements AggregatorInterface
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['frequency' => self::DEFAULT_CHOICE];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return static function ($value) use ($data): string {
 | 
			
		||||
@@ -104,13 +98,11 @@ class DateAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['date_aggregator'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Group activity by date';
 | 
			
		||||
 
 | 
			
		||||
@@ -22,13 +22,11 @@ class LocationTypeAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly LocationTypeRepository $locationTypeRepository, private readonly TranslatableStringHelper $translatableStringHelper) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        if (!\in_array('actloc', $qb->getAllAliases(), true)) {
 | 
			
		||||
@@ -39,25 +37,21 @@ class LocationTypeAggregator implements AggregatorInterface
 | 
			
		||||
        $qb->addGroupBy('locationtype_aggregator');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // no form
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return function ($value): string {
 | 
			
		||||
@@ -79,13 +73,11 @@ class LocationTypeAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['locationtype_aggregator'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Group activity by locationtype';
 | 
			
		||||
 
 | 
			
		||||
@@ -21,43 +21,36 @@ final readonly class PersonAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private LabelPersonHelper $labelPersonHelper) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // nothing to add here
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, mixed $data)
 | 
			
		||||
    {
 | 
			
		||||
        return $this->labelPersonHelper->getLabel($key, $values, 'export.aggregator.person.by_person.person');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data)
 | 
			
		||||
    {
 | 
			
		||||
        return ['activity_by_person_agg'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.aggregator.person.by_person.title';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $qb
 | 
			
		||||
@@ -65,7 +58,6 @@ final readonly class PersonAggregator implements AggregatorInterface
 | 
			
		||||
            ->addGroupBy('activity_by_person_agg');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn()
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY_PERSON;
 | 
			
		||||
 
 | 
			
		||||
@@ -23,23 +23,20 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 */
 | 
			
		||||
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) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // nothing to add here
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, mixed $data)
 | 
			
		||||
    {
 | 
			
		||||
        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');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data)
 | 
			
		||||
    {
 | 
			
		||||
        return [self::PREFIX.'_pid'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.aggregator.activity.by_persons.Group activity by persons';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $p = self::PREFIX;
 | 
			
		||||
@@ -78,7 +71,6 @@ final readonly class PersonsAggregator implements AggregatorInterface
 | 
			
		||||
            ->addGroupBy("{$p}_pid");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn()
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
 
 | 
			
		||||
@@ -21,38 +21,32 @@ class SentReceivedAggregator implements AggregatorInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly TranslatorInterface $translator) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data): void
 | 
			
		||||
    {
 | 
			
		||||
        $qb->addSelect('activity.sentReceived AS activity_sentreceived_aggregator')
 | 
			
		||||
            ->addGroupBy('activity_sentreceived_aggregator');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder): void
 | 
			
		||||
    {
 | 
			
		||||
        // No form needed
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data): callable
 | 
			
		||||
    {
 | 
			
		||||
        return function (?string $value): string {
 | 
			
		||||
@@ -77,13 +71,11 @@ class SentReceivedAggregator implements AggregatorInterface
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['activity_sentreceived_aggregator'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.aggregator.activity.by_sent_received.Group activity by sentreceived';
 | 
			
		||||
 
 | 
			
		||||
@@ -36,34 +36,28 @@ class AvgActivityDuration implements ExportInterface, GroupedExportInterface
 | 
			
		||||
        $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getAllowedFormattersTypes(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [FormatterInterface::TYPE_TABULAR];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getDescription(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Average activities linked to an accompanying period duration by various parameters.';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getGroup(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Exports of activities linked to an accompanying period';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['export_avg_activity_duration'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getResult($query, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Average activity linked to an accompanying period duration';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getType(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
 | 
			
		||||
    {
 | 
			
		||||
        $centers = array_map(static fn ($el) => $el['center'], $acl);
 | 
			
		||||
@@ -127,13 +116,11 @@ class AvgActivityDuration implements ExportInterface, GroupedExportInterface
 | 
			
		||||
        return $qb;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function requiredRole(): string
 | 
			
		||||
    {
 | 
			
		||||
        return ActivityStatsVoter::STATS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function supportsModifiers(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
 
 | 
			
		||||
@@ -41,37 +41,31 @@ class AvgActivityVisitDuration implements ExportInterface, GroupedExportInterfac
 | 
			
		||||
        $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // TODO: Implement buildForm() method.
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getAllowedFormattersTypes(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [FormatterInterface::TYPE_TABULAR];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getDescription(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Average activities linked to an accompanying period visit duration by various parameters.';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getGroup(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Exports of activities linked to an accompanying period';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['export_avg_activity_visit_duration'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getResult($query, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Average activity linked to an accompanying period visit duration';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getType(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
 | 
			
		||||
    {
 | 
			
		||||
        $centers = array_map(static fn ($el) => $el['center'], $acl);
 | 
			
		||||
@@ -135,13 +124,11 @@ class AvgActivityVisitDuration implements ExportInterface, GroupedExportInterfac
 | 
			
		||||
        return $qb;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function requiredRole(): string
 | 
			
		||||
    {
 | 
			
		||||
        return ActivityStatsVoter::STATS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function supportsModifiers(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
 
 | 
			
		||||
@@ -41,34 +41,28 @@ class CountActivity implements ExportInterface, GroupedExportInterface
 | 
			
		||||
        $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getAllowedFormattersTypes(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [FormatterInterface::TYPE_TABULAR];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getDescription(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Count activities linked to an accompanying period by various parameters.';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getGroup(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Exports of activities linked to an accompanying period';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['export_count_activity'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getResult($query, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Count activities linked to an accompanying period';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getType(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
 | 
			
		||||
    {
 | 
			
		||||
        $centers = array_map(static fn ($el) => $el['center'], $acl);
 | 
			
		||||
@@ -131,13 +120,11 @@ class CountActivity implements ExportInterface, GroupedExportInterface
 | 
			
		||||
        return $qb;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function requiredRole(): string
 | 
			
		||||
    {
 | 
			
		||||
        return ActivityStatsVoter::STATS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function supportsModifiers(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
 
 | 
			
		||||
@@ -42,34 +42,28 @@ final readonly class CountHouseholdOnActivity implements ExportInterface, Groupe
 | 
			
		||||
        $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getAllowedFormattersTypes(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [FormatterInterface::TYPE_TABULAR];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getDescription(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.export.count_household_on_activity.description';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getGroup(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Exports of activities linked to an accompanying period';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['export_count_activity'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getResult($query, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.export.count_household_on_activity.title';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getType(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
 | 
			
		||||
    {
 | 
			
		||||
        $centers = array_map(static fn ($el) => $el['center'], $acl);
 | 
			
		||||
@@ -140,13 +129,11 @@ final readonly class CountHouseholdOnActivity implements ExportInterface, Groupe
 | 
			
		||||
        return $qb;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function requiredRole(): string
 | 
			
		||||
    {
 | 
			
		||||
        return ActivityStatsVoter::STATS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function supportsModifiers(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
 
 | 
			
		||||
@@ -41,34 +41,28 @@ class CountPersonsOnActivity implements ExportInterface, GroupedExportInterface
 | 
			
		||||
        $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getAllowedFormattersTypes(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [FormatterInterface::TYPE_TABULAR];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getDescription(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.export.count_person_on_activity.description';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getGroup(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Exports of activities linked to an accompanying period';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['export_count_activity'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getResult($query, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.export.count_person_on_activity.title';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getType(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
 | 
			
		||||
    {
 | 
			
		||||
        $centers = array_map(static fn ($el) => $el['center'], $acl);
 | 
			
		||||
@@ -132,13 +121,11 @@ class CountPersonsOnActivity implements ExportInterface, GroupedExportInterface
 | 
			
		||||
        return $qb;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function requiredRole(): string
 | 
			
		||||
    {
 | 
			
		||||
        return ActivityStatsVoter::STATS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function supportsModifiers(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
 
 | 
			
		||||
@@ -33,37 +33,31 @@ final readonly class ListActivity implements ListInterface, GroupedExportInterfa
 | 
			
		||||
        private FilterListAccompanyingPeriodHelperInterface $filterListAccompanyingPeriodHelper,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $this->helper->buildForm($builder);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getAllowedFormattersTypes()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->helper->getAllowedFormattersTypes();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getDescription()
 | 
			
		||||
    {
 | 
			
		||||
        return ListActivityHelper::MSG_KEY.'List activities linked to an accompanying course';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getGroup(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Exports of activities linked to an accompanying period';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return match ($key) {
 | 
			
		||||
@@ -79,7 +73,6 @@ final readonly class ListActivity implements ListInterface, GroupedExportInterfa
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data)
 | 
			
		||||
    {
 | 
			
		||||
        return
 | 
			
		||||
@@ -92,25 +85,21 @@ final readonly class ListActivity implements ListInterface, GroupedExportInterfa
 | 
			
		||||
            );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getResult($query, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return $this->helper->getResult($query, $data);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return ListActivityHelper::MSG_KEY.'List activity linked to a course';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getType()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->helper->getType();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
 | 
			
		||||
    {
 | 
			
		||||
        $centers = array_map(static fn ($el) => $el['center'], $acl);
 | 
			
		||||
@@ -146,13 +135,11 @@ final readonly class ListActivity implements ListInterface, GroupedExportInterfa
 | 
			
		||||
        return $qb;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function requiredRole(): string
 | 
			
		||||
    {
 | 
			
		||||
        return ActivityStatsVoter::LISTS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function supportsModifiers()
 | 
			
		||||
    {
 | 
			
		||||
        return array_merge(
 | 
			
		||||
 
 | 
			
		||||
@@ -40,37 +40,31 @@ class SumActivityDuration implements ExportInterface, GroupedExportInterface
 | 
			
		||||
        $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // TODO: Implement buildForm() method.
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getAllowedFormattersTypes(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [FormatterInterface::TYPE_TABULAR];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getDescription(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Sum activities linked to an accompanying period duration by various parameters.';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getGroup(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Exports of activities linked to an accompanying period';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['export_sum_activity_duration'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getResult($query, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Sum activity linked to an accompanying period duration';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getType(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
 | 
			
		||||
    {
 | 
			
		||||
        $centers = array_map(static fn ($el) => $el['center'], $acl);
 | 
			
		||||
@@ -134,13 +123,11 @@ class SumActivityDuration implements ExportInterface, GroupedExportInterface
 | 
			
		||||
        return $qb;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function requiredRole(): string
 | 
			
		||||
    {
 | 
			
		||||
        return ActivityStatsVoter::STATS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function supportsModifiers(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
 
 | 
			
		||||
@@ -40,37 +40,31 @@ class SumActivityVisitDuration implements ExportInterface, GroupedExportInterfac
 | 
			
		||||
        $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // TODO: Implement buildForm() method.
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getAllowedFormattersTypes(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [FormatterInterface::TYPE_TABULAR];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getDescription(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Sum activities linked to an accompanying period visit duration by various parameters.';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getGroup(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Exports of activities linked to an accompanying period';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['export_sum_activity_visit_duration'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getResult($query, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Sum activity linked to an accompanying period visit duration';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getType(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
 | 
			
		||||
    {
 | 
			
		||||
        $centers = array_map(static fn ($el) => $el['center'], $acl);
 | 
			
		||||
@@ -134,13 +123,11 @@ class SumActivityVisitDuration implements ExportInterface, GroupedExportInterfac
 | 
			
		||||
        return $qb;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function requiredRole(): string
 | 
			
		||||
    {
 | 
			
		||||
        return ActivityStatsVoter::STATS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function supportsModifiers(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
 
 | 
			
		||||
@@ -33,34 +33,28 @@ class CountActivity implements ExportInterface, GroupedExportInterface
 | 
			
		||||
        $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getAllowedFormattersTypes()
 | 
			
		||||
    {
 | 
			
		||||
        return [FormatterInterface::TYPE_TABULAR];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getDescription()
 | 
			
		||||
    {
 | 
			
		||||
        return 'Count activities linked to a person by various parameters.';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getGroup(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Exports of activities linked to a person';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data)
 | 
			
		||||
    {
 | 
			
		||||
        return ['export_count_activity'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getResult($query, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'Count activities linked to a person';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getType(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
 | 
			
		||||
    {
 | 
			
		||||
        $centers = array_map(static fn ($el) => $el['center'], $acl);
 | 
			
		||||
@@ -124,13 +113,11 @@ class CountActivity implements ExportInterface, GroupedExportInterface
 | 
			
		||||
        return $qb;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function requiredRole(): string
 | 
			
		||||
    {
 | 
			
		||||
        return ActivityStatsVoter::STATS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function supportsModifiers()
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
 
 | 
			
		||||
@@ -34,34 +34,28 @@ final readonly class CountHouseholdOnActivity implements ExportInterface, Groupe
 | 
			
		||||
        $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getAllowedFormattersTypes()
 | 
			
		||||
    {
 | 
			
		||||
        return [FormatterInterface::TYPE_TABULAR];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getDescription()
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.export.count_household_on_activity_person.description';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getGroup(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Exports of activities linked to a person';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data)
 | 
			
		||||
    {
 | 
			
		||||
        return ['export_count_activity'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getResult($query, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.export.count_household_on_activity_person.title';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getType(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
 | 
			
		||||
    {
 | 
			
		||||
        $centers = array_map(static fn ($el) => $el['center'], $acl);
 | 
			
		||||
@@ -132,13 +121,11 @@ final readonly class CountHouseholdOnActivity implements ExportInterface, Groupe
 | 
			
		||||
        return $qb;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function requiredRole(): string
 | 
			
		||||
    {
 | 
			
		||||
        return ActivityStatsVoter::STATS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function supportsModifiers()
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
 
 | 
			
		||||
@@ -57,7 +57,6 @@ class ListActivity implements ListInterface, GroupedExportInterface
 | 
			
		||||
        $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('fields', ChoiceType::class, [
 | 
			
		||||
@@ -77,31 +76,26 @@ class ListActivity implements ListInterface, GroupedExportInterface
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getAllowedFormattersTypes()
 | 
			
		||||
    {
 | 
			
		||||
        return [FormatterInterface::TYPE_LIST];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getDescription()
 | 
			
		||||
    {
 | 
			
		||||
        return 'List activities linked to a person description';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getGroup(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Exports of activities linked to a person';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        switch ($key) {
 | 
			
		||||
@@ -171,31 +165,26 @@ class ListActivity implements ListInterface, GroupedExportInterface
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data)
 | 
			
		||||
    {
 | 
			
		||||
        return $data['fields'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getResult($query, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'List activity linked to a person';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getType(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
 | 
			
		||||
    {
 | 
			
		||||
        $centers = array_map(static fn ($el) => $el['center'], $acl);
 | 
			
		||||
@@ -290,13 +279,11 @@ class ListActivity implements ListInterface, GroupedExportInterface
 | 
			
		||||
        return $qb;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function requiredRole(): string
 | 
			
		||||
    {
 | 
			
		||||
        return ActivityStatsVoter::LISTS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function supportsModifiers()
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 */
 | 
			
		||||
class StatActivityDuration implements ExportInterface, GroupedExportInterface
 | 
			
		||||
{
 | 
			
		||||
    final public const string SUM = 'sum';
 | 
			
		||||
    final public const SUM = 'sum';
 | 
			
		||||
    private readonly bool $filterStatsByCenters;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -42,27 +42,23 @@ class StatActivityDuration implements ExportInterface, GroupedExportInterface
 | 
			
		||||
        /**
 | 
			
		||||
         * The action for this report.
 | 
			
		||||
         */
 | 
			
		||||
        protected string $action = 'sum'
 | 
			
		||||
        protected string $action = 'sum',
 | 
			
		||||
    ) {
 | 
			
		||||
        $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getAllowedFormattersTypes()
 | 
			
		||||
    {
 | 
			
		||||
        return [FormatterInterface::TYPE_TABULAR];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getDescription()
 | 
			
		||||
    {
 | 
			
		||||
        if (self::SUM === $this->action) {
 | 
			
		||||
@@ -72,13 +68,11 @@ class StatActivityDuration implements ExportInterface, GroupedExportInterface
 | 
			
		||||
        throw new \LogicException('this action is not supported: '.$this->action);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getGroup(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Exports of activities linked to a person';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getLabels($key, array $values, $data)
 | 
			
		||||
    {
 | 
			
		||||
        if ('export_stat_activity' !== $key) {
 | 
			
		||||
@@ -90,19 +84,16 @@ class StatActivityDuration implements ExportInterface, GroupedExportInterface
 | 
			
		||||
        return static fn (string $value) => '_header' === $value ? $header : $value;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getQueryKeys($data)
 | 
			
		||||
    {
 | 
			
		||||
        return ['export_stat_activity'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getResult($query, $data)
 | 
			
		||||
    {
 | 
			
		||||
        return $query->getQuery()->getResult(Query::HYDRATE_SCALAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        if (self::SUM === $this->action) {
 | 
			
		||||
@@ -112,13 +103,11 @@ class StatActivityDuration implements ExportInterface, GroupedExportInterface
 | 
			
		||||
        throw new \LogicException('This action is not supported: '.$this->action);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getType(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
 | 
			
		||||
    {
 | 
			
		||||
        $centers = array_map(
 | 
			
		||||
@@ -156,13 +145,11 @@ class StatActivityDuration implements ExportInterface, GroupedExportInterface
 | 
			
		||||
        return $qb;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function requiredRole(): string
 | 
			
		||||
    {
 | 
			
		||||
        return ActivityStatsVoter::STATS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function supportsModifiers()
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@ use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
class ListActivityHelper
 | 
			
		||||
{
 | 
			
		||||
    final public const string MSG_KEY = 'export.list.activity.';
 | 
			
		||||
    final public const MSG_KEY = 'export.list.activity.';
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        private readonly ActivityPresenceRepositoryInterface $activityPresenceRepository,
 | 
			
		||||
@@ -39,7 +39,7 @@ class ListActivityHelper
 | 
			
		||||
        private readonly TranslatorInterface $translator,
 | 
			
		||||
        private readonly TranslatableStringHelperInterface $translatableStringHelper,
 | 
			
		||||
        private readonly TranslatableStringExportLabelHelper $translatableStringLabelHelper,
 | 
			
		||||
        private readonly UserHelper $userHelper
 | 
			
		||||
        private readonly UserHelper $userHelper,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    public function addSelect(QueryBuilder $qb): void
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
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(
 | 
			
		||||
        private ActivityTypeRepositoryInterface $activityTypeRepository,
 | 
			
		||||
@@ -33,13 +33,11 @@ final readonly class ActivityTypeFilter implements FilterInterface
 | 
			
		||||
        private RollingDateConverterInterface $rollingDateConverter,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $exists = self::BASE_EXISTS;
 | 
			
		||||
@@ -64,13 +62,11 @@ final readonly class ActivityTypeFilter implements FilterInterface
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn()
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACP_TYPE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('accepted_activitytypes', EntityType::class, [
 | 
			
		||||
@@ -96,7 +92,6 @@ final readonly class ActivityTypeFilter implements FilterInterface
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
@@ -106,7 +101,6 @@ final readonly class ActivityTypeFilter implements FilterInterface
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string'): array
 | 
			
		||||
    {
 | 
			
		||||
        $types = [];
 | 
			
		||||
@@ -124,7 +118,6 @@ final readonly class ActivityTypeFilter implements FilterInterface
 | 
			
		||||
        ]];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Filter accompanying course by activity type';
 | 
			
		||||
 
 | 
			
		||||
@@ -23,13 +23,11 @@ class BySocialActionFilter implements FilterInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly SocialActionRender $actionRender) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        if (!\in_array('actsocialaction', $qb->getAllAliases(), true)) {
 | 
			
		||||
@@ -45,13 +43,11 @@ class BySocialActionFilter implements FilterInterface
 | 
			
		||||
            );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY_ACP;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('accepted_socialactions', PickSocialActionType::class, [
 | 
			
		||||
@@ -59,13 +55,11 @@ class BySocialActionFilter implements FilterInterface
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string'): array
 | 
			
		||||
    {
 | 
			
		||||
        $actions = [];
 | 
			
		||||
@@ -81,7 +75,6 @@ class BySocialActionFilter implements FilterInterface
 | 
			
		||||
        ]];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Filter activity by linked socialaction';
 | 
			
		||||
 
 | 
			
		||||
@@ -23,13 +23,11 @@ class BySocialIssueFilter implements FilterInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly SocialIssueRender $issueRender) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        if (!\in_array('actsocialissue', $qb->getAllAliases(), true)) {
 | 
			
		||||
@@ -45,13 +43,11 @@ class BySocialIssueFilter implements FilterInterface
 | 
			
		||||
            );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY_ACP;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('accepted_socialissues', PickSocialIssueType::class, [
 | 
			
		||||
@@ -59,13 +55,11 @@ class BySocialIssueFilter implements FilterInterface
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string'): array
 | 
			
		||||
    {
 | 
			
		||||
        $issues = [];
 | 
			
		||||
@@ -81,7 +75,6 @@ class BySocialIssueFilter implements FilterInterface
 | 
			
		||||
        ]];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Filter activity by linked socialissue';
 | 
			
		||||
 
 | 
			
		||||
@@ -22,13 +22,11 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 */
 | 
			
		||||
class HasNoActivityFilter implements FilterInterface
 | 
			
		||||
{
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $qb
 | 
			
		||||
@@ -40,31 +38,26 @@ class HasNoActivityFilter implements FilterInterface
 | 
			
		||||
            ');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACP_TYPE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        // no form needed
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string'): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['Filtered acp which has no activities', []];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Filter acp which has no activity';
 | 
			
		||||
 
 | 
			
		||||
@@ -25,13 +25,11 @@ final readonly class PeriodHavingActivityBetweenDatesFilter implements FilterInt
 | 
			
		||||
        private RollingDateConverterInterface $rollingDateConverter,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.filter.activity.course_having_activity_between_date.Title';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder
 | 
			
		||||
@@ -43,7 +41,6 @@ final readonly class PeriodHavingActivityBetweenDatesFilter implements FilterInt
 | 
			
		||||
            ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
@@ -52,7 +49,6 @@ final readonly class PeriodHavingActivityBetweenDatesFilter implements FilterInt
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string')
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
@@ -64,13 +60,11 @@ final readonly class PeriodHavingActivityBetweenDatesFilter implements FilterInt
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $alias = 'act_period_having_act_betw_date_alias';
 | 
			
		||||
@@ -88,7 +82,6 @@ final readonly class PeriodHavingActivityBetweenDatesFilter implements FilterInt
 | 
			
		||||
            ->setParameter($to, $this->rollingDateConverter->convert($data['end_date']));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn()
 | 
			
		||||
    {
 | 
			
		||||
        return \Chill\PersonBundle\Export\Declarations::ACP_TYPE;
 | 
			
		||||
 
 | 
			
		||||
@@ -25,13 +25,11 @@ class ActivityDateFilter implements FilterInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(protected TranslatorInterface $translator, private readonly RollingDateConverterInterface $rollingDateConverter) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $where = $qb->getDQLPart('where');
 | 
			
		||||
@@ -58,13 +56,11 @@ class ActivityDateFilter implements FilterInterface
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder
 | 
			
		||||
@@ -76,13 +72,11 @@ class ActivityDateFilter implements FilterInterface
 | 
			
		||||
            ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['date_from' => new RollingDate(RollingDate::T_YEAR_PREVIOUS_START), 'date_to' => new RollingDate(RollingDate::T_TODAY)];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string')
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
@@ -94,7 +88,6 @@ class ActivityDateFilter implements FilterInterface
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'Filtered by date activity';
 | 
			
		||||
 
 | 
			
		||||
@@ -25,16 +25,14 @@ final readonly class ActivityPresenceFilter implements FilterInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        private TranslatableStringHelperInterface $translatableStringHelper,
 | 
			
		||||
        private TranslatorInterface $translator
 | 
			
		||||
        private TranslatorInterface $translator,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.filter.activity.by_presence.Filter activity by activity presence';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('presences', EntityType::class, [
 | 
			
		||||
@@ -47,13 +45,11 @@ final readonly class ActivityPresenceFilter implements FilterInterface
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string')
 | 
			
		||||
    {
 | 
			
		||||
        $presences = array_map(
 | 
			
		||||
@@ -67,13 +63,11 @@ final readonly class ActivityPresenceFilter implements FilterInterface
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $qb
 | 
			
		||||
@@ -81,7 +75,6 @@ final readonly class ActivityPresenceFilter implements FilterInterface
 | 
			
		||||
            ->setParameter('activity_presence_filter_presences', $data['presences']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn()
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
 
 | 
			
		||||
@@ -26,16 +26,14 @@ class ActivityTypeFilter implements ExportElementValidatedInterface, FilterInter
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        protected TranslatableStringHelperInterface $translatableStringHelper,
 | 
			
		||||
        protected ActivityTypeRepositoryInterface $activityTypeRepository
 | 
			
		||||
        protected ActivityTypeRepositoryInterface $activityTypeRepository,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $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']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('types', EntityType::class, [
 | 
			
		||||
@@ -74,13 +70,11 @@ class ActivityTypeFilter implements ExportElementValidatedInterface, FilterInter
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string')
 | 
			
		||||
    {
 | 
			
		||||
        // 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()
 | 
			
		||||
    {
 | 
			
		||||
        return 'Filter by activity type';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function validateForm($data, ExecutionContextInterface $context)
 | 
			
		||||
    {
 | 
			
		||||
        if (null === $data['types'] || 0 === \count($data['types'])) {
 | 
			
		||||
 
 | 
			
		||||
@@ -22,13 +22,11 @@ class ActivityUsersFilter implements FilterInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly UserRender $userRender) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $orX = $qb->expr()->orX();
 | 
			
		||||
@@ -41,13 +39,11 @@ class ActivityUsersFilter implements FilterInterface
 | 
			
		||||
        $qb->andWhere($orX);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn()
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('accepted_users', PickUserDynamicType::class, [
 | 
			
		||||
@@ -56,13 +52,11 @@ class ActivityUsersFilter implements FilterInterface
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string')
 | 
			
		||||
    {
 | 
			
		||||
        $users = [];
 | 
			
		||||
@@ -76,7 +70,6 @@ class ActivityUsersFilter implements FilterInterface
 | 
			
		||||
        ]];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Filter activity by users';
 | 
			
		||||
 
 | 
			
		||||
@@ -22,13 +22,11 @@ class ByCreatorFilter implements FilterInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly UserRender $userRender) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $qb
 | 
			
		||||
@@ -38,13 +36,11 @@ class ByCreatorFilter implements FilterInterface
 | 
			
		||||
            ->setParameter('users', $data['accepted_users']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('accepted_users', PickUserDynamicType::class, [
 | 
			
		||||
@@ -52,13 +48,11 @@ class ByCreatorFilter implements FilterInterface
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string'): array
 | 
			
		||||
    {
 | 
			
		||||
        $users = [];
 | 
			
		||||
@@ -72,7 +66,6 @@ class ByCreatorFilter implements FilterInterface
 | 
			
		||||
        ]];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Filter activity by creator';
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@ use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
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(
 | 
			
		||||
        private TranslatableStringHelper $translatableStringHelper,
 | 
			
		||||
@@ -34,13 +34,11 @@ final readonly class CreatorJobFilter implements FilterInterface
 | 
			
		||||
        private UserJobRepositoryInterface $userJobRepository,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $p = self::PREFIX;
 | 
			
		||||
@@ -72,13 +70,11 @@ final readonly class CreatorJobFilter implements FilterInterface
 | 
			
		||||
            );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder
 | 
			
		||||
@@ -94,7 +90,6 @@ final readonly class CreatorJobFilter implements FilterInterface
 | 
			
		||||
            ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string'): array
 | 
			
		||||
    {
 | 
			
		||||
        $jobs = array_map(
 | 
			
		||||
@@ -107,7 +102,6 @@ final readonly class CreatorJobFilter implements FilterInterface
 | 
			
		||||
        ]];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
@@ -115,7 +109,6 @@ final readonly class CreatorJobFilter implements FilterInterface
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.filter.activity.by_creator_job.Filter activity by user job';
 | 
			
		||||
 
 | 
			
		||||
@@ -24,20 +24,18 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
class CreatorScopeFilter implements FilterInterface
 | 
			
		||||
{
 | 
			
		||||
    private const string PREFIX = 'acp_act_filter_creator_scope';
 | 
			
		||||
    private const PREFIX = 'acp_act_filter_creator_scope';
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        private readonly TranslatableStringHelper $translatableStringHelper,
 | 
			
		||||
        private readonly ScopeRepositoryInterface $scopeRepository,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $p = self::PREFIX;
 | 
			
		||||
@@ -69,13 +67,11 @@ class CreatorScopeFilter implements FilterInterface
 | 
			
		||||
            );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder
 | 
			
		||||
@@ -90,7 +86,6 @@ class CreatorScopeFilter implements FilterInterface
 | 
			
		||||
            ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string'): array
 | 
			
		||||
    {
 | 
			
		||||
        $scopes = [];
 | 
			
		||||
@@ -106,7 +101,6 @@ class CreatorScopeFilter implements FilterInterface
 | 
			
		||||
        ]];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
@@ -114,7 +108,6 @@ class CreatorScopeFilter implements FilterInterface
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.filter.activity.by_creator_scope.Filter activity by user scope';
 | 
			
		||||
 
 | 
			
		||||
@@ -21,22 +21,20 @@ use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
class EmergencyFilter implements FilterInterface
 | 
			
		||||
{
 | 
			
		||||
    private const array CHOICES = [
 | 
			
		||||
    private const CHOICES = [
 | 
			
		||||
        'activity is emergency' => 'true',
 | 
			
		||||
        'activity is not emergency' => 'false',
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    private const string DEFAULT_CHOICE = 'false';
 | 
			
		||||
    private const DEFAULT_CHOICE = 'false';
 | 
			
		||||
 | 
			
		||||
    public function __construct(private readonly TranslatorInterface $translator) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $where = $qb->getDQLPart('where');
 | 
			
		||||
@@ -53,13 +51,11 @@ class EmergencyFilter implements FilterInterface
 | 
			
		||||
        $qb->setParameter('emergency', $data['accepted_emergency']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('accepted_emergency', ChoiceType::class, [
 | 
			
		||||
@@ -70,13 +66,11 @@ class EmergencyFilter implements FilterInterface
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['accepted_emergency' => self::DEFAULT_CHOICE];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string'): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
@@ -88,7 +82,6 @@ class EmergencyFilter implements FilterInterface
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Filter activity by emergency';
 | 
			
		||||
 
 | 
			
		||||
@@ -19,13 +19,11 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
class LocationFilter implements FilterInterface
 | 
			
		||||
{
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $qb->andWhere(
 | 
			
		||||
@@ -35,13 +33,11 @@ class LocationFilter implements FilterInterface
 | 
			
		||||
        $qb->setParameter('location', $data['accepted_location']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('accepted_location', PickUserLocationType::class, [
 | 
			
		||||
@@ -50,13 +46,11 @@ class LocationFilter implements FilterInterface
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string'): array
 | 
			
		||||
    {
 | 
			
		||||
        $locations = [];
 | 
			
		||||
@@ -70,7 +64,6 @@ class LocationFilter implements FilterInterface
 | 
			
		||||
        ]];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Filter activity by location';
 | 
			
		||||
 
 | 
			
		||||
@@ -23,13 +23,11 @@ class LocationTypeFilter implements FilterInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly TranslatableStringHelper $translatableStringHelper) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        if (!\in_array('actloc', $qb->getAllAliases(), true)) {
 | 
			
		||||
@@ -49,13 +47,11 @@ class LocationTypeFilter implements FilterInterface
 | 
			
		||||
        $qb->setParameter('locationtype', $data['accepted_locationtype']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('accepted_locationtype', PickLocationTypeType::class, [
 | 
			
		||||
@@ -64,13 +60,11 @@ class LocationTypeFilter implements FilterInterface
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string'): array
 | 
			
		||||
    {
 | 
			
		||||
        $types = [];
 | 
			
		||||
@@ -86,7 +80,6 @@ class LocationTypeFilter implements FilterInterface
 | 
			
		||||
        ]];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Filter activity by locationtype';
 | 
			
		||||
 
 | 
			
		||||
@@ -28,13 +28,11 @@ class ActivityReasonFilter implements ExportElementValidatedInterface, FilterInt
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(protected TranslatableStringHelper $translatableStringHelper, protected ActivityReasonRepository $activityReasonRepository) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $where = $qb->getDQLPart('where');
 | 
			
		||||
@@ -55,13 +53,11 @@ class ActivityReasonFilter implements ExportElementValidatedInterface, FilterInt
 | 
			
		||||
        $qb->setParameter('selected_activity_reasons', $data['reasons']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY_PERSON;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('reasons', EntityType::class, [
 | 
			
		||||
@@ -74,13 +70,11 @@ class ActivityReasonFilter implements ExportElementValidatedInterface, FilterInt
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string')
 | 
			
		||||
    {
 | 
			
		||||
        // 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()
 | 
			
		||||
    {
 | 
			
		||||
        return 'Filter by reason';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function validateForm($data, ExecutionContextInterface $context)
 | 
			
		||||
    {
 | 
			
		||||
        if (null === $data['reasons'] || 0 === \count($data['reasons'])) {
 | 
			
		||||
 
 | 
			
		||||
@@ -34,13 +34,11 @@ final readonly class PersonHavingActivityBetweenDateFilter implements ExportElem
 | 
			
		||||
        private RollingDateConverterInterface $rollingDateConverter,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        // create a subquery for activity
 | 
			
		||||
@@ -85,13 +83,11 @@ final readonly class PersonHavingActivityBetweenDateFilter implements ExportElem
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::PERSON_TYPE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('date_from_rolling', PickRollingDateType::class, [
 | 
			
		||||
@@ -116,7 +112,6 @@ final readonly class PersonHavingActivityBetweenDateFilter implements ExportElem
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
@@ -126,7 +121,6 @@ final readonly class PersonHavingActivityBetweenDateFilter implements ExportElem
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string')
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
@@ -147,13 +141,11 @@ final readonly class PersonHavingActivityBetweenDateFilter implements ExportElem
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.filter.activity.person_between_dates.title';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function validateForm($data, ExecutionContextInterface $context)
 | 
			
		||||
    {
 | 
			
		||||
        if ($this->rollingDateConverter->convert($data['date_from_rolling'])
 | 
			
		||||
 
 | 
			
		||||
@@ -24,17 +24,15 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 */
 | 
			
		||||
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) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $p = self::PREFIX;
 | 
			
		||||
@@ -49,13 +47,11 @@ final readonly class PersonsFilter implements FilterInterface
 | 
			
		||||
        $qb->andWhere($orX);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn()
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('accepted_persons', PickPersonDynamicType::class, [
 | 
			
		||||
@@ -64,7 +60,6 @@ final readonly class PersonsFilter implements FilterInterface
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
@@ -72,7 +67,6 @@ final readonly class PersonsFilter implements FilterInterface
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string')
 | 
			
		||||
    {
 | 
			
		||||
        $users = [];
 | 
			
		||||
@@ -86,7 +80,6 @@ final readonly class PersonsFilter implements FilterInterface
 | 
			
		||||
        ]];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.filter.activity.by_persons.Filter activity by persons';
 | 
			
		||||
 
 | 
			
		||||
@@ -22,22 +22,20 @@ use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
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 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) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $where = $qb->getDQLPart('where');
 | 
			
		||||
@@ -54,13 +52,11 @@ class SentReceivedFilter implements FilterInterface
 | 
			
		||||
        $qb->setParameter('sentreceived', $data['accepted_sentreceived']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('accepted_sentreceived', ChoiceType::class, [
 | 
			
		||||
@@ -72,13 +68,11 @@ class SentReceivedFilter implements FilterInterface
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['accepted_sentreceived' => self::DEFAULT_CHOICE];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string'): array
 | 
			
		||||
    {
 | 
			
		||||
        $sentreceived = array_flip(self::CHOICES)[$data['accepted_sentreceived']];
 | 
			
		||||
@@ -88,7 +82,6 @@ class SentReceivedFilter implements FilterInterface
 | 
			
		||||
        ]];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Filter activity by sentreceived';
 | 
			
		||||
 
 | 
			
		||||
@@ -23,13 +23,11 @@ class UserFilter implements FilterInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly UserRender $userRender) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $where = $qb->getDQLPart('where');
 | 
			
		||||
@@ -46,13 +44,11 @@ class UserFilter implements FilterInterface
 | 
			
		||||
        $qb->setParameter('users', $data['accepted_users']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder->add('accepted_users', PickUserDynamicType::class, [
 | 
			
		||||
@@ -61,13 +57,11 @@ class UserFilter implements FilterInterface
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string'): array
 | 
			
		||||
    {
 | 
			
		||||
        $users = [];
 | 
			
		||||
@@ -81,7 +75,6 @@ class UserFilter implements FilterInterface
 | 
			
		||||
        ]];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'Filter activity by user';
 | 
			
		||||
 
 | 
			
		||||
@@ -25,20 +25,18 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
class UsersJobFilter implements FilterInterface
 | 
			
		||||
{
 | 
			
		||||
    private const string PREFIX = 'act_filter_user_job';
 | 
			
		||||
    private const PREFIX = 'act_filter_user_job';
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        private readonly TranslatableStringHelperInterface $translatableStringHelper,
 | 
			
		||||
        private readonly UserJobRepositoryInterface $userJobRepository
 | 
			
		||||
        private readonly UserJobRepositoryInterface $userJobRepository,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $p = self::PREFIX;
 | 
			
		||||
@@ -62,13 +60,11 @@ class UsersJobFilter implements FilterInterface
 | 
			
		||||
            );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn()
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder
 | 
			
		||||
@@ -81,7 +77,6 @@ class UsersJobFilter implements FilterInterface
 | 
			
		||||
            ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string')
 | 
			
		||||
    {
 | 
			
		||||
        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
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
@@ -103,7 +97,6 @@ class UsersJobFilter implements FilterInterface
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle()
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.filter.activity.by_users_job.Filter by users job';
 | 
			
		||||
 
 | 
			
		||||
@@ -25,20 +25,18 @@ use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
class UsersScopeFilter implements FilterInterface
 | 
			
		||||
{
 | 
			
		||||
    private const string PREFIX = 'act_filter_user_scope';
 | 
			
		||||
    private const PREFIX = 'act_filter_user_scope';
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        private readonly ScopeRepositoryInterface $scopeRepository,
 | 
			
		||||
        private readonly TranslatableStringHelperInterface $translatableStringHelper
 | 
			
		||||
        private readonly TranslatableStringHelperInterface $translatableStringHelper,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function addRole(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function alterQuery(QueryBuilder $qb, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $p = self::PREFIX;
 | 
			
		||||
@@ -62,13 +60,11 @@ class UsersScopeFilter implements FilterInterface
 | 
			
		||||
            );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function applyOn(): string
 | 
			
		||||
    {
 | 
			
		||||
        return Declarations::ACTIVITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder)
 | 
			
		||||
    {
 | 
			
		||||
        $builder
 | 
			
		||||
@@ -81,7 +77,6 @@ class UsersScopeFilter implements FilterInterface
 | 
			
		||||
            ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function describeAction($data, $format = 'string'): array
 | 
			
		||||
    {
 | 
			
		||||
        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
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
@@ -103,7 +97,6 @@ class UsersScopeFilter implements FilterInterface
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getTitle(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'export.filter.activity.by_users_scope.Filter by users scope';
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,6 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
 | 
			
		||||
 | 
			
		||||
class ActivityPresenceType extends AbstractType
 | 
			
		||||
{
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder, array $options): void
 | 
			
		||||
    {
 | 
			
		||||
        $builder
 | 
			
		||||
@@ -34,7 +33,6 @@ class ActivityPresenceType extends AbstractType
 | 
			
		||||
            ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function configureOptions(OptionsResolver $resolver): void
 | 
			
		||||
    {
 | 
			
		||||
        $resolver->setDefaults([
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,6 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
 | 
			
		||||
 | 
			
		||||
class ActivityReasonCategoryType extends AbstractType
 | 
			
		||||
{
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder, array $options)
 | 
			
		||||
    {
 | 
			
		||||
        $builder
 | 
			
		||||
@@ -30,7 +29,6 @@ class ActivityReasonCategoryType extends AbstractType
 | 
			
		||||
    /**
 | 
			
		||||
     * @param OptionsResolverInterface $resolver
 | 
			
		||||
     */
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function configureOptions(OptionsResolver $resolver)
 | 
			
		||||
    {
 | 
			
		||||
        $resolver->setDefaults([
 | 
			
		||||
@@ -41,7 +39,6 @@ class ActivityReasonCategoryType extends AbstractType
 | 
			
		||||
    /**
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getBlockPrefix()
 | 
			
		||||
    {
 | 
			
		||||
        return 'chill_activitybundle_activityreasoncategory';
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,6 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
 | 
			
		||||
 | 
			
		||||
class ActivityReasonType extends AbstractType
 | 
			
		||||
{
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder, array $options)
 | 
			
		||||
    {
 | 
			
		||||
        $builder
 | 
			
		||||
@@ -30,7 +29,6 @@ class ActivityReasonType extends AbstractType
 | 
			
		||||
            ->add('category', TranslatableActivityReasonCategoryType::class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function configureOptions(OptionsResolver $resolver)
 | 
			
		||||
    {
 | 
			
		||||
        $resolver->setDefaults([
 | 
			
		||||
@@ -41,7 +39,6 @@ class ActivityReasonType extends AbstractType
 | 
			
		||||
    /**
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getBlockPrefix()
 | 
			
		||||
    {
 | 
			
		||||
        return 'chill_activitybundle_activityreason';
 | 
			
		||||
 
 | 
			
		||||
@@ -59,7 +59,7 @@ class ActivityType extends AbstractType
 | 
			
		||||
        protected TranslatableStringHelper $translatableStringHelper,
 | 
			
		||||
        protected array $timeChoices,
 | 
			
		||||
        protected SocialIssueRender $socialIssueRender,
 | 
			
		||||
        protected SocialActionRender $socialActionRender
 | 
			
		||||
        protected SocialActionRender $socialActionRender,
 | 
			
		||||
    ) {
 | 
			
		||||
        if (!$tokenStorage->getToken()->getUser() instanceof User) {
 | 
			
		||||
            throw new \RuntimeException('you should have a valid user');
 | 
			
		||||
@@ -68,7 +68,6 @@ class ActivityType extends AbstractType
 | 
			
		||||
        $this->user = $tokenStorage->getToken()->getUser();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder, array $options): void
 | 
			
		||||
    {
 | 
			
		||||
        // handle times choices
 | 
			
		||||
@@ -387,7 +386,6 @@ class ActivityType extends AbstractType
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function configureOptions(OptionsResolver $resolver): void
 | 
			
		||||
    {
 | 
			
		||||
        $resolver->setDefaults([
 | 
			
		||||
@@ -402,7 +400,6 @@ class ActivityType extends AbstractType
 | 
			
		||||
            ->setAllowedTypes('accompanyingPeriod', [AccompanyingPeriod::class, 'null']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getBlockPrefix(): string
 | 
			
		||||
    {
 | 
			
		||||
        return 'chill_activitybundle_activity';
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,6 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
 | 
			
		||||
 | 
			
		||||
class ActivityTypeCategoryType extends AbstractType
 | 
			
		||||
{
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder, array $options): void
 | 
			
		||||
    {
 | 
			
		||||
        $builder
 | 
			
		||||
@@ -39,7 +38,6 @@ class ActivityTypeCategoryType extends AbstractType
 | 
			
		||||
            ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function configureOptions(OptionsResolver $resolver): void
 | 
			
		||||
    {
 | 
			
		||||
        $resolver->setDefaults([
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,6 @@ class ActivityTypeType extends AbstractType
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly TranslatableStringHelper $translatableStringHelper) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildForm(FormBuilderInterface $builder, array $options)
 | 
			
		||||
    {
 | 
			
		||||
        $builder
 | 
			
		||||
@@ -68,7 +67,6 @@ class ActivityTypeType extends AbstractType
 | 
			
		||||
            ->add('commentVisible', ActivityFieldPresence::class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function configureOptions(OptionsResolver $resolver)
 | 
			
		||||
    {
 | 
			
		||||
        $resolver->setDefaults([
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,6 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
 | 
			
		||||
 | 
			
		||||
class ActivityFieldPresence extends AbstractType
 | 
			
		||||
{
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function configureOptions(OptionsResolver $resolver)
 | 
			
		||||
    {
 | 
			
		||||
        $resolver->setDefaults(
 | 
			
		||||
@@ -32,7 +31,6 @@ class ActivityFieldPresence extends AbstractType
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getParent()
 | 
			
		||||
    {
 | 
			
		||||
        return ChoiceType::class;
 | 
			
		||||
 
 | 
			
		||||
@@ -27,10 +27,9 @@ class PickActivityReasonType extends AbstractType
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        private readonly ActivityReasonRepository $activityReasonRepository,
 | 
			
		||||
        private readonly ActivityReasonRender $reasonRender,
 | 
			
		||||
        private readonly TranslatableStringHelperInterface $translatableStringHelper
 | 
			
		||||
        private readonly TranslatableStringHelperInterface $translatableStringHelper,
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function configureOptions(OptionsResolver $resolver)
 | 
			
		||||
    {
 | 
			
		||||
        $resolver->setDefaults(
 | 
			
		||||
@@ -50,13 +49,11 @@ class PickActivityReasonType extends AbstractType
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getBlockPrefix()
 | 
			
		||||
    {
 | 
			
		||||
        return 'translatable_activity_reason';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getParent()
 | 
			
		||||
    {
 | 
			
		||||
        return EntityType::class;
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,6 @@ class TranslatableActivityReasonCategoryType extends AbstractType
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly TranslatableStringHelperInterface $translatableStringHelper, private readonly TranslatorInterface $translator) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function configureOptions(OptionsResolver $resolver)
 | 
			
		||||
    {
 | 
			
		||||
        $resolver->setDefaults(
 | 
			
		||||
@@ -37,7 +36,6 @@ class TranslatableActivityReasonCategoryType extends AbstractType
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getParent()
 | 
			
		||||
    {
 | 
			
		||||
        return EntityType::class;
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,6 @@ class TranslatableActivityType extends AbstractType
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(protected TranslatableStringHelperInterface $translatableStringHelper, protected ActivityTypeRepositoryInterface $activityTypeRepository) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function configureOptions(OptionsResolver $resolver)
 | 
			
		||||
    {
 | 
			
		||||
        $resolver->setDefaults(
 | 
			
		||||
@@ -35,13 +34,11 @@ class TranslatableActivityType extends AbstractType
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getBlockPrefix()
 | 
			
		||||
    {
 | 
			
		||||
        return 'translatable_activity_type';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function getParent()
 | 
			
		||||
    {
 | 
			
		||||
        return EntityType::class;
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,6 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(protected Security $security, protected TranslatorInterface $translator) {}
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public function buildMenu($menuId, MenuItem $menu, array $parameters)
 | 
			
		||||
    {
 | 
			
		||||
        $period = $parameters['accompanyingCourse'];
 | 
			
		||||
@@ -43,7 +42,6 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[\Override]
 | 
			
		||||
    public static function getMenuIds(): array
 | 
			
		||||
    {
 | 
			
		||||
        return ['accompanyingCourse'];
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user