Compare commits

..

1134 Commits

Author SHA1 Message Date
66f7ef8c51 prepare for beta2 release 2022-09-20 12:00:01 +02:00
cdb9d967ff [person] Feature: on evaluation, add an url field on the admin 2022-09-20 11:50:01 +02:00
29b24fa506 [Budget] Feature: allow to desactive resources and charges in the
configuration

A new key `active` (default `true`) allow to activate or desactivate the
line in the resource or charge.
2022-09-20 11:26:05 +02:00
4d192d748f [skeleton] we do not commit composer into repository 2022-09-20 10:03:05 +02:00
6bd0bcff6e Fix: Workflow: the notification is send when the user is added on first
step.

See https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/813
2022-09-19 21:27:07 +02:00
5b148f967f Merge branch 'feature/load-address-bano' into 'master'
Load addresses from bano and best address

See merge request Chill-Projet/chill-bundles!448
2022-09-19 11:51:21 +00:00
8129739d27 test for postal code base importer 2022-09-17 10:59:04 +02:00
658e846120 add test for AddressReferenceBaseImporter 2022-09-17 10:44:26 +02:00
0f63548d5a import addresses and postal codes from bestaddress 2022-09-17 09:10:28 +02:00
84cda8845d Feature: command to load addresses from France from bano.openstreetmap.fr 2022-09-17 09:10:28 +02:00
9b3b9f2552 Fixed: possible unexisting variable 2022-09-17 09:10:28 +02:00
58ddf9038d Feature: load french postal code from laposte hexasmal open data 2022-09-17 09:10:28 +02:00
a9b354a6f5 Feature: add constraint to ensure postal code uniqueness and track creation and update of postal code 2022-09-17 09:10:28 +02:00
62ff4998a0 Fixed: annotation schema for ManyToMany relationship between Evaluation and SocialAction
Before this commit, the owning side of the relationship between Evaluation and SocialAction was declared twice.
2022-09-17 09:10:28 +02:00
6c191f584f fix bug when member is non-positionné, case not taken into account in if-condition 2022-09-14 12:09:25 +00:00
71f49db2f4 disable unstable filters/aggregators 2022-09-13 21:05:22 +02:00
0f0ec10857 fix rst syntax 2022-09-07 12:18:07 +02:00
da2d68a45d [documentation] new how-to to switch into branch, and add info about gitlab tokens 2022-09-06 15:25:15 +02:00
6dbee02d82 Merge branch 'master' into social_action_exports 2022-08-30 13:23:41 +02:00
7eb75b709c Merge branch '111_exports' into social_action_exports 2022-08-30 13:17:37 +02:00
72b5fcf998 minor changes 2022-08-30 13:14:40 +02:00
nobohan
bf44b6b90d export: geographical unit filter 2022-08-29 16:22:36 +02:00
nobohan
81f04d0184 export: add a geographical unit entity (migration file) 2022-08-29 15:34:33 +02:00
nobohan
f99f6d5240 export: add a geographical unit entity 2022-08-29 15:21:05 +02:00
b5139ec460 exports: improve activity DateAggregator
- put orderby at the end
- addSelect with TO_CHAR() function (cancel EXRACT())
- uniformize addSelect cases
- orderBy with variable
- improve getLabels
2022-08-25 14:58:25 +02:00
f5baa2c152 exports: DurationAggregator with approximative(*) date interval
(*) for more precise, we need dql interval function
2022-08-25 13:49:12 +02:00
e1ec2dc25c exports: DurationAggregator: test qb addSelect for compute date interval 2022-08-25 13:49:12 +02:00
2c151c2ec9 exports: add new duration aggregator (wip) 2022-08-25 13:49:12 +02:00
cf642d2783 month year aggregator working 2022-08-25 13:08:24 +02:00
f3ceee7485 Merge branch '111_exports' into social_action_exports 2022-08-25 09:28:01 +02:00
9854fb0664 cancel reason aggregator + start of monthYearAggregator 2022-08-25 09:27:30 +02:00
7173e4be4a exports: fix activity DateAggregator; add customs DQL Date/Time functions 2022-08-24 15:44:18 +02:00
52902e905a exports: test all activity filters/aggregators and fix errors 2022-08-24 11:36:54 +02:00
dea7982ca8 exports: add activity linked_to_acp new aggregators (wip) 2022-08-22 19:04:48 +02:00
c4944cce17 exports: move activity old aggregators in PersonAggregators folder 2022-08-22 17:12:33 +02:00
f8f17a6a06 exports: move activity old filters in PersonFilters folder 2022-08-22 13:37:20 +02:00
95ea3bf30e refactor builder form in a filter 2022-08-22 13:29:22 +02:00
248d56e598 exports: add activity linked_to_acp new filters 2022-08-22 13:28:50 +02:00
9af620ece5 fix translations 2022-08-22 10:17:44 +02:00
4a1615afd5 export, fix merge translations 2022-08-22 10:02:38 +02:00
2bf5e934e9 merge 111_exports 2022-08-18 12:19:01 +02:00
03d098e5e1 aggregators added - monthYearAggregator not finished 2022-08-18 12:15:30 +02:00
1de853a88b fix count appointment indicator 2022-08-18 10:58:05 +02:00
3eb07121ce filters added 2022-08-18 10:57:15 +02:00
05fd35cfb4 all indicators added 2022-08-18 10:56:22 +02:00
e357899d78 Merge branch 'social_action_exports' into 111_exports 2022-08-17 17:48:43 +02:00
62562cc57e rename querybuilder calendar 2022-08-17 17:37:05 +02:00
dfbaaef778 add average duration indicator calendar 2022-08-17 17:36:42 +02:00
d04d758f27 exports: activityDate filter enable to activity linked to acl 2022-08-17 17:14:24 +02:00
c199bb5534 exports: activity improve translations 2022-08-17 17:02:21 +02:00
26cd677501 exports: activity new indicators works + improve translations 2022-08-17 16:07:20 +02:00
3c5d533c58 first indicator for calendar exports 2022-08-17 16:04:46 +02:00
5060906591 more attempts to make dynamic form work 2022-08-17 16:03:58 +02:00
c17036fcda exports: fix activitytype filter/aggregator appliedTo activity_person and too activity_acl 2022-08-17 15:28:51 +02:00
c09c7a9615 exports: add new modifiers declarations to split filter/aggregators between activities linked to person <> acp 2022-08-17 14:58:20 +02:00
df9a5071c7 exports: display group as a breadcrumb in template
add a private method in controller which could be moved maybe in ExportManager
2022-08-17 14:56:24 +02:00
01f6eb1a8f fix merge conflict in translations 2022-08-17 11:57:46 +02:00
27c2fb1c1f merge with 111_exports 2022-08-17 11:56:22 +02:00
d9b668e614 exports: create new activity linked to acp exports indicators + title/descr/groups translations 2022-08-17 11:44:15 +02:00
57d00df460 exports: split namespace between activity linked to person <> acp 2022-08-17 10:12:29 +02:00
94cee14a11 exports: complete modifiers 2022-08-17 09:50:35 +02:00
4ebe064538 exports: improve translations 2022-08-17 09:49:33 +02:00
fb18d9fb56 exports: improve activity translations 2022-08-16 17:12:35 +02:00
b2c1c0ec76 add filter residential address at thirdparty of category 2022-08-16 16:19:39 +02:00
42122f5832 exports: use Declarations in activity exports 2022-08-16 15:37:54 +02:00
8093c532d1 exports: overwrite activity translations 2022-08-16 15:30:12 +02:00
2c53f92a2e small refactorisations 2022-08-16 15:13:47 +02:00
4c91bf5084 household position aggregator for person 2022-08-16 15:07:03 +02:00
c2c409998b exports: precise translation when acp filters/aggreg are combined with others 2022-08-16 14:52:53 +02:00
bde623e806 add second indicator for person exports 2022-08-16 10:47:36 +02:00
a9e83d3dc8 delete double translations 2022-08-16 10:42:13 +02:00
afbedf3a4a Merge branch '111_exports' into social_action_exports 2022-08-16 10:19:04 +02:00
4e12684f98 add condition on join clause to improve combined Filters/Aggregators 2022-08-11 18:09:25 +02:00
619ae4e458 improve social work actions translations 2022-08-11 17:43:20 +02:00
b03950d0f7 improve translations for treating agent 2022-08-11 17:33:58 +02:00
f7993eaf2b remove ACP_SHARED Declaration 2022-08-11 17:17:52 +02:00
d27c52b526 Split Job and Scope Aggregators 2022-08-11 17:13:24 +02:00
312a23e91f split ReferrerAggregator 2022-08-11 16:57:44 +02:00
93eb9220a7 split ReferrerFilter, logiquement ce sont des filtres différents 2022-08-11 16:41:15 +02:00
b614149fab translations chain 2022-08-11 16:39:54 +02:00
c45ef7d74f exports: fix initiateQuery to always begin from acp entity 2022-08-11 15:05:08 +02:00
12cae472d6 Merge branch '111_exports' into social_action_exports 2022-08-11 14:08:33 +02:00
b8d187c82b exports evaluation: fix root query from acp 2022-08-11 14:04:15 +02:00
6e467a62d4 exports: simplify with querybuilder method to getRootAlias 2022-08-11 12:04:41 +02:00
70488a935d exports: test if a join is already loaded
when a specific join has to be shared between combined filters/aggregators, we need to check if it has been already loaded.
we cannot load it into indicator because result is wrong
2022-08-11 12:01:54 +02:00
18c17818f6 exports: add ChildrenNumber Aggregator 2022-08-10 17:17:29 +02:00
bc5d610f80 exports: add on_date parameter on Composition Filter/Aggregator 2022-08-10 16:50:59 +02:00
c693dfde66 a same join() in filter and aggregator make error if we combine them 2022-08-10 16:33:05 +02:00
3463ff8e2e exports: add Composition Filter and Aggregator in Household exports 2022-08-10 16:25:38 +02:00
3f4d4497af exports: add new countHousehold export 2022-08-10 14:35:38 +02:00
0c2c364eb6 trying to get dynamic form to work 2022-08-10 13:58:51 +02:00
8efbf02f64 exports: add new MaxDate Filter for evaluation 2022-08-10 10:57:32 +02:00
208d625258 merge conflict resolved 2022-08-10 10:37:19 +02:00
6eddb420cc fix nationality aggregator 2022-08-10 10:36:32 +02:00
3c451209c7 fix nationality aggregator 2022-08-10 10:35:32 +02:00
955d4a9e7a exports: add new EvaluationType Filter and Aggregator 2022-08-10 10:21:05 +02:00
20949fdb5c Merge branch '111_exports' into social_action_exports 2022-08-10 10:05:26 +02:00
2c7a128348 vendee filters and aggregators moved to root folder 2022-08-09 16:49:38 +02:00
97ec921a0a small adjustments 2022-08-09 16:15:27 +02:00
5b4b7473c5 residential address at user filter done 2022-08-09 16:14:41 +02:00
6010559936 translations added 2022-08-09 16:14:17 +02:00
a3cae28613 residential address at thirdparty filter : not done! 2022-08-09 16:14:01 +02:00
9a2af662c0 use translatablestringhelper 2022-08-09 16:13:24 +02:00
93d0fbead5 exports: create new indicator to count evaluations 2022-08-09 16:06:32 +02:00
72a5a6cd27 hop 2022-08-09 15:22:05 +02:00
b8bb0b1209 exports: improve translations 2022-08-09 15:11:01 +02:00
ed1dde4713 exports: share referrer aggregator 2022-08-09 11:30:42 +02:00
f817ca9671 exports: add a new intensity aggregator 2022-08-09 11:11:53 +02:00
5940e2c0b7 exports: add new Confidential and Emergency Aggregators 2022-08-08 17:39:53 +02:00
ace2cb6151 exports: add new AdministrativeLocation aggregator 2022-08-08 16:59:03 +02:00
ec7325ebbd exports: add a new ClosingMotive aggregator 2022-08-08 16:36:01 +02:00
643f37509f exports: share Scope and Job Aggregators 2022-08-08 16:12:34 +02:00
fcd7ae3b8d exports: add new aggregators for acp 2022-08-08 15:22:56 +02:00
f37e7cf393 moving files into separate folders for better overview 2022-08-04 14:49:48 +02:00
faef81a90b moving files into separate folders for better overview 2022-08-04 14:25:23 +02:00
95006b9643 exports: use Declarations for each applyOn 2022-08-04 14:12:25 +02:00
2f8bafa2e2 exports: split yaml services accompanying_period and accompanying_course
* the 3 old filters are applyOn person -> move it in PersonFilters
* there is a conditionnal option to enable them -> split yaml files
2022-08-04 12:46:06 +02:00
25e008f3e2 Merge branch '111_exports' into social_action_exports 2022-08-04 12:17:59 +02:00
43d45a5d04 tests: fix missing use statement 2022-08-04 11:30:52 +02:00
ea1a53ed37 tests: add missing FilterTest 2022-08-04 11:30:41 +02:00
28599adf48 tests on new ActiveOnDate and ActiveOneDayBetweenDates filters 2022-08-04 09:07:45 +02:00
e3743d3593 tests new filters ReferrerFilter and OpenBetweenDatesFilter (wip.. test failed) 2022-08-04 09:07:45 +02:00
2413c986ed exports: add a new GeographicUnitStat Filter (wip) 2022-08-04 09:07:45 +02:00
6921e4a40d exports: add new RequestorFilter 2022-08-03 20:13:29 +02:00
ac0c221267 start activity exports adaptations and new additions 2022-08-03 16:48:33 +02:00
32bb868b2b start with person aggregators 2022-08-03 16:21:57 +02:00
2ff346d7d8 Merge branch '111_exports' into social_action_exports 2022-08-03 15:22:32 +02:00
9e2ef9eae6 fix redundant referrerFilter 2022-08-03 15:18:22 +02:00
cfd590442f moving files into separate folders for better overview 2022-08-03 15:15:52 +02:00
cf7cf664a9 person filters added 2022-08-03 14:35:55 +02:00
ebb6ee4a41 agefilter added for persons 2022-08-02 15:07:56 +02:00
c72dc83c06 adjust countperson to make it work again 2022-08-02 13:44:28 +02:00
ea12c60154 more aggregator tests 2022-08-02 12:31:29 +02:00
40d92d11fc renaming aggregator job and scope for generic use 2022-08-02 11:30:30 +02:00
28dc99ff3f tests added for filters and some aggregators 2022-08-02 11:24:08 +02:00
20c1a287d8 merge with 111_export 2022-08-02 11:23:28 +02:00
6e439adce2 export new administrative location filter 2022-08-01 16:50:02 +02:00
4794e5e7b5 export new ActivityTypeFilter 2022-08-01 15:45:31 +02:00
bc2209319a export new EvaluationFilter 2022-08-01 14:32:11 +02:00
b511517a0f export new SocialActionFilter 2022-08-01 12:45:04 +02:00
758c56482b exports: add new ActiveOnDate filter 2022-08-01 11:30:32 +02:00
c401e34d63 exports: add new ActiveOneDayBetweenDates filter 2022-08-01 11:16:17 +02:00
7677b8aaa0 exports: add new OpenBetweenDates filter 2022-07-31 21:01:12 +02:00
dd06a262a2 remove commented unused 2022-07-31 19:22:39 +02:00
c1f578a811 exports: add new referrer filter, with mechanism to use it in acp or acpw context 2022-07-29 12:13:32 +02:00
635fe819a6 rename more generic for use in other exports 2022-07-28 15:57:02 +02:00
d59a22597d Merge branch '111_exports' into social_action_exports 2022-07-28 15:47:59 +02:00
8fdb2747ac Merge branch 'master' into social_action_exports 2022-07-28 15:45:46 +02:00
e6b66216ae actiontype, goal, and result aggregators created 2022-07-28 15:44:17 +02:00
d6b3ba48c0 fix the possibility to filter with multiple jobs or scopes 2022-07-28 12:05:42 +02:00
13b15f5057 renaming of class to avoid confusion 2022-07-28 11:24:36 +02:00
5c7513acd7 rename translations chains 2022-07-28 10:53:54 +02:00
8085fe2c17 referrer scope aggregator for social work actions 2022-07-27 21:25:13 +02:00
562a5678ef referrer job aggregator for social work actions 2022-07-27 21:19:13 +02:00
30501a68e3 referrer aggregator 2022-07-27 21:07:05 +02:00
b9186ed6e0 tests: write a simple Export test for new indicators + fix depreciation with BrowserKit client
cfr: https://symfony.com/doc/4.4/components/browser_kit.html#creating-a-client
2022-07-27 18:39:58 +02:00
5c82ccc49d user scope and job filter on socialwork actions 2022-07-27 17:08:50 +02:00
455a50d292 Merge branch 'social_action_exports' of gitlab.com:Chill-Projet/chill-bundles into social_action_exports 2022-07-27 16:05:04 +02:00
a40e2de91d rename filters to avoid confusion 2022-07-27 16:04:40 +02:00
357c7db5f1 rename filters to avoid confusion 2022-07-27 16:02:11 +02:00
ab2b2bc235 some advancements on dynamic socialaction filter 2022-07-27 15:50:56 +02:00
287d8f546b add simple test file for each new filter 2022-07-27 14:26:14 +02:00
8bbca12487 fix ProphecyTrait in AbstractFilter to use it with each filter 2022-07-27 14:23:21 +02:00
3dabd031f4 fix tests failed in exports 2022-07-27 14:23:21 +02:00
232cf96cb2 tests: write a simple Filter test for EmergencyFilter 2022-07-27 14:23:21 +02:00
cb42b68c33 filter for agents traitants 2022-07-26 15:46:16 +02:00
d5d38053cd renaming of export to avoid confusion + start of agent traitant filter 2022-07-26 14:43:21 +02:00
b12e5e78b6 reorganize into separate config file 2022-07-26 13:18:15 +02:00
a15c88dd35 merge 111 branch into this one 2022-07-26 11:57:54 +02:00
5f329101e1 title changed back to longer version 2022-07-26 11:44:20 +02:00
3a73af4fd0 Merge branch 'social_action_exports' of gitlab.com:Chill-Projet/chill-bundles into social_action_exports 2022-07-26 11:42:29 +02:00
9798cb8a09 due to excel limit, title can not exceed 31 characters 2022-07-26 11:41:16 +02:00
5ba8c4babc fixes to make count social actions export work 2022-07-26 11:22:17 +02:00
a06a2c9592 start of social actions export 2022-07-26 10:41:24 +02:00
ef827a1322 revert stepFilter to uniq selection
(cfr ddac410b2e)
2022-07-25 18:24:24 +02:00
e728c00671 exports: create intensity filter 2022-07-25 16:51:58 +02:00
da224ea4bc exports: create emergency filter 2022-07-25 16:35:36 +02:00
ddac410b2e exports: fix choice forms builder with multiple selections 2022-07-25 16:20:14 +02:00
43bedc41a7 exports: create confidential filter 2022-07-25 15:42:51 +02:00
ef5b3b24e4 exports: create closingmotive filter 2022-07-25 14:47:08 +02:00
057617c1cb separate accompanying_period exports in yaml service definition 2022-07-25 14:04:23 +02:00
e56520f4b1 exports: create origin filter 2022-07-25 12:36:22 +02:00
04ca61be81 rename data attribute 2022-07-25 12:35:35 +02:00
bf0ca7b777 exports: fix logic in userScope and userJob filter 2022-07-25 11:51:23 +02:00
fdd83de233 Merge branch '605_load-bootstrap' into 'master'
issue 605: improve the way chill loads bootstrap module

See merge request Chill-Projet/chill-bundles!446
2022-07-25 08:27:16 +00:00
97e8b3c9c1 fix yarn/webpack error when compiling
(correction on commit 340310be62)
2022-07-25 09:56:15 +02:00
5744a68f5f issue 605: remove old scratch sass framework 2022-07-22 14:13:16 +02:00
ddd0aeb7b4 issue 605: improve the way chill loads bootstrap module
custom variables are loaded before bootstrap variables, custom maps are loaded after
2022-07-22 14:08:43 +02:00
d5d3866122 fix conflict with where clause in indicator ; initiate a filter test 2022-07-20 23:17:05 +02:00
0d38d4df40 social issues filter: improve render with parents, add parents in where clause 2022-07-20 19:33:42 +02:00
bb22317eb1 exports: add new social issues filter (wip) 2022-07-20 16:38:46 +02:00
b608976326 exports: add new step filter 2022-07-20 13:47:15 +02:00
7f1dadc136 user scope/job filters: improve translation in csv 2022-07-20 11:24:13 +02:00
ff8a32a321 user scope filter: change query (TO CHECK) 2022-07-20 11:23:03 +02:00
d7c1498882 english corrected 2022-07-19 14:20:38 +00:00
70f118011b exports: add a new user job filter 2022-07-19 15:04:57 +02:00
da556248d4 Merge branch 'master' of gitlab.com:Chill-Projet/chill-bundles 2022-07-19 13:05:58 +02:00
881e608c87 exports: add a new user scope filter 2022-07-18 18:45:02 +02:00
80df7b2f72 update changelog 2022-07-18 16:37:34 +02:00
e6caeecc50 add composition type to admin menu 2022-07-18 16:36:13 +02:00
juminet
8651d3232a Merge branch 'issue612_add_field_accperiodresource_doc_gen' into 'master'
Issue612 add field accperiodresource doc gen

See merge request Chill-Projet/chill-bundles!445
2022-07-18 13:43:43 +00:00
nobohan
d55ba36619 [person] add comment field to accompanying period resource docgen 2022-07-18 15:39:00 +02:00
99154eaa99 changelog updated 2022-07-18 14:42:41 +02:00
b28677fac9 delete quitter et repositionner buttons from enfant hors menage 2022-07-18 14:39:24 +02:00
34923df43c exports avg_accompanying_course_duration with closingdate parameter 2022-07-18 14:38:48 +02:00
903ac2ff69 exports: init sum_accompanying_course_duration (replace list_accompanying_course) 2022-07-14 14:42:53 +02:00
3d0dd46ea5 fix count_accompanying_course query: no centers, not count DRAFT courses 2022-07-14 14:27:55 +02:00
e323937405 Temporarily disable ACL on new exports 2022-07-14 10:26:26 +02:00
2f42b9411a which acl is CONFIDENTIAL_CRUD ? 2022-07-13 14:19:12 +02:00
fe595860f2 replace 'hideLabel' form option by 'fullWidth'
sometimes we want fullWidth and display label
2022-07-13 13:36:20 +02:00
bda203d11d add accompanying courses exports in a group 2022-07-13 10:41:30 +02:00
3cdcccc037 add activity exports in a group 2022-07-13 10:32:27 +02:00
2ce145cace wip.. setting acl for new accompanying course exports 2022-07-13 10:14:54 +02:00
ec38dc4d21 add person exports in a group 2022-07-13 10:14:54 +02:00
85796c2271 CS 2022-07-12 18:16:04 +02:00
83ee3c7cfd fixed: add required type-hinting to AccompanyingPeriodComment, necessary
for docgen rendering
2022-07-12 18:15:16 +02:00
8809abedf6 fixed: rendering of course in list of courses by household 2022-07-12 18:14:25 +02:00
28ed09b9d9 exports: add 2 new exports for accompanying courses 2022-07-12 15:18:37 +02:00
56bed12886 exports: fix errors and depreciations 2022-07-12 14:19:50 +02:00
e9fca1288a exports: fix errors and depreciations 2022-07-12 13:07:48 +02:00
9fa3d596bb split title and description for list activity export 2022-07-12 13:06:29 +02:00
5896a77ae9 Fixed: use CenterResolver where cases when center is resolved differently 2022-07-12 11:10:18 +02:00
11d1b26efc fixed: unable to create a course (due to method change in activity entity) 2022-07-12 10:44:40 +02:00
5f6c11bde9 Feature: show comment in #docgen generation for accompanying periods 2022-07-11 19:56:59 +02:00
b3da9611ce Fixed: do not show postal code created by users in the list of postal codes 2022-07-11 19:37:32 +02:00
ba8a80a202 Fixed: test for userjob associated to course in Regulation list 2022-07-11 19:32:19 +02:00
6998043159 Fixed: do not allow to create activities when no rights to do it
The ACTIVITY_FULL role does not give anymore the roles
CHILL_ACTIVITY_CREATE_PERSON and CHILL_ACTIVITY_CREATE_ACCOMPANYING_COURSE.

Tags: #BC
2022-07-11 19:31:24 +02:00
ce17c15d41 fixed: ACL in activity creations and edition 2022-07-11 18:24:48 +02:00
93560a62ef Feature: an activity has the same scope as an accompanying period, if it exists 2022-07-11 17:36:59 +02:00
3785e5096e Merge branch 'master' into fix_activity_rights 2022-07-11 17:17:35 +02:00
3748eb99c6 Fixed: add an exclude constraint to ensure on db side that there is only one step waiting for a transition 2022-07-11 17:10:40 +02:00
c69af351cc fixed: do not show disabled jobs in list of jobs from the api 2022-07-11 16:20:48 +02:00
692c2bdac0 fixed: do not show disabled users in list of users from the api 2022-07-11 16:11:45 +02:00
6bcc28b4bb feature: hide course when the period is not active for the user, in search results and list of periods for a person 2022-07-11 15:57:38 +02:00
a79a2b6ee9 fixed: warning message "usagers du parcours" does show only for current
members for a course
2022-07-11 15:26:04 +02:00
09b2c9a14e fixed: do not show same person twice if persons are members simultaneously 2022-07-11 15:11:35 +02:00
4ef48216ed fixed: do not allow to create a course or see a houshold from the search result, if the user does not have any rights to do it 2022-07-11 13:54:12 +02:00
16fed67dd0 fixed: do not allow to edit a course through the "warning" button on the course's index page 2022-07-11 13:45:52 +02:00
87a9d48bdf feature: allow to not check mainPerson, person1 or person2 when generating a document 2022-07-11 13:39:07 +02:00
f3ca01fd88 cs: fix 2022-07-11 13:34:10 +02:00
5962d3f233 fixed: query for index in PersonDocumentACLAwareRepository 2022-07-11 12:57:21 +02:00
ab08dab88a fixed: voter and permissions in accompanying course document 2022-07-11 12:57:08 +02:00
ef9a155cc1 bootstrap styles in export section 2022-07-11 11:09:46 +02:00
3bb8b713d1 fixed: migration of databse with address on same day fails 2022-07-11 03:32:43 +02:00
94c258e914 fixed: narrow search on postal code with an 'AND' clause instead of 'OR' clause 2022-07-10 22:00:04 +02:00
1d8f25e2c8 use the date parameter in deprecated method getLastAddress 2022-07-08 15:04:06 +02:00
b4b67c6f0d Merge branch 'event_bundle_sf4' into 'master'
Event bundle sf4

See merge request Chill-Projet/chill-bundles!439
2022-07-08 10:21:31 +00:00
340310be62 bootstrap styles in export section 2022-07-07 16:08:34 +02:00
nobohan
9978e76a87 fix activity rights (WIP) 2022-07-07 15:25:17 +02:00
7b64269bb5 fix show/hide in exports filter + better styles 2022-07-07 15:20:50 +02:00
nobohan
36e35f2e8f [event] refactor admin for event bundle 2022-07-06 13:36:20 +02:00
989c4e90e5 enable show_hide on export pages 2022-07-05 16:39:48 +02:00
fcac977d13 existing exports, better translations 2022-07-05 15:46:43 +02:00
2b5accaeac override export activity translations 2022-07-05 13:42:32 +02:00
nobohan
389f014d36 [event] fix deprecation (typing) 2022-07-05 10:18:07 +02:00
135b385c11 fix rust indent 2022-07-04 17:29:45 +02:00
nobohan
3cf8609e8f [event] fix deprecation (type missing) 2022-07-04 17:20:03 +02:00
c82e128c5c Merge branch 'master' of gitlab.com:Chill-Projet/chill-bundles 2022-07-04 16:32:20 +02:00
3ddab4f6e2 documente un souci avec docker lors de l'installation de chill 2022-07-04 16:32:12 +02:00
nobohan
31e1bfdf80 export: cast role as string in PickCenterType 2022-07-04 16:19:03 +02:00
nobohan
c76f2a81c9 [main] cast uniqid arg to string in ExportController 2022-06-30 07:37:27 +02:00
nobohan
f48e197e0b [main] fix deprecations for Export/PickCenterType 2022-06-30 07:29:33 +02:00
nobohan
f70e3b7997 quick fix: use Scope class instead of classname 2022-06-29 15:05:59 +02:00
66baf0391c Revert "only prefill agents traitants of action if parcours has a referrer, otherwise null"
This reverts commit 0943366d39.
2022-06-28 00:01:31 +02:00
4f81bffa67 add a test for relocking an existing lock 2022-06-27 23:57:42 +02:00
5432ce2b0f some fixes with wopi 2022-06-27 23:51:07 +02:00
03bc94178f re-implements document lock manager for wopi 2022-06-27 22:44:10 +02:00
bf536aab38 Merge branch 'translations_dutch' into 'master'
Dutch translations

See merge request Chill-Projet/chill-bundles!403
2022-06-24 15:59:10 +00:00
df593c7c7f Dutch translations 2022-06-24 15:59:10 +00:00
nobohan
07f4aaa590 quick fix: address: only add coordinates to selected postcode if coordinates exist 2022-06-23 15:46:17 +02:00
10095343ec handle lastUpdateTime for Wopi implementation
* get the last updated time from the stored object's storage
* improve perf on loading content from stored object's storage: keep the
response in cache
2022-06-20 21:22:02 +02:00
1742dd4951 add return path after changing location, and select2 on picking user location 2022-06-17 13:34:05 +02:00
832da83b27 fix tests for person controller update 2022-06-16 21:35:05 +02:00
0cfad13720 fix normalization for null accompanying period docgen 2022-06-16 21:30:46 +02:00
dfb583fa8b fix cs 2022-06-16 15:37:59 +02:00
da9eba2618 add regulation list and basic regulation list query 2022-06-16 15:37:51 +02:00
8982697a73 add missing translation message 2022-06-15 17:46:28 +02:00
1bd00c3f4c fix editing thirdparty without date 2022-06-15 17:46:28 +02:00
7ac54a6c9f Merge branch 'master' of gitlab.com:Chill-Projet/chill-bundles 2022-06-15 16:06:15 +02:00
ccaf430b37 remove border from address 2022-06-15 16:06:06 +02:00
72ce5c716d remove border from address 2022-06-15 16:02:37 +02:00
86afe2f702 fix condition 2022-06-15 15:58:53 +02:00
f297548a3a adjust styling of address + button 2022-06-15 15:46:24 +02:00
d20d38e5f4 change icon house to map marker 2022-06-15 12:35:20 +02:00
3735f24e10 Merge branch 'master' of gitlab.com:Chill-Projet/chill-bundles 2022-06-15 12:26:22 +02:00
4b5cdd471b fix showPane component for editing address 2022-06-15 11:55:49 +02:00
f339cf56d6 notify the referrer from an activity page or list 2022-06-14 21:24:50 +02:00
4592be3a8d improve syntax for the js fix 2022-06-14 21:24:50 +02:00
4e1d7278c6 change translation in twig template for creation of household in user create form 2022-06-14 17:33:12 +02:00
a26346859c change translation to add household for new user 2022-06-14 17:21:57 +02:00
a48b990c73 condition correction to fix display of addAddress btn in parcours and household tunnel 2022-06-14 17:15:33 +02:00
0943366d39 only prefill agents traitants of action if parcours has a referrer, otherwise null 2022-06-13 17:59:29 +02:00
4719a74307 constraint added to workflow transtion - cannot be null 2022-06-13 17:40:01 +02:00
72167b9e77 fix merge conflict 2022-06-13 16:38:37 +02:00
c14ae98130 fix merge conflict 2022-06-13 16:36:09 +02:00
83b928b0b0 fix merge conflict 2022-06-13 16:35:04 +02:00
f0187536c1 visual changes when option 'create household' is checked in user create form 2022-06-13 16:33:56 +02:00
fec27babbe visual changes when option 'create household' is checked in user create form 2022-06-13 15:35:35 +02:00
ceb0f741ef order of birthdate fields changed in advanced search 2022-06-13 15:05:18 +02:00
149d4c3846 changelog updated 2022-06-13 09:46:45 +02:00
9a29532362 fix bux to quickly add names that exist of multiple parts to the namefield of a person or thirdparty 2022-06-09 18:31:38 +02:00
d9dfe75378 minor layout improvement show parcours btn in task 2022-06-01 15:43:01 +02:00
8d70562132 null error in task widget on homepage fixed 2022-06-01 11:37:29 +02:00
83de518b45 update changelog 2022-06-01 11:08:20 +02:00
21bc472886 Merge branch 'master' of gitlab.com:chill-projet/chill-bundles 2022-06-01 11:05:17 +02:00
75490306a2 add pagination on workflow list page 2022-06-01 11:04:23 +02:00
f92cef02cf fix creating a new AccompanyingPeriodWorkEvaluationDocument when replacing the document (the workflow was lost) 2022-05-30 22:43:50 +02:00
a4e3ffbe27 fix cs 2022-05-30 22:41:47 +02:00
0849b2d5f4 docgen: fix title of origin 2022-05-30 21:16:40 +02:00
679d19e2a1 allow null values for private comment 2022-05-30 10:01:27 +02:00
7fb0e44307 fix null value for calendar in private comments 2022-05-28 01:45:11 +02:00
1496ae34f8 preload course json for a faster display 2022-05-28 00:07:11 +02:00
b9c1dbd8c1 require weblink 2022-05-27 23:27:22 +02:00
bc288a2161 feature: add a link to create a notification to the referrer 2022-05-27 23:24:54 +02:00
c41ee1d9de add pagination on notification list 2022-05-27 22:47:32 +02:00
3ceda28994 Merge branch 'issue604_activity_list_documents' into 'master'
Issue604 activity list documents

See merge request Chill-Projet/chill-bundles!436
2022-05-27 20:35:03 +00:00
5d13a587df fix cs 2022-05-27 22:34:13 +02:00
d49859e474 change order for title in stored object 2022-05-27 22:32:06 +02:00
c9ea9112f1 do not add private comment into generated documents 2022-05-27 22:24:25 +02:00
3274ecfaec Merge remote-tracking branch 'origin/master' into issue604_activity_list_documents 2022-05-27 22:03:41 +02:00
dba4cfbb2d Merge branch 'issue603_add_closing_motive_course' into 'master'
person: add closing motive to closed acc course

See merge request Chill-Projet/chill-bundles!435
2022-05-27 20:00:58 +00:00
e6da1be5f5 Merge remote-tracking branch 'origin/master' into issue603_add_closing_motive_course 2022-05-27 21:57:19 +02:00
cb1108a25e Merge branch 'issue586_filiations' into 'master'
household filiations issues

See merge request Chill-Projet/chill-bundles!433
2022-05-27 19:51:20 +00:00
3efb4a4a5e Merge remote-tracking branch 'origin/master' into issue586_filiations 2022-05-27 21:49:21 +02:00
9511d6eaee Merge branch 'issue601_admin_social_work_social_action' into 'master'
admin: repair social action edit

See merge request Chill-Projet/chill-bundles!434
2022-05-27 14:42:03 +00:00
d4aba04a52 do not show action when editing goals 2022-05-27 16:41:38 +02:00
71a92a8b6b Merge remote-tracking branch 'origin/master' into issue601_admin_social_work_social_action 2022-05-27 16:37:03 +02:00
2cabe80bf6 Merge branch 'issue577_user_admin' into 'master'
main admin

See merge request Chill-Projet/chill-bundles!432
2022-05-27 14:35:59 +00:00
9680f7c01e remove deprecated notation for getting entity 2022-05-27 16:34:30 +02:00
3c8b2207c4 add civility in user docgen normalizer 2022-05-27 16:34:14 +02:00
7278a5f3fa fix strict typing and do not show link to edit password in user list 2022-05-27 16:24:55 +02:00
566c1c5380 Merge remote-tracking branch 'origin/master' into issue577_user_admin 2022-05-27 16:05:49 +02:00
af7df7029b Merge branch 'issue578_display_userjob' into 'master'
Issue578 display userjob

See merge request Chill-Projet/chill-bundles!430
2022-05-27 14:04:09 +00:00
4d0717690b Merge remote-tracking branch 'origin/master' into issue578_display_userjob 2022-05-27 16:00:16 +02:00
96a0b76e85 Merge branch 'issue589_private_comments' into 'master'
Issue589 private comments

See merge request Chill-Projet/chill-bundles!418
2022-05-27 13:59:19 +00:00
f3800ff38f fix issue with null comment and set correct variable name in signature 2022-05-27 15:58:51 +02:00
5e5a855578 fix cs 2022-05-27 15:48:50 +02:00
54a3e2b2ef Merge remote-tracking branch 'origin/master' into issue589_private_comments 2022-05-27 15:47:25 +02:00
014c460eef improvements on private comments 2022-05-27 15:40:08 +02:00
01f1605cb8 change indent of js files 2022-05-27 14:30:05 +02:00
nobohan
0a4ef3ad22 php code style + upd CHANGELOG 2022-05-27 09:39:36 +02:00
nobohan
dbdf435721 docstore: safer display of form.title 2022-05-27 09:39:13 +02:00
nobohan
cdbb70b9c5 activity: add title to generated document 2022-05-27 09:32:51 +02:00
nobohan
60c163ae9d storedObject: add title in form twig and in activity show 2022-05-25 17:30:26 +02:00
nobohan
e8cf7ae8e1 stored object: add has_title option to form type of StoredObject 2022-05-25 17:14:21 +02:00
nobohan
dea554ced4 storedObject: add title field on StoredObject entity 2022-05-25 16:32:52 +02:00
nobohan
5948ac5b2a [main] add a 'read more...' on comment embeddable when overflown 2022-05-25 14:18:38 +02:00
nobohan
af898cbd12 person: add closing motive to closed acc course 2022-05-25 13:27:29 +02:00
nobohan
8863157fc9 upd CHANGELOG 2022-05-25 11:47:02 +02:00
nobohan
2ac78a12db admin: fix adding of evaluation to social action 2022-05-25 11:46:03 +02:00
nobohan
bc410b02e7 admin: do not use disabled for form widget with collections, see https://github.com/symfony/symfony/issues/18998 2022-05-25 11:45:25 +02:00
nobohan
5ebaeeb4ba php cs fix 2022-05-25 10:38:09 +02:00
nobohan
4402d52de7 upd CHANGELOG 2022-05-25 10:35:15 +02:00
nobohan
d6f1aa53dc [admin]: add select2 to Goal form type entity fields 2022-05-25 10:34:24 +02:00
nobohan
da2c88c026 [admin] show/hide the user permissions group depending on config 2022-05-25 10:12:07 +02:00
nobohan
a4210dd2c7 [main] allow hide permissions group list menu 2022-05-18 09:30:47 +02:00
nobohan
d8db8c0f8e upd CHANGELOG 2022-05-17 17:46:01 +02:00
nobohan
b13ac3a919 household filiations: fetch person info when unfolding person node 2022-05-17 17:24:17 +02:00
354c37ade2 fix issue when loading category 2022-05-16 15:33:02 +02:00
nobohan
cecfa1a18a main: allow creation of user without password 2022-05-16 14:07:34 +02:00
nobohan
f77031630f [main] allow hide change user password menu 2022-05-16 13:52:55 +02:00
nobohan
8eef073988 [main] filter user jobs by active jobs 2022-05-16 11:49:36 +02:00
nobohan
380c55698c main: add civility to User 2022-05-16 11:28:37 +02:00
9dd463882c fix dfault in db for user::attributes 2022-05-13 17:23:10 +02:00
6edc9b25db Merge branch 'issue596_admin_user' into 'master'
Admin interface

See merge request Chill-Projet/chill-bundles!429
2022-05-13 14:13:09 +00:00
bb18082c3a fix type hinting 2022-05-13 16:07:33 +02:00
89a700ff61 fix cs 2022-05-13 16:05:38 +02:00
2a5bb28210 fix typo in tests 2022-05-13 16:05:08 +02:00
aec01df202 admin users: filter by name or email 2022-05-13 16:00:34 +02:00
a9df9f4880 add ordering on some social work + minor improves 2022-05-13 15:36:20 +02:00
b26fcc4566 Merge remote-tracking branch 'origin/master' into issue596_admin_user 2022-05-13 15:08:49 +02:00
9970212075 Merge branch 'issue576_address_show_more_if_no_address' into 'master'
addAddress: can add extra info even if noAddress

See merge request Chill-Projet/chill-bundles!423
2022-05-13 13:06:51 +00:00
fd935795e5 Merge remote-tracking branch 'origin/master' into issue576_address_show_more_if_no_address 2022-05-13 15:06:11 +02:00
52dd08e088 add default attributes for user 2022-05-13 14:51:02 +02:00
3fb3df9db1 remove not necessary debug log 2022-05-11 19:40:28 +02:00
b98f4e2d76 fix construction of BadRequestHttpException 2022-05-11 19:39:36 +02:00
58fce9999d OnTheFly: do not show 'create adress and household' on edit action 2022-05-11 19:29:12 +02:00
49b1ca13f2 OnTheFly: fix error when updating person without changing civility 2022-05-11 19:25:07 +02:00
nobohan
6481f6a4c1 quick fix: safer way to add civility to body before PATCHing (AddPerson) 2022-05-11 17:04:17 +02:00
nobohan
05088b5964 upd CHANGELOG 2022-05-11 12:14:46 +02:00
nobohan
f44b9ca05b admin: fix error when creating document category 2022-05-11 12:03:38 +02:00
nobohan
fa458c54ec admin: adapt social work form type and templates 2022-05-11 11:50:17 +02:00
nobohan
629dbb9137 admin: missing translations and css class 2022-05-11 11:30:08 +02:00
nobohan
97fd9c557c admin: tentative to add filterOrder (cleaning) 2022-05-11 10:06:44 +02:00
nobohan
f449dcbda1 admin: refine social work admin form 2022-05-10 18:06:29 +02:00
nobohan
b7ed658f96 admin: fix new document category 2022-05-10 17:01:09 +02:00
nobohan
f4652adbc2 admin: add fa icons to menu section title 2022-05-10 15:21:29 +02:00
nobohan
fde1d563c2 admin custom fields integration 2022-05-10 14:36:10 +02:00
nobohan
cb1bbe940f admin: docgen admin 2022-05-10 13:55:33 +02:00
nobohan
be27df1fd5 admin: remove obsolet header => true tag + php code fix 2022-05-10 11:46:17 +02:00
nobohan
0e8b73638f admin for aside activity 2022-05-10 10:40:06 +02:00
nobohan
c9b3bab508 admin sections for main bundle 2022-05-10 10:14:30 +02:00
nobohan
0f735c5749 admin sections for person bundle 2022-05-10 08:44:29 +02:00
nobohan
1a764025e1 admin: admin section for thirdparty 2022-05-09 17:14:25 +02:00
nobohan
1c04a873c0 admin: admin section for docstore 2022-05-09 17:07:36 +02:00
nobohan
3f399296c8 admin: admin section for calendar 2022-05-09 16:53:22 +02:00
nobohan
fd67f327ae admin menu: simplify header style 2022-05-09 16:30:20 +02:00
nobohan
0f319a1003 admin: reorganising activity menu and submenus 2022-05-09 16:22:17 +02:00
nobohan
63bfd25acb admin: homepage + style menu 2022-05-09 15:14:37 +02:00
6453de32ec fix typo 2022-05-06 17:29:03 +02:00
3a115744fe add index to search postal code by reference 2022-05-06 17:14:21 +02:00
nobohan
24794c1285 admin: document category menu 2022-05-06 16:28:37 +02:00
nobohan
7cefce8305 admin: add ThirdParty admin 2022-05-06 15:51:29 +02:00
66c7504b22 Merge branch 'issue520_reference_address_update' into 'master'
Add new fields to AddressReference for update procedure

See merge request Chill-Projet/chill-bundles!395
2022-05-06 13:32:29 +00:00
nobohan
a4f2d47c46 admin: add CancelReason admin 2022-05-06 15:25:49 +02:00
31d076d49b fix search on address: do not take deleted one into account 2022-05-06 15:22:10 +02:00
189974d5e4 Merge remote-tracking branch 'origin/master' into issue520_reference_address_update 2022-05-06 14:47:15 +02:00
f55c06d5c5 Merge branch 'issue557_address_civility_in_form_person' into 'master'
Issue557 address and civility in form person

See merge request Chill-Projet/chill-bundles!410
2022-05-06 11:01:20 +00:00
6c246a0d38 allow to edit civility in onTheFly 2022-05-06 12:54:01 +02:00
6abbf9bf21 improves create a person with address
* validation: must have an address when 'create a form' is checked;
* minor improvements
2022-05-06 11:47:33 +02:00
64432bb08a Merge remote-tracking branch 'origin/master' into issue557_address_civility_in_form_person 2022-05-06 10:21:13 +02:00
nobohan
7907e4a050 admin: add household position and relation admin 2022-05-05 18:31:08 +02:00
nobohan
9ce7f10415 admin: add personresourcekind in the admin 2022-05-05 15:20:47 +02:00
nobohan
2fbdd169df admin: add AccompanyingPeriod Origin and closingMotive 2022-05-05 14:37:56 +02:00
nobohan
5daf09334b admin: admin section for social work related entities: SocialIssue, SocialAction, Goal, Result, Evaluation 2022-05-05 12:07:45 +02:00
nobohan
10aa727fb3 admin: reorganise person admin menu + fix marital status admin 2022-05-05 10:39:20 +02:00
nobohan
475e8adedc admin: merge admin user job 2022-05-05 10:20:04 +02:00
nobohan
54ced6ec3d admin: merge admin activity 2022-05-05 10:18:11 +02:00
nobohan
47f47ac017 admin: delete obsolet country controller 2022-05-05 10:11:12 +02:00
nobohan
ba495def7e admin: refactor templates and delete some show pages for Center, Scope, User, UserJob, PermissionsGroup 2022-05-05 09:47:17 +02:00
nobohan
b09d92eae8 admin: reorganise files according to conventions 2022-05-05 08:03:20 +02:00
nobohan
ab90f72c7e update conventions 2022-05-05 07:13:53 +02:00
nobohan
16d74eaa0c admin: reorganize twig templates and admin menu 2022-05-04 17:34:44 +02:00
10d0078716 add changelog 2022-05-04 15:16:13 +02:00
6567143ff5 update job if users assigns him/herself as referrer and job is not null 2022-05-04 15:14:17 +02:00
nobohan
e50e68a52b admin: add missing data_class option to form types 2022-05-04 14:09:10 +02:00
e19cac168b php csfixes 2022-05-04 13:00:46 +02:00
416a88b93d fix form and take null cases into account 2022-05-04 12:30:44 +02:00
784a725ce3 fix translation 2022-05-04 09:34:16 +02:00
2ef3a3362a merge master into branch 2022-05-04 09:31:22 +02:00
nobohan
3f256ad907 admin: update marital status 2022-05-03 19:03:58 +02:00
nobohan
76af733bc3 admin: add civility 2022-05-03 18:33:56 +02:00
nobohan
9808675455 upd CHANGELOG 2022-05-03 09:28:33 +02:00
nobohan
04f27cc555 admin: add menu for languages and countries section 2022-05-03 09:27:04 +02:00
a3c3834081 Merge branch 'issue534_bulk_reassign' into 'master'
Bulk reassign parcours

See merge request Chill-Projet/chill-bundles!398
2022-05-02 14:53:32 +00:00
nobohan
4c99abd6d3 Admin: Add country and languages to the admin 2022-05-02 16:51:41 +02:00
0e0e0799d1 translation added 2022-05-02 16:51:14 +02:00
02a8f5a863 Fix display privateComment in activity 2022-05-02 16:50:24 +02:00
ae624d25fc fix display of privateComment for action 2022-05-02 16:49:32 +02:00
14341b9768 fix cs 2022-05-02 16:44:26 +02:00
ee14cd268b add role to get acl on confidential periods 2022-05-02 16:44:02 +02:00
3122098447 remove privateCommentRender 2022-05-02 16:29:47 +02:00
065b10b877 fix somes validation and acompanying period voter 2022-05-02 16:22:25 +02:00
8113fddcb2 use pick dynamic user type for reassigning + layout stuffs 2022-05-02 15:37:23 +02:00
1b6e84262b add translation 2022-05-02 15:27:44 +02:00
acee0ade24 add merge method 2022-05-02 14:01:41 +02:00
c629dd79cb fix serialization - deserialization 2022-05-02 14:01:07 +02:00
0ec859e345 remove isset test on variable which always exists 2022-05-02 12:30:16 +02:00
eb2bc306f7 prevent duplicates in relationships data fixtures 2022-05-02 12:22:34 +02:00
nobohan
64d459466f activity admin: translations + remove label field for comment on admin activity type 2022-05-02 12:16:46 +02:00
372ec7c4b2 Merge remote-tracking branch 'origin/master' into issue534_bulk_reassign 2022-05-02 11:29:55 +02:00
f917be0958 type hinting param for psalm 2022-04-30 02:12:29 +02:00
6fd0ff7960 remove unusedfile 2022-04-30 02:12:15 +02:00
45d2e0c9cd Merge branch 'undeprecate/repository-by-fqdn-only' into 'master'
replace some entity shortcut by fqdn

See merge request Chill-Projet/chill-bundles!426
2022-04-30 00:07:49 +00:00
da3236425e rename namespace for family members bundle 2022-04-30 01:58:38 +02:00
79ac908631 remove a new set of unused files 2022-04-30 01:50:29 +02:00
8ba7a39335 fix conflicting doc between class Resource and resource 2022-04-30 01:46:14 +02:00
304c734f9b delete unused test fixtures app 2022-04-30 01:44:53 +02:00
dae383dbd9 fix some psalm errors 2022-04-30 01:34:23 +02:00
3f63bc803d desactivate test whilpage is not working 2022-04-30 01:03:35 +02:00
472bc3f35d add missing keys to blank docgen person normalization 2022-04-30 00:55:40 +02:00
27e74014ce replace fqdn in docstore bundle 2022-04-30 00:48:38 +02:00
f26d50a3a8 replace fqdn in customfields bundle 2022-04-30 00:46:48 +02:00
6da19b0135 replace fqdn in event bundle 2022-04-30 00:42:03 +02:00
d0cc0e775f replace fqdn in calendar bundle 2022-04-30 00:39:17 +02:00
4b9b27a8ef replace docrine shortcuts in activity bundle by fqdn 2022-04-30 00:37:26 +02:00
864e1eeabb replace more doctrine shortcuts by fqdn 2022-04-30 00:35:11 +02:00
a0392b9216 replace some entity shortcut by fqdn
* ChillPerson:Person
* ChillMain:Center
* ChillActivity:Activity
2022-04-30 00:20:18 +02:00
8ba51bafd0 fix loading report: use FQDN instead of entity shortcut 2022-04-30 00:06:58 +02:00
afdc32d416 fix loading report: use FQDN instead of entity shortcut 2022-04-30 00:00:52 +02:00
nobohan
de362dcad7 upd CHANGELOG 2022-04-29 22:04:36 +02:00
nobohan
2263e7be73 admin: order user job by id 2022-04-29 22:02:19 +02:00
nobohan
8d62ce46c6 admin: order user job type 2022-04-29 21:44:02 +02:00
nobohan
fabf23f1f0 admin: add custom template for userjob edit 2022-04-29 21:21:09 +02:00
nobohan
192ab02be2 upd CHANGELOG 2022-04-29 20:02:26 +02:00
nobohan
62d59e6037 address: show address extra info even if noAddress 2022-04-29 20:00:11 +02:00
nobohan
83a888a32d addAddress: can add extra info even if noAddress 2022-04-29 19:44:06 +02:00
e1fe2a396f Merge branch 'issue582_docgen_person' into 'master'
[person] more fields to PersonDocGenNormalizer

See merge request Chill-Projet/chill-bundles!422
2022-04-29 15:12:50 +00:00
99413cf328 fix cs 2022-04-29 17:04:55 +02:00
fedcf7272c Merge remote-tracking branch 'origin/master' into issue582_docgen_person 2022-04-29 16:59:19 +02:00
df4abd6661 Merge branch 'issue569_display_time' into 'master'
Display time for evaluation documents

See merge request Chill-Projet/chill-bundles!421
2022-04-29 14:56:37 +00:00
ad96319d97 use traits to handle createdAt/updatedAt and by on AccompanyingCourseEvaluationDocument 2022-04-29 16:53:17 +02:00
fcbf62f613 fix cs 2022-04-29 16:41:13 +02:00
cc139782b1 Merge remote-tracking branch 'origin/master' into issue569_display_time 2022-04-29 16:28:29 +02:00
770010ceb8 Add command to remove old draft accompanying periods 2022-04-29 15:51:54 +02:00
1e06926f6d Load relationships without gender in french fixtures 2022-04-29 14:11:32 +02:00
ed35822eb5 changelog: release 2022-04-29 14:10:41 +02:00
nobohan
671950708c [person] prevent circular references in PersonDocGenNormalizer 2022-04-29 10:54:56 +02:00
7a96671f35 Merge branch 'issue593_bug_addAddress' into 'master'
address: fix bug when editing address: update localisation and...

See merge request Chill-Projet/chill-bundles!419
2022-04-28 16:05:01 +00:00
6daee268bf Merge remote-tracking branch 'origin/master' into issue593_bug_addAddress 2022-04-28 17:46:42 +02:00
nobohan
4675525225 [person] add maritalStatusComment to PersonDocGenNormalizer 2022-04-28 17:34:53 +02:00
86a7bb5880 Merge branch 'issue566_commentaire_fonctionnalites' into 'master'
Issue566 commentaire fonctionnalites

See merge request Chill-Projet/chill-bundles!416
2022-04-28 15:33:06 +00:00
6eaa553d77 Merge remote-tracking branch 'origin/master' into issue566_commentaire_fonctionnalites 2022-04-28 17:13:54 +02:00
daa09e2df3 update changelog 2022-04-27 17:15:04 +02:00
09aa7ff631 change date to datetime for evaluation document 2022-04-27 17:13:38 +02:00
a28ac8f28c Merge branch 'issue561_avoid_search_address_with_undefined_city' into 'master'
avoid address reference search on undefined post code

See merge request Chill-Projet/chill-bundles!407
2022-04-27 13:30:34 +00:00
ea6a9b3e2d Merge remote-tracking branch 'origin/master' into issue561_avoid_search_address_with_undefined_city 2022-04-27 15:30:12 +02:00
a8527b6cbb Merge branch 'issue560_relationship_validation' into 'master'
person: add validation to relationship to avoid duplicate

See merge request Chill-Projet/chill-bundles!415
2022-04-27 13:28:21 +00:00
ad9ac8ec0a Merge remote-tracking branch 'origin/master' into issue560_relationship_validation 2022-04-27 15:00:02 +02:00
44f9601759 Merge branch 'fixes/fixes-phpstan-2022-04-27' into 'master'
Fixes/fixes phpstan 2022 04 27

See merge request Chill-Projet/chill-bundles!420
2022-04-27 12:53:31 +00:00
9244040d7b csfixes 2022-04-27 14:51:37 +02:00
467ae5f474 master merged into branch 2022-04-27 14:50:37 +02:00
aa356185a5 Merge remote-tracking branch 'origin/master' into issue561_avoid_search_address_with_undefined_city 2022-04-27 14:50:24 +02:00
9789c79402 use strict type comparison and replace use of BadRequestException by BadRequestHttpException 2022-04-27 14:46:43 +02:00
fa7850196f force using strict type on comparison 2022-04-27 14:46:08 +02:00
4794039250 declare properties used for cache 2022-04-27 14:45:42 +02:00
916e3ab02d ignore phpcs cache for phpstan 2022-04-27 14:31:59 +02:00
48daed26f9 replace BadRequestException by BadRequestHttpException 2022-04-27 14:31:39 +02:00
c56a125a78 privateComment for action (not working yet) 2022-04-27 11:52:01 +02:00
4dc56db018 show of activity adjusted for private comment 2022-04-27 11:51:32 +02:00
e878960da9 Private comment adjusted for rendez-vous 2022-04-27 11:51:18 +02:00
b2003c74a6 renderbox for private comments (not working yet) 2022-04-27 11:50:53 +02:00
27ce146aa0 Serializer made for privateComment 2022-04-27 11:50:32 +02:00
3ed2b36057 privateCommentType adjusted 2022-04-27 11:50:14 +02:00
e8dcb45abb remove dump 2022-04-27 11:49:31 +02:00
nobohan
6662e0fb5f upd CHANGELOG 2022-04-27 10:40:11 +02:00
nobohan
76549581e6 address: fix bug when editing address: update localisation and addressreferenceId + better update of the map in edition 2022-04-27 10:38:25 +02:00
f14c915502 Merge branch 'issue565_document_storedObject' into 'master'
storedObject: add validation in properties where it is used

See merge request Chill-Projet/chill-bundles!417
2022-04-27 07:01:06 +00:00
2e44926088 fix cs 2022-04-27 09:00:47 +02:00
fcec3af5a8 fix type for condition in ParticipationController 2022-04-27 08:45:22 +02:00
452c4b85c6 Merge remote-tracking branch 'origin/master' into issue565_document_storedObject 2022-04-27 08:43:35 +02:00
d5864027d6 Merge branch 'issue471_activity_socialissue-action' into 'master'
Activity: socialIssue and socialAction

See merge request Chill-Projet/chill-bundles!366
2022-04-26 19:22:54 +00:00
c2061110dd fix cs 2022-04-26 21:16:55 +02:00
b2fb86111d fix social action consistency 2022-04-26 21:12:31 +02:00
db6c4f15f8 Merge remote-tracking branch 'origin/master' into issue471_activity_socialissue-action 2022-04-26 20:29:07 +02:00
12231912d6 remove dead code 2022-04-26 20:27:24 +02:00
7b0c8d21ee sort properties alphabetically 2022-04-26 20:27:08 +02:00
37a198b860 PrivateCommentEmbeddable created and added to entities + datamapper 2022-04-26 20:21:33 +02:00
64b5de2c03 migrations deleted 2022-04-26 20:19:40 +02:00
f713b1ddc8 allow to edit encrypted documents 2022-04-26 17:46:25 +02:00
faf1559770 Merge branch 'master' into feat/add-document-encrypter-service 2022-04-26 14:52:13 +02:00
5a1ce399f6 fix creation of evaluation in js 2022-04-26 14:26:51 +02:00
505384c2a0 fix generation of document 2022-04-26 14:11:59 +02:00
a7654edefa add missing services 2022-04-26 14:11:28 +02:00
81689e3507 fix catching response 400 in relatorio driver 2022-04-26 14:11:04 +02:00
b891ba842d update changelog 2022-04-26 12:03:06 +02:00
3ceae0473d Merge remote-tracking branch 'origin/master' 2022-04-26 11:57:37 +02:00
8ba70b08c4 storedObject: remove traverse=true on assert valid 2022-04-26 09:54:49 +00:00
795a8e9daf Merge remote-tracking branch 'origin/master' 2022-04-26 11:54:01 +02:00
nobohan
3f47503528 storedObject: allow for null data in storedObject 2022-04-26 11:53:17 +02:00
Pol Dellaiera
81edaef062 Fix: Route name change. 2022-04-26 11:50:59 +02:00
Pol Dellaiera
dc48b4b9c7 Fix #581: Collabora / wopi: le bouton "imprimer" ne fonctionne pas. 2022-04-26 11:47:46 +02:00
2684345981 voter updates 2022-04-26 11:34:49 +02:00
51d1e5422b remove unnecessary code 2022-04-26 10:27:45 +02:00
064286aa2f private comment for action. still needs (de)normalization 2022-04-26 09:52:00 +02:00
e72a2004d7 Merge remote-tracking branch 'origin/master' into feat/add-document-encrypter-service 2022-04-26 09:37:30 +02:00
329fb05db0 Merge branch 'issue571_ordering_socialactions' into 'master'
Ordering social actions

See merge request Chill-Projet/chill-bundles!412
2022-04-25 20:14:59 +00:00
75250402c8 fix ordering of social actions 2022-04-25 22:14:36 +02:00
e5209ca6d9 do not make a loop to normalizer for a native php object 2022-04-25 22:14:23 +02:00
4512b94293 Merge remote-tracking branch 'origin/master' into issue571_ordering_socialactions 2022-04-25 21:35:16 +02:00
217f95472b Merge branch 'issue574_accordeon_parcours' into 'master'
Accordeon for closed parcours in person search results

See merge request Chill-Projet/chill-bundles!413
2022-04-25 19:34:49 +00:00
b7abf6b6bf Merge remote-tracking branch 'origin/master' into issue571_ordering_socialactions 2022-04-25 21:30:48 +02:00
c39fa1c49b remove legacy folded/unfolded style requirements for showing label on accordion 2022-04-25 21:27:56 +02:00
81c8d0ec77 move extension of accordion bootstrap to dedicated file 2022-04-25 21:23:41 +02:00
72012a70d9 button "closed" with same layout than in course header 2022-04-25 21:23:12 +02:00
916560c522 list with period: full sentences in translation component 2022-04-25 21:21:38 +02:00
57d6240cd1 Merge remote-tracking branch 'origin/master' into issue574_accordeon_parcours 2022-04-25 20:46:57 +02:00
2d460adc4d Merge branch 'issue568_agents_traitants' into 'master'
Display agents traitants

See merge request Chill-Projet/chill-bundles!411
2022-04-25 17:30:18 +00:00
d155c76013 Merge remote-tracking branch 'origin/master' into issue568_agents_traitants 2022-04-25 19:22:52 +02:00
529a9e5f58 fix notification counter on entity 2022-04-25 16:34:49 +02:00
2b837e0445 Merge branch 'issue545_datepicker' into 'master'
Fix datepicker

See merge request Chill-Projet/chill-bundles!405
2022-04-25 14:19:36 +00:00
4279acc2f8 convert date for new household 2022-04-25 16:11:42 +02:00
8fb3870ca0 remove dead code 2022-04-25 15:59:35 +02:00
171cc79a4a Add private comment to rendez-vous 2022-04-25 15:47:51 +02:00
79fa030323 add private comment input field to edit form 2022-04-25 15:47:13 +02:00
b36fd57e4f Add private comment options to activity type (visibility + label) 2022-04-25 15:46:55 +02:00
ff72b28861 Revert "private comment added to activity"
This reverts commit 1f2638626c.
2022-04-25 14:52:28 +02:00
1f2638626c private comment added to activity 2022-04-25 14:43:44 +02:00
nobohan
5ae6c6397c storedObject: add validation in properties where it is used 2022-04-25 13:52:49 +02:00
nobohan
f8410de569 person: correct relationship no duplicate validator 2022-04-25 11:34:17 +02:00
nobohan
3ad8223949 person: add unique index on table relationship to avoid duplicate fromperson_id/toperson_id pairs - typo cs fixer 2022-04-25 11:24:29 +02:00
nobohan
111906c2b9 person: add unique index on table relationship to avoid duplicate fromperson_id/toperson_id pairs 2022-04-25 11:23:28 +02:00
f5efb07e3c csfixes 2022-04-25 10:32:02 +02:00
79e46c7fe8 changelog updated 2022-04-25 10:30:44 +02:00
09503768f5 unpin comment is possible + delete and edit by all users that can edit period 2022-04-25 10:29:26 +02:00
41ff21ee23 update changelog with last release 2022-04-25 09:38:36 +02:00
30bb2e8393 Merge remote-tracking branch 'origin/master' into issue545_datepicker 2022-04-25 09:37:35 +02:00
ca166655da changelog updated 2022-04-22 18:05:47 +02:00
8f69f852b9 fix merge conflict 2022-04-22 18:04:20 +02:00
6747cad210 add amount of closed periods in accordeon message 2022-04-22 18:02:59 +02:00
0cbcd91c3f closed periods in accordeon + styling 2022-04-22 17:49:57 +02:00
nobohan
63dacb9ebb upd CHANGELOG 2022-04-22 17:24:29 +02:00
nobohan
5acd49357e person: add validation on relationship between person 2022-04-22 17:22:56 +02:00
d757e07dfc macro added + closed parcours displayed in accordeon 2022-04-22 17:22:46 +02:00
92c04c545f csfixes 2022-04-22 17:15:02 +02:00
f681e50167 role added to voter, but no check yet 2022-04-22 17:14:27 +02:00
9c428f989c final touches to controller 2022-04-22 17:14:11 +02:00
ef84576903 fix merge conflict 2022-04-22 16:51:21 +02:00
12df38d32d infinite loop bug on flush 2022-04-22 16:49:54 +02:00
084d77c8f4 new user is assigned, but crash on flush() 2022-04-22 16:49:54 +02:00
2646fa5b65 redo bulk assign 2022-04-22 16:49:54 +02:00
81bff2bb76 trying to get selected periods to be caught after form submit 2022-04-22 16:49:54 +02:00
291d340aa0 change view btn to edit btn 2022-04-22 16:49:54 +02:00
38a26f0bc1 beginning of ACL added 2022-04-22 16:49:54 +02:00
18025012a8 selected periods are not coming through in POST. Value not valid 2022-04-22 16:49:35 +02:00
805b9dc0df attempts to submit reassign form 2022-04-22 16:49:35 +02:00
9f064784f2 first commit 2022-04-22 16:49:35 +02:00
nobohan
07ea2b771c person: add validation to relationship to avoid duplicate 2022-04-22 16:37:21 +02:00
83dd8f810c Merge branch 'notification/deferring-sending-notification-to-terminate' into 'master'
Notification/deferring sending notification to terminate

See merge request Chill-Projet/chill-bundles!414
2022-04-22 10:48:18 +00:00
bd0b45b4dd fix cs 2022-04-22 12:47:50 +02:00
6dbe8068ae update changelog 2022-04-22 12:31:33 +02:00
19561c63cb do not persist if no notification is scheduled 2022-04-22 12:31:23 +02:00
354f130e9e use NotificationPersister into PersonMoveEventSubscriber 2022-04-22 12:12:50 +02:00
2d9af8f8c0 period: fix method hasPreviousUser and create method isChangedUser, and use it in Notification 2022-04-22 12:12:30 +02:00
f7d9551dc1 fix cs 2022-04-22 11:41:38 +02:00
abc3caee00 AccompanyingPeriod: fix method hasPreviousUser 2022-04-22 11:40:29 +02:00
33f93d484d deferring the sending of notification to kernel.terminate: prepare 2022-04-22 11:34:41 +02:00
8470604b8f macro added + closed parcours displayed in accordeon 2022-04-21 22:06:22 +02:00
b85e6aae3f csfixes 2022-04-21 21:22:18 +02:00
a4baf89a6a social actions ordered in store 2022-04-21 21:05:32 +02:00
0a05dcd753 add ordering to serialization 2022-04-21 20:49:54 +02:00
nobohan
3ed562e5d9 person: create a person with address and attribute the household to the create ousehold button 2022-04-21 18:23:47 +02:00
c6be7955fd remove save button datepicker parcours. set timeout 2022-04-21 13:59:45 +02:00
e246ccbcd9 [Course comment] add validationConstraint NotNull and NotBlank on comment content, to avoid sql error 2022-04-20 18:34:29 +02:00
44b537f05e [Accompanying period work evaluations] list documents associated to a work by creation date, and then by id, from the most recent to older 2022-04-20 18:34:27 +02:00
0fd23c61a1 Wording changed when user is not associated to household 2022-04-20 17:19:20 +02:00
6cad0be181 Ignore thirdparty for socialaction created via activity 2022-04-20 17:08:27 +02:00
9a0eb1c74c Renaming of tabs and removal of social actions tab 2022-04-20 16:33:05 +02:00
a70c561596 Number of parcours of user displayed in blue pill 2022-04-20 16:23:08 +02:00
daa3eabd43 Change wording for save document button 2022-04-20 16:12:58 +02:00
b24de76d77 display agents traitants 2022-04-20 15:16:26 +02:00
92d394b669 changelog updated 2022-04-20 14:22:35 +02:00
c17d20f945 comment out success message parcours start date 2022-04-20 14:18:24 +02:00
be77c3729b take empty date strings into account 2022-04-20 14:09:28 +02:00
ad1e7b576c remove success toast for parcours startdate + take empty string values into account for action dates 2022-04-20 13:58:45 +02:00
bf0578b6d7 [Accompanying period work] list evaluations associated to a work by startDate, and then by id, from the most recent to older 2022-04-20 13:49:47 +02:00
0ce23230da fix evaluation datepickers in edit 2022-04-20 13:32:51 +02:00
8b7404e531 Email on designation: allow raw characters
As the content-type of the email is text/plain, we should not escape
special character.

Add the raw filter on string which will be escaped by twig.
2022-04-20 13:05:11 +02:00
bc550ea42a updating openingdate parcours fixed 2022-04-20 12:14:19 +02:00
65e6471a02 fix datepicker for social action edit form.
still a problem with the display of already set evaluation dates... need to be transformed to correct format to display
2022-04-20 12:14:19 +02:00
de9d2aa885 fix datepicker for householdmember editor 2022-04-20 12:14:19 +02:00
66ab38c60f prefill startdate with now 2022-04-20 12:14:19 +02:00
8882c99f5a fix datepicker for social action 2022-04-20 12:14:19 +02:00
8512a5e1bc person list with period: use sameas twig operator instead of using '==' operator to introduce requestor 2022-04-20 11:24:20 +02:00
7f97215fe9 activity form: keep the same order for attendee field between edit and new form 2022-04-20 10:03:58 +02:00
6427fc64cd invert 'incoming' and 'receiving' 2022-04-20 10:00:48 +02:00
26d5bf03bd add order by on document list 2022-04-20 10:00:48 +02:00
nobohan
f2c60cfd20 php code style fix 2022-04-20 08:52:15 +02:00
nobohan
7a6aa6edcb upd CHANGELOG 2022-04-20 08:51:00 +02:00
nobohan
bad5506b98 person: create a person with address (and household without position (remove required position for household member) 2022-04-19 18:01:25 +02:00
nobohan
c214c2f4a4 household: safe display of household members without positions 2022-04-19 17:09:10 +02:00
Pol Dellaiera
7048f670ed Fix #552: Return AccessDeniedException when trying to access a document and user is not logged in. 2022-04-19 15:45:47 +02:00
c757fa068a Translations added for error message in parcours 2022-04-19 15:21:23 +02:00
ebc4ec0d7c updating openingdate parcours fixed 2022-04-19 15:09:25 +02:00
nobohan
4bc8da9655 person: create a person with address (php form) 2022-04-19 14:56:41 +02:00
69394df89b infinite loop bug on flush 2022-04-19 14:02:47 +02:00
nobohan
84038c0ff2 person: Add checkobox for adding address in AddPerson - css 2022-04-19 13:17:40 +02:00
nobohan
584111b5f7 person: Add checkobox for adding address in AddPerson 2022-04-19 11:39:08 +02:00
nobohan
355c5cf8fd person: add address when creating person in AddPerson: fix POSTing household 2022-04-19 09:54:42 +02:00
nobohan
57ed90a696 person: post an address when creating a person 2022-04-15 13:41:47 +02:00
nobohan
bea019e9bc household: API endpoint for posting a household 2022-04-15 12:23:16 +02:00
nobohan
ae45f5f40b person: add address when creating a person 2022-04-15 11:11:41 +02:00
nobohan
946ae31d11 upd CHANGELOG 2022-04-14 21:47:51 +02:00
nobohan
4009f3ffda php code fix 2022-04-14 21:47:38 +02:00
nobohan
7d3239d6d6 person: fix adding civility to a person with OnTheFly form 2022-04-14 21:37:16 +02:00
nobohan
7a2151f23a AddPerson: add civility when creating a person 2022-04-14 18:04:36 +02:00
nobohan
c1ec2933e5 person: create a new person: add a civility field 2022-04-14 17:08:44 +02:00
617473f6a5 notification - grant access by key - temporarily disable email verification due to character escaping in email 2022-04-14 01:36:01 +02:00
124a6a58fc fix cs 2022-04-14 01:13:16 +02:00
afa38e9dd5 addresses: add constraint in database to avoid error later 2022-04-14 01:11:39 +02:00
a52f29bb78 accompanyingWorkEditor: add label on form document title 2022-04-14 01:11:14 +02:00
b95ff337b6 add more time duration for aside activities 2022-04-14 00:41:15 +02:00
92a169be1e Merge branch 'issue541_change_moving_date' into 'master'
household address: add a form for editing the validFrom date

See merge request Chill-Projet/chill-bundles!402
2022-04-13 22:11:34 +00:00
e6d59bc837 fix cs 2022-04-14 00:11:15 +02:00
31731c6f44 Merge remote-tracking branch 'origin/master' into issue541_change_moving_date 2022-04-14 00:04:30 +02:00
86ec020f80 fixes on address valid from edit for household 2022-04-14 00:02:57 +02:00
07351e2946 Merge branch 'issue543_double_click_household' into 'master'
householdmemberseditor: fix composition type bug

See merge request Chill-Projet/chill-bundles!406
2022-04-13 21:37:41 +00:00
405694a0b4 Merge remote-tracking branch 'origin/master' into issue541_change_moving_date 2022-04-13 23:30:51 +02:00
bad39364c2 Merge remote-tracking branch 'origin/master' into issue543_double_click_household 2022-04-13 23:26:38 +02:00
c0b39e4e7c Merge branch 'notifications/allow-to-send-to-email' into 'master'
Notifications/allow to send to email

See merge request Chill-Projet/chill-bundles!409
2022-04-13 21:25:35 +00:00
f98b35f009 Merge remote-tracking branch 'origin/master' into issue543_double_click_household 2022-04-13 23:20:23 +02:00
8770188d54 update changelog 2022-04-13 23:18:50 +02:00
35c7d55b8c fix cs 2022-04-13 23:17:16 +02:00
2a53fb9341 show email adresses on notification list 2022-04-13 23:16:02 +02:00
e7f0cd50c9 controller to grant access to notification by access key 2022-04-13 23:05:38 +02:00
a41d6cf744 notification: send an email to addressesEmails 2022-04-13 22:50:32 +02:00
24d28b0a52 notification: alter form type to add and remove email addresses 2022-04-13 22:11:01 +02:00
4425f2ad49 fix type for Notification email addresses 2022-04-13 21:43:41 +02:00
a8db07a383 notification / add email: fix entity Notification 2022-04-13 21:33:18 +02:00
ef9fd80ad5 update schema to send to emails 2022-04-13 18:02:11 +02:00
e6169ddffa Merge branch 'docgen/improve-context-courses' into 'master'
docgen: some fixes and improvements

See merge request Chill-Projet/chill-bundles!408
2022-04-13 07:53:43 +00:00
ccf7c885bb fix normalization for phonenumber on person when phonenumber is null 2022-04-13 09:44:21 +02:00
01c571ab06 fix path to table 2022-04-11 21:04:36 +02:00
69b2dce7ee docgen/budget: add comment for each budget line (resource and charge)
The comments are cocatenated by lines of each type, and separated by a
`|`
2022-04-11 18:11:20 +02:00
910245f855 update changelog 2022-04-11 17:45:57 +02:00
7fbb3dfd07 docgen: add more persons choices in person1, person2 and mainPerson
Allow to pick amongst:

* requestor (if person)
* resources of course (if person)
* resources of person (if person)
2022-04-11 17:43:31 +02:00
9765bc5663 fix cs 2022-04-11 17:12:59 +02:00
bb65909bfa add docgen context for a list of activities in a course 2022-04-11 16:52:11 +02:00
03b0a8766e remove dumps 2022-04-08 19:12:11 +02:00
5eea202586 fix adding sibling action 2022-04-08 19:04:13 +02:00
a78c62789c if parent in collection replace with child, problem, sibling isn't added 2022-04-08 18:56:37 +02:00
68671e297c Merge branch 'issue471_activity_socialissue-action' of gitlab.com:Chill-Projet/chill-bundles into issue471_activity_socialissue-action 2022-04-08 13:24:49 +02:00
c3179da320 new user is assigned, but crash on flush() 2022-04-08 12:13:19 +02:00
2a32284471 redo bulk assign 2022-04-08 09:56:57 +02:00
4257a918f3 fix error when search pattern is empty 2022-04-08 00:11:08 +02:00
7ffb3dc74f task: fix route name 2022-04-07 23:49:32 +02:00
0f926e9dfe allow to display pinned comment in item of accompanying course list 2022-04-07 22:40:20 +02:00
fc55567a64 update changelog 2022-04-07 22:12:13 +02:00
009030b5fb notification list: move action buttons outside of the toggle 2022-04-07 21:59:02 +02:00
6e1cabc8fc fix detecting of non-read notification 2022-04-07 21:55:04 +02:00
572c602387 filter users which are disabled 2022-04-07 21:47:56 +02:00
26a4577420 order query for location and add pagination in list 2022-04-07 21:08:11 +02:00
nobohan
c0ee51068c avoid address reference search on undefined post code 2022-04-07 16:55:54 +02:00
f09870931c switch to using getDescendantsWithThis() 2022-04-07 16:11:00 +02:00
ea21f2d9c4 improvement, but still not correct 2022-04-07 16:11:00 +02:00
d81a41bb17 Test added for activity-social action and social issue 2022-04-07 16:11:00 +02:00
7851d9956e csfixes 2022-04-07 16:11:00 +02:00
f35479e4d2 fix logic in activity entity 2022-04-07 16:11:00 +02:00
432b105be5 update changelog 2022-04-07 16:11:00 +02:00
988b67bd4b logic added to only keep youngest descendant. works for issue, seems not to for action 2022-04-07 16:11:00 +02:00
f64409e5e6 allow every person which has part for a workflow to see the workflow page 2022-04-07 16:06:26 +02:00
a1baf99294 able to see the workflow if the evaluation document has been deleted 2022-04-07 15:54:53 +02:00
d9bb18e042 hardcode the list of supported mime types for edition with collabora 2022-04-07 15:37:17 +02:00
00a6ef0598 fix creating of accompanying period work 2022-04-07 11:05:34 +02:00
nobohan
c03e38f4ff upd CHANGELOG 2022-04-07 10:47:14 +02:00
nobohan
f9bcc5b1e9 householdmemberseditor: fix composition type bug 2022-04-07 10:45:46 +02:00
56340b44d5 trying to get selected periods to be caught after form submit 2022-04-07 10:24:14 +02:00
934a066910 remove error disappearing from phpstan 2022-04-06 22:40:09 +02:00
095afb90c7 AddPerson search: fix aborting query when the query is altered by user 2022-04-06 21:47:01 +02:00
645549ae34 effectively filter on all words in third party search 2022-04-06 21:45:49 +02:00
02b12c097d change view btn to edit btn 2022-04-06 16:53:26 +02:00
nobohan
d34462d849 php code fix 2022-04-06 15:34:11 +02:00
nobohan
c65a73604d upd CHANGELOG 2022-04-06 15:33:07 +02:00
nobohan
6a4edd000f household address: add max date for changing the validFrom date 2022-04-06 15:31:17 +02:00
nobohan
017b7bca87 address: handle cases when null street and streetnumber are given 2022-04-06 15:14:51 +02:00
612d053892 fix phpstan and phpcs 2022-04-06 13:59:05 +02:00
8edc68859e do not allow to freeze a document 2022-04-06 13:41:34 +02:00
a4afe73efe take into account system notification in counter and fix hardcoded user id 2022-04-06 13:35:24 +02:00
2b67f105f7 Merge branch 'issues521_531_540' into 'master'
issues graphiques 521 531 540

See merge request Chill-Projet/chill-bundles!399
2022-04-06 10:43:29 +00:00
95b114a144 do not show button to send notification on draft courses 2022-04-06 12:42:12 +02:00
5477a70c84 add ACL around creation of work in course 2022-04-06 12:41:50 +02:00
7d69ec6d6b Merge remote-tracking branch 'origin/master' into issues521_531_540 2022-04-06 12:29:11 +02:00
17594b58ab Merge branch 'issue548_notifs_buttons' into 'master'
notification toggle read: correct js syntax

See merge request Chill-Projet/chill-bundles!404
2022-04-06 10:24:27 +00:00
cddd3c20c8 Merge remote-tracking branch 'origin/master' into issue548_notifs_buttons 2022-04-06 12:16:23 +02:00
25a37974e5 Merge branch 'issues522_523' into 'master'
activity: add spacing between buttons + better alignment

See merge request Chill-Projet/chill-bundles!397
2022-04-06 10:08:59 +00:00
066afc07a8 update changelog 2022-04-06 12:08:44 +02:00
56c3f05ec9 Merge remote-tracking branch 'origin/master' into issues522_523 2022-04-06 12:04:54 +02:00
1907beaf6e Merge branch 'change_interlocuteurs_display' into 'master'
Change display of interlocuteurs (parcours)

See merge request Chill-Projet/chill-bundles!396
2022-04-06 10:01:26 +00:00
37c04d3f12 update changelog 2022-04-06 12:00:49 +02:00
a7fbce0add Merge remote-tracking branch 'origin/master' into change_interlocuteurs_display 2022-04-06 11:59:18 +02:00
e663bae5c4 fix datepicker for social action edit form.
still a problem with the display of already set evaluation dates... need to be transformed to correct format to display
2022-04-06 11:26:04 +02:00
ad6a68487c fix datepicker for householdmember editor 2022-04-06 11:24:01 +02:00
nobohan
88f377778c upd CHANGELOG 2022-04-06 09:28:57 +02:00
nobohan
d6deaeb324 notification unread: correct class 2022-04-06 09:26:14 +02:00
nobohan
f2744fba43 notification toggle read: correct js syntax 2022-04-05 22:28:35 +02:00
72a62a3a1b prefill startdate with now 2022-04-05 16:03:07 +02:00
bcde4497cc fix datepicker for social action 2022-04-05 15:56:02 +02:00
nobohan
c3731ae2db address reference: add filtering by deletedAt 2022-04-05 10:21:14 +02:00
nobohan
ddce7603ad household address: add condition for minimum value for vaildFrom date 2022-04-02 10:53:54 +02:00
nobohan
3a3eb68288 household address: add a form for editing the validFrom date 2022-04-01 16:17:04 +02:00
a4ece21f2b in household, force validTo of address to be NULL 2022-04-01 15:06:00 +02:00
c7762dd6d2 fix trimming for email in person / thirdparty 2022-03-31 12:51:53 +02:00
f47fb17b8d fix denormalization of invalid dates 2022-03-31 12:48:27 +02:00
51dc255be5 fix phonenumber denormalization when null value is given 2022-03-31 12:48:27 +02:00
6ddbb79157 format phonenumber in third party normalization 2022-03-31 12:48:27 +02:00
dcddf4b3f1 trim email 2022-03-31 10:24:58 +02:00
e027958c63 Merge branch 'fix-tests-2022-03-30' into 'master'
Fix tests 2022 03 30

See merge request Chill-Projet/chill-bundles!400
2022-03-30 20:20:03 +00:00
034a416612 fix test which fails randomly 2022-03-30 22:02:45 +02:00
63cdc97c47 fix phpstan errors on ThirdPartyRender 2022-03-30 21:52:43 +02:00
ae10a8bd1c fix post action on api controller: too many argument 2022-03-30 21:51:39 +02:00
eb2bad0f47 docgen normalization budget: fix budget when person is null 2022-03-30 21:35:02 +02:00
bc43d8bae5 force type on Person entity 2022-03-30 21:01:17 +02:00
83dfe530e9 household editor: handle case when the person is repositionned in the
same household, and the person is already in a position "without
household"
2022-03-30 17:00:07 +02:00
c477996acf fix cs 2022-03-30 16:43:16 +02:00
36b1f05524 do not launch PersonMoveEvent when moving to the same household 2022-03-30 16:42:57 +02:00
dae9d48574 really do not show thirdparty which are not active 2022-03-30 15:26:45 +02:00
9812710cd0 do not show duplicate menu entry temporarily 2022-03-30 15:08:34 +02:00
3b083c31e7 add tests for moving to not share position in another household 2022-03-30 12:57:16 +02:00
1b567327b7 fix normalisation for phonenumber in person entity 2022-03-30 12:37:18 +02:00
nobohan
1d6d8dc002 accompanyingcourse work: add ACL rights for create and edit buttons 2022-03-30 12:01:35 +02:00
38e92ee981 fix cs 2022-03-30 11:58:17 +02:00
e433b6a42b Do not dispatch PersonMoveEvent if moving to a position not sharing
household
2022-03-30 11:57:43 +02:00
df24d085ca Household members editor: leave household when repositionning to same
household, not sharing household
2022-03-30 11:53:06 +02:00
nobohan
f29ead4961 accompanying course: fix display bug in accompanying course resume 2022-03-30 11:26:19 +02:00
nobohan
b361ab2d74 workflow: add div for delete workflow form 2022-03-30 11:10:23 +02:00
de4f65fede change strategy for searching: use the AND between words, instead of OR 2022-03-29 12:42:17 +02:00
ed1ddbe53d beginning of ACL added 2022-03-28 17:06:29 +02:00
818370f037 selected periods are not coming through in POST. Value not valid 2022-03-28 16:46:39 +02:00
nobohan
10fcd4f732 accompanying course: evaluation documents: align buttons 2022-03-28 15:12:16 +02:00
nobohan
bc8709f9a1 activity: add spacing between buttons + better alignment 2022-03-28 14:30:49 +02:00
3d6745e535 display of interlocuteurs changed to flex-table to prevent cut-off of information 2022-03-28 12:00:13 +02:00
961c0a867c workflow notification display block for social action item 2022-03-28 11:42:24 +02:00
f5327fe8ab trailing guillemet removed 2022-03-28 11:25:07 +02:00
6f270188f7 buttons made sticky for parcours documents 2022-03-28 11:22:42 +02:00
5895334244 update changelog 2022-03-25 17:23:14 +01:00
1812592d43 fix create person on the fly 2022-03-25 17:22:10 +01:00
3babbe5e84 Merge branch 'master' of gitlab.com:Chill-Projet/chill-bundles 2022-03-25 17:06:06 +01:00
632ea710c8 budget menu entry placed in different order 2022-03-25 17:05:41 +01:00
7963076505 attempts to submit reassign form 2022-03-25 16:59:05 +01:00
bdcb135adb re-introduce link to create user 2022-03-25 15:48:30 +01:00
nobohan
58f1984c77 Add new fields to AddressReference for update procedure 2022-03-25 15:14:13 +01:00
3b93d2c0a5 Merge remote-tracking branch 'origin/master' 2022-03-25 14:28:18 +01:00
f24b2931dd Merge branch 'issue585_canEditWopiDocument' into 'master'
Accompanying course evaluation documents: disable the WOPI edit link if mimetype not supported

See merge request Chill-Projet/chill-bundles!394
2022-03-25 13:04:24 +00:00
c1e972963f invert condition with key infos 2022-03-25 14:03:43 +01:00
ce2e05464f Merge remote-tracking branch 'origin/master' into issue585_canEditWopiDocument 2022-03-25 13:48:46 +01:00
dbe0c9097f Merge branch 'issue533_notification_for_workflow_bug' into 'master'
correct notification for workflow display bug

See merge request Chill-Projet/chill-bundles!393
2022-03-25 12:39:46 +00:00
e68c12e0e7 fix cs 2022-03-25 13:39:27 +01:00
c99a967fb9 slightly improvve the render box for workflow in notification 2022-03-25 13:35:52 +01:00
d11eebefae fix some authorization check in menu 2022-03-25 13:11:03 +01:00
b423821ae9 check existence of form before using it 2022-03-25 13:10:40 +01:00
f2ae183682 first commit 2022-03-25 13:01:33 +01:00
7a0234adb2 Merge remote-tracking branch 'origin/master' into issue533_notification_for_workflow_bug 2022-03-25 12:45:29 +01:00
nobohan
f36fc0ba60 upd CHANGELOG 2022-03-25 11:46:57 +01:00
nobohan
cff126953e Accompanying course evaluation documents: disable the WOPI edit link if no keyInfos 2022-03-25 11:45:13 +01:00
nobohan
89064f55a1 Accompanying course evaluation documents: disable the WOPI edit link if mimetype not supported 2022-03-25 11:36:51 +01:00
f69dab5ca5 Merge branch 'master' of gitlab.com:Chill-Projet/chill-bundles 2022-03-25 11:09:23 +01:00
259cdd34c4 fix validation person resource 2022-03-25 11:07:12 +01:00
nobohan
9dca42e242 correct notification for workflow display bug 2022-03-25 10:44:15 +01:00
nobohan
248e4e93ed quick fix: change style of input field for document title in AccompanyingCourseWork documents 2022-03-25 10:16:48 +01:00
nobohan
db2bf1e98e quick fix: change style of input field for document title in AccompanyingCourseWork documents 2022-03-25 10:15:33 +01:00
ea66db07a4 fix cs 2022-03-24 22:10:07 +01:00
5f35a42fe3 allow phonumber helper to format null value 2022-03-24 22:09:12 +01:00
e82b2bd10a fix personcontent / content switch in some pages 2022-03-24 20:54:34 +01:00
ad4f400262 Merge remote-tracking branch 'origin/master' 2022-03-24 20:53:40 +01:00
866bcec114 Merge remote-tracking branch 'origin/master' 2022-03-24 20:53:10 +01:00
367188b03d Merge branch 'issue491_thirdparty_edit_modal' into 'master'
Thirdparty: fix edit modal + add firstname

See merge request Chill-Projet/chill-bundles!379
2022-03-24 18:33:31 +00:00
dd4d463c42 fix bug when setting civility to null in on the fly 2022-03-24 19:32:53 +01:00
1031f0d40e thirdparty: firstname after name in form 2022-03-24 19:18:48 +01:00
5d7943f871 index firstname in database 2022-03-24 19:06:53 +01:00
d0c34c0206 set empty thridparty.firstname to a string 2022-03-24 18:51:29 +01:00
726b8f0e3c Merge remote-tracking branch 'origin/master' into issue491_thirdparty_edit_modal 2022-03-24 18:44:42 +01:00
5d4149db35 Merge remote-tracking branch 'origin/issue491_thirdparty_edit_modal' into issue491_thirdparty_edit_modal 2022-03-24 18:41:22 +01:00
f04474c82f Merge branch 'issue494_activity_field_visibility' into 'master'
Activity display fields based on ActivityType + show error message

See merge request Chill-Projet/chill-bundles!376
2022-03-24 17:29:38 +00:00
156398caba Merge remote-tracking branch 'origin/master' into issue494_activity_field_visibility 2022-03-24 18:25:03 +01:00
ae3091f620 Merge branch 'issue469_budget' into 'master'
Adapt BudgetBundle to Vendee

See merge request Chill-Projet/chill-bundles!357
2022-03-24 17:23:26 +00:00
84f9fdba28 add budget to docgen 2022-03-24 18:22:49 +01:00
531f940b65 add a debug feature in docgenerator template controller 2022-03-24 18:22:36 +01:00
d907f3f11b desactivate calculator in current budget for household 2022-03-24 16:29:13 +01:00
02409d4992 Merge remote-tracking branch 'origin/master' into issue469_budget 2022-03-24 16:22:52 +01:00
771b6a59a5 Merge branch 'issue519_filiation_create_person' into 'master'
Add person to filiation

See merge request Chill-Projet/chill-bundles!392
2022-03-24 14:08:54 +00:00
2e336ac874 update case when the person was already on the graph 2022-03-24 15:07:46 +01:00
a61c9553e1 csfixes 2022-03-24 11:42:16 +01:00
3243a7e0a2 fix merge conflict in changelog 2022-03-24 11:41:02 +01:00
06cc84a21f conditional statements to allow for personne moral creation and edit 2022-03-24 11:40:06 +01:00
688914906d merge firstname branch 2022-03-24 11:13:07 +01:00
f9d87876f2 Merge remote-tracking branch 'origin/master' into issue519_filiation_create_person 2022-03-24 11:12:56 +01:00
7df70cab98 allow a user/referrer to see his own courses, even if the scope is not his own 2022-03-24 10:58:43 +01:00
287ea80be9 Merge remote-tracking branch 'origin/master' into issue491_thirdparty_edit_modal 2022-03-24 10:56:51 +01:00
dc3d88a1ef final fix to make current civility and profession values visible in edit form 2022-03-24 10:56:28 +01:00
cba6394823 Merge branch 'master' of gitlab.com:Chill-Projet/chill-bundles 2022-03-24 09:10:53 +01:00
eea0711a04 autowire sectionmenu service 2022-03-24 09:10:32 +01:00
949bdfd993 add missing property (phpstanerror) 2022-03-23 22:59:45 +01:00
3067da5d24 fix tests for removing temporarily resources on person 2022-03-23 22:56:45 +01:00
546c925224 Enforce a limit for search results when searching through api 2022-03-23 22:51:45 +01:00
d7b5944c5f temporarily desactivate resources for docgen 2022-03-23 22:51:45 +01:00
aa234e0749 activity annexe button made sticky 2022-03-23 17:33:23 +01:00
506118b3f1 edit and create of thirdparty pers physique is possible, but current civility and profession don't display yet in edit form 2022-03-23 16:10:02 +01:00
52a78902f7 Merge remote-tracking branch 'origin/master' into issue491_thirdparty_edit_modal 2022-03-23 15:53:55 +01:00
e89489fde9 update changelog 2022-03-23 15:04:52 +01:00
a7be9c0a83 Merge branch 'master' of gitlab.com:Chill-Projet/chill-bundles 2022-03-23 14:59:44 +01:00
6331d8fd3e validation fix for person ressource 2022-03-23 14:59:30 +01:00
nobohan
eb6790b17d quick fix: missing translation 2022-03-23 14:58:09 +01:00
61f010f5ad Merge branch 'issue507_conditional_menu_entries' into 'master'
Options added for section menu entries

See merge request Chill-Projet/chill-bundles!391
2022-03-23 13:23:32 +00:00
30fd36b741 forgotten translation added 2022-03-23 14:16:38 +01:00
91aacb91cc merge master into branch 2022-03-23 14:07:26 +01:00
73c17febd9 remove inter database reference 2022-03-23 00:05:36 +01:00
99dc9dd4a8 handle case when user is null in comment embeddable 2022-03-22 23:36:02 +01:00
c5ffca22ff ease docgen normlisation for resources 2022-03-22 22:37:19 +01:00
89e7eb85ff fix cs 2022-03-22 22:36:01 +01:00
98d5de29b0 translations added 2022-03-22 16:09:03 +01:00
4939c8c8e4 changelog updated 2022-03-22 15:50:31 +01:00
8d5c66dc40 person can be added to filiation graph and relationship created 2022-03-22 15:49:25 +01:00
02571bf727 switch to using getDescendantsWithThis() 2022-03-22 13:45:20 +01:00
2c6cbeb8ca minor fix in vue component to update thirdparty firstname 2022-03-22 11:30:33 +01:00
13a7d791a1 fixes to allow for firstname value of null 2022-03-22 11:07:26 +01:00
ae555fed00 migration executed down and new one created to allow firstname nullable 2022-03-22 11:07:05 +01:00
6d65009987 Merge remote-tracking branch 'origin/master' 2022-03-21 18:05:38 +01:00
386e88387d Merge branch 'issue560_ACCent_parcours_household' into 'master'
Create parcours from within household context

See merge request Chill-Projet/chill-bundles!390
2022-03-21 17:05:00 +00:00
22473d6547 Merge remote-tracking branch 'origin/master' into issue560_ACCent_parcours_household 2022-03-21 18:01:26 +01:00
e7b4f1a54f Merge branch 'issues546_553_554_documents_acc_period_activity' into 'master'
issues553_554_documents_activity

See merge request Chill-Projet/chill-bundles!389
2022-03-21 17:00:21 +00:00
1f6565d2ef add return path when creating an activity 2022-03-21 17:59:41 +01:00
e838a82556 Merge remote-tracking branch 'origin/master' into issues546_553_554_documents_acc_period_activity 2022-03-21 17:35:10 +01:00
eebca7b0f1 Merge branch 'issue517_extend_document_to_person_vendee' into 'master'
commentembeddable: add a condition for the early return in normalisation

See merge request Chill-Projet/chill-bundles!388
2022-03-21 16:33:23 +00:00
169d4dc41c finalize normalization on ressources 2022-03-21 17:33:01 +01:00
9e063180bf forgotten translation 2022-03-21 16:37:14 +01:00
5b0b15f395 Merge branch 'master' of gitlab.com:Chill-Projet/chill-bundles 2022-03-21 16:23:16 +01:00
736d43e756 translation fixed 2022-03-21 16:23:06 +01:00
b4add2de95 Merge remote-tracking branch 'origin/master' into issue517_extend_document_to_person_vendee 2022-03-21 16:20:03 +01:00
37a8928e41 remove dump 2022-03-21 16:19:27 +01:00
0a0243eb85 Merge branch 'issue511_document_evaluations' into 'master'
AccompanyingCourseWorkEdit: replace document by a new one, fix deleting

See merge request Chill-Projet/chill-bundles!384
2022-03-21 15:17:34 +00:00
a6c7c1d997 fix tests for user 2022-03-21 16:17:19 +01:00
c7caa2ba76 addpersons component, doesnt hear emitted event... 2022-03-21 16:13:02 +01:00
2ce8b1110d allow to change color for asyncupload button 2022-03-21 16:13:02 +01:00
11d57094e8 fix cs 2022-03-21 15:22:40 +01:00
704392a729 do not add referrer if user is null (fix condition) 2022-03-21 15:21:29 +01:00
efeda81e05 do not add referrer if user is null 2022-03-21 15:17:33 +01:00
ae5940eb48 Merge remote-tracking branch 'origin/master' into issue511_document_evaluations 2022-03-21 15:00:40 +01:00
638ae3315f Merge branch 'issue509_parcours_referent' into 'master'
Reassign parcours of absent user

See merge request Chill-Projet/chill-bundles!387
2022-03-21 13:58:33 +00:00
ac9e55e2fc fix methods for accompanying period repository acl aware
* add method to interface
* delegate ACL to another method
2022-03-21 14:54:01 +01:00
293efc03b4 fixes for reasign list
* use existing method in UserRepository and use a method instead of
building a query outside of the repository;
* use renderString to render users
* fix building of filter form (add $data). This make the use of the
method "get" instead of post
2022-03-21 13:35:14 +01:00
f084078cf2 Merge remote-tracking branch 'origin/master' into issue509_parcours_referent 2022-03-21 12:59:24 +01:00
c8a66f008e Merge branch 'issue502_user_in_actions' into 'master'
Issue502 referres in AccompanyingPeriodWork

See merge request Chill-Projet/chill-bundles!381
2022-03-21 11:55:24 +00:00
b6b6c25b3b adapt queries for listing near recents evaluation and work on homepage, taking care of referrers 2022-03-21 12:54:50 +01:00
cb35aed202 use remove-items UI api for listing referrers 2022-03-21 12:45:20 +01:00
eebe1d669a first commit 2022-03-21 12:39:33 +01:00
8f462da627 fix cs 2022-03-21 12:32:46 +01:00
3aaecc8630 set creator as referrer for works 2022-03-21 12:32:40 +01:00
9b97b03d42 csfixes 2022-03-21 12:16:49 +01:00
bdb07a3a05 options added to create person or parcours and to access global history 2022-03-21 12:10:03 +01:00
2fda5b751b Merge remote-tracking branch 'origin/master' into issue502_user_in_actions 2022-03-21 11:53:21 +01:00
ddb048daca Merge branch 'issue479_admin_user' into 'master'
user admin

See merge request Chill-Projet/chill-bundles!372
2022-03-21 10:47:43 +00:00
ac42de7863 Merge branch 'fix-test-2022-03-21' 2022-03-21 11:46:48 +01:00
2c55cfe1dc by default, translate menu items 2022-03-21 11:41:16 +01:00
3ba3498892 Merge remote-tracking branch 'origin/master' into issue479_admin_user 2022-03-21 11:36:28 +01:00
99276dc41c fix cs 2022-03-21 11:35:50 +01:00
fced8ef4b7 try to fix test with null id 2022-03-21 11:34:54 +01:00
247f1879e3 Merge remote-tracking branch 'origin/master' into issue471_activity_socialissue-action 2022-03-21 11:16:19 +01:00
a06a0788c1 csfixes 2022-03-21 10:22:28 +01:00
5a8291dc87 merge master into branch 2022-03-21 10:21:59 +01:00
15af0203ff add menu entry in section menu 2022-03-21 10:21:12 +01:00
7006196691 csfixes 2022-03-21 09:54:53 +01:00
5cbe14464d fix in view template to display firstname + lastname in title if it exists 2022-03-21 09:53:59 +01:00
2463a492c8 merge master into branch 2022-03-21 09:40:39 +01:00
72f69f0f82 changelog updated 2022-03-19 12:11:49 +01:00
a2daeff384 csfixes 2022-03-19 12:10:47 +01:00
caaa25ef8e controller action to create parcours from within household + link added in template 2022-03-19 12:08:20 +01:00
ff5aeaae17 translation changed in action evaluation section 2022-03-19 11:32:16 +01:00
184a664bf9 english text translated in thirdparty view page 2022-03-19 11:25:56 +01:00
nobohan
dbc604d84a AccompanyingCourseWorkEdit: download existing documents 2022-03-18 17:02:35 +01:00
nobohan
9c353669ea activity: fix delete button for documents 2022-03-18 16:11:09 +01:00
8d92cc0ba7 remove history from menus, temporarily 2022-03-18 15:40:01 +01:00
nobohan
215b859725 activity: hide delete button from asyncupload and add delete buttons from chill collection 2022-03-18 15:25:45 +01:00
da67fa4c4f fix role for creating activity in person 2022-03-18 14:33:05 +01:00
5b4c3ae9b3 Merge branch 'issue503_workflow_document_template' into 'master'
Workflow document template

See merge request Chill-Projet/chill-bundles!382
2022-03-18 13:24:40 +00:00
fdb36ab047 add document title to workflow EvaluationDocument handler 2022-03-18 14:18:47 +01:00
a1b1e6bb17 Merge remote-tracking branch 'origin/master' into issue503_workflow_document_template 2022-03-18 14:01:43 +01:00
nobohan
73dd97f7d3 upd CHANGELOG 2022-03-18 13:58:20 +01:00
bfd51c6615 allow downloads in LO editor 2022-03-18 13:55:33 +01:00
nobohan
b84e161399 quick fix css class in acc period evaluation form, issue client 557 2022-03-18 12:35:14 +01:00
nobohan
3b8c329ff6 upd CHANGELOG 2022-03-17 19:08:13 +01:00
nobohan
e7299bac4a person: add person ressource to person docgen normaliser 2022-03-17 19:07:11 +01:00
Marc Ducobu
80d518e4af Merge branch 'fixdataimportcp4digits' into 'master'
Fix pbm importing CP from France on 4 digits

See merge request Chill-Projet/chill-bundles!386
2022-03-17 17:44:39 +00:00
Marc Ducobu
730762d1c6 Merge branch 'master' into fixdataimportcp4digits 2022-03-17 18:37:00 +01:00
Marc Ducobu
288f0dbf69 Fix pbm importing CP from France on 4 digits 2022-03-17 18:34:55 +01:00
Marc Ducobu
2c02150b1a Use CS Fixer 2022-03-17 18:29:16 +01:00
nobohan
5e0a693108 commentembeddable: add a condition for the early return in normalisation 2022-03-17 17:51:25 +01:00
72ba2c6bca paginator added + phpcsfixes 2022-03-17 14:13:21 +01:00
6adb647ccc changelog updated 2022-03-17 12:31:44 +01:00
97731b0a9b controller + template made to list confirmed parcours for a specific user 2022-03-17 12:28:00 +01:00
Marc Ducobu
1e63d00767 Fix pbm importing CP from France on 4 digits 2022-03-16 16:27:17 +01:00
6151d0ce54 fix name suggestion badges underneath input fields 2022-03-16 12:32:54 +01:00
9551e10d2b improvement, but still not correct 2022-03-16 11:55:19 +01:00
387b7c2fbd first commit 2022-03-16 11:36:46 +01:00
39ba21f308 merge master into branch 2022-03-16 11:36:07 +01:00
Pol Dellaiera
22755de1dd fix: Remove PrependExtensionInterface.
It is now handled by `chill_main` bundle.
2022-03-15 13:45:07 +01:00
Pol Dellaiera
3d7fcd99a8 fix: Remove console.log. 2022-03-15 13:45:07 +01:00
Pol Dellaiera
35d723e5fb refactor: Use StoredObjectManager. 2022-03-15 13:45:07 +01:00
Pol Dellaiera
62af980ea5 feat: Add new StoredObjectManager service.
To read and write onto `StoredObject` document using a common interface.
2022-03-15 13:41:38 +01:00
Pol Dellaiera
8abed67e1c refactor: Return a string instead of a resource. 2022-03-15 09:40:32 +01:00
Pol Dellaiera
b8992b8eeb misc: Update interface doc. 2022-03-15 09:40:32 +01:00
Pol Dellaiera
6ddbf35a7b misc: Add return types. 2022-03-15 09:40:32 +01:00
Pol Dellaiera
325ab0daf3 chore: Update composer.json files. 2022-03-15 09:40:32 +01:00
1a783e1881 Merge branch 'issue495_AccPeriodWorkEval_circular_reference' into 'master'
AccompanyingPeriodWorkEvaluation: fix circular reference when serialising

See merge request Chill-Projet/chill-bundles!383
2022-03-14 20:48:37 +00:00
d04f5a527b remove link to action on homepage, in evaluation list 2022-03-14 21:46:21 +01:00
f51279e83e fix saving maxDate when denormalizing object 2022-03-14 21:46:01 +01:00
90bebbad7d fix normalization for docgen 2022-03-14 21:27:21 +01:00
nobohan
82052f5d70 AccompanyingCourseWorkEdit: fix setting title of document with a fresh upload 2022-03-14 15:13:21 +01:00
nobohan
369397bf4f upd CHANGELOG 2022-03-14 14:42:53 +01:00
c61577edda Merge remote-tracking branch 'origin/master' into issue495_AccPeriodWorkEval_circular_reference 2022-03-14 14:42:24 +01:00
nobohan
1beae4d713 AccompanyingCourseWorkEdit: download existing documents 2022-03-14 14:42:04 +01:00
352302b7aa merge master into branch 2022-03-14 13:51:43 +01:00
01b60f334a Merge remote-tracking branch 'origin/master' into issue491_thirdparty_edit_modal 2022-03-14 13:43:39 +01:00
0546a43d63 changelog updated 2022-03-14 13:41:32 +01:00
5c68879509 fix doctrine annotation to make it comply with cs 2022-03-14 13:41:11 +01:00
9d844f6692 Merge branch 'issue505_create_household_composition' into 'master'
Issue505 create household composition

See merge request Chill-Projet/chill-bundles!378
2022-03-14 12:40:15 +00:00
28509f651d fix button and acl in household composition list 2022-03-14 13:39:33 +01:00
b590444375 Merge remote-tracking branch 'origin/master' into issue505_create_household_composition 2022-03-14 13:35:43 +01:00
873258fc84 update button person ressource creation 2022-03-14 13:35:03 +01:00
7988becc45 Merge branch 'issue504_person_ressource_create' into 'master'
Separate create page person resource

See merge request Chill-Projet/chill-bundles!377
2022-03-14 12:33:42 +00:00
45c4a7ae64 Merge remote-tracking branch 'origin/master' into issue504_person_ressource_create 2022-03-14 13:30:32 +01:00
05803787a9 Merge branch 'issue493_order_parcours' into 'master'
Issue493 order parcours

See merge request Chill-Projet/chill-bundles!375
2022-03-14 12:28:33 +00:00
33acc645ea Merge remote-tracking branch 'origin/master' into issue493_order_parcours 2022-03-14 13:27:26 +01:00
0ce787701f Merge branch 'fix_blur_toggle' into 'master'
finding solution for toggle button position

See merge request Chill-Projet/chill-bundles!374
2022-03-14 12:26:25 +00:00
e9cacbb74a add comment for future refactorisation 2022-03-14 13:26:07 +01:00
a2f8f7ae43 add badge on third party in residential address list 2022-03-14 13:18:41 +01:00
a49c53772e Merge remote-tracking branch 'origin/master' into fix_blur_toggle 2022-03-14 13:15:05 +01:00
1adccdb06e Merge branch 'issue489_address_onTheFly' into 'master'
Address history onTheFly for linked person

See merge request Chill-Projet/chill-bundles!373
2022-03-14 12:14:08 +00:00
22d593fc12 Merge remote-tracking branch 'origin/master' into issue489_address_onTheFly 2022-03-14 13:12:53 +01:00
de7ec6fa54 Merge branch 'issue477_autosave_comment_parcours' into 'master'
Issue477 autosave comment parcours

See merge request Chill-Projet/chill-bundles!370
2022-03-14 12:12:07 +00:00
90948e5513 Merge remote-tracking branch 'origin/master' into issue477_autosave_comment_parcours 2022-03-14 13:11:53 +01:00
bd79391efc fix autosave of comment 2022-03-14 13:04:29 +01:00
4ea72f7d9d csfixes 2022-03-14 11:49:58 +01:00
96e38a8a6d eventlistener added to capitalize names correctly 2022-03-14 11:49:01 +01:00
09e6872724 firstname added to onthefly for child or contact 2022-03-14 11:48:39 +01:00
f44f9d356b migration adjusted to have actual empty string instead of '' 2022-03-14 11:16:58 +01:00
nobohan
9f0ab5aee7 upd CHANGELOG 2022-03-14 10:43:28 +01:00
nobohan
6eac6044cd AccompanyingCourseWorkEdit: replace document by a new one (working now) 2022-03-14 10:42:16 +01:00
a24cd693e3 firstname field added to twig form for child or contact types 2022-03-14 10:23:47 +01:00
f63aab327d Merge branch 'issue480_bug_householdrenderbox' into 'master'
bugfix when position of member is null

See merge request Chill-Projet/chill-bundles!365
2022-03-14 08:58:52 +00:00
0c9499dd58 Merge remote-tracking branch 'origin/master' into issue480_bug_householdrenderbox 2022-03-14 09:53:23 +01:00
00787adf2b firstname property added to thirdparty + canonicalize function adapted 2022-03-14 09:35:22 +01:00
nobohan
dbe186547f AccompanyingCourseWorkEdit: replace document by a new one 2022-03-13 22:31:26 +01:00
nobohan
13f0b8610c quick fix: missing translation in Task 2022-03-11 16:37:26 +01:00
nobohan
f9e8bf4f2d upd CHANGELOG 2022-03-11 10:22:09 +01:00
nobohan
44e93dd5f8 AccompanyingPeriodWorkEvaluation: fix circular reference when serialising 2022-03-11 10:20:42 +01:00
nobohan
ee8f331de4 Revert "AccompanyingPeriodWorkEvaluation: fix circular reference when serialising"
This reverts commit 99f8aeb6cd.
2022-03-11 10:18:14 +01:00
nobohan
99f8aeb6cd AccompanyingPeriodWorkEvaluation: fix circular reference when serialising 2022-03-11 10:01:20 +01:00
nobohan
fc1fe7c277 php cs fix 2022-03-10 18:14:57 +01:00
nobohan
a8b6609dbf comment in accompanying course: add loader + fix when resetting to empty string 2022-03-10 18:12:42 +01:00
nobohan
ded2ac7d48 accompanyiing period comment: fix removing of comment 2022-03-10 17:01:52 +01:00
nobohan
16a0dc4621 fix role for AccPeriod Comment API 2022-03-10 16:46:10 +01:00
nobohan
ba668d3b9d upd CHANGELOG 2022-03-10 16:27:03 +01:00
nobohan
690a443bdb fix code style for AccompanyingPeriodWork - referrers 2022-03-10 16:25:05 +01:00
nobohan
137eb184d0 accompanying period work: display referrers in the list of work 2022-03-10 16:18:59 +01:00
0a2730540e lost text removed plus condition to editing file uncommented 2022-03-10 14:45:43 +01:00
9284a4bc29 ACL added and buttons to download and edit document 2022-03-10 14:30:19 +01:00
nobohan
f2edc1ef0c set constrint ondelete for comment in AccompanyingPeriod 2022-03-10 14:23:00 +01:00
bf2d9acc5a correction of template, display title linked to workflow doc 2022-03-10 14:03:37 +01:00
2628e58ea0 document title added + concerned users 2022-03-10 12:28:17 +01:00
nobohan
da650fa1f2 AccompanyingPeriodWork: add doctrine event listener to add logged user to referrers collection 2022-03-10 10:53:40 +01:00
nobohan
55a65ee6e9 accompanyingPeriodWork: add referrer in vuejs form 2022-03-10 10:32:20 +01:00
nobohan
492c22d1b7 AccompanyingPeriodWork: add referrers field 2022-03-10 08:40:11 +01:00
e153fa34e9 merge master into branch 2022-03-09 20:48:30 +01:00
d272e1398c fix merge conflict in changelog 2022-03-09 20:45:42 +01:00
9457926a35 fix merge conflict 2022-03-09 20:43:31 +01:00
8ff80ac65e changelog updated 2022-03-09 20:42:48 +01:00
3d1ded8b1c position of toggle button improved (differentation between twig and vue) + fix fa-eye-slash in vue component 2022-03-09 20:41:24 +01:00
c611f35cd6 finding solution for toggle button position 2022-03-09 20:41:24 +01:00
f79cfda74a update changelog 2022-03-09 20:31:02 +01:00
ff4b90835e show current civility and profession in edit form + fix saving of edited information 2022-03-09 20:29:38 +01:00
d5501bcfbd remove console logs to avoid mess in the console 2022-03-09 20:07:41 +01:00
fb1552f6b7 update changelog and csfixes 2022-03-09 14:07:41 +01:00
e28da7e99b create-edit composition placed in separate page to avoid confusion 2022-03-09 14:06:18 +01:00
4b899d337a changelog updated 2022-03-09 13:36:26 +01:00
d6933fce35 add contact button color changed 2022-03-09 13:35:55 +01:00
aefd09693b position of toggle button improved (differentation between twig and vue) + fix fa-eye-slash in vue component 2022-03-09 12:10:33 +01:00
8555277827 changelog updated 2022-03-09 11:06:10 +01:00
6f58a9a8bb separate create page 2022-03-09 11:06:00 +01:00
b02739cc3c phonenumber placeholder removed 2022-03-09 09:35:47 +01:00
b8d9d59d76 condition added to display thirdparty centers or not 2022-03-09 09:19:29 +01:00
nobohan
ba52e95253 display error messages above form when creating new Location 2022-03-08 17:21:49 +01:00
nobohan
2e69dbb7c9 upd CHANGELOG 2022-03-08 17:06:58 +01:00
13d579dc33 add 'for' in macro workflow breadcrumb 2022-03-08 17:06:30 +01:00
nobohan
efcc602d53 Activity form: add required class name on required field built with vue 2022-03-08 16:09:22 +01:00
ee82bd2867 change personne to usager and & to ET 2022-03-08 16:03:59 +01:00
nobohan
fcc5d3d349 Activity: small fixes on displaying social Issues and social Actions hidden fields 2022-03-08 15:41:03 +01:00
af3b761208 evaluationWorkDocument: fill title with document is generated 2022-03-08 14:41:25 +01:00
23e61ac6a7 fixes stan errors 2022-03-08 11:43:47 +01:00
e4ae495a3f add empty lines on addresses when address is empty 2022-03-08 11:43:47 +01:00
ec99bc95fa add itemMeta variable for course list 2022-03-08 11:43:47 +01:00
nobohan
b68b43118b update CHANGELOG 2022-03-08 11:38:40 +01:00
nobohan
db95e935d9 order accompanying period by opening date in search person 2022-03-08 11:37:08 +01:00
nobohan
dc5ff53a57 order accompanying course by openingDate for Household 2022-03-08 11:21:59 +01:00
nobohan
50a2de1559 order accompanying course by openingDate for Person 2022-03-08 11:20:06 +01:00
d18ab5cf49 fix display of email in person renderbox if null or empty string 2022-03-08 11:00:31 +01:00
1860478aea finding solution for toggle button position 2022-03-08 09:48:17 +01:00
nobohan
17e83deb55 User admin: put pagination 2022-03-08 09:46:41 +01:00
16be28681a Test added for activity-social action and social issue 2022-03-07 15:13:47 +01:00
388b666b5d person badge changed to include onTheFly + changelog updated 2022-03-07 14:36:44 +01:00
nobohan
9b06ccc3e6 user admin: use flex-table and flex-bloc in twig 2022-03-07 11:13:11 +01:00
efbd9b0185 do not allow to remove doc or evaluations if workflow is associated 2022-03-07 00:30:53 +01:00
b2a61071bf create voter which blocks deletion if a workflow exists 2022-03-07 00:30:53 +01:00
f0849eeef5 Merge branch 'issue484_link_household' into 'master'
add current household link to person banner

See merge request Chill-Projet/chill-bundles!369
2022-03-06 21:58:37 +00:00
68aa80269f rebase onto master 2022-03-04 17:29:36 +01:00
2012df512c merge conflict fixed 2022-03-04 17:27:26 +01:00
1c21b80703 csfixes 2022-03-04 17:25:37 +01:00
25fe105590 fix logic in activity entity 2022-03-04 17:25:37 +01:00
b6e530fec6 update changelog 2022-03-04 17:25:37 +01:00
4ef2274803 logic added to only keep youngest descendant. works for issue, seems not to for action 2022-03-04 17:25:22 +01:00
nobohan
def90893de upd CHANGELOG 2022-03-04 15:12:11 +01:00
nobohan
4b692edd7d accompanying course comment: autosave the comment 2022-03-04 15:09:50 +01:00
nobohan
6472c554ed accompanying course comment: more tentative to delete the comment 2022-03-04 14:22:25 +01:00
nobohan
f04118218d accompanying course comment: tentative to delete the comment 2022-03-04 13:56:03 +01:00
nobohan
cde6e8f368 accompanying course: allow PATCH on a comment entity 2022-03-04 13:01:01 +01:00
474fffcbb5 changelog updated 2022-03-04 12:08:00 +01:00
0333e79b0a csfixes 2022-03-04 12:07:29 +01:00
7c043e9d85 fix logic in activity entity 2022-03-04 12:06:53 +01:00
nobohan
6d46efa610 accompanying course: fix posting of pinned comment 2022-03-04 11:53:27 +01:00
nobohan
84f2e1c72a Accompanying Period: set cascade persist on pinnedComment 2022-03-04 10:34:47 +01:00
nobohan
1c1dec1f5b upd CHANGELOG 2022-03-04 08:46:32 +01:00
nobohan
3ff9291580 assign User to undsipatched acc period: filter users by job type 2022-03-04 08:46:32 +01:00
214ef09fe7 update changelog 2022-03-03 16:29:35 +01:00
892be42580 update changelog 2022-03-03 16:28:31 +01:00
18694a34cf logic added to only keep youngest descendant. works for issue, seems not to for action 2022-03-03 16:24:37 +01:00
34b3c6fa32 bugfix when position of member is null 2022-03-03 14:15:20 +01:00
19cad9a7a4 do not update names after person update 2022-03-03 12:43:04 +01:00
a736c2a67e fix migrations 2022-03-03 12:32:38 +01:00
636f92b168 Revert "add migrations files"
This reverts commit 7f5a91fc49.
2022-03-03 12:10:25 +01:00
7f5a91fc49 add migrations files 2022-03-03 11:42:43 +01:00
3ab71c8a2e update chill-app with migrations for budget 2022-03-03 11:12:30 +01:00
fdf1911c15 fix default config 2022-03-03 11:07:02 +01:00
ba24abf788 fix cs 2022-03-03 10:56:36 +01:00
076728bf5f enable chilld budget bundle in test app 2022-03-03 10:55:25 +01:00
0833bb49ca fixes for budgets 2022-03-03 10:37:10 +01:00
ac12e75714 Merge remote-tracking branch 'origin/master' into issue469_budget 2022-03-02 22:01:28 +01:00
969f0b8aeb Display of budget result 2022-03-02 16:38:55 +01:00
8b37f008e6 csfixes 2022-03-02 16:38:31 +01:00
283b378291 fix template bug 2022-03-02 16:19:17 +01:00
9bb149fb02 added missing translations + further adjustment templates 2022-03-02 15:44:49 +01:00
5dc117037d change label styling for view of resource/charge (suggestion) 2022-03-02 12:02:49 +01:00
7f1083aa40 Use select2 field 2022-03-02 12:02:16 +01:00
900adc7105 improvements templates 2022-03-02 11:44:10 +01:00
0648154ba1 remove comments 2022-03-02 11:43:55 +01:00
86de8137e4 restyling layout of table 2022-03-02 11:42:54 +01:00
cefa304fb5 mixup colors fixed. color of resource to be discusses still 2022-03-01 15:49:37 +01:00
83760cc980 Merge remote-tracking branch 'origin/master' into issue469_budget 2022-03-01 15:42:59 +01:00
695b9d5bea merge with master 2022-03-01 14:32:03 +01:00
f38cfb4b28 adjustments templates 2022-03-01 14:30:12 +01:00
67948f7f3a styles in scss with webpack 2022-03-01 14:00:14 +01:00
d6bad9e030 reorganization of templates 2022-03-01 11:07:53 +01:00
a59994355b fix merge conflict 2022-02-28 17:14:37 +01:00
18c0e6a6bf template adjustments for household members 2022-02-28 10:12:40 +01:00
26373e5d23 template adjustments for household members 2022-02-28 09:47:47 +01:00
deadeb341e more template adjustments 2022-02-25 17:45:50 +01:00
274c6115cc index templates fixed for display of past and future budgets 2022-02-25 17:01:24 +01:00
416665f209 translations added 2022-02-25 17:01:04 +01:00
f60f927549 Fix budget voter for use with household 2022-02-25 16:40:27 +01:00
2e59c1415b csfixes plus changelog updated 2022-02-25 16:24:25 +01:00
d852477c51 Add budget of household members to overview page of household budget 2022-02-25 16:20:52 +01:00
f8d5f13a88 add methods to get budgetResources and budgetCharges in person entity 2022-02-25 16:20:07 +01:00
fc5a893b00 template fixes and controller fixes for household budget 2022-02-25 10:30:37 +01:00
92a6fed521 phpstan fixes 2022-02-25 09:48:33 +01:00
051ed19f97 cs-fixes 2022-02-25 09:29:28 +01:00
c4e0b68ebe change block personcontent to content more consistent with other templates and less need for if-statements 2022-02-24 15:59:13 +01:00
f8ec0f85e5 property household added to entity 2022-02-24 15:49:47 +01:00
ed33514aee Voter adapted for use within vendee 2022-02-24 15:49:28 +01:00
0d96c1f12d Repositories adapted for use with person or household 2022-02-24 15:49:04 +01:00
0fcf21bd35 Controllers adjusted for use with person or household 2022-02-24 15:48:39 +01:00
9065ec40b1 Menu entry added household menu 2022-02-24 15:47:58 +01:00
8f6ab15621 migrations 2022-02-24 15:46:22 +01:00
fd69ae3d4a Translation folder renamed to translation in accordance to other bundles 2022-02-24 15:46:08 +01:00
81b42ef99a templates adjusted to allow use for person and household 2022-02-24 15:45:35 +01:00
c546d23421 scss file added plus config webpack
still missing something, because doesn't work yet
2022-02-24 15:44:37 +01:00
7067d4b5bd Attempt to make voter work 2022-02-23 18:07:54 +01:00
de0be15fff Added budget link to household menu + created controller file
no content for controller yet
2022-02-23 18:07:38 +01:00
fd16222c51 translations folder moved 2022-02-23 17:20:19 +01:00
185d1dbf49 Styling view page 2022-02-23 17:16:26 +01:00
576f46f845 styling of index page
style needs to be moved to correct file and changed scss
2022-02-23 15:58:06 +01:00
d5477e94b1 fix merge conflicts 2022-02-23 14:55:43 +01:00
67ae506bb5 Testing to see what still works, minor changes 2022-02-23 14:53:37 +01:00
5a514cf2db Moving migration folder and adding migration 2022-02-23 14:53:01 +01:00
1fdc994c0a adding budget to person menu 2022-02-23 14:52:37 +01:00
35aa05fb97 change namespaces, removing AMLI 2022-02-23 14:52:04 +01:00
70c7b1385e change namespaces, removing AMLI 2022-02-23 11:24:24 +01:00
1367 changed files with 32409 additions and 56052 deletions

View File

@@ -18,3 +18,10 @@ max_line_length = 80
[COMMIT_EDITMSG]
max_line_length = 0
<<<<<<< Updated upstream
=======
[*.{js, vue, ts}]
indent_size = 2
indent_style = space
>>>>>>> Stashed changes

2
.gitignore vendored
View File

@@ -1,4 +1,5 @@
.composer/*
composer
composer.phar
composer.lock
docs/build/
@@ -22,3 +23,4 @@ docs/build/
/.php-cs-fixer.cache
/.idea/
/.psalm/

View File

@@ -11,6 +11,146 @@ and this project adheres to
## Unreleased
<!-- write down unreleased development here -->
## Test releases
### 2.0.0-beta2
* [workflow]: Fixed: the notification is sent when the user is added to the first step.
* [budget] Feature: allow to desactivate some charges and resources, adding an `active` key in the configuration
* [person] Feature: on Evaluation, allow to configure an URL from the admin
### 2022-06
* [workflow]: added pagination to workflow list page
* [homepage_widget]: null error on tasks widget fixed
* [person-thirdparty]: fix quick-add of names that consist of multiple parts (eg. De Vlieger) within onthefly modal person/thirdparty
* [search]: Order of birthdate fields changed in advanced search to avoid confusion.
* [workflow]: Constraint added to workflow (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/675)
* [household]: Reposition and cut button for enfant hors menage have been deleted (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/620)
* [admin]: Add crud for composition type in admin (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/611)
### 2022-05-30
* fix creating a new AccompanyingPeriodWorkEvaluationDocument when replacing the document (the workflow was lost)
### 2022-05-27
* [storedobject] add title field on StoredObject entity + use it in activity documents (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/604)
* [main] add a "read more..." on comment embeddable when overflown (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/604)
* [person] add closing motive to closed acc course (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/603)
* [person] household filiation: fetch person info when unfolding person (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/586)
* [admin] repair edit of social action in the admin (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/601)
* [admin]: add select2 to Goal form type entity fields (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/702)
* [main] allow hide permissions group list menu (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/577)
* [main] allow hide change user password menu (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/577)
* [main] filter user jobs by active jobs (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/577)
* [main] add civility to User (entity, migration and form type) (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/577)
* [admin] refactorisation of the admin section: reorganisation of the menu, translations, form types, new entities (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/592)
* [admin] add admin section for languages and countries (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/596)
* [activity] activity admin: translations + remove label field for comment on admin activity type (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/587)
* [main] admin user_job: improvements (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/588)
* [address] can add extra address info even if noAddress (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/576)
### 2022-05-06
* [person] add civility when creating a person (with the on-the-fly component or in the php form) (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/557)
* [person] add address when creating a person (with the on-the-fly component or in the php form) (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/557)
* [person] add household creation API point (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/557)
### 2021-04-29
* [person] prevent circular references in PersonDocGenNormalizer (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/527)
* [person] add maritalStatusComment to PersonDocGenNormalizer (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/582)
* Load relationships without gender in french fixtures
* Add command to remove old draft accompanying periods
* [parcours]: If users assings him/herself as referrer and job is not null. Update parcours job (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/578)
### 2021-04-28
* [address] fix bug when editing address: update location and addressreferenceId + better update of the map in edition (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/593)
* [main] avoid address reference search on undefined post code (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/561)
* [person] prevent duplicate relationship in filiation/household graph (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/560)
* [Documents] Validate storedObject and allow for null data (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/565)
* [parcours]: Comments can be unpinned + edit/delete for all users that are allowed to edit parcours (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/566)
### 2021-04-26
* [Datepickers] datepickers fixed when using keyboard to enter date (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/545)
* [social_action] Display 'agents traitants' in parcours resumé and social action list (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/568)
* [Person_search] Closed parcours shown within an accordeon that can be opened/closed (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/574)
### 2021-04-24
* [notification email on course designation] allow raw string in email content generation
* [Accompanying period work] list evaluations associated to a work by startDate, and then by id, from the most recent to older
* [Documents] Change wording 'créer' to 'enregistrer' (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/634)
* [Parcours]: The number of 'mes parcours' displayed (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/572)
* [Hompage_widget]: Renaming of tabs and removal of social actions tab (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/570)
* [activity]: Ignore thirdparties when creating a social action via an activity (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/573)
* [parcours]: change wording of warning message and button when user is not associated to a household yet (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/590#note_918370943)
* [Accompanying period work evaluations] list documents associated to a work by creation date, and then by id, from the most recent to older
* [Course comment] add validationConstraint NotNull and NotBlank on comment content, to avoid sql error
* [Notifications] delay the sending of notificaiton to kernel.terminate
* [Notifications / Period user change] fix the sending of notification when user changes
* [Activity form] invert 'incoming' and 'receiving' in Activity form
* [Activity form] keep the same order for 'attendee' field in new and edit form
* [list with period] use "sameas" test operator to introduce requestor in list
* [notification email on course designation] allow raw string in email content generation
* [Accompanying period work] list evaluations associated to a work by startDate, and then by id, from the most recent to older
* [evaluation_document] changing date to datetime in order to display the time at which document was created (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/569)
### 2021-04-13
* [person] household address: add a form for editing the validFrom date (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/541)
* [person] householdmemberseditor: fix composition type bug in select form (vuejs) (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/543)
* [docgen] add more persons choices in docgen for course: amongst requestor (if person), resources of course (if person), and PersonResource (if person);
* [docgen] add a new context with a list of activities in course
* [docgen] add a comment in budget lines
* [notifications] allow to send a notification to an email address. The address receive an access link
* [adresses] add constraints in database to avoid errors later: postcode not null, and validfrom <= validto
* [accompanying work editor] add a label on document title input
### 2021-04-07
* notification list: move action buttons outside of the toggle
* fix detecting of non-read notification
* filter users which are disabled in search user api
* order query for location and add pagination in list
* allow every person which has part for a workflow to see the workflow page
* able to see the workflow if the evaluation document has been deleted
* hardcode the list of supported mime types for edition with collabora
* list of accompanying course: allow to see the pinned comment in list_item
### 2021-04-06
* [main] notification toggle read: correct js syntax for compilation in production (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/548)
* [parcours] Display of interlocuteurs changed to flex-table in parcours edit page to prevent cut-off of information (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/535)
* [activity] espace entre les boutons pour supprimer les documents
### continuous release in February and March
* Creation of PickCivilityType, and implementation in PersonType and ThirdpartyType
* [person] Accompanying course evaluation documents: disable the WOPI edit link if mimetype not supported and if no keyInfos
(https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/585)
* [activity] display error messages above the form in creating a new location (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/481)
* [activity] show required field in activity edit/new by an asterix in the vuejs fields (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/494)
* [ACL] fix allow to see the course, event if the scope'course does not contains the scope's user
* [search] enforce limit of results for fetching rsults by search api https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/576
* [activity] Fix delete button for document (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/554)
* [activity] Add return path the document generation (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/553)
* [person] add person ressource to person docgen normaliser (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/517)
* [person] AccompanyingCourseWorkEdit: fix deleting evaluation documents (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/546)
* [person] AccompanyingCourseWorkEdit: download existing documents (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/512)
* [person] AccompanyingCourseWorkEdit: replace document by a new one (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/511)
* [person] AccompanyingPeriodWork: add referrers to work, add doctrine event listener to add logged user to referrers collection and display a referrers list in work list (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/502)
* [person] AccompanyingPeriodWorkEvaluation: fix circular reference when serialising (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/495)
* [person] order accompanying period by opening date in search persons, person and household period lists (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/493)
* [parcours] autosave of the pinned comment for draft accompanying course (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/477)
* [main] filter user job in undispatch acc period to assign (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/472)
* [main] filter user job in undispatch acc period to assign (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/472)
* [person] Add url in accompanying period work evaluations entity and form (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/476)
* [person] Add document generation in admin and in person/{id}/document (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/464)
@@ -23,17 +163,46 @@ and this project adheres to
* [Person/Household list] when listing other simultaneous members of an household, exclude the members on person, not on members (avoid to show two membersship with the same person)
* [draft periods] add a delete button (if acl granted) on each draft period listed on draft period page (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/463)
* [Person] Display suffixText in RenderPerson, PersonText.vue, RenderPersonBox.vue (was made for displaying "enfant confie") (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/441)
* [person] residential address: show residential address or info in PersonRenderBox, refactor Residential Address (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/439)
* [budget]: budget enabled for persons and households (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/469)
* [person] residential address: show residential address or info in PersonRenderBox, refactor Residential Address (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/439)
* [thirdparty] Add a contact to a thirdparty from within onTheFly (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/345)
* [documents] Improve flex-table item-col placement when long buttons and long metadata
* [thirdparty] Fix display of multiple contact badges so they wrap onto next line (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/482)
* [confidential] Fix position of toggle button so it does not cover text nor fall outside of box (no issue)
* [parcours] Fix edit of both thirdparty and contact name (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/474)
* [template] do not list inactive templates (for doc generator)
* [household] bugfix if position of member is null, renderbox no longer throws an error (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/480)
* [parcours] location cannot be removed if linked to a user (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/478)
* [person] email added to twig personRenderbox (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/490)
* [activity] Only youngest descendant is kept for social issues and actions (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/471)
* [person] Add link to current household in person banner (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/484)
* [address] person badge in address history changed to open OnTheFly with all person info (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/489)
* [person] Change 'personne' with 'usager' and '&' with 'ET' (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/499)
* [thirdparty] Add parameter condition to display centers or not (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/500)
* [phonenumber] Remove placeholder in phonenumber field (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/496)
* [person_resource] separate create page created to avoid confusion (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/504)
* [contact] add contact button color changed plus the pipe at the side removed (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/506)
* [thirdparty] For contacts show current civility/profession in edit form + fix saving of edited information (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/491)
* [household] create-edit household composition placed in separate page to avoid confusion (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/505)
* [blur] Improved positioning of toggle icon (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/486)
* [thirdparty] add firstname field to thirdparty 'child' or 'contact' types (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/508)
* [household] create-edit household composition placed in separate page to avoid confusion (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/505)
* [blur] Improved positioning of toggle icon (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/486)
* [parcours] List of parcours for a specific user so they can be reassigned in case of absence (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/509)
* [thirdparty] Thirdparty view page, english text translated (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/534)
* [social_action] Translation changed in evaluation section (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/512)
* [filiation] Possible to add person (or create onthefly) to add to filiation graph + add relation (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/519)
* [household] Within parcours listing page of household add create button (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/560)
* [person_resource] bugfix when adding thirdparty or freetext resource + prevent personOwner themselves to be added. (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/526)
* [aside_activity] style correction + sticky-form create button (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/529)
* [budget] order within the menu adjusted (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/592)
* [onthefly] fix create person. Bug was noticed in filiation (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/591)
* [parcours] Create document buttons made sticky (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/532)
* [person] Trailing guillemet removed (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/530)
* [notification] Display of social action within workflow notification set to display block (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/537)
* [onthefly] trim trailing whitespace in email of person and thirdparty (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/542)
* [action] Only youngest descendant is kept for social issues and actions (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/471)
## Test releases
### test release 2022-02-21
@@ -62,8 +231,6 @@ and this project adheres to
* [bug]: fix confidential toggle of address in thirdpartyrenderbox (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/460)
## Test releases
* Creation of PickCivilityType, and implementation in PersonType and ThirdpartyType
### test release 2022-02-14
@@ -90,6 +257,7 @@ and this project adheres to
* [address]: Correction residential address 'depuis le' (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/459)
* [Documents]: List view adapted to display more information (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/414)
* [Thirdparty_contact]: address blurred if confidential in view page (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/450)
* [thirdparty] Add a contact to a thirdparty from within onTheFly (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/345)
### test release 2021-02-01
@@ -112,18 +280,9 @@ and this project adheres to
* [fast_actions] improve fast-actions buttons override mechanism, fix https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/413
* [homepage widget] add vue homepage_widget with asynchone loading, give a global view resume of the user concerned actions, notifications, etc.
* [thirdparty] Add a contact to a thirdparty from within onTheFly (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/345)
## Test releases
=======
* [homepage widget] add vue homepage_widget with asynchone loading, give a global view resume of the user concerned actions, notifications, etc.
>>>>>>> issue422_and_others_on_AddPersons
=======
* [homepage widget] add vue homepage_widget with asynchone loading, give a global view resume of the user concerned actions, notifications, etc.
* [thirdparty] Add a contact to a thirdparty from within onTheFly (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/345)
>>>>>>> b0d50d315c8e00959a967badac9cf5057ab2b4bc
### test release 2021-01-31
* [person] accompanying course: optimisation: do not fetch some resources for the banner (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/409)

View File

@@ -2,7 +2,14 @@
en cours de rédaction
## Translations
Par bundle, toutes les traductions des pages twig se trouvent dans un seul fichier `translations/messages.fr.yaml`.
## Emplacement des fichiers
Les controllers, form type & templates twig sont placés à la racine des dossiers `Controller`, `Form` & `Ressources/views`, respectivement. Pour les pages Admin, on ne les mets plus dans des sous-dossiers Admin.
## Assets: nommage des entrypoints
Trois types d'entrypoint:
@@ -146,19 +153,20 @@ Ces règles n'ont pas toujours été utilisées par le passé. Elles sont souhai
Les routes sont nommées de cette manière:
`chill_bundle_entite_action`
`chill_(api|crud)_bundle_(api)_entite_action`
1. d'abord chill_ (pour tous les modules chill)
2. ensuite une string qui est identique, par bundle
3. si le point est un point d'api (json), alors ajouter la string `api`
4. ensuite une string qui indique sur quelle entité porte la route, voire également les sous-entités
5. ensuite une action (`list`, `view`, `edit`, `new`, ...)
2. ensuite `crud` ou `api`, optionnel, automatiquement ajouté si la route est générée par la configuration
3. ensuite une string qui indique le bundle (`main`, `person`, `activity`, ...)
4. ensuite, `api`, si la route est une route d'api.
5. ensuite une string qui indique sur quelle entité porte la route, voire également les sous-entités
6. ensuite une action (`list`, `view`, `edit`, `new`, ...)
Le fait d'indiquer `api` en 3 permet de distinguer les routes d'api qui sont générées par la configuration (qui sont toutes préfixées par `chill_api`, de celles générées manuellement. (Exemple: `chill_api_household__index`, et `chill_person_api_household_members_move`)
Le fait d'indiquer `api` en quatrième position permet de distinguer les routes d'api qui sont générées par la configuration (qui sont toutes préfixées par `chill_api`, de celles générées manuellement. (Exemple: `chill_api_household__index`, et `chill_person_api_household_members_move`)
Si les points 4 et 5 sont inexistants, alors ils sont remplacés par d'autres éléments de manière à garantir l'unicité de la route, et sa bonne compréhension.
### URL
### Nommage des URL
Les URL respectent également une convention:
@@ -219,6 +227,14 @@ Les éléments suivants devraient se trouver dans la liste:
Ces éléments peuvent être entrecoupés de l'identifiant d'une entité. Dans ce cas, cet identifiant se place juste après l'entité auquel il se rapporte.
#### Pour les URL de l'espace Admin
Même conventions que dans les autres pages html de l'application, **mais `admin` est ajouté en deuxième position**. Soit:
`/{_locale}/admin/bundle/entity/{id}/action`
## Règles UI chill
### Titre des pages

BIN
composer

Binary file not shown.

View File

@@ -10,8 +10,8 @@
"require": {
"php": "^7.4",
"champs-libres/async-uploader-bundle": "dev-sf4#d57134aee8e504a83c902ff0cf9f8d36ac418290",
"champs-libres/wopi-bundle": "dev-master#59b468503b9413f8d588ef9e626e7675560db3d8",
"champs-libres/wopi-lib": "dev-master#0e1da19bb6de820080b8651867a7e475be590060",
"champs-libres/wopi-bundle": "dev-master#6dd8e0a14e00131eb4b889ecc30270ee4a0e5224",
"champs-libres/wopi-lib": "dev-master#8615f4a45a39fc2b6a98765ea835fcfd39618787",
"doctrine/doctrine-bundle": "^2.1",
"doctrine/doctrine-migrations-bundle": "^3.0",
"doctrine/orm": "^2.7",
@@ -21,7 +21,7 @@
"knplabs/knp-time-bundle": "^1.12",
"league/csv": "^9.7.1",
"nyholm/psr7": "^1.4",
"ocramius/package-versions": "^1.10",
"ocramius/package-versions": "^1.10 || ^2",
"odolbeau/phone-number-bundle": "^3.6",
"phpoffice/phpspreadsheet": "^1.16",
"ramsey/uuid-doctrine": "^1.7",
@@ -33,6 +33,7 @@
"symfony/expression-language": "^4.4",
"symfony/form": "^4.4",
"symfony/framework-bundle": "^4.4",
"symfony/http-foundation": "^4.4",
"symfony/intl": "^4.4",
"symfony/mailer": "^5.4",
"symfony/mime": "^5.4",
@@ -44,6 +45,7 @@
"symfony/translation": "^4.4",
"symfony/twig-bundle": "^4.4",
"symfony/validator": "^4.4",
"symfony/web-link": "*",
"symfony/webpack-encore-bundle": "^1.11",
"symfony/workflow": "^4.4",
"symfony/yaml": "^4.4",
@@ -94,7 +96,8 @@
"autoload-dev": {
"psr-4": {
"App\\": "tests/app/src/",
"Chill\\DocGeneratorBundle\\Tests\\": "src/Bundle/ChillDocGeneratorBundle/tests"
"Chill\\DocGeneratorBundle\\Tests\\": "src/Bundle/ChillDocGeneratorBundle/tests",
"Chill\\WopiBundle\\Tests\\": "src/Bundle/ChillDocGeneratorBundle/tests"
}
},
"config": {
@@ -103,7 +106,8 @@
"ergebnis/composer-normalize": true,
"ocramius/package-versions": true,
"phpro/grumphp": true,
"phpstan/extension-installer": true
"phpstan/extension-installer": true,
"roave/you-are-using-it-wrong": true
},
"bin-dir": "bin",
"optimize-autoloader": true,

View File

@@ -10,17 +10,17 @@
Exports
*******
Export is an important issue for the Chill software : users should be able to :
Export is an important issue within the Chill software : users should be able to :
- compute statistics about their activity ;
- list "things" which make part of their activities.
- list "things" which are a part of their activities.
The `main bundle`_ provides a powerful framework to build custom queries with re-usable parts across differents bundles.
.. contents:: Table of content
:local:
.. seealso::
.. seealso::
`The issue where this framework was discussed <https://git.framasoft.org/Chill-project/Chill-Main/issues/9>`_
Provides some information about the pursued features and architecture.
@@ -32,37 +32,37 @@ Concepts
Some vocabulary: 3 "Export elements"
------------------------------------
Four terms are used for this framework :
Four terms are used for this framework :
exports
provides some basic operation on the date. Two kind of exports are available :
Exports
provide some basic operation on the data. Two kinds of exports are available :
- computed data : it may be "the number of people", "the number of activities", "the duration of activities", ...
- list data : it may be "the list of people", "the list of activity", ...
- list data : it may be "the list of people", "the list of activities", ...
filters
The filters make a filter on the date: it removes some information the user doesn't want to introduce in the computation done by export. In other word, filters make a filter...
Filters
The filters create a filter on the data: it removes some information the user doesn't want to introduce in the computation done by the export.
Example of filter: "people under 18 years olds", "activities between the 1st of June and the 31st December", ...
Example of a filter: "people under 18 years olds", "activities between the 1st of June and the 31st December", ...
aggregators
The aggregator aggregates the data into some group (some software use the term 'bucket').
Aggregators
The aggregator aggregates the data into some group (some software use the term 'bucket').
Example of aggregator : "group people by gender", "group people by nationality", "group activity by type", ...
Example of an aggregator : "group people by gender", "group people by nationality", "group activity by type", ...
formatters
The formatters format the data into a :class:`Symfony\Component\HttpFoundation\Response`, which will be returned "as is" by the controller to the web client.
Formatters
The formatters format the data into a :class:`Symfony\Component\HttpFoundation\Response`, which will be returned "as is" by the controller to the web client.
Example of formatter: "format data as CSV", "format data as ods spreadsheet", ...
Example of a formatter: "format data as CSV", "format data as an ods spreadsheet", ...
Anatomy of an export
---------------------
An export may be explained as a sentence, where each part of this sentence refers to one or multiple exports element. Examples :
An export can be thought of as a sentence where each part of this sentence refers to one or multiple export elements. Examples :
**Example 1**: Count the number of people having at least one activity in the last 12 month, and group them by nationality and gender, and format them in a CSV spreadsheet.
Here :
Here :
- *count the number of people* is the export part
- *having at least one activity* is the filter part
@@ -72,10 +72,10 @@ Here :
Note that :
- aggregators, filters, exports and aggregators are cross-bundle. Here the bundle *activity* provides a filter which apply on an export provided by the person bundle ;
- there may exists multiple aggregator or filter for one export. Currently, only one export is allowed.
- Aggregators, filters, exports and formatters are cross-bundle. Here the bundle *activity* provides a filter which is applied on an export provided by the person bundle ;
- Multiple aggregator or filter for one export may exist. Currently, only one export is allowed.
The result might be :
The result might be :
+-----------------------+----------------+---------------------------+
| Nationality | Gender | Number of people |
@@ -89,9 +89,9 @@ The result might be :
| France | Female | 150 |
+-----------------------+----------------+---------------------------+
**Example 2**: Count the average duration of an activity with type "meeting", which occurs between the 1st of June and the 31st of December, group them by week, and format the data in a OpenDocument spreadsheet.
**Example 2**: Count the average duration of an activity with type "meeting", which occurs between the 1st of June and the 31st of December, group them by week, and format the data in an OpenDocument spreadsheet.
Here :
Here :
- *count the average duration of an activity* is the export part
- *activity with type meeting* is a filter part
@@ -102,7 +102,7 @@ Here :
The result might be :
+-----------------------+----------------------+
| Week | Number of activities |
| Week | Number of activities |
+=======================+======================+
| 2015-10 | 10 |
+-----------------------+----------------------+
@@ -116,77 +116,77 @@ The result might be :
Authorization and exports
-------------------------
Exports, filters and aggregators should not make see data the user is not allowed to see.
Exports, filters and aggregators should not show data the user is not allowed to see within the application.
In other words, developers are required to take care of user authorization for each export.
It should exists a special role that should be granted to users which are allowed to build exports. For more simplicity, this role should apply on center, and should not requires special circles.
There should be a specific role that grants permission to users who are allowed to build exports. For more simplicity, this role should apply on a center, and should not require special circles.
How does the magic works ?
How does the magic work ?
===========================
To build an export, we rely on the capacity of the database to execute queries with aggregate (i.e. GROUP BY) and filter (i.e. WHERE) instructions.
An export is an SQL query which is initiated by an export, and modified by aggregators and filters.
.. note::
.. note::
**Example**: Count the number of people having at least one activity in the last 12 month, and group them by nationality and gender
1. The report initiate the query
1. The report initiates the query
.. code-block:: SQL
SELECT count(people.*) FROM people
2. The filter add a where and join clause :
2. The filter adds a where and join clause :
.. code-block:: SQL
SELECT count(people.*) FROM people
RIGHT JOIN activity
SELECT count(people.*) FROM people
RIGHT JOIN activity
WHERE activity.date IS BETWEEN now AND 6 month ago
3. The aggregator "nationality" add a GROUP BY clause and a column in the SELECT statement:
3. The aggregator "nationality" adds a GROUP BY clause and a column in the SELECT statement:
.. code-block:: sql
SELECT people.nationality, count(people.*) FROM people
RIGHT JOIN activity
WHERE activity.date IS BETWEEN now AND 6 month ago
SELECT people.nationality, count(people.*) FROM people
RIGHT JOIN activity
WHERE activity.date IS BETWEEN now AND 6 month ago
GROUP BY nationality
4. The aggregator "gender" do the same job as the nationality aggregator : it adds a GROUP BY clause and a column in the SELECT statement :
4. The aggregator "gender" does the same job as the nationality aggregator : it adds a GROUP BY clause and a column in the SELECT statement :
.. code-block:: sql
SELECT people.nationality, people.gender, count(people.*)
FROM people RIGHT JOIN activity
WHERE activity.date IS BETWEEN now AND 6 month ago
SELECT people.nationality, people.gender, count(people.*)
FROM people RIGHT JOIN activity
WHERE activity.date IS BETWEEN now AND 6 month ago
GROUP BY nationality, gender
Each filter, aggregator and filter may collect parameters from the user by providing a form. This form is appended to the export form. Here is an example.
Each filter, aggregator and filter may collect parameters from the user through a form. This form is appended to the export form. Here is an example.
.. figure:: /_static/screenshots/development/export_form-fullpage.png
The screenshot show the export form for ``CountPeople`` (Nombre de personnes). The filter by date of birth is checked (*Filtrer par date de naissance de la personne*), which allow to show a subform, which is provided by the :class:`Chill\PersonBundle\Export\Filter\BirthdateFilter`. The other filter, which are unchecked, does not show the subform.
The screenshot shows the export form for ``CountPeople`` (Nombre de personnes). The filter by date of birth is checked (*Filtrer par date de naissance de la personne*), which triggers a subform, which is provided by the :class:`Chill\PersonBundle\Export\Filter\BirthdateFilter`. The other unchecked filter does not show the subform.
Two aggregators are also checked : by Country of birth (*Aggréger les personnes par pays de naissance*, corresponding class is :class:`Chill\PersonBundle\Export\Aggregator\CountryOfBirthAggregator`, which also open a subform. The aggregator by gender (*Aggréger les personnes par genre*) is also checked, but there is no corresponding subform.
Two aggregators are also checked : by Country of birth (*Aggréger les personnes par pays de naissance*, the corresponding class is :class:`Chill\PersonBundle\Export\Aggregator\CountryOfBirthAggregator`, which also triggers a subform. The aggregator by gender (*Aggréger les personnes par genre*) is also checked, but there is no corresponding subform.
The Export Manager
------------------
The Export manager (:class:`Chill\MainBundle\Export\ExportManager` is the central class which register all exports, aggregators, filters and formatters.
The Export manager (:class:`Chill\MainBundle\Export\ExportManager` is the central class which registers all exports, aggregators, filters and formatters.
The export manager is also responsible for orchestrating the whole export process, producing a :class:`Symfony\FrameworkBundle\HttpFoundation\Request` to each export request.
The export manager is also responsible for orchestrating the whole export process, producing a :class:`Symfony\FrameworkBundle\HttpFoundation\Request` for each export request.
The export form step
--------------------
The form step allow to build a form, aggregating different parts of the module.
The form step allows you to build a form, combining different parts of the module.
The building of forms is separated between different subform, which are responsible for rendering their part of the form (aggregators, filters, and export).
The building of forms is split into different subforms, where each one is responsible for rendering their part of the form (aggregators, filters, and export).
.. figure:: /_static/puml/exports/form_steps.png
:scale: 40%
@@ -194,12 +194,12 @@ The building of forms is separated between different subform, which are responsi
The formatter form step
-----------------------
The formatter form is processed *after* the user filled the export form. It is built the same way, but receive in parameters the data entered by the user on the previous step (i.e. export form). It may then adapt it accordingly (example: show a list of columns selected in aggregators).
The formatter form is processed *after* the user filled the export form. It is built the same way, but receives the data entered by the user on the previous step as parameters (i.e. export form). It may then adapt it accordingly (example: show a list of columns selected in aggregators).
Processing the export
---------------------
The export process may be explained by this schema :
The export process can be explained by this schema :
.. figure:: /_static/puml/exports/processing_export.png
:scale: 40%
@@ -219,20 +219,20 @@ This is an example of the ``CountPerson`` export :
:language: php
:linenos:
* **Line 36**: the ``getType`` function return a string. This string will be used to find the aggregtors and filters which will apply to this export.
* **Line 41**: a simple description to help user to understand what your export does.
* **Line 36**: the ``getType`` function returns a string. This string will be used to find the aggregtors and filters which will apply to this export.
* **Line 41**: a simple description to help users understand what your export does.
* **Line 46**: The title of the export. A summary of what your export does.
* **Line 51**: The list of roles requires to execute this export.
* **Line 51**: The list of roles required to execute this export.
* **Line 56**: We initiate the query here...
* **Line 59**: We have to filter the query with centers the users checked in the form. We process the $acl variable to get all ``Center`` object in one array
* **Line 63**: We create the query, with a query builder.
* **Line 74**: We simply returns the result, but take care of hydrating the results as an array.
* **Line 103**: return the list of formatters types which are allowed to apply on this filter
* **Line 59**: We have to filter the query with centers the users checked in the form. We process the $acl variable to get all ``Center`` objects in one array
* **Line 63**: We create the query with a query builder.
* **Line 74**: We return the result, but make sure to hydrate the results as an array.
* **Line 103**: return the list of formatter types which are allowed to be applied on this filter
Filters
-------
This is an example of the *filter by birthdate*. This filter ask some information in a form (`buildForm` is not empty), and this form must be validated. To performs this validations, we implement a new Interface: :class:`Chill\MainBundle\Export\ExportElementValidatedInterface`:
This is an example of the *filter by birthdate*. This filter asks some information through a form (`buildForm` is not empty), and this form must be validated. To perform this validation, we implement a new Interface: :class:`Chill\MainBundle\Export\ExportElementValidatedInterface`:
.. literalinclude:: /_static/code/exports/BirthdateFilter.php
:language: php

View File

@@ -32,7 +32,7 @@ Then, render the pagination using the dedicated twig function.
{% block title 'Item list'|trans %}
{% block personcontent %}
{% block content %}
<table>

View File

@@ -156,7 +156,7 @@ This layout extend `ChillMainBundle::layoutWithVerticalMenu.html.twig` add the p
It proposes 1 new block :
* personcontent
* content
* where to display the information of the person

View File

@@ -65,6 +65,17 @@ This script will :
4. build assets
.. note::
In some cases it can happen that an old image (chill_base_php or chill_php) stored in the docker cache will make the script fail. To solve this problem you have to delete the image and the container, before the make init :
.. code-block:: bash
docker-compose images php
docker rmi -f chill_php:prod
docker-compose rm php
4. Start the project
====================
@@ -93,6 +104,29 @@ The password is always ``password``.
Now, read `Operations` below.
Prepare for development
***********************
Add a Gitlab token to ensure that you get always the source code:
1. generate a gitlab token there: https://gitlab.com/oauth/token
2. run this command (in php container, at the app's root): :code:`composer config gitlab-token.gitlab.com <your token>`
The auth token should appears now in the directory :code:`.composer`:
.. code-block: bash
$ cat .composer/auth.json
{
"gitlab-token": {
"gitlab.com": "<your token>"
}
}
See also "how to switch branch and get new dependencies".
Operations
**********
@@ -200,6 +234,25 @@ How to run webpack interactively
Executing :code:`bash docker-node.sh` will open a terminal in a node container, with volumes mounted.
How to switch the branch for chill-bundles, and get new dependencies
====================================================================
During development, you will switch to new branches for chill-bundles. As long as the dependencies are equals, this does not cause any problem. But sometimes, a new branch introduces a new dependency, and you must download it.
In order to do that without pain, use those steps:
0. Ensuire you have a token, set
1. at the app's root, update the `composer.json` to your current branch:
.. code-block:: json
{
"require": {
"chill-bundles": "dev-<my-branch>@dev"
}
2. mount into the php container, and run `composer update`
Build the documentation API
===========================

View File

@@ -24,6 +24,7 @@ parameters:
- "/spec/"
- "/var/"
- "/vendor/"
- "/tests/app"
# Psalm
tasks.psalm.blocking: true

View File

@@ -5,11 +5,6 @@ parameters:
count: 1
path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php
-
message: "#^Access to an undefined property Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:\\$currentHouseholdParticipationAt\\.$#"
count: 3
path: src/Bundle/ChillPersonBundle/Entity/Person.php
-
message: "#^Access to an undefined property Chill\\\\PersonBundle\\\\Entity\\\\Household\\\\PersonHouseholdAddress\\:\\:\\$relation\\.$#"
count: 1

File diff suppressed because it is too large Load Diff

View File

@@ -25,16 +25,6 @@ parameters:
count: 1
path: src/Bundle/ChillActivityBundle/Form/ActivityType.php
-
message: "#^Only booleans are allowed in &&, mixed given on the right side\\.$#"
count: 3
path: src/Bundle/ChillActivityBundle/Form/ActivityType.php
-
message: "#^Only booleans are allowed in an if condition, mixed given\\.$#"
count: 2
path: src/Bundle/ChillActivityBundle/Form/ActivityType.php
-
message: "#^Only booleans are allowed in an if condition, mixed given\\.$#"
count: 3
@@ -250,11 +240,6 @@ parameters:
count: 1
path: src/Bundle/ChillMainBundle/Entity/Address.php
-
message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#"
count: 1
path: src/Bundle/ChillMainBundle/Entity/Embeddable/CommentEmbeddable.php
-
message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#"
count: 1
@@ -350,11 +335,6 @@ parameters:
count: 6
path: src/Bundle/ChillPersonBundle/Command/ImportPeopleFromCSVCommand.php
-
message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#"
count: 2
path: src/Bundle/ChillPersonBundle/Entity/PersonPhone.php
-
message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#"
count: 1
@@ -460,18 +440,8 @@ parameters:
count: 1
path: src/Bundle/ChillThirdPartyBundle/Repository/ThirdPartyRepository.php
-
message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#"
count: 1
path: src/Bundle/ChillThirdPartyBundle/Search/ThirdPartyApiSearch.php
-
message: "#^Method Chill\\\\ThirdPartyBundle\\\\Search\\\\ThirdPartySearch\\:\\:renderResult\\(\\) should return string but return statement is missing\\.$#"
count: 1
path: src/Bundle/ChillThirdPartyBundle/Search/ThirdPartySearch.php
-
message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#"
count: 1
path: src/Bundle/ChillThirdPartyBundle/Templating/Entity/ThirdPartyRender.php

View File

@@ -3,6 +3,7 @@ parameters:
paths:
- src/
excludePaths:
- .php_cs*
- docs/
- src/Bundle/*/Tests/*
- src/Bundle/*/tests/*

View File

@@ -40,6 +40,9 @@
<testsuite name="DocGeneratorBundle">
<directory suffix="Test.php">src/Bundle/ChillDocGeneratorBundle/tests/</directory>
</testsuite>
<testsuite name="WopiBundle">
<directory suffix="Test.php">src/Bundle/ChillWopiBundle/tests/</directory>
</testsuite>
</testsuites>
<listeners>

View File

@@ -6,6 +6,7 @@
xmlns="https://getpsalm.org/schema/config"
xsi:schemaLocation="https://getpsalm.org/schema/config tests/app/vendor/vimeo/psalm/config.xsd"
errorBaseline="psalm-baseline.xml"
cacheDirectory="./.psalm"
>
<projectFiles>
<directory name="src" />
@@ -13,4 +14,15 @@
<directory name="./tests/" />
</ignoreFiles>
</projectFiles>
<!-- suppress error around parameter bags - see https://github.com/symfony/symfony/issues/45609#issuecomment-1056816975 -->
<!-- maybe to desactivate with php 8.1 ? -->
<issueHandlers>
<UndefinedDocblockClass>
<errorLevel type="suppress">
<referencedClass name="UnitEnum" />
</errorLevel>
</UndefinedDocblockClass>
</issueHandlers>
</psalm>

View File

@@ -21,6 +21,7 @@ use Chill\ActivityBundle\Repository\ActivityTypeRepository;
use Chill\ActivityBundle\Security\Authorization\ActivityVoter;
use Chill\MainBundle\Entity\Embeddable\CommentEmbeddable;
use Chill\MainBundle\Repository\LocationRepository;
use Chill\MainBundle\Security\Resolver\CenterResolverManagerInterface;
use Chill\PersonBundle\Entity\AccompanyingPeriod;
use Chill\PersonBundle\Entity\Person;
use Chill\PersonBundle\Privacy\PrivacyEvent;
@@ -56,6 +57,8 @@ final class ActivityController extends AbstractController
private ActivityTypeRepository $activityTypeRepository;
private CenterResolverManagerInterface $centerResolver;
private EntityManagerInterface $entityManager;
private EventDispatcherInterface $eventDispatcher;
@@ -82,7 +85,8 @@ final class ActivityController extends AbstractController
EntityManagerInterface $entityManager,
EventDispatcherInterface $eventDispatcher,
LoggerInterface $logger,
SerializerInterface $serializer
SerializerInterface $serializer,
CenterResolverManagerInterface $centerResolver
) {
$this->activityACLAwareRepository = $activityACLAwareRepository;
$this->activityTypeRepository = $activityTypeRepository;
@@ -96,6 +100,7 @@ final class ActivityController extends AbstractController
$this->eventDispatcher = $eventDispatcher;
$this->logger = $logger;
$this->serializer = $serializer;
$this->centerResolver = $centerResolver;
}
/**
@@ -179,14 +184,15 @@ final class ActivityController extends AbstractController
{
$view = null;
[$person, $accompanyingPeriod] = $this->getEntity($request);
$entity = $this->activityRepository->find($id);
if (null === $entity) {
throw $this->createNotFoundException('Unable to find Activity entity.');
}
$accompanyingPeriod = $entity->getAccompanyingPeriod();
$person = $entity->getPerson();
if ($entity->getAccompanyingPeriod() instanceof AccompanyingPeriod) {
$view = 'ChillActivityBundle:Activity:editAccompanyingCourse.html.twig';
$accompanyingPeriod = $entity->getAccompanyingPeriod();
@@ -197,7 +203,7 @@ final class ActivityController extends AbstractController
// $this->denyAccessUnlessGranted('CHILL_ACTIVITY_UPDATE', $entity);
$form = $this->createForm(ActivityType::class, $entity, [
'center' => $entity->getCenter(),
'center' => $this->centerResolver->resolveCenters($entity)[0] ?? null,
'role' => new Role('CHILL_ACTIVITY_UPDATE'),
'activityType' => $entity->getActivityType(),
'accompanyingPeriod' => $accompanyingPeriod,
@@ -220,6 +226,9 @@ final class ActivityController extends AbstractController
$this->entityManager->persist($entity);
$this->entityManager->flush();
$params = $this->buildParamsToUrl($person, $accompanyingPeriod);
$params['id'] = $entity->getId();
if ($form->has('gendocTemplateId') && null !== $form['gendocTemplateId']->getData()) {
return $this->redirectToRoute(
'chill_docgenerator_generate_from_template',
@@ -227,15 +236,13 @@ final class ActivityController extends AbstractController
'template' => $form->get('gendocTemplateId')->getData(),
'entityClassName' => Activity::class,
'entityId' => $entity->getId(),
'returnPath' => $this->generateUrl('chill_activity_activity_edit', $params),
]
);
}
$this->addFlash('success', $this->get('translator')->trans('Success : activity updated!'));
$params = $this->buildParamsToUrl($person, $accompanyingPeriod);
$params['id'] = $entity->getId();
return $this->redirectToRoute('chill_activity_activity_show', $params);
}
@@ -414,7 +421,7 @@ final class ActivityController extends AbstractController
$this->denyAccessUnlessGranted(ActivityVoter::CREATE, $entity);
$form = $this->createForm(ActivityType::class, $entity, [
'center' => $entity->getCenter(),
'center' => $this->centerResolver->resolveCenters($entity)[0] ?? null,
'role' => new Role('CHILL_ACTIVITY_CREATE'),
'activityType' => $entity->getActivityType(),
'accompanyingPeriod' => $accompanyingPeriod,
@@ -444,6 +451,9 @@ final class ActivityController extends AbstractController
'template' => $form->get('gendocTemplateId')->getData(),
'entityClassName' => Activity::class,
'entityId' => $entity->getId(),
'returnPath' => $this->generateUrl('chill_activity_activity_edit', [
'id' => $entity->getId(),
]),
]
);
}

View File

@@ -54,7 +54,7 @@ class ActivityReasonCategoryController extends AbstractController
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('ChillActivityBundle:ActivityReasonCategory')->find($id);
$entity = $em->getRepository(\Chill\ActivityBundle\Entity\ActivityReasonCategory::class)->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find ActivityReasonCategory entity.');
@@ -75,7 +75,7 @@ class ActivityReasonCategoryController extends AbstractController
{
$em = $this->getDoctrine()->getManager();
$entities = $em->getRepository('ChillActivityBundle:ActivityReasonCategory')->findAll();
$entities = $em->getRepository(\Chill\ActivityBundle\Entity\ActivityReasonCategory::class)->findAll();
return $this->render('ChillActivityBundle:ActivityReasonCategory:index.html.twig', [
'entities' => $entities,
@@ -105,7 +105,7 @@ class ActivityReasonCategoryController extends AbstractController
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('ChillActivityBundle:ActivityReasonCategory')->find($id);
$entity = $em->getRepository(\Chill\ActivityBundle\Entity\ActivityReasonCategory::class)->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find ActivityReasonCategory entity.');
@@ -125,7 +125,7 @@ class ActivityReasonCategoryController extends AbstractController
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('ChillActivityBundle:ActivityReasonCategory')->find($id);
$entity = $em->getRepository(\Chill\ActivityBundle\Entity\ActivityReasonCategory::class)->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find ActivityReasonCategory entity.');

View File

@@ -54,7 +54,7 @@ class ActivityReasonController extends AbstractController
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('ChillActivityBundle:ActivityReason')->find($id);
$entity = $em->getRepository(\Chill\ActivityBundle\Entity\ActivityReason::class)->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find ActivityReason entity.');
@@ -75,7 +75,7 @@ class ActivityReasonController extends AbstractController
{
$em = $this->getDoctrine()->getManager();
$entities = $em->getRepository('ChillActivityBundle:ActivityReason')->findAll();
$entities = $em->getRepository(\Chill\ActivityBundle\Entity\ActivityReason::class)->findAll();
return $this->render('ChillActivityBundle:ActivityReason:index.html.twig', [
'entities' => $entities,
@@ -105,7 +105,7 @@ class ActivityReasonController extends AbstractController
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('ChillActivityBundle:ActivityReason')->find($id);
$entity = $em->getRepository(\Chill\ActivityBundle\Entity\ActivityReason::class)->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find ActivityReason entity.');
@@ -125,7 +125,7 @@ class ActivityReasonController extends AbstractController
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('ChillActivityBundle:ActivityReason')->find($id);
$entity = $em->getRepository(\Chill\ActivityBundle\Entity\ActivityReason::class)->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find ActivityReason entity.');

View File

@@ -61,8 +61,6 @@ class ChillActivityExtension extends Extension implements PrependExtensionInterf
ActivityVoter::DELETE => [ActivityVoter::SEE_DETAILS],
ActivityVoter::SEE_DETAILS => [ActivityVoter::SEE],
ActivityVoter::FULL => [
ActivityVoter::CREATE_PERSON,
ActivityVoter::CREATE_ACCOMPANYING_COURSE,
ActivityVoter::DELETE,
ActivityVoter::UPDATE,
],

View File

@@ -15,8 +15,9 @@ use Chill\ActivityBundle\Validator\Constraints as ActivityValidator;
use Chill\DocStoreBundle\Entity\StoredObject;
use Chill\MainBundle\Entity\Center;
use Chill\MainBundle\Entity\Embeddable\CommentEmbeddable;
use Chill\MainBundle\Entity\HasCenterInterface;
use Chill\MainBundle\Entity\HasScopeInterface;
use Chill\MainBundle\Entity\Embeddable\PrivateCommentEmbeddable;
use Chill\MainBundle\Entity\HasCentersInterface;
use Chill\MainBundle\Entity\HasScopesInterface;
use Chill\MainBundle\Entity\Location;
use Chill\MainBundle\Entity\Scope;
use Chill\MainBundle\Entity\User;
@@ -35,6 +36,7 @@ use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Serializer\Annotation\DiscriminatorMap;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Serializer\Annotation\SerializedName;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Class Activity.
@@ -53,7 +55,7 @@ use Symfony\Component\Serializer\Annotation\SerializedName;
* getUserFunction="getUser",
* path="scope")
*/
class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterface, HasCenterInterface, HasScopeInterface
class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterface, HasCentersInterface, HasScopesInterface
{
public const SENTRECEIVED_RECEIVED = 'received';
@@ -93,6 +95,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
/**
* @ORM\ManyToMany(targetEntity="Chill\DocStoreBundle\Entity\StoredObject", cascade={"persist"})
* @Assert\Valid(traverse=true)
*/
private Collection $documents;
@@ -132,6 +135,11 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
*/
private ?Collection $persons = null;
/**
* @ORM\Embedded(class="Chill\MainBundle\Entity\Embeddable\PrivateCommentEmbeddable", columnPrefix="privateComment_")
*/
private PrivateCommentEmbeddable $privateComment;
/**
* @ORM\ManyToMany(targetEntity="Chill\ActivityBundle\Entity\ActivityReason")
* @Groups({"docgen:read"})
@@ -191,6 +199,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
{
$this->reasons = new ArrayCollection();
$this->comment = new CommentEmbeddable();
$this->privateComment = new PrivateCommentEmbeddable();
$this->persons = new ArrayCollection();
$this->thirdParties = new ArrayCollection();
$this->documents = new ArrayCollection();
@@ -231,11 +240,22 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
{
if (!$this->socialActions->contains($socialAction)) {
$this->socialActions[] = $socialAction;
$this->ensureSocialActionConsistency();
}
return $this;
}
/**
* Add a social issue.
*
* Note: the social issue consistency (the fact that only yougest social issues
* are kept) is processed by an entity listener:
*
* @see{\Chill\PersonBundle\AccompanyingPeriod\SocialIssueConsistency\AccompanyingPeriodSocialIssueConsistencyEntityListener}
*
* @return $this
*/
public function addSocialIssue(SocialIssue $socialIssue): self
{
if (!$this->socialIssues->contains($socialIssue)) {
@@ -286,13 +306,17 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
* get the center
* center is extracted from person.
*/
public function getCenter(): ?Center
public function getCenters(): iterable
{
if ($this->person instanceof Person) {
return $this->person->getCenter();
return [$this->person->getCenter()];
}
return null;
if ($this->getAccompanyingPeriod() instanceof AccompanyingPeriod) {
return $this->getAccompanyingPeriod()->getCenters() ?? [];
}
return [];
}
public function getComment(): CommentEmbeddable
@@ -387,6 +411,11 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
return [];
}
public function getPrivateComment(): PrivateCommentEmbeddable
{
return $this->privateComment;
}
public function getReasons(): Collection
{
return $this->reasons;
@@ -397,6 +426,19 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
return $this->scope;
}
public function getScopes(): iterable
{
if (null !== $this->getAccompanyingPeriod()) {
return $this->getAccompanyingPeriod()->getScopes();
}
if (null !== $this->getPerson()) {
return [$this->scope];
}
return [];
}
public function getSentReceived(): string
{
return $this->sentReceived;
@@ -573,6 +615,13 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
return $this;
}
public function setPrivateComment(PrivateCommentEmbeddable $privateComment): self
{
$this->privateComment = $privateComment;
return $this;
}
public function setReasons(?ArrayCollection $reasons): self
{
$this->reasons = $reasons;
@@ -631,4 +680,13 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
return $this;
}
private function ensureSocialActionConsistency(): void
{
$ancestors = SocialAction::findAncestorSocialActions($this->getSocialActions());
foreach ($ancestors as $ancestor) {
$this->removeSocialAction($ancestor);
}
}
}

View File

@@ -167,6 +167,16 @@ class ActivityType
*/
private int $personVisible = self::FIELD_REQUIRED;
/**
* @ORM\Column(type="string", nullable=false, options={"default": ""})
*/
private string $privateCommentLabel = '';
/**
* @ORM\Column(type="smallint", nullable=false, options={"default": 1})
*/
private int $privateCommentVisible = self::FIELD_OPTIONAL;
/**
* @ORM\Column(type="string", nullable=false, options={"default": ""})
*/
@@ -416,6 +426,16 @@ class ActivityType
return $this->personVisible;
}
public function getPrivateCommentLabel(): string
{
return $this->privateCommentLabel;
}
public function getPrivateCommentVisible(): int
{
return $this->privateCommentVisible;
}
public function getReasonsLabel(): string
{
return $this->reasonsLabel;
@@ -688,6 +708,20 @@ class ActivityType
return $this;
}
public function setPrivateCommentLabel(string $privateCommentLabel): self
{
$this->privateCommentLabel = $privateCommentLabel;
return $this;
}
public function setPrivateCommentVisible(int $privateCommentVisible): self
{
$this->privateCommentVisible = $privateCommentVisible;
return $this;
}
public function setReasonsLabel(string $reasonsLabel): self
{
$this->reasonsLabel = $reasonsLabel;

View File

@@ -66,9 +66,6 @@ class ActivityEntityListener
$newAction->addPerson($person);
}
foreach ($associatedThirdparties as $thirdparty) {
$newAction->setHandlingThierparty($thirdparty);
}
$this->em->persist($newAction);
$this->em->flush();
}

View File

@@ -0,0 +1,83 @@
<?php
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Aggregator\ACPAggregators;
use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\AggregatorInterface;
use Chill\PersonBundle\Repository\SocialWork\SocialActionRepository;
use Chill\PersonBundle\Templating\Entity\SocialActionRender;
use Closure;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
class BySocialActionAggregator implements AggregatorInterface
{
private SocialActionRender $actionRender;
private SocialActionRepository $actionRepository;
public function __construct(
SocialActionRender $actionRender,
SocialActionRepository $actionRepository
) {
$this->actionRender = $actionRender;
$this->actionRepository = $actionRepository;
}
public function getLabels($key, array $values, $data)
{
return function($value) {
if ('_header' === $value) {
return 'Social action';
}
$sa = $this->actionRepository->find($value);
return $this->actionRender->renderString($sa, []);
};
}
public function getQueryKeys($data): array
{
return ['socialaction_aggregator'];
}
public function buildForm(FormBuilderInterface $builder)
{
// no form
}
public function getTitle(): string
{
return 'Group activity by linked socialaction';
}
public function addRole()
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
if(!in_array('socialaction', $qb->getAllAliases())) {
$qb->join('activity.socialActions', 'socialaction');
}
$qb->addSelect('socialaction.id AS socialaction_aggregator');
$groupBy = $qb->getDQLPart('groupBy');
if (!empty($groupBy)) {
$qb->addGroupBy('socialaction_aggregator');
} else {
$qb->groupBy('socialaction_aggregator');
}
}
public function applyOn(): string
{
return Declarations::ACTIVITY_ACP;
}
}

View File

@@ -0,0 +1,84 @@
<?php
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Aggregator\ACPAggregators;
use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\AggregatorInterface;
use Chill\PersonBundle\Repository\SocialWork\SocialIssueRepository;
use Chill\PersonBundle\Templating\Entity\SocialIssueRender;
use Closure;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
class BySocialIssueAggregator implements AggregatorInterface
{
private SocialIssueRepository $issueRepository;
private SocialIssueRender $issueRender;
public function __construct(
SocialIssueRepository $issueRepository,
SocialIssueRender $issueRender
) {
$this->issueRepository = $issueRepository;
$this->issueRender = $issueRender;
}
public function getLabels($key, array $values, $data)
{
return function ($value): string {
if ($value === '_header') {
return 'Social issues';
}
$i = $this->issueRepository->find($value);
return $this->issueRender->renderString($i, []);
};
}
public function getQueryKeys($data): array
{
return ['socialissue_aggregator'];
}
public function buildForm(FormBuilderInterface $builder)
{
// no form
}
public function getTitle(): string
{
return 'Group activity by linked socialissue';
}
public function addRole()
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
if (!in_array('socialissue', $qb->getAllAliases())) {
$qb->join('activity.socialIssues', 'socialissue');
}
$qb->addSelect('socialissue.id AS socialissue_aggregator');
$groupBy = $qb->getDQLPart('groupBy');
if (!empty($groupBy)) {
$qb->addGroupBy('socialissue_aggregator');
} else {
$qb->groupBy('socialissue_aggregator');
}
}
public function applyOn(): string
{
return Declarations::ACTIVITY_ACP;
}
}

View File

@@ -0,0 +1,83 @@
<?php
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Aggregator\ACPAggregators;
use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\AggregatorInterface;
use Chill\ThirdPartyBundle\Repository\ThirdPartyRepository;
use Chill\ThirdPartyBundle\Templating\Entity\ThirdPartyRender;
use Closure;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
class ByThirdpartyAggregator implements AggregatorInterface
{
private ThirdPartyRepository $thirdPartyRepository;
private ThirdPartyRender $thirdPartyRender;
public function __construct(
ThirdPartyRepository $thirdPartyRepository,
ThirdPartyRender $thirdPartyRender
) {
$this->thirdPartyRepository = $thirdPartyRepository;
$this->thirdPartyRender = $thirdPartyRender;
}
public function getLabels($key, array $values, $data)
{
return function ($value): string {
if ($value === '_header') {
return 'Accepted thirdparty';
}
$tp = $this->thirdPartyRepository->find($value);
return $this->thirdPartyRender->renderString($tp, []);
};
}
public function getQueryKeys($data): array
{
return ['thirdparty_aggregator'];
}
public function buildForm(FormBuilderInterface $builder)
{
// no form
}
public function getTitle(): string
{
return 'Group activity by linked thirdparties';
}
public function addRole()
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
if (!in_array('thirdparty', $qb->getAllAliases())) {
$qb->join('activity.thirdParties', 'thirdparty');
}
$qb->addSelect('thirdparty.id AS thirdparty_aggregator');
$groupBy = $qb->getDQLPart('groupBy');
if (!empty($groupBy)) {
$qb->addGroupBy('thirdparty_aggregator');
} else {
$qb->groupBy('thirdparty_aggregator');
}
}
public function applyOn(): string
{
return Declarations::ACTIVITY_ACP;
}
}

View File

@@ -0,0 +1,83 @@
<?php
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Aggregator\ACPAggregators;
use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\AggregatorInterface;
use Chill\MainBundle\Repository\UserRepository;
use Chill\MainBundle\Templating\Entity\UserRender;
use Closure;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
class ByUserAggregator implements AggregatorInterface
{
private UserRepository $userRepository;
private UserRender $userRender;
public function __construct(
UserRepository $userRepository,
UserRender $userRender
) {
$this->userRepository = $userRepository;
$this->userRender = $userRender;
}
public function getLabels($key, array $values, $data)
{
return function ($value): string {
if ($value === '_header') {
return 'Accepted users';
}
$u = $this->userRepository->find($value);
return $this->userRender->renderString($u, []);
};
}
public function getQueryKeys($data): array
{
return ['users_aggregator'];
}
public function buildForm(FormBuilderInterface $builder)
{
// no form
}
public function getTitle(): string
{
return 'Group activity by linked users';
}
public function addRole()
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
if (!in_array('user', $qb->getAllAliases())) {
$qb->join('activity.users', 'user');
}
$qb->addSelect('user.id AS users_aggregator');
$groupBy = $qb->getDQLPart('groupBy');
if (!empty($groupBy)) {
$qb->addGroupBy('users_aggregator');
} else {
$qb->groupBy('users_aggregator');
}
}
public function applyOn(): string
{
return Declarations::ACTIVITY_ACP;
}
}

View File

@@ -0,0 +1,129 @@
<?php
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Aggregator\ACPAggregators;
use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\AggregatorInterface;
use Closure;
use Doctrine\ORM\QueryBuilder;
use RuntimeException;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class DateAggregator implements AggregatorInterface
{
private const CHOICES = [
'by month' => 'month',
'by week' => 'week',
'by year' => 'year',
];
private CONST DEFAULT_CHOICE = 'year';
private TranslatorInterface $translator;
public function __construct(
TranslatorInterface $translator
) {
$this->translator = $translator;
}
public function getLabels($key, array $values, $data)
{
return function ($value) use ($data): string {
if ($value === '_header') {
return 'by '. $data['frequency'];
}
switch ($data['frequency']) {
case 'month':
$month = \DateTime::createFromFormat('!m', $value);
return sprintf(
"%02d (%s)",
$value,
$month->format('M')
);
case 'week':
//return $this->translator->trans('for week') .' '. $value ;
case 'year':
//return $this->translator->trans('in year') .' '. $value ;
default:
return $value;
}
};
}
public function getQueryKeys($data): array
{
return ['date_aggregator'];
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add('frequency', ChoiceType::class, [
'choices' => self::CHOICES,
'multiple' => false,
'expanded' => true,
'empty_data' => self::DEFAULT_CHOICE,
'data' => self::DEFAULT_CHOICE,
]);
}
public function getTitle(): string
{
return 'Group activity by date';
}
public function addRole()
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$order = null;
switch ($data['frequency']) {
case 'month':
$fmt = 'MM'; break;
case 'week':
$fmt = 'IW'; break;
case 'year':
$fmt = 'YYYY'; $order = 'DESC'; break;
default:
throw new RuntimeException(sprintf("The frequency data '%s' is invalid.", $data['frequency']));
}
$qb->addSelect(sprintf("TO_CHAR(activity.date, '%s') AS date_aggregator", $fmt));
$groupBy = $qb->getDQLPart('groupBy');
if (!empty($groupBy)) {
$qb->addGroupBy('date_aggregator');
} else {
$qb->groupBy('date_aggregator');
}
$orderBy = $qb->getDQLPart('orderBy');
if (!empty($orderBy)) {
$qb->addOrderBy('date_aggregator', $order);
} else {
$qb->orderBy('date_aggregator', $order);
}
}
public function applyOn(): string
{
return Declarations::ACTIVITY_ACP;
}
}

View File

@@ -0,0 +1,86 @@
<?php
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Aggregator\ACPAggregators;
use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\AggregatorInterface;
use Chill\MainBundle\Repository\LocationTypeRepository;
use Chill\MainBundle\Templating\TranslatableStringHelper;
use Closure;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
class LocationTypeAggregator implements AggregatorInterface
{
private LocationTypeRepository $locationTypeRepository;
private TranslatableStringHelper $translatableStringHelper;
public function __construct(
LocationTypeRepository $locationTypeRepository,
TranslatableStringHelper $translatableStringHelper
) {
$this->locationTypeRepository = $locationTypeRepository;
$this->translatableStringHelper = $translatableStringHelper;
}
public function getLabels($key, array $values, $data)
{
return function ($value): string {
if ($value === '_header') {
return 'Accepted locationtype';
}
$lt = $this->locationTypeRepository->find($value);
return $this->translatableStringHelper->localize(
$lt->getTitle()
);
};
}
public function getQueryKeys($data): array
{
return ['locationtype_aggregator'];
}
public function buildForm(FormBuilderInterface $builder)
{
// no form
}
public function getTitle(): string
{
return 'Group activity by locationtype';
}
public function addRole()
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
if (!in_array('location', $qb->getAllAliases())) {
$qb->join('activity.location', 'location');
}
$qb->addSelect('IDENTITY(location.locationType) AS locationtype_aggregator');
$groupBy = $qb->getDQLPart('groupBy');
if (!empty($groupBy)) {
$qb->addGroupBy('locationtype_aggregator');
} else {
$qb->groupBy('locationtype_aggregator');
}
}
public function applyOn(): string
{
return Declarations::ACTIVITY_ACP;
}
}

View File

@@ -0,0 +1,86 @@
<?php
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Aggregator\ACPAggregators;
use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\AggregatorInterface;
use Chill\MainBundle\Repository\ScopeRepository;
use Chill\MainBundle\Templating\TranslatableStringHelper;
use Closure;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
class UserScopeAggregator implements AggregatorInterface
{
private ScopeRepository $scopeRepository;
private TranslatableStringHelper $translatableStringHelper;
public function __construct(
ScopeRepository $scopeRepository,
TranslatableStringHelper $translatableStringHelper
) {
$this->scopeRepository = $scopeRepository;
$this->translatableStringHelper = $translatableStringHelper;
}
public function getLabels($key, array $values, $data)
{
return function ($value): string {
if ($value === '_header') {
return 'Scope';
}
$s = $this->scopeRepository->find($value);
return $this->translatableStringHelper->localize(
$s->getName()
);
};
}
public function getQueryKeys($data): array
{
return ['userscope_aggregator'];
}
public function buildForm(FormBuilderInterface $builder)
{
// no form
}
public function getTitle(): string
{
return 'Group activity by userscope';
}
public function addRole()
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
if (!in_array('user', $qb->getAllAliases())) {
$qb->join('activity.user', 'user');
}
$qb->addSelect('IDENTITY(user.mainScope) AS userscope_aggregator');
$groupBy = $qb->getDQLPart('groupBy');
if (!empty($groupBy)) {
$qb->addGroupBy('userscope_aggregator');
} else {
$qb->groupBy('userscope_aggregator');
}
}
public function applyOn(): string
{
return Declarations::ACTIVITY_ACP;
}
}

View File

@@ -11,6 +11,7 @@ declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Aggregator;
use Chill\ActivityBundle\Export\Declarations;
use Chill\ActivityBundle\Repository\ActivityTypeRepository;
use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter;
use Chill\MainBundle\Export\AggregatorInterface;
@@ -44,16 +45,24 @@ class ActivityTypeAggregator implements AggregatorInterface
public function alterQuery(QueryBuilder $qb, $data)
{
// add select element
$qb->addSelect(sprintf('IDENTITY(activity.type) AS %s', self::KEY));
if (!in_array('type', $qb->getAllAliases())) {
$qb->join('activity.activityType', 'type');
}
// add the "group by" part
$qb->addGroupBy(self::KEY);
$qb->addSelect(sprintf('IDENTITY(activity.activityType) AS %s', self::KEY));
$groupby = $qb->getDQLPart('groupBy');
if (!empty($groupBy)) {
$qb->addGroupBy(self::KEY);
} else {
$qb->groupBy(self::KEY);
}
}
public function applyOn()
public function applyOn(): string
{
return 'activity';
return Declarations::ACTIVITY;
}
public function buildForm(FormBuilderInterface $builder)

View File

@@ -11,9 +11,11 @@ declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Aggregator;
use Chill\ActivityBundle\Export\Declarations;
use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter;
use Chill\MainBundle\Export\AggregatorInterface;
use Chill\MainBundle\Repository\UserRepository;
use Chill\MainBundle\Templating\Entity\UserRender;
use Closure;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
@@ -25,10 +27,14 @@ class ActivityUserAggregator implements AggregatorInterface
private UserRepository $userRepository;
private UserRender $userRender;
public function __construct(
UserRepository $userRepository
UserRepository $userRepository,
UserRender $userRender
) {
$this->userRepository = $userRepository;
$this->userRender = $userRender;
}
public function addRole()
@@ -47,7 +53,7 @@ class ActivityUserAggregator implements AggregatorInterface
public function applyOn(): string
{
return 'activity';
return Declarations::ACTIVITY;
}
public function buildForm(FormBuilderInterface $builder)
@@ -62,10 +68,12 @@ class ActivityUserAggregator implements AggregatorInterface
return function ($value) {
if ('_header' === $value) {
return 'activity user';
return 'Activity user';
}
return $this->userRepository->find($value)->getUsername();
$u = $this->userRepository->find($value);
return $this->userRender->renderString($u, []);
};
}

View File

@@ -9,8 +9,9 @@
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Aggregator;
namespace Chill\ActivityBundle\Export\Aggregator\PersonAggregators;
use Chill\ActivityBundle\Export\Declarations;
use Chill\ActivityBundle\Repository\ActivityReasonCategoryRepository;
use Chill\ActivityBundle\Repository\ActivityReasonRepository;
use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter;
@@ -104,9 +105,9 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
}
}
public function applyOn()
public function applyOn(): string
{
return 'activity';
return Declarations::ACTIVITY_PERSON;
}
public function buildForm(FormBuilderInterface $builder)

View File

@@ -0,0 +1,24 @@
<?php
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Chill\ActivityBundle\Export;
/**
* This class declare constants used for the export framework.
*/
abstract class Declarations
{
public const ACTIVITY = 'activity';
public const ACTIVITY_ACP = "activity_linked_to_acp";
public const ACTIVITY_PERSON = "activity_linked_to_person";
}

View File

@@ -0,0 +1,103 @@
<?php
namespace Chill\ActivityBundle\Export\Export\LinkedToACP;
use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Declarations;
use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter;
use Chill\MainBundle\Export\ExportInterface;
use Chill\MainBundle\Export\FormatterInterface;
use Chill\MainBundle\Export\GroupedExportInterface;
use Closure;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Security\Core\Role\Role;
class AvgActivityDuration implements ExportInterface, GroupedExportInterface
{
protected EntityRepository $repository;
public function __construct(
EntityManagerInterface $em
) {
$this->repository = $em->getRepository(Activity::class);
}
public function buildForm(FormBuilderInterface $builder)
{
// TODO: Implement buildForm() method.
}
public function getTitle(): string
{
return 'Average activity linked to an accompanying period duration';
}
public function getAllowedFormattersTypes(): array
{
return [FormatterInterface::TYPE_TABULAR];
}
public function getDescription(): string
{
return 'Average activities linked to an accompanying period duration by various parameters.';
}
public function getLabels($key, array $values, $data)
{
if ('export_avg_activity_duration' !== $key) {
throw new LogicException("the key {$key} is not used by this export");
}
return static fn ($value) => '_header' === $value ? 'Average activities linked to an accompanying period duration' : $value;
}
public function getQueryKeys($data): array
{
return ['export_avg_activity_duration'];
}
public function getResult($qb, $data)
{
return $qb->getQuery()->getResult(Query::HYDRATE_SCALAR);
}
public function getType(): string
{
return Declarations::ACTIVITY;
}
public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{
$qb = $this->repository->createQueryBuilder('activity')
->join('activity.accompanyingPeriod', 'acp')
;
$qb->select('AVG(activity.durationTime) as export_avg_activity_duration');
return $qb;
}
public function requiredRole(): Role
{
return new Role(ActivityStatsVoter::STATS);
}
public function supportsModifiers(): array
{
return [
Declarations::ACTIVITY,
Declarations::ACTIVITY_ACP,
//PersonDeclarations::ACP_TYPE,
];
}
public function getGroup(): string
{
return 'Exports of activities linked to an accompanying period';
}
}

View File

@@ -0,0 +1,103 @@
<?php
namespace Chill\ActivityBundle\Export\Export\LinkedToACP;
use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Declarations;
use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter;
use Chill\MainBundle\Export\ExportInterface;
use Chill\MainBundle\Export\FormatterInterface;
use Chill\MainBundle\Export\GroupedExportInterface;
use Closure;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Security\Core\Role\Role;
class AvgActivityVisitDuration implements ExportInterface, GroupedExportInterface
{
protected EntityRepository $repository;
public function __construct(
EntityManagerInterface $em
) {
$this->repository = $em->getRepository(Activity::class);
}
public function buildForm(FormBuilderInterface $builder)
{
// TODO: Implement buildForm() method.
}
public function getTitle(): string
{
return 'Average activity linked to an accompanying period visit duration';
}
public function getAllowedFormattersTypes(): array
{
return [FormatterInterface::TYPE_TABULAR];
}
public function getDescription(): string
{
return 'Average activities linked to an accompanying period visit duration by various parameters.';
}
public function getLabels($key, array $values, $data)
{
if ('export_avg_activity_visit_duration' !== $key) {
throw new LogicException("the key {$key} is not used by this export");
}
return static fn ($value) => '_header' === $value ? 'Average activities linked to an accompanying period visit duration' : $value;
}
public function getQueryKeys($data): array
{
return ['export_avg_activity_visit_duration'];
}
public function getResult($qb, $data)
{
return $qb->getQuery()->getResult(Query::HYDRATE_SCALAR);
}
public function getType(): string
{
return Declarations::ACTIVITY;
}
public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{
$qb = $this->repository->createQueryBuilder('activity')
->join('activity.accompanyingPeriod', 'acp')
;
$qb->select('AVG(activity.travelTime) as export_avg_activity_visit_duration');
return $qb;
}
public function requiredRole(): Role
{
return new Role(ActivityStatsVoter::STATS);
}
public function supportsModifiers(): array
{
return [
Declarations::ACTIVITY,
Declarations::ACTIVITY_ACP,
//PersonDeclarations::ACP_TYPE,
];
}
public function getGroup(): string
{
return 'Exports of activities linked to an accompanying period';
}
}

View File

@@ -0,0 +1,110 @@
<?php
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Export\LinkedToACP;
use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Declarations;
use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter;
use Chill\MainBundle\Export\ExportInterface;
use Chill\MainBundle\Export\FormatterInterface;
use Chill\MainBundle\Export\GroupedExportInterface;
use Chill\PersonBundle\Export\Declarations as PersonDeclarations;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query;
use LogicException;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Security\Core\Role\Role;
class CountActivity implements ExportInterface, GroupedExportInterface
{
protected EntityRepository $repository;
public function __construct(
EntityManagerInterface $em
) {
$this->repository = $em->getRepository(Activity::class);
}
public function buildForm(FormBuilderInterface $builder)
{
}
public function getAllowedFormattersTypes(): array
{
return [FormatterInterface::TYPE_TABULAR];
}
public function getDescription(): string
{
return 'Count activities linked to an accompanying period by various parameters.';
}
public function getLabels($key, array $values, $data)
{
if ('export_count_activity' !== $key) {
throw new LogicException("the key {$key} is not used by this export");
}
return static fn ($value) => '_header' === $value ? 'Number of activities linked to an accompanying period' : $value;
}
public function getQueryKeys($data): array
{
return ['export_count_activity'];
}
public function getResult($qb, $data)
{
return $qb->getQuery()->getResult(Query::HYDRATE_SCALAR);
}
public function getTitle(): string
{
return 'Count activities linked to an accompanying period';
}
public function getType(): string
{
return Declarations::ACTIVITY;
}
public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{
$qb = $this->repository->createQueryBuilder('activity')
->join('activity.accompanyingPeriod', 'acp')
;
$qb->select('COUNT(activity.id) as export_count_activity');
return $qb;
}
public function requiredRole(): Role
{
return new Role(ActivityStatsVoter::STATS);
}
public function supportsModifiers(): array
{
return [
Declarations::ACTIVITY,
Declarations::ACTIVITY_ACP,
//PersonDeclarations::ACP_TYPE,
];
}
public function getGroup(): string
{
return 'Exports of activities linked to an accompanying period';
}
}

View File

@@ -0,0 +1,103 @@
<?php
namespace Chill\ActivityBundle\Export\Export\LinkedToACP;
use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Declarations;
use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter;
use Chill\MainBundle\Export\ExportInterface;
use Chill\MainBundle\Export\FormatterInterface;
use Chill\MainBundle\Export\GroupedExportInterface;
use Closure;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Security\Core\Role\Role;
class SumActivityDuration implements ExportInterface, GroupedExportInterface
{
protected EntityRepository $repository;
public function __construct(
EntityManagerInterface $em
) {
$this->repository = $em->getRepository(Activity::class);
}
public function buildForm(FormBuilderInterface $builder)
{
// TODO: Implement buildForm() method.
}
public function getTitle(): string
{
return 'Sum activity linked to an accompanying period duration';
}
public function getAllowedFormattersTypes(): array
{
return [FormatterInterface::TYPE_TABULAR];
}
public function getDescription(): string
{
return 'Sum activities linked to an accompanying period duration by various parameters.';
}
public function getLabels($key, array $values, $data)
{
if ('export_sum_activity_duration' !== $key) {
throw new LogicException("the key {$key} is not used by this export");
}
return static fn ($value) => '_header' === $value ? 'Sum activities linked to an accompanying period duration' : $value;
}
public function getQueryKeys($data): array
{
return ['export_sum_activity_duration'];
}
public function getResult($qb, $data)
{
return $qb->getQuery()->getResult(Query::HYDRATE_SCALAR);
}
public function getType(): string
{
return Declarations::ACTIVITY;
}
public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{
$qb = $this->repository->createQueryBuilder('activity')
->join('activity.accompanyingPeriod', 'acp')
;
$qb->select('SUM(activity.durationTime) as export_sum_activity_duration');
return $qb;
}
public function requiredRole(): Role
{
return new Role(ActivityStatsVoter::STATS);
}
public function supportsModifiers(): array
{
return [
Declarations::ACTIVITY,
Declarations::ACTIVITY_ACP,
//PersonDeclarations::ACP_TYPE,
];
}
public function getGroup(): string
{
return 'Exports of activities linked to an accompanying period';
}
}

View File

@@ -0,0 +1,102 @@
<?php
namespace Chill\ActivityBundle\Export\Export\LinkedToACP;
use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Declarations;
use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter;
use Chill\MainBundle\Export\ExportInterface;
use Chill\MainBundle\Export\FormatterInterface;
use Chill\MainBundle\Export\GroupedExportInterface;
use Closure;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Security\Core\Role\Role;
class SumActivityVisitDuration implements ExportInterface, GroupedExportInterface
{
protected EntityRepository $repository;
public function __construct(
EntityManagerInterface $em
) {
$this->repository = $em->getRepository(Activity::class);
}
public function buildForm(FormBuilderInterface $builder)
{
// TODO: Implement buildForm() method.
}
public function getTitle(): string
{
return 'Sum activity linked to an accompanying period visit duration';
}
public function getAllowedFormattersTypes(): array
{
return [FormatterInterface::TYPE_TABULAR];
}
public function getDescription(): string
{
return 'Sum activities linked to an accompanying period visit duration by various parameters.';
}
public function getLabels($key, array $values, $data)
{
if ('export_sum_activity_visit_duration' !== $key) {
throw new LogicException("the key {$key} is not used by this export");
}
return static fn ($value) => '_header' === $value ? 'Sum activities linked to an accompanying period visit duration' : $value;
}
public function getQueryKeys($data): array
{
return ['export_sum_activity_visit_duration'];
}
public function getResult($qb, $data)
{
return $qb->getQuery()->getResult(Query::HYDRATE_SCALAR);
}
public function getType(): string
{
return Declarations::ACTIVITY;
}
public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{
$qb = $this->repository->createQueryBuilder('activity')
->join('activity.accompanyingPeriod', 'acp')
;
$qb->select('SUM(activity.travelTime) as export_sum_activity_visit_duration');
return $qb;
}
public function requiredRole(): Role
{
return new Role(ActivityStatsVoter::STATS);
}
public function supportsModifiers(): array
{
return [
Declarations::ACTIVITY,
Declarations::ACTIVITY_ACP,
//PersonDeclarations::ACP_TYPE,
];
}
public function getGroup(): string
{
return 'Exports of activities linked to an accompanying period';
}
}

View File

@@ -9,18 +9,21 @@
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Export;
namespace Chill\ActivityBundle\Export\Export\LinkedToPerson;
use Chill\ActivityBundle\Repository\ActivityRepository;
use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter;
use Chill\MainBundle\Export\ExportInterface;
use Chill\MainBundle\Export\FormatterInterface;
use Chill\MainBundle\Export\GroupedExportInterface;
use Chill\ActivityBundle\Export\Declarations;
use Chill\PersonBundle\Export\Declarations as PersonDeclarations;
use Doctrine\ORM\Query;
use LogicException;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Security\Core\Role\Role;
class CountActivity implements ExportInterface
class CountActivity implements ExportInterface, GroupedExportInterface
{
protected ActivityRepository $activityRepository;
@@ -41,7 +44,7 @@ class CountActivity implements ExportInterface
public function getDescription()
{
return 'Count activities by various parameters.';
return 'Count activities linked to a person by various parameters.';
}
public function getLabels($key, array $values, $data)
@@ -50,7 +53,7 @@ class CountActivity implements ExportInterface
throw new LogicException("the key {$key} is not used by this export");
}
return static fn ($value) => '_header' === $value ? 'Number of activities' : $value;
return static fn ($value) => '_header' === $value ? 'Number of activities linked to a person' : $value;
}
public function getQueryKeys($data)
@@ -65,27 +68,28 @@ class CountActivity implements ExportInterface
public function getTitle()
{
return 'Count activities';
return 'Count activities linked to a person';
}
public function getType()
public function getType(): string
{
return 'activity';
return Declarations::ACTIVITY;
}
public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{
$centers = array_map(static fn ($el) => $el['center'], $acl);
$qb = $this
->activityRepository
->createQueryBuilder('activity')
->select('COUNT(activity.id) as export_count_activity')
->join('activity.person', 'person');
$qb = $this->activityRepository->createQueryBuilder('activity')
->join('activity.person', 'person')
;
$qb->select('COUNT(activity.id) as export_count_activity');
$qb
->where($qb->expr()->in('person.center', ':centers'))
->setParameter('centers', $centers);
->setParameter('centers', $centers)
;
return $qb;
}
@@ -97,6 +101,15 @@ class CountActivity implements ExportInterface
public function supportsModifiers()
{
return ['person', 'activity'];
return [
Declarations::ACTIVITY,
Declarations::ACTIVITY_PERSON,
//PersonDeclarations::PERSON_TYPE,
];
}
public function getGroup(): string
{
return 'Exports of activities linked to a person';
}
}

View File

@@ -9,12 +9,13 @@
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Export;
namespace Chill\ActivityBundle\Export\Export\LinkedToPerson;
use Chill\ActivityBundle\Entity\ActivityReason;
use Chill\ActivityBundle\Repository\ActivityRepository;
use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter;
use Chill\MainBundle\Export\FormatterInterface;
use Chill\MainBundle\Export\GroupedExportInterface;
use Chill\MainBundle\Export\ListInterface;
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
use DateTime;
@@ -27,12 +28,14 @@ use Symfony\Component\Security\Core\Role\Role;
use Symfony\Component\Validator\Constraints\Callback;
use Symfony\Component\Validator\Context\ExecutionContextInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use Chill\ActivityBundle\Export\Declarations;
use Chill\PersonBundle\Export\Declarations as PersonDeclarations;
use function array_key_exists;
use function count;
use function in_array;
class ListActivity implements ListInterface
class ListActivity implements ListInterface, GroupedExportInterface
{
protected EntityManagerInterface $entityManager;
@@ -94,7 +97,7 @@ class ListActivity implements ListInterface
public function getDescription()
{
return 'List activities';
return 'List activities linked to a person description';
}
public function getLabels($key, array $values, $data)
@@ -180,12 +183,12 @@ class ListActivity implements ListInterface
public function getTitle()
{
return 'List activities';
return 'List activity linked to a person';
}
public function getType()
public function getType(): string
{
return 'activity';
return Declarations::ACTIVITY;
}
public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
@@ -274,6 +277,15 @@ class ListActivity implements ListInterface
public function supportsModifiers()
{
return ['activity', 'person'];
return [
Declarations::ACTIVITY,
Declarations::ACTIVITY_PERSON,
//PersonDeclarations::PERSON_TYPE,
];
}
public function getGroup(): string
{
return 'Exports of activities linked to a person';
}
}

View File

@@ -9,12 +9,16 @@
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Export;
namespace Chill\ActivityBundle\Export\Export\LinkedToPerson;
use Chill\ActivityBundle\Repository\ActivityRepository;
use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter;
use Chill\MainBundle\Entity\Center;
use Chill\MainBundle\Export\ExportInterface;
use Chill\MainBundle\Export\FormatterInterface;
use Chill\MainBundle\Export\GroupedExportInterface;
use Chill\PersonBundle\Export\Declarations as PersonDeclarations;
use Chill\ActivityBundle\Export\Declarations;
use Doctrine\ORM\Query;
use LogicException;
use Symfony\Component\Form\FormBuilderInterface;
@@ -25,7 +29,7 @@ use Symfony\Component\Security\Core\Role\Role;
*
* The desired stat must be given in constructor.
*/
class StatActivityDuration implements ExportInterface
class StatActivityDuration implements ExportInterface, GroupedExportInterface
{
public const SUM = 'sum';
@@ -59,7 +63,7 @@ class StatActivityDuration implements ExportInterface
public function getDescription()
{
if (self::SUM === $this->action) {
return 'Sum activities duration by various parameters.';
return 'Sum activities linked to a person duration by various parameters.';
}
}
@@ -69,7 +73,7 @@ class StatActivityDuration implements ExportInterface
throw new LogicException(sprintf('The key %s is not used by this export', $key));
}
$header = self::SUM === $this->action ? 'Sum of activities duration' : false;
$header = self::SUM === $this->action ? 'Sum activities linked to a person duration' : false;
return static fn (string $value) => '_header' === $value ? $header : $value;
}
@@ -87,19 +91,19 @@ class StatActivityDuration implements ExportInterface
public function getTitle()
{
if (self::SUM === $this->action) {
return 'Sum activity duration';
return 'Sum activity linked to a person duration';
}
}
public function getType()
public function getType(): string
{
return 'activity';
return Declarations::ACTIVITY;
}
public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
{
$centers = array_map(
static fn (array $el): string => $el['center'],
static fn (array $el): Center => $el['center'],
$acl
);
@@ -125,6 +129,15 @@ class StatActivityDuration implements ExportInterface
public function supportsModifiers()
{
return ['person', 'activity'];
return [
Declarations::ACTIVITY,
Declarations::ACTIVITY_PERSON,
//PersonDeclarations::PERSON_TYPE,
];
}
public function getGroup(): string
{
return 'Exports of activities linked to a person';
}
}

View File

@@ -0,0 +1,85 @@
<?php
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Filter\ACPFilters;
use Chill\MainBundle\Export\FilterInterface;
use Chill\ActivityBundle\Export\Declarations;
use Chill\PersonBundle\Entity\SocialWork\SocialAction;
use Chill\PersonBundle\Templating\Entity\SocialActionRender;
use Doctrine\ORM\Query\Expr\Andx;
use Doctrine\ORM\QueryBuilder;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface;
class BySocialActionFilter implements FilterInterface
{
private SocialActionRender $actionRender;
public function __construct(SocialActionRender $actionRender)
{
$this->actionRender = $actionRender;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add('accepted_socialactions', EntityType::class, [
'class' => SocialAction::class,
'choice_label' => function (SocialAction $sa) {
return $this->actionRender->renderString($sa, []);
},
'multiple' => true,
'expanded' => true,
]);
}
public function getTitle(): string
{
return 'Filter activity by linked socialaction';
}
public function describeAction($data, $format = 'string'): array
{
$actions = [];
foreach ($data['accepted_socialactions'] as $sa) {
$actions[] = $this->actionRender->renderString($sa, []);
}
return ['Filtered activity by linked socialaction: only %actions%', [
'%actions%' => implode(", ou ", $actions)
]];
}
public function addRole()
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$where = $qb->getDQLPart('where');
if (!in_array('socialaction', $qb->getAllAliases())) {
$qb->join('activity.socialActions', 'socialaction');
}
$clause = $qb->expr()->in('socialaction.id', ':socialactions');
if ($where instanceof Andx) {
$where->add($clause);
} else {
$where = $qb->expr()->andX($clause);
}
$qb->add('where', $where);
$qb->setParameter('socialactions', $data['accepted_socialactions']);
}
public function applyOn(): string
{
return Declarations::ACTIVITY_ACP;
}
}

View File

@@ -0,0 +1,85 @@
<?php
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Filter\ACPFilters;
use Chill\MainBundle\Export\FilterInterface;
use Chill\ActivityBundle\Export\Declarations;
use Chill\PersonBundle\Entity\SocialWork\SocialIssue;
use Chill\PersonBundle\Templating\Entity\SocialIssueRender;
use Doctrine\ORM\Query\Expr\Andx;
use Doctrine\ORM\QueryBuilder;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface;
class BySocialIssueFilter implements FilterInterface
{
private SocialIssueRender $issueRender;
public function __construct(SocialIssueRender $issueRender)
{
$this->issueRender = $issueRender;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add('accepted_socialissues', EntityType::class, [
'class' => SocialIssue::class,
'choice_label' => function(SocialIssue $si) {
return $this->issueRender->renderString($si, []);
},
'multiple' => true,
'expanded' => true,
]);
}
public function getTitle(): string
{
return 'Filter activity by linked socialissue';
}
public function describeAction($data, $format = 'string'): array
{
$issues = [];
foreach ($data['accepted_socialissues'] as $si) {
$issues[] = $this->issueRender->renderString($si, []);
}
return ['Filtered activity by linked socialissue: only %issues%', [
'%issues%' => implode(", ou ", $issues)
]];
}
public function addRole()
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$where = $qb->getDQLPart('where');
if (!in_array('socialissue', $qb->getAllAliases())) {
$qb->join('activity.socialIssues', 'socialissue');
}
$clause = $qb->expr()->in('socialissue.id', ':socialissues');
if ($where instanceof Andx) {
$where->add($clause);
} else {
$where = $qb->expr()->andX($clause);
}
$qb->add('where', $where);
$qb->setParameter('socialissues', $data['accepted_socialissues']);
}
public function applyOn(): string
{
return Declarations::ACTIVITY_ACP;
}
}

View File

@@ -0,0 +1,84 @@
<?php
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Filter\ACPFilters;
use Chill\MainBundle\Entity\User;
use Chill\MainBundle\Export\FilterInterface;
use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Templating\Entity\UserRender;
use Doctrine\ORM\Query\Expr\Andx;
use Doctrine\ORM\QueryBuilder;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface;
class ByUserFilter implements FilterInterface
{
private UserRender $userRender;
public function __construct(UserRender $userRender)
{
$this->userRender = $userRender;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add('accepted_users', EntityType::class, [
'class' => User::class,
'choice_label' => function (User $u) {
return $this->userRender->renderString($u, []);
},
'multiple' => true,
'expanded' => true,
]);
}
public function getTitle(): string
{
return 'Filter activity by linked users';
}
public function describeAction($data, $format = 'string'): array
{
$users = [];
foreach ($data['accepted_users'] as $u) {
$users[] = $this->userRender->renderString($u, []);
}
return ['Filtered activity by linked users: only %users%', [
'%users%' => implode(", ou ", $users)
]];
}
public function addRole()
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$where = $qb->getDQLPart('where');
if (!in_array('user', $qb->getAllAliases())) {
$qb->join('activity.users', 'user');
}
$clause = $qb->expr()->in('user.id', ':users');
if ($where instanceof Andx) {
$where->add($clause);
} else {
$where = $qb->expr()->andX($clause);
}
$qb->add('where', $where);
$qb->setParameter('users', $data['accepted_users']);
}
public function applyOn(): string
{
return Declarations::ACTIVITY_ACP;
}
}

View File

@@ -0,0 +1,86 @@
<?php
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Filter\ACPFilters;
use Chill\MainBundle\Export\FilterInterface;
use Chill\ActivityBundle\Export\Declarations;
use Doctrine\ORM\Query\Expr\Andx;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class EmergencyFilter implements FilterInterface
{
private const CHOICES = [
'activity is emergency' => true,
'activity is not emergency' => false,
];
private CONST DEFAULT_CHOICE = false;
private TranslatorInterface $translator;
public function __construct(TranslatorInterface $translator)
{
$this->translator = $translator;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add('accepted_emergency', ChoiceType::class, [
'choices' => self::CHOICES,
'multiple' => false,
'expanded' => true,
'empty_data' => self::DEFAULT_CHOICE,
'data' => self::DEFAULT_CHOICE,
]);
}
public function getTitle(): string
{
return 'Filter activity by emergency';
}
public function describeAction($data, $format = 'string'): array
{
foreach (self::CHOICES as $k => $v) {
if ($v === $data['accepted_emergency']) {
$choice = $k;
}
}
return ['Filtered activity by emergency: only %emergency%', [
'%emergency%' => $this->translator->trans($choice)
]];
}
public function addRole()
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$where = $qb->getDQLPart('where');
$clause = $qb->expr()->eq('activity.emergency', ':emergency');
if ($where instanceof Andx) {
$where->add($clause);
} else {
$where = $qb->expr()->andX($clause);
}
$qb->add('where', $where);
$qb->setParameter('emergency', $data['accepted_emergency']);
}
public function applyOn(): string
{
return Declarations::ACTIVITY_ACP;
}
}

View File

@@ -0,0 +1,85 @@
<?php
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Filter\ACPFilters;
use Chill\MainBundle\Entity\LocationType;
use Chill\MainBundle\Export\FilterInterface;
use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Templating\TranslatableStringHelper;
use Doctrine\ORM\Query\Expr\Andx;
use Doctrine\ORM\QueryBuilder;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface;
class LocationTypeFilter implements FilterInterface
{
private TranslatableStringHelper $translatableStringHelper;
public function __construct(TranslatableStringHelper $translatableStringHelper)
{
$this->translatableStringHelper = $translatableStringHelper;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add('accepted_locationtype', EntityType::class, [
'class' => LocationType::class,
'choice_label' => function(LocationType $type) {
return $this->translatableStringHelper->localize($type->getTitle());
},
'multiple' => true,
'expanded' => true,
]);
}
public function getTitle(): string
{
return 'Filter activity by locationtype';
}
public function describeAction($data, $format = 'string'): array
{
$types = [];
foreach ($data['accepted_locationtype'] as $type) {
$types[] = $this->translatableStringHelper->localize(
$type->getTitle()
);
}
return ['Filtered activity by locationtype: only %types%', [
'%types%' => implode(", ou ", $types)
]];
}
public function addRole()
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
if (!in_array('location', $qb->getAllAliases())) {
$qb->join('activity.location', 'location');
}
$where = $qb->getDQLPart('where');
$clause = $qb->expr()->in('location.locationType', ':locationtype');
if ($where instanceof Andx) {
$where->add($clause);
} else {
$where = $qb->expr()->andX($clause);
}
$qb->add('where', $where);
$qb->setParameter('locationtype', $data['accepted_locationtype']);
}
public function applyOn(): string
{
return Declarations::ACTIVITY_ACP;
}
}

View File

@@ -0,0 +1,82 @@
<?php
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Filter\ACPFilters;
use Chill\ActivityBundle\Entity\Activity;
use Chill\MainBundle\Export\FilterInterface;
use Chill\ActivityBundle\Export\Declarations;
use Doctrine\ORM\Query\Expr\Andx;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class SentReceivedFilter implements FilterInterface
{
private const CHOICES = [
'is sent' => Activity::SENTRECEIVED_SENT,
'is received' => Activity::SENTRECEIVED_RECEIVED,
];
private CONST DEFAULT_CHOICE = Activity::SENTRECEIVED_SENT;
private TranslatorInterface $translator;
public function __construct(TranslatorInterface $translator)
{
$this->translator = $translator;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add('accepted_sentreceived', ChoiceType::class, [
'choices' => self::CHOICES,
'multiple' => false,
'expanded' => true,
'empty_data' => self::DEFAULT_CHOICE,
'data' => self::DEFAULT_CHOICE,
]);
}
public function getTitle(): string
{
return 'Filter activity by sentreceived';
}
public function describeAction($data, $format = 'string'): array
{
$sentreceived = array_flip(self::CHOICES)[$data['accepted_sentreceived']];
return ['Filtered activity by sentreceived: only %sentreceived%', [
'%sentreceived%' => $this->translator->trans($sentreceived)
]];
}
public function addRole()
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$where = $qb->getDQLPart('where');
$clause = $qb->expr()->eq('activity.sentReceived', ':sentreceived');
if ($where instanceof Andx) {
$where->add($clause);
} else {
$where = $qb->expr()->andX($clause);
}
$qb->add('where', $where);
$qb->setParameter('sentreceived', $data['accepted_sentreceived']);
}
public function applyOn(): string
{
return Declarations::ACTIVITY_ACP;
}
}

View File

@@ -0,0 +1,82 @@
<?php
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Filter\ACPFilters;
use Chill\MainBundle\Entity\User;
use Chill\MainBundle\Export\FilterInterface;
use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Templating\Entity\UserRender;
use Doctrine\ORM\Query\Expr\Andx;
use Doctrine\ORM\QueryBuilder;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface;
class UserFilter implements FilterInterface
{
private UserRender $userRender;
public function __construct(UserRender $userRender)
{
$this->userRender = $userRender;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add('accepted_users', EntityType::class, [
'class' => User::class,
'choice_label' => function (User $u) {
return $this->userRender->renderString($u, []);
},
'multiple' => true,
'expanded' => true,
'label' => 'Creators'
]);
}
public function getTitle(): string
{
return 'Filter activity by user';
}
public function describeAction($data, $format = 'string'): array
{
$users = [];
foreach ($data['accepted_users'] as $u) {
$users[] = $this->userRender->renderString($u, []);
}
return ['Filtered activity by user: only %users%', [
'%users%' => implode(", ou ", $users)
]];
}
public function addRole()
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
$where = $qb->getDQLPart('where');
$clause = $qb->expr()->in('activity.user', ':users');
if ($where instanceof Andx) {
$where->add($clause);
} else {
$where = $qb->expr()->andX($clause);
}
$qb->add('where', $where);
$qb->setParameter('users', $data['accepted_users']);
}
public function applyOn(): string
{
return Declarations::ACTIVITY_ACP;
}
}

View File

@@ -0,0 +1,89 @@
<?php
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Filter\ACPFilters;
use Chill\MainBundle\Entity\Scope;
use Chill\MainBundle\Export\FilterInterface;
use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Templating\TranslatableStringHelper;
use Doctrine\ORM\Query\Expr\Andx;
use Doctrine\ORM\QueryBuilder;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface;
class UserScopeFilter implements FilterInterface
{
private TranslatableStringHelper $translatableStringHelper;
public function __construct(TranslatableStringHelper $translatableStringHelper)
{
$this->translatableStringHelper = $translatableStringHelper;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add('accepted_userscope', EntityType::class, [
'class' => Scope::class,
'choice_label' => function (Scope $s) {
return $this->translatableStringHelper->localize(
$s->getName()
);
},
'multiple' => true,
'expanded' => true
]);
}
public function getTitle(): string
{
return 'Filter activity by userscope';
}
public function describeAction($data, $format = 'string'): array
{
$scopes = [];
foreach ($data['accepted_userscope'] as $s) {
$scopes[] = $this->translatableStringHelper->localize(
$s->getName()
);
}
return ['Filtered activity by userscope: only %scopes%', [
'%scopes%' => implode(", ou ", $scopes)
]];
}
public function addRole()
{
return null;
}
public function alterQuery(QueryBuilder $qb, $data)
{
if (!in_array('user', $qb->getAllAliases())) {
$qb->join('activity.user', 'user');
}
$where = $qb->getDQLPart('where');
$clause = $qb->expr()->in('user.mainScope', ':userscope');
if ($where instanceof Andx) {
$where->add($clause);
} else {
$where = $qb->expr()->andX($clause);
}
$qb->add('where', $where);
$qb->setParameter('userscope', $data['accepted_userscope']);
}
public function applyOn(): string
{
return Declarations::ACTIVITY_ACP;
}
}

View File

@@ -11,12 +11,13 @@ declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Filter;
use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\FilterInterface;
use Chill\MainBundle\Form\Type\ChillDateType;
use Chill\MainBundle\Form\Type\Export\FilterType;
use DateTime;
use Doctrine\ORM\Query\Expr;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\FormEvent;
@@ -57,36 +58,23 @@ class ActivityDateFilter implements FilterInterface
$qb->setParameter('date_to', $data['date_to']);
}
public function applyOn()
public function applyOn(): string
{
return 'activity';
return Declarations::ACTIVITY;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add(
'date_from',
DateType::class,
[
$builder
->add('date_from', ChillDateType::class, [
'label' => 'Activities after this date',
'data' => new DateTime(),
'attr' => ['class' => 'datepicker'],
'widget' => 'single_text',
'format' => 'dd-MM-yyyy',
]
);
$builder->add(
'date_to',
DateType::class,
[
])
->add('date_to', ChillDateType::class, [
'label' => 'Activities before this date',
'data' => new DateTime(),
'attr' => ['class' => 'datepicker'],
'widget' => 'single_text',
'format' => 'dd-MM-yyyy',
]
);
])
;
$builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) {
/** @var \Symfony\Component\Form\FormInterface $filterForm */

View File

@@ -12,6 +12,7 @@ declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Filter;
use Chill\ActivityBundle\Entity\ActivityType;
use Chill\ActivityBundle\Export\Declarations;
use Chill\ActivityBundle\Repository\ActivityTypeRepository;
use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter;
use Chill\MainBundle\Export\ExportElementValidatedInterface;
@@ -49,7 +50,7 @@ class ActivityTypeFilter implements ExportElementValidatedInterface, FilterInter
public function alterQuery(QueryBuilder $qb, $data)
{
$where = $qb->getDQLPart('where');
$clause = $qb->expr()->in('activity.type', ':selected_activity_types');
$clause = $qb->expr()->in('activity.activityType', ':selected_activity_types');
if ($where instanceof Expr\Andx) {
$where->add($clause);
@@ -61,39 +62,33 @@ class ActivityTypeFilter implements ExportElementValidatedInterface, FilterInter
$qb->setParameter('selected_activity_types', $data['types']);
}
public function applyOn()
public function applyOn(): string
{
return 'activity';
return Declarations::ACTIVITY;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder->add(
'types',
EntityType::class,
[
'class' => ActivityType::class,
'choice_label' => fn (ActivityType $type) => $this->translatableStringHelper->localize($type->getName()),
'multiple' => true,
'expanded' => false,
]
);
$builder->add('types', EntityType::class, [
'class' => ActivityType::class,
'choice_label' => fn (ActivityType $type) => $this->translatableStringHelper->localize($type->getName()),
'group_by' => fn (ActivityType $type) => $this->translatableStringHelper->localize($type->getCategory()->getName()),
'multiple' => true,
'expanded' => false,
]);
}
public function describeAction($data, $format = 'string')
{
// collect all the reasons'name used in this filter in one array
$reasonsNames = array_map(
fn (ActivityType $t): string => '"' . $this->translatableStringHelper->localize($t->getName()) . '"',
fn (ActivityType $t): string => $this->translatableStringHelper->localize($t->getName()),
$this->activityTypeRepository->findBy(['id' => $data['types']->toArray()])
);
return [
'Filtered by activity type: only %list%',
[
'%list%' => implode(', ', $reasonsNames),
],
];
return ['Filtered by activity type: only %list%', [
'%list%' => implode(', ou ', $reasonsNames),
]];
}
public function getTitle()

View File

@@ -9,9 +9,10 @@
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Filter;
namespace Chill\ActivityBundle\Export\Filter\PersonFilters;
use Chill\ActivityBundle\Entity\ActivityReason;
use Chill\ActivityBundle\Export\Declarations;
use Chill\ActivityBundle\Repository\ActivityReasonRepository;
use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter;
use Chill\MainBundle\Export\ExportElementValidatedInterface;
@@ -79,9 +80,9 @@ class ActivityReasonFilter implements ExportElementValidatedInterface, FilterInt
$qb->setParameter('selected_activity_reasons', $data['reasons']);
}
public function applyOn()
public function applyOn(): string
{
return 'activity';
return Declarations::ACTIVITY_PERSON;
}
public function buildForm(FormBuilderInterface $builder)

View File

@@ -9,7 +9,7 @@
declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Filter;
namespace Chill\ActivityBundle\Export\Filter\PersonFilters;
use Chill\ActivityBundle\Entity\ActivityReason;
use Chill\ActivityBundle\Repository\ActivityReasonRepository;
@@ -102,7 +102,7 @@ class PersonHavingActivityBetweenDateFilter implements ExportElementValidatedInt
$qb->setParameter('person_having_activity_reasons', $data['reasons']);
}
public function applyOn()
public function applyOn(): string
{
return Declarations::PERSON_IMPLIED_IN;
}

View File

@@ -14,16 +14,20 @@ namespace Chill\ActivityBundle\Form;
use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Entity\ActivityPresence;
use Chill\ActivityBundle\Entity\ActivityReason;
use Chill\ActivityBundle\Security\Authorization\ActivityVoter;
use Chill\DocStoreBundle\Form\StoredObjectType;
use Chill\MainBundle\Entity\Center;
use Chill\MainBundle\Entity\Location;
use Chill\MainBundle\Entity\User;
use Chill\MainBundle\Form\Type\ChillCollectionType;
use Chill\MainBundle\Form\Type\ChillDateType;
use Chill\MainBundle\Form\Type\CommentType;
use Chill\MainBundle\Form\Type\PickUserDynamicType;
use Chill\MainBundle\Form\Type\PrivateCommentType;
use Chill\MainBundle\Form\Type\ScopePickerType;
use Chill\MainBundle\Form\Type\UserPickerType;
use Chill\MainBundle\Security\Authorization\AuthorizationHelper;
use Chill\MainBundle\Templating\TranslatableStringHelper;
use Chill\PersonBundle\Entity\AccompanyingPeriod;
use Chill\PersonBundle\Entity\Person;
use Chill\PersonBundle\Entity\SocialWork\SocialAction;
use Chill\PersonBundle\Entity\SocialWork\SocialIssue;
@@ -49,6 +53,7 @@ use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Role\Role;
use function in_array;
class ActivityType extends AbstractType
@@ -108,24 +113,25 @@ class ActivityType extends AbstractType
$activityType = $options['activityType'];
// TODO revoir la gestion des center au niveau du form des activité.
if ($options['center']) {
if ($options['center'] instanceof Center && null !== $options['data']->getPerson()) {
$builder->add('scope', ScopePickerType::class, [
'center' => $options['center'],
'role' => $options['role'],
// TODO make required again once scope and rights are fixed
'required' => false,
'role' => ActivityVoter::CREATE === (string) $options['role'] ? ActivityVoter::CREATE_PERSON : (string) $options['role'],
'required' => true,
]);
}
/** @var ? \Chill\PersonBundle\Entity\AccompanyingPeriod $accompanyingPeriod */
$accompanyingPeriod = null;
if ($options['accompanyingPeriod']) {
if ($options['accompanyingPeriod'] instanceof AccompanyingPeriod) {
$accompanyingPeriod = $options['accompanyingPeriod'];
}
if ($activityType->isVisible('socialIssues') && $accompanyingPeriod) {
$builder->add('socialIssues', HiddenType::class);
$builder->add('socialIssues', HiddenType::class, [
'required' => $activityType->getSocialIssuesVisible() === 2,
]);
$builder->get('socialIssues')
->addModelTransformer(new CallbackTransformer(
static function (iterable $socialIssuesAsIterable): string {
@@ -151,7 +157,9 @@ class ActivityType extends AbstractType
}
if ($activityType->isVisible('socialActions') && $accompanyingPeriod) {
$builder->add('socialActions', HiddenType::class);
$builder->add('socialActions', HiddenType::class, [
'required' => $activityType->getSocialActionsVisible() === 2,
]);
$builder->get('socialActions')
->addModelTransformer(new CallbackTransformer(
static function (iterable $socialActionsAsIterable): string {
@@ -213,12 +221,10 @@ class ActivityType extends AbstractType
]);
}
if ($activityType->isVisible('user') && $options['center']) {
$builder->add('user', UserPickerType::class, [
if ($activityType->isVisible('user') && $options['center'] instanceof Center) {
$builder->add('user', PickUserDynamicType::class, [
'label' => $activityType->getLabel('user'),
'required' => $activityType->isRequired('user'),
'center' => $options['center'],
'role' => $options['role'],
]);
}
@@ -247,6 +253,13 @@ class ActivityType extends AbstractType
]);
}
if ($activityType->isVisible('privateComment')) {
$builder->add('privateComment', PrivateCommentType::class, [
'label' => '' === $activityType->getLabel('privateComment') ? 'private comment' : $activityType->getPrivateCommentLabel(),
'required' => false,
]);
}
if ($activityType->isVisible('persons')) {
$builder->add('persons', HiddenType::class);
$builder->get('persons')
@@ -305,9 +318,11 @@ class ActivityType extends AbstractType
'label' => $activityType->getLabel('documents'),
'required' => $activityType->isRequired('documents'),
'allow_add' => true,
'allow_delete' => true,
'button_add_label' => 'activity.Insert a document',
'button_remove_label' => 'activity.Remove a document',
'empty_collection_explain' => 'No documents',
'entry_options' => ['has_title' => true],
]);
}
@@ -338,7 +353,9 @@ class ActivityType extends AbstractType
}
if ($activityType->isVisible('location')) {
$builder->add('location', HiddenType::class)
$builder->add('location', HiddenType::class, [
'required' => $activityType->getLocationVisible() === 2,
])
->get('location')
->addModelTransformer(new CallbackTransformer(
static function (?Location $location): string {
@@ -366,8 +383,8 @@ class ActivityType extends AbstractType
'label' => $activityType->getLabel('sentReceived'),
'required' => $activityType->isRequired('sentReceived'),
'choices' => [
'Sent' => Activity::SENTRECEIVED_SENT,
'Received' => Activity::SENTRECEIVED_RECEIVED,
'Sent' => Activity::SENTRECEIVED_SENT,
],
]);
}
@@ -426,8 +443,8 @@ class ActivityType extends AbstractType
$resolver
->setRequired(['center', 'role', 'activityType', 'accompanyingPeriod'])
->setAllowedTypes('center', ['null', 'Chill\MainBundle\Entity\Center'])
->setAllowedTypes('role', 'Symfony\Component\Security\Core\Role\Role')
->setAllowedTypes('center', ['null', Center::class])
->setAllowedTypes('role', [Role::class, 'string'])
->setAllowedTypes('activityType', \Chill\ActivityBundle\Entity\ActivityType::class)
->setAllowedTypes('accompanyingPeriod', [\Chill\PersonBundle\Entity\AccompanyingPeriod::class, 'null']);
}

View File

@@ -57,7 +57,7 @@ class ActivityTypeType extends AbstractType
$fields = [
'persons', 'user', 'date', 'location', 'persons',
'thirdParties', 'durationTime', 'travelTime', 'attendee',
'reasons', 'comment', 'sentReceived', 'documents',
'reasons', 'comment', 'privateComment', 'sentReceived', 'documents',
'emergency', 'socialIssues', 'socialActions', 'users',
];
@@ -69,6 +69,9 @@ class ActivityTypeType extends AbstractType
'empty_data' => '',
]);
}
$builder
->add('commentVisible', ActivityFieldPresence::class);
}
public function configureOptions(OptionsResolver $resolver)

View File

@@ -15,8 +15,6 @@ use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
use Knp\Menu\MenuItem;
use Symfony\Component\Security\Core\Security;
use function in_array;
final class AdminMenuBuilder implements LocalMenuBuilderInterface
{
private Security $security;
@@ -32,27 +30,38 @@ final class AdminMenuBuilder implements LocalMenuBuilderInterface
return;
}
if (in_array($menuId, ['admin_index', 'admin_section'], true)) {
$menu->addChild('Activities', [
'route' => 'chill_admin_activity_index',
])
->setExtras([
'order' => 2000,
'explain' => 'Activity configuration',
]);
} else {
$menu
->addChild('Activities', [
'route' => 'chill_admin_activity_index',
])
->setExtras([
'order' => '60',
]);
}
$menu->addChild('Activities', [
'route' => 'chill_activity_admin_index',
])
->setAttribute('class', 'list-group-item-header')
->setExtras([
'order' => 5000,
'icons' => ['exchange'],
]);
$menu->addChild('Activity Reasons', [
'route' => 'chill_activity_activityreason',
])->setExtras(['order' => 5010]);
$menu->addChild('Activity Reasons Category', [
'route' => 'chill_activity_activityreasoncategory',
])->setExtras(['order' => 5020]);
$menu->addChild('Activity type', [
'route' => 'chill_activity_type_admin',
])->setExtras(['order' => 5030]);
$menu->addChild('Activity Presences', [
'route' => 'chill_crud_activity_presence_index',
])->setExtras(['order' => 5040]);
$menu->addChild('Activity Types Categories', [
'route' => 'chill_activity_type_category_admin',
])->setExtras(['order' => 5050]);
}
public static function getMenuIds(): array
{
return ['admin_index', 'admin_section', 'admin_activity'];
return ['admin_section', 'admin_activity'];
}
}

View File

@@ -12,13 +12,20 @@ declare(strict_types=1);
namespace Chill\ActivityBundle\Repository;
use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Entity\ActivityPresence;
use Chill\ActivityBundle\Entity\ActivityType;
use Chill\ActivityBundle\Security\Authorization\ActivityVoter;
use Chill\MainBundle\Entity\Location;
use Chill\MainBundle\Entity\LocationType;
use Chill\MainBundle\Entity\Scope;
use Chill\MainBundle\Security\Authorization\AuthorizationHelper;
use Chill\MainBundle\Security\Resolver\CenterResolverDispatcherInterface;
use Chill\PersonBundle\Entity\AccompanyingPeriod;
use Chill\PersonBundle\Entity\Person;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\AbstractQuery;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Query\ResultSetMappingBuilder;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Role\Role;
use Symfony\Component\Security\Core\Security;
@@ -72,6 +79,86 @@ final class ActivityACLAwareRepository implements ActivityACLAwareRepositoryInte
->findByAccompanyingPeriod($period, $scopes, true, $limit, $start, $orderBy);
}
public function findByAccompanyingPeriodSimplified(AccompanyingPeriod $period, ?int $limit = 1000): array
{
$rsm = new ResultSetMappingBuilder($this->em);
$sql = '
SELECT
a.id AS activity_id,
date,
CASE WHEN durationtime IS NOT NULL THEN (EXTRACT(EPOCH from durationtime) / 60)::int ELSE 0 END AS durationtimeminute,
attendee_id,
comment_comment,
emergency,
sentreceived,
CASE WHEN traveltime IS NOT NULL THEN (EXTRACT(EPOCH from traveltime) / 60)::int ELSE 0 END AS traveltimeminute,
t.id AS type_id, t.name as type_name,
p.id AS presence_id, p.name AS presence_name,
location.id AS location_id, location.address_id, location.name AS location_name, location.phonenumber1, location.phonenumber2, location.email,
location.locationtype_id, locationtype.title AS locationtype_title,
users.userids AS userids,
thirdparties.thirdpartyids,
persons.personids,
actions.socialactionids,
issues.socialissueids
FROM activity a
LEFT JOIN chill_main_location location ON a.location_id = location.id
LEFT JOIN chill_main_location_type locationtype ON location.locationtype_id = locationtype.id
LEFT JOIN activitytpresence p ON a.attendee_id = p.id
LEFT JOIN activitytype t ON a.type_id = t.id
LEFT JOIN LATERAL (SELECT jsonb_agg(user_id) userids, activity_id FROM activity_user AS au WHERE a.id = au.activity_id GROUP BY activity_id) AS users ON TRUE
LEFT JOIN LATERAL (SELECT jsonb_agg(thirdparty_id) thirdpartyids, activity_id FROM activity_thirdparty AS au WHERE a.id = au.activity_id GROUP BY activity_id) AS thirdparties ON TRUE
LEFT JOIN LATERAL (SELECT jsonb_agg(person_id) personids, activity_id FROM activity_person AS au WHERE a.id = au.activity_id GROUP BY activity_id) AS persons ON TRUE
LEFT JOIN LATERAL (SELECT jsonb_agg(socialaction_id) socialactionids, activity_id FROM chill_activity_activity_chill_person_socialaction AS au WHERE a.id = au.activity_id GROUP BY activity_id) AS actions ON TRUE
LEFT JOIN LATERAL (SELECT jsonb_agg(socialissue_id) socialissueids, activity_id FROM chill_activity_activity_chill_person_socialissue AS au WHERE a.id = au.activity_id GROUP BY activity_id) AS issues ON TRUE
WHERE accompanyingperiod_id = ?
ORDER BY a.date DESC, a.id DESC
LIMIT ?
';
$rsm
->addEntityResult(Activity::class, 'a')
->addFieldResult('a', 'activity_id', 'id')
->addFieldResult('a', 'date', 'date')
->addFieldResult('a', 'comment', 'comment')
->addFieldResult('a', 'sentreceived', 'sentReceived')
->addFieldResult('a', 'emergency', 'emergency')
->addJoinedEntityResult(Location::class, 'location', 'a', 'location')
->addFieldResult('location', 'location_id', 'id')
->addFieldResult('location', 'location_name', 'name')
->addFieldResult('location', 'phonenumber1', 'phonenumber1')
->addFieldResult('location', 'phonenumber2', 'phonenumber2')
->addFieldResult('location', 'email', 'email')
->addJoinedEntityResult(LocationType::class, 'locationType', 'location', 'locationType')
->addFieldResult('locationType', 'locationtype_id', 'id')
->addFieldResult('locationType', 'locationtype_title', 'title')
->addJoinedEntityResult(ActivityType::class, 'activityType', 'a', 'activityType')
->addFieldResult('activityType', 'type_id', 'id')
->addFieldResult('activityType', 'type_name', 'name')
->addJoinedEntityResult(ActivityPresence::class, 'activityPresence', 'a', 'attendee')
->addFieldResult('activityPresence', 'presence_id', 'id')
->addFieldResult('activityPresence', 'presence_name', 'name')
// results which cannot be mapped into entity
->addScalarResult('comment_comment', 'comment', Types::TEXT)
->addScalarResult('userids', 'userIds', Types::JSON)
->addScalarResult('thirdpartyids', 'thirdPartyIds', Types::JSON)
->addScalarResult('personids', 'personIds', Types::JSON)
->addScalarResult('socialactionids', 'socialActionIds', Types::JSON)
->addScalarResult('socialissueids', 'socialIssueIds', Types::JSON)
->addScalarResult('durationtimeminute', 'durationTimeMinute', Types::INTEGER)
->addScalarResult('traveltimeminute', 'travelTimeMinute', Types::INTEGER);
$nq = $this->em->createNativeQuery($sql, $rsm);
$nq->setParameter(0, $period->getId())->setParameter(1, $limit);
return $nq->getResult(AbstractQuery::HYDRATE_ARRAY);
}
/**
* @param array $orderBy
*

View File

@@ -21,6 +21,15 @@ interface ActivityACLAwareRepositoryInterface
*/
public function findByAccompanyingPeriod(AccompanyingPeriod $period, string $role, ?int $start = 0, ?int $limit = 1000, ?array $orderBy = []): array;
/**
* Return a list of activities, simplified as array (not object).
*
* The aim of this method is to get a long list of activities and keep performance.
*
* @return array an array of array, each item representing an activity
*/
public function findByAccompanyingPeriodSimplified(AccompanyingPeriod $period, ?int $limit = 1000): array;
/**
* @return Activity[]|array
*/

View File

@@ -0,0 +1,23 @@
div.chill-dropzone__below-zone {
a.btn-delete {
display: none;
}
}
ul[data-collection-name="documents"] {
button.remove-entry {
margin: 0.5rem 0!important;
}
}
// do it in js does not work
// document.addEventListener('DOMContentLoaded', e => {
// const dropzoneBelow = document.querySelectorAll('div.chill-dropzone__below-zone');
// dropzoneBelow.forEach(
// d => {
// const a = d.querySelector('a.btn-delete');
// d.removeChild(a);
// }
// )
// });

View File

@@ -1,7 +1,7 @@
<template>
<teleport to="#location">
<div class="mb-3 row">
<label class="col-form-label col-sm-4">
<label :class="locationClassList">
{{ $t("activity.location") }}
</label>
<div class="col-sm-8">
@@ -41,6 +41,12 @@ export default {
NewLocation,
VueMultiselect,
},
data() {
return {
locationClassList:
`col-form-label col-sm-4 ${document.querySelector('input#chill_activitybundle_activity_location').getAttribute('required') ? 'required' : ''}`,
}
},
computed: {
...mapState(["activity", "availableLocations"]),
...mapGetters(["suggestedEntities"]),

View File

@@ -18,6 +18,12 @@
</template>
<template v-slot:body>
<form>
<div class="alert alert-warning" v-if="errors.length">
<ul>
<li v-for="(e, i) in errors" :key="i">{{ e }}</li>
</ul>
</div>
<div class="form-floating mb-3">
<select class="form-select form-select-lg" id="type" required v-model="selectType">
<option selected disabled value="">{{ $t('activity.choose_location_type') }}</option>
@@ -54,11 +60,6 @@
<label for="email">{{ $t('activity.location_fields.email') }}</label>
</div>
<div class="alert alert-warning" v-if="errors.length">
<ul>
<li v-for="(e, i) in errors" :key="i">{{ e }}</li>
</ul>
</div>
</form>
</template>
<template v-slot:footer>

View File

@@ -3,7 +3,7 @@
<div class="mb-3 row">
<div class="col-4">
<label class="col-form-label">{{ $t('activity.social_issues') }}</label>
<label :class="socialIssuesClassList">{{ $t('activity.social_issues') }}</label>
</div>
<div class="col-8">
@@ -42,7 +42,7 @@
<div class="mb-3 row">
<div class="col-4">
<label class="col-form-label">{{ $t('activity.social_actions') }}</label>
<label :class="socialActionsClassList">{{ $t('activity.social_actions') }}</label>
</div>
<div class="col-8">
@@ -54,19 +54,19 @@
{{ $t('activity.select_first_a_social_issue') }}
</span>
<template v-else-if="socialActionsList.length > 0">
<check-social-action
v-if="socialIssuesSelected.length || socialActionsSelected.length"
v-for="action in socialActionsList"
:key="action.id"
:action="action"
:selection="socialActionsSelected"
@updateSelected="updateActionsSelected">
</check-social-action>
</template>
<template v-else-if="socialActionsList.length > 0">
<check-social-action
v-if="socialIssuesSelected.length || socialActionsSelected.length"
v-for="action in socialActionsList"
:key="action.id"
:action="action"
:selection="socialActionsSelected"
@updateSelected="updateActionsSelected">
</check-social-action>
</template>
<span v-else-if="actionAreLoaded && socialActionsList.length === 0" class="inline-choice chill-no-data-statement mt-3">
{{ $t('activity.social_action_list_empty') }}
{{ $t('activity.social_action_list_empty') }}
</span>
@@ -94,6 +94,10 @@ export default {
issueIsLoading: false,
actionIsLoading: false,
actionAreLoaded: false,
socialIssuesClassList:
`col-form-label ${document.querySelector('input#chill_activitybundle_activity_socialIssues').getAttribute('required') ? 'required' : ''}`,
socialActionsClassList:
`col-form-label ${document.querySelector('input#chill_activitybundle_activity_socialActions').getAttribute('required') ? 'required' : ''}`,
}
},
computed: {
@@ -107,7 +111,7 @@ export default {
return this.$store.state.socialIssuesOther;
},
socialActionsList() {
return this.$store.state.socialActionsList;
return this.$store.getters.socialActionsListSorted;
},
socialActionsSelected() {
return this.$store.state.activity.socialActions;

View File

@@ -101,6 +101,9 @@ const store = createStore({
state.activity.activityType.thirdPartiesVisible !== 0)
);
},
socialActionsListSorted(state) {
return [ ...state.socialActionsList].sort((a, b) => a.ordering - b.ordering);
},
},
mutations: {
// SocialIssueAcc
@@ -131,7 +134,6 @@ const store = createStore({
state.socialActionsList = [];
},
addActionInList(state, action) {
//console.log('add action list', action.id);
state.socialActionsList.push(action);
},
updateActionsSelected(state, actions) {

View File

@@ -1,56 +0,0 @@
<?php
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
declare(strict_types=1);
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\HttpKernel\Kernel;
class AppKernel extends Kernel
{
/**
* @return string
*/
public function getCacheDir()
{
return sys_get_temp_dir() . '/ActivityBundle/cache';
}
/**
* @return string
*/
public function getLogDir()
{
return sys_get_temp_dir() . '/ActivityBundle/logs';
}
public function registerBundles()
{
return [
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Chill\CustomFieldsBundle\ChillCustomFieldsBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new \Symfony\Bundle\AsseticBundle\AsseticBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Chill\PersonBundle\ChillPersonBundle(),
new Chill\MainBundle\ChillMainBundle(),
new Chill\ActivityBundle\ChillActivityBundle(),
new \Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(),
new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
//add here all the required bundle (some bundle are not required)
];
}
public function registerContainerConfiguration(LoaderInterface $loader)
{
$loader->load($this->getRootDir() . '/config/config_' . $this->getEnvironment() . '.yml');
}
}

View File

@@ -1,20 +0,0 @@
<?php
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
declare(strict_types=1);
use Composer\Autoload\ClassLoader;
use Doctrine\Common\Annotations\AnnotationRegistry;
/** @var ClassLoader $loader */
$loader = require __DIR__ . '/../../../../../vendor/autoload.php';
AnnotationRegistry::registerLoader([$loader, 'loadClass']);
return $loader;

File diff suppressed because one or more lines are too long

View File

@@ -1,438 +0,0 @@
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "assets._default_package" (parent: assets.path_package).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.user.provider.concrete.chain_provider" (parent: security.user.provider.chain).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.user.provider.concrete.in_memory" (parent: security.user.provider.in_memory).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.user.provider.concrete.in_memory_admin" (parent: security.user.provider.in_memory.user).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.user.provider.concrete.users" (parent: doctrine.orm.security.user.provider).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.context.dev" (parent: security.firewall.context).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.context_listener.0" (parent: security.context_listener).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.logout_listener.default" (parent: security.logout_listener).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.logout.success_handler.default" (parent: security.logout.success_handler).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.provider.dao.default" (parent: security.authentication.provider.dao).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.success_handler.default.form_login" (parent: security.authentication.success_handler).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.failure_handler.default.form_login" (parent: security.authentication.failure_handler).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.form" (parent: security.authentication.listener.abstract).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.form.default" (parent: security.authentication.listener.form).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.form_entry_point.default" (parent: security.authentication.form_entry_point).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.anonymous.default" (parent: security.authentication.listener.anonymous).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.provider.anonymous.default" (parent: security.authentication.provider.anonymous).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.exception_listener.default" (parent: security.exception_listener).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.context.default" (parent: security.firewall.context).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger" (parent: monolog.logger_prototype).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.eventdispatcher" (parent: swiftmailer.transport.eventdispatcher.abstract).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.authhandler" (parent: swiftmailer.transport.authhandler.abstract).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.buffer" (parent: swiftmailer.transport.buffer.abstract).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.smtp" (parent: swiftmailer.transport.smtp.abstract).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default" (parent: swiftmailer.mailer.abstract).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.plugin.messagelogger" (parent: swiftmailer.plugin.messagelogger.abstract).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection.configuration" (parent: doctrine.dbal.connection.configuration).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.logger.profiling.default" (parent: doctrine.dbal.logger.profiling).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.logger.chain.default" (parent: doctrine.dbal.logger.chain).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection.event_manager" (parent: doctrine.dbal.connection.event_manager).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection" (parent: doctrine.dbal.connection).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_configuration" (parent: doctrine.orm.configuration).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_metadata_cache" (parent: doctrine_cache.abstract.array).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_result_cache" (parent: doctrine_cache.abstract.array).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_query_cache" (parent: doctrine_cache.abstract.array).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_manager_configurator" (parent: doctrine.orm.manager_configurator.abstract).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_entity_manager" (parent: doctrine.orm.entity_manager.abstract).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.request" (parent: monolog.logger_prototype).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.translation" (parent: monolog.logger_prototype).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.security" (parent: monolog.logger_prototype).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.templating" (parent: monolog.logger_prototype).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.profiler" (parent: monolog.logger_prototype).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.router" (parent: monolog.logger_prototype).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.php" (parent: monolog.logger_prototype).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.event" (parent: monolog.logger_prototype).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.assetic" (parent: monolog.logger_prototype).
Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.doctrine" (parent: monolog.logger_prototype).
Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "validator.mapping.class_metadata_factory"; reason: private alias
Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "assetic.value_supplier"; reason: private alias
Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.dbal.event_manager"; reason: private alias
Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.orm.metadata.annotation_reader"; reason: private alias
Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.orm.default_entity_manager.event_manager"; reason: private alias
Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "sensio_framework_extra.security.expression_language"; reason: private alias
Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "translator.logging.inner"; reason: private alias
Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "translator.data_collector.inner"; reason: private alias
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.path_package"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.url_package"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.static_version_strategy"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.firewall.context"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.in_memory"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.in_memory.user"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.chain"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout_listener"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout.handler.cookie_clearing"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout.success_handler"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.form_entry_point"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.custom_success_handler"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.success_handler"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.custom_failure_handler"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.failure_handler"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.form"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.simple_form"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.simple_success_failure_handler"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.simple_preauth"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.x509"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.remote_user"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.basic"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.digest"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.dao"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.simple"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.pre_authenticated"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.exception_listener"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.switchuser_listener"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.rememberme"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.rememberme"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.persistent"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.simplehash"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "monolog.logger_prototype"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.mailer.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.sendmail.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.mail.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.null.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.buffer.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.authhandler.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.eventdispatcher.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.redirecting.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.antiflood.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.impersonate.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.messagelogger.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.smtp.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.spool.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.spool.file.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.spool.memory.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assetic.worker.ensure_filter"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.apc"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.array"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.file_system"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.php_file"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.memcache"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.memcached"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.redis"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.wincache"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.xcache"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.zenddata"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.mongodb"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.riak"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.couchbase"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.logger.chain"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.logger.profiling"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection.event_manager"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection.configuration"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.configuration"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.entity_manager.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.manager_configurator.abstract"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.security.user.provider"; reason: abstract
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "session" previously pointing to "session.storage.mock_file" to "session.storage.filesystem".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "session.storage.native" previously pointing to "session.handler.native_file" to "session.handler".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "session.storage.php_bridge" previously pointing to "session.handler.native_file" to "session.handler".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "assetic.twig_directory_resource.kernel" previously pointing to "templating.loader.filesystem" to "templating.loader".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "chill.custom_field.text" previously pointing to "templating.engine.twig" to "templating".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "chill.custom_field.choice" previously pointing to "templating.engine.twig" to "templating".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "chill.custom_field.title" previously pointing to "templating.engine.twig" to "templating".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "translator_listener" previously pointing to "translator.data_collector" to "translator".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "validator.builder" previously pointing to "translator.data_collector" to "translator".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "data_collector.translation" previously pointing to "translator.data_collector" to "translator".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig.extension.trans" previously pointing to "translator.data_collector" to "translator".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "chill.custom_field.custom_fields_group_type" previously pointing to "translator.data_collector" to "translator".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "locale_listener" previously pointing to "router.default" to "router".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "templating.helper.router" previously pointing to "router.default" to "router".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "router.cache_warmer" previously pointing to "router.default" to "router".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "router_listener" previously pointing to "router.default" to "router".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.logout_url_generator" previously pointing to "router.default" to "router".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.http_utils" previously pointing to "router.default" to "router".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.http_utils" previously pointing to "router.default" to "router".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig.extension.routing" previously pointing to "router.default" to "router".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "web_profiler.controller.profiler" previously pointing to "router.default" to "router".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "web_profiler.controller.router" previously pointing to "router.default" to "router".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "sensio_framework_extra.controller.listener" previously pointing to "annotations.file_cache_reader" to "annotation_reader".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "sensio_framework_extra.routing.loader.annot_class" previously pointing to "annotations.file_cache_reader" to "annotation_reader".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.user_password_encoder.generic" previously pointing to "security.encoder_factory.generic" to "security.encoder_factory".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.validator.user_password" previously pointing to "security.encoder_factory.generic" to "security.encoder_factory".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.authentication.provider.dao.default" previously pointing to "security.encoder_factory.generic" to "security.encoder_factory".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig" previously pointing to "twig.loader.filesystem" to "twig.loader".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.email_sender.listener" previously pointing to "monolog.logger" to "logger".
Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.mailer.default" previously pointing to "swiftmailer.mailer.default.transport.smtp" to "swiftmailer.mailer.default.transport".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.cache_warmer.template_paths" to "cache_warmer".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assetic.asset_manager_cache_warmer" to "cache_warmer".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "translation.warmer" to "cache_warmer".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "router.cache_warmer" to "cache_warmer".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.proxy_cache_warmer" to "cache_warmer".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "translator.selector" to "translator.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "test.client.history" to "test.client".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "test.client.cookiejar" to "test.client".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "session.attribute_bag" to "session".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "session.flash_bag" to "session".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "16f9ce82abe2adc8b44c9c8d29afbc93d322e7fad5e23fae42fb16c689658c58_1" to "form.resolved_type_factory".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.extension" to "form.registry".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.type_extension.form.request_handler" to "form.type_extension.form.http_foundation".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.server_params" to "form.type_extension.form.request_handler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.csrf.token_generator" to "security.csrf.token_manager".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.csrf.token_storage" to "security.csrf.token_manager".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assets._default_package" to "assets.packages".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "validator.validator_factory" to "validator.builder".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "profiler.storage" to "profiler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.config" to "profiler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.ajax" to "profiler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.exception" to "profiler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.events" to "profiler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.logger" to "profiler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.time" to "profiler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.memory" to "profiler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.twig" to "profiler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.security" to "profiler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.data_collector" to "profiler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.doctrine" to "profiler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.xml" to "routing.resolver".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.yml" to "routing.resolver".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.php" to "routing.resolver".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_dir" to "routing.resolver".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_file" to "routing.resolver".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.resolver" to "routing.loader".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.event_dispatcher.parent" to "debug.event_dispatcher".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "controller_resolver" to "debug.controller_resolver".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.provider.dao.default" to "security.authentication.manager".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.provider.anonymous.default" to "security.authentication.manager".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.expression_voter" to "security.access.decision_manager".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.role_hierarchy_voter" to "security.access.decision_manager".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.authenticated_voter" to "security.access.decision_manager".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.expression_language" to "security.access.expression_voter".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.firewall.map" to "security.firewall".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d" to "security.firewall.map".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.retry_entry_point" to "security.channel_listener".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.user.provider.concrete.in_memory_admin" to "security.user.provider.concrete.in_memory".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.logout.success_handler.default" to "security.logout_listener.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.logout.handler.session" to "security.logout_listener.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.user_checker" to "security.authentication.provider.dao.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.session_strategy" to "security.authentication.listener.form.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.success_handler.default.form_login" to "security.authentication.listener.form.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.failure_handler.default.form_login" to "security.authentication.listener.form.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.form_entry_point.default" to "security.exception_listener.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.channel_listener" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.context_listener.0" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.logout_listener.default" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.listener.form.default" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.listener.anonymous.default" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_listener" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.exception_listener.default" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.logout_url" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.security" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.profiler" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.trans" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.assets" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.actions" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.code" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.routing" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.yaml" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.debug.stopwatch" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.expression" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.httpkernel" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.form" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.debug" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assetic.twig_extension" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.twig.doctrine_extension" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.dump" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.webprofiler" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.app_variable" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.configurator.environment" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.form.renderer" to "twig.extension.form".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.form.engine" to "twig.form.renderer".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "0ae0165e1c986a63ecc244514317fc4860d8c97fd0529833a00cfb95d75a4d92_1" to "swiftmailer.mailer.default.transport.authhandler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "0ae0165e1c986a63ecc244514317fc4860d8c97fd0529833a00cfb95d75a4d92_2" to "swiftmailer.mailer.default.transport.authhandler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "0ae0165e1c986a63ecc244514317fc4860d8c97fd0529833a00cfb95d75a4d92_3" to "swiftmailer.mailer.default.transport.authhandler".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.transport.replacementfactory" to "swiftmailer.mailer.default.transport.buffer".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assetic.twig_formula_loader" to "assetic.asset_manager".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assetic.twig_directory_resource.chillpersonbundle" to "assetic.asset_manager".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assetic.twig_directory_resource.chillmainbundle" to "assetic.asset_manager".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assetic.twig_directory_resource.kernel" to "assetic.asset_manager".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assetic.parameter_bag" to "assetic.asset_factory".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assetic.value_supplier.default" to "assetic.twig_extension".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assetic.twig_formula_loader.real" to "assetic.twig_formula_loader".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assetic.config_cache" to "assetic.twig_formula_loader".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.logger.chain.default" to "doctrine.dbal.default_connection.configuration".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.logger" to "doctrine.dbal.logger.chain.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.default_connection.configuration" to "doctrine.dbal.default_connection".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.default_connection.event_manager" to "doctrine.dbal.default_connection".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_metadata_driver" to "doctrine.orm.default_configuration".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.naming_strategy.default" to "doctrine.orm.default_configuration".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.quote_strategy.default" to "doctrine.orm.default_configuration".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_yml_metadata_driver" to "doctrine.orm.default_metadata_driver".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_yml_metadata_driver" to "doctrine.orm.default_metadata_driver".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_yml_metadata_driver" to "doctrine.orm.default_metadata_driver".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_yml_metadata_driver" to "doctrine.orm.default_metadata_driver".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_configuration" to "doctrine.orm.default_entity_manager".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.security.expression_language.default" to "sensio_framework_extra.security.listener".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_distribution.webconfigurator.doctrine_step" to "sensio_distribution.webconfigurator".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_distribution.webconfigurator.secret_step" to "sensio_distribution.webconfigurator".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "translator.logging" to "translator".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.mailer.default.transport.buffer" to "swiftmailer.mailer.default.transport".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.mailer.default.transport.authhandler" to "swiftmailer.mailer.default.transport".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.mailer.default.transport.eventdispatcher" to "swiftmailer.mailer.default.transport".
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "controller_resolver"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "translator.logging"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "translator.selector"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "translation.warmer"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.flash_bag"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.attribute_bag"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.handler.write_check"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.extension"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.type_extension.form.request_handler"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.server_params"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.csrf.token_generator"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.csrf.token_storage"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets.empty_package"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets._default_package"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.engine.delegating"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.cache_warmer.template_paths"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.loader.cache"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.loader.chain"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.mapping.cache.apc"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.validator_factory"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "profiler.storage"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.config"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.ajax"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.exception"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.events"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.logger"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.time"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.memory"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "16f9ce82abe2adc8b44c9c8d29afbc93d322e7fad5e23fae42fb16c689658c58_1"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.resolver"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.xml"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.yml"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.php"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "router.cache_warmer"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.cached_reader"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.event_dispatcher.parent"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.session_strategy"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.user_checker"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.expression_language"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.authenticated_voter"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.role_hierarchy_voter"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.expression_voter"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.firewall.map"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.listener.anonymous"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.provider.anonymous"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.retry_entry_point"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.basic_entry_point"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.digest_entry_point"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.channel_listener"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.context_listener"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.logout.handler.session"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access_listener"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.rememberme.token.provider.in_memory"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.logout_url"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.security"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.security"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.user.provider.concrete.in_memory_admin"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.context_listener.0"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.logout_listener.default"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.logout.success_handler.default"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.provider.dao.default"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.success_handler.default.form_login"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.failure_handler.default.form_login"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.listener.form.default"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.form_entry_point.default"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.listener.anonymous.default"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.provider.anonymous.default"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.exception_listener.default"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.app_variable"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.cache_warmer"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.loader.native_filesystem"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.loader.chain"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.profiler"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.twig"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.trans"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.assets"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.actions"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.code"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.routing"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.yaml"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.debug.stopwatch"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.expression"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.httpkernel"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.form"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.debug"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.form.engine"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.form.renderer"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.configurator.environment"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.chrome_php"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.gelf_message"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.html"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.json"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.line"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.loggly"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.normalizer"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.scalar"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.wildfire"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "0ae0165e1c986a63ecc244514317fc4860d8c97fd0529833a00cfb95d75a4d92_3"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "0ae0165e1c986a63ecc244514317fc4860d8c97fd0529833a00cfb95d75a4d92_2"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "0ae0165e1c986a63ecc244514317fc4860d8c97fd0529833a00cfb95d75a4d92_1"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.failover"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.mailinvoker"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.replacementfactory"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.data_collector"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.mailer.default.transport.eventdispatcher"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.mailer.default.transport.authhandler"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.mailer.default.transport.buffer"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assetic.config_cache"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assetic.asset_manager_cache_warmer"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assetic.worker.cache_busting"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assetic.parameter_bag"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assetic.value_supplier.default"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assetic.twig_extension"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assetic.twig_formula_loader"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assetic.twig_formula_loader.real"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.logger"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.doctrine"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.twig.doctrine_extension"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.default_connection.configuration"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.logger.chain.default"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.default_connection.event_manager"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.proxy_cache_warmer"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.listeners.resolve_target_entity"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.naming_strategy.default"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.naming_strategy.underscore"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.quote_strategy.default"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.quote_strategy.ansi"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_configuration"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_yml_metadata_driver"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_metadata_driver"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_dir"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_file"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.security.expression_language.default"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.dump"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.webprofiler"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_distribution.webconfigurator.doctrine_step"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_distribution.webconfigurator.secret_step"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assetic.twig_directory_resource.chillpersonbundle"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assetic.twig_directory_resource.chillmainbundle"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assetic.twig_directory_resource.kernel"; reason: unused
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.finder" to "cache_warmer".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assets.empty_version_strategy" to "assets.packages".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_map" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.http_utils" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.http_utils" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.http_utils" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.http_utils" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.http_utils" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_map" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.http_utils" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.http_utils" to "security.firewall.map.context.default".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.httpfoundation" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.httpfoundation" to "twig".
Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "annotations.reader" to "annotation_reader".
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets.empty_version_strategy"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.finder"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.reader"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.http_utils"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access_map"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.httpfoundation"; reason: unused
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_class"; reason: unused

View File

@@ -1,88 +0,0 @@
<?php return array (
0 => 'Symfony\\Bundle\\FrameworkBundle\\EventListener\\SessionListener',
1 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\NativeSessionStorage',
2 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\PhpBridgeSessionStorage',
3 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\NativeFileSessionHandler',
4 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\AbstractProxy',
5 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\SessionHandlerProxy',
6 => 'Symfony\\Component\\HttpFoundation\\Session\\Session',
7 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\GlobalVariables',
8 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\TemplateReference',
9 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\TemplateNameParser',
10 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\Loader\\TemplateLocator',
11 => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator',
12 => 'Symfony\\Component\\Routing\\RequestContext',
13 => 'Symfony\\Component\\Routing\\Router',
14 => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher',
15 => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\Router',
16 => 'Symfony\\Component\\Config\\FileLocator',
17 => 'Symfony\\Component\\Debug\\ErrorHandler',
18 => 'Symfony\\Component\\EventDispatcher\\Event',
19 => 'Symfony\\Component\\EventDispatcher\\ContainerAwareEventDispatcher',
20 => 'Symfony\\Component\\HttpKernel\\EventListener\\ResponseListener',
21 => 'Symfony\\Component\\HttpKernel\\EventListener\\RouterListener',
22 => 'Symfony\\Component\\HttpKernel\\Controller\\ControllerResolver',
23 => 'Symfony\\Component\\HttpKernel\\Event\\KernelEvent',
24 => 'Symfony\\Component\\HttpKernel\\Event\\FilterControllerEvent',
25 => 'Symfony\\Component\\HttpKernel\\Event\\FilterResponseEvent',
26 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseEvent',
27 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseForControllerResultEvent',
28 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseForExceptionEvent',
29 => 'Symfony\\Component\\HttpKernel\\KernelEvents',
30 => 'Symfony\\Component\\HttpKernel\\Config\\FileLocator',
31 => 'Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerNameParser',
32 => 'Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerResolver',
33 => 'Symfony\\Component\\Security\\Http\\Firewall',
34 => 'Symfony\\Component\\Security\\Core\\User\\UserProviderInterface',
35 => 'Symfony\\Component\\Security\\Core\\Authentication\\AuthenticationProviderManager',
36 => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\Storage\\TokenStorage',
37 => 'Symfony\\Component\\Security\\Core\\Authorization\\AccessDecisionManager',
38 => 'Symfony\\Component\\Security\\Core\\Authorization\\AuthorizationChecker',
39 => 'Symfony\\Component\\Security\\Core\\Authorization\\Voter\\VoterInterface',
40 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallMap',
41 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallContext',
42 => 'Symfony\\Component\\HttpFoundation\\RequestMatcher',
43 => 'Twig_Environment',
44 => 'Twig_Extension',
45 => 'Twig_Extension_Core',
46 => 'Twig_Extension_Escaper',
47 => 'Twig_Extension_Optimizer',
48 => 'Twig_LoaderInterface',
49 => 'Twig_Markup',
50 => 'Twig_Template',
51 => 'Monolog\\Formatter\\FormatterInterface',
52 => 'Monolog\\Formatter\\LineFormatter',
53 => 'Monolog\\Handler\\HandlerInterface',
54 => 'Monolog\\Handler\\AbstractHandler',
55 => 'Monolog\\Handler\\AbstractProcessingHandler',
56 => 'Monolog\\Handler\\StreamHandler',
57 => 'Monolog\\Handler\\FingersCrossedHandler',
58 => 'Monolog\\Handler\\FilterHandler',
59 => 'Monolog\\Handler\\TestHandler',
60 => 'Monolog\\Logger',
61 => 'Symfony\\Bridge\\Monolog\\Logger',
62 => 'Symfony\\Bridge\\Monolog\\Handler\\DebugHandler',
63 => 'Monolog\\Handler\\FingersCrossed\\ActivationStrategyInterface',
64 => 'Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy',
65 => 'Symfony\\Bundle\\AsseticBundle\\DefaultValueSupplier',
66 => 'Symfony\\Bundle\\AsseticBundle\\Factory\\AssetFactory',
67 => 'Doctrine\\Common\\Annotations\\DocLexer',
68 => 'Doctrine\\Common\\Annotations\\FileCacheReader',
69 => 'Doctrine\\Common\\Annotations\\PhpParser',
70 => 'Doctrine\\Common\\Annotations\\Reader',
71 => 'Doctrine\\Common\\Lexer',
72 => 'Doctrine\\Common\\Persistence\\ConnectionRegistry',
73 => 'Doctrine\\Common\\Persistence\\Proxy',
74 => 'Doctrine\\Common\\Util\\ClassUtils',
75 => 'Doctrine\\Bundle\\DoctrineBundle\\Registry',
76 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener',
77 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener',
78 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DateTimeParamConverter',
79 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DoctrineParamConverter',
80 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterInterface',
81 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterManager',
82 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener',
83 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\HttpCacheListener',
84 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\SecurityListener',
85 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\ConfigurationAnnotation',
);

View File

@@ -1,77 +0,0 @@
imports:
- { resource: parameters.yml }
framework:
secret: Not very secret
router: { resource: "%kernel.root_dir%/config/routing.yml" }
form: true
csrf_protection: true
session: ~
default_locale: fr
translator: { fallback: fr }
profiler: { only_exceptions: false }
templating:
engines: ['twig']
doctrine:
dbal:
driver: pdo_pgsql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
mapping_types:
jsonb: json_array
orm:
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: true
# Assetic Configuration
assetic:
debug: "%kernel.debug%"
use_controller: false
bundles: [ ]
#java: /usr/bin/java
filters:
cssrewrite: ~
security:
providers:
chain_provider:
chain :
providers: [in_memory, users]
in_memory:
memory:
users:
admin: { password: olala, roles: 'ROLE_ADMIN' }
users:
entity:
class: Chill\MainBundle\Entity\User
property: username
encoders:
Chill\MainBundle\Entity\User:
algorithm: bcrypt
Symfony\Component\Security\Core\User\User: plaintext
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
default:
anonymous: ~
form_login:
csrf_parameter: _csrf_token
csrf_token_id: authenticate
csrf_provider: form.csrf_provider
logout: ~
http_basic:
access_control:
#disable authentication for tests
#- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
#- { path: ^/admin, roles: ROLE_ADMIN }
#- { path: ^/, roles: ROLE_USER }

View File

@@ -1,7 +0,0 @@
imports:
- { resource: config.yml } #here we import a config.yml file, this is not required
framework:
test: ~
session:
storage_id: session.storage.filesystem

View File

@@ -1,8 +0,0 @@
# config/config_test.yml
imports:
- { resource: config.yml } #here we import a config.yml file, this is not required
framework:
test: ~
session:
storage_id: session.storage.filesystem

View File

@@ -1,9 +0,0 @@
#required by ConfigCustomizablesEntitiesTest::testNotEmptyConfig
imports:
- { resource: config_test.yml }
chill_custom_fields:
customizables_entities:
- { class: Test\With\A\Dummy\Entity, name: test }

View File

@@ -1,7 +0,0 @@
parameters:
database_host: chill__database
database_port: 5432
database_name: postgres
database_user: postgres
database_password: postgres
locale: fr

View File

@@ -1,7 +0,0 @@
parameters:
database_host: 127.0.0.1
database_port: 5432
database_name: test0
database_user: postgres
database_password: postgres
locale: fr

View File

@@ -1,7 +0,0 @@
parameters:
database_host: 127.0.0.1
database_port: 5434
database_name: symfony
database_user: symfony
database_password: symfony
locale: fr

View File

@@ -1,10 +0,0 @@
cl_custom_fields:
resource: .
type: chill_routes
chill_main:
resource: "@ChillMainBundle/Resources/config/routing.yml"
test_custom_field_form_render:
path: /customfieldsgroup/test/render/{id}
defaults: { _controller: ChillCustomFieldsBundle:CustomFieldsGroup:renderForm }

View File

@@ -1,28 +0,0 @@
#!/usr/bin/env php
<?php
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Debug\Debug;
// if you don't want to setup permissions the proper way, just uncomment the following PHP line
// read https://symfony.com/doc/current/setup.html#checking-symfony-application-configuration-and-setup
// for more information
//umask(0000);
set_time_limit(0);
/** @var \Composer\Autoload\ClassLoader $loader */
$loader = require __DIR__.'/autoload.php';
$input = new ArgvInput();
$env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev');
$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod';
if ($debug) {
Debug::enable();
}
$kernel = new AppKernel($env, $debug);
$application = new Application($kernel);
$application->run($input);

View File

@@ -1,41 +0,0 @@
<?php
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
declare(strict_types=1);
use Symfony\Component\Debug\Debug;
use Symfony\Component\HttpFoundation\Request;
// If you don't want to setup permissions the proper way, just uncomment the following PHP line
// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information
//umask(0000);
// This check prevents access to debug front controllers that are deployed by accident to production servers.
// Feel free to remove this, extend it, or make something more sophisticated.
if (
isset($_SERVER['HTTP_CLIENT_IP'])
|| isset($_SERVER['HTTP_X_FORWARDED_FOR'])
|| !(in_array($_SERVER['REMOTE_ADDR'], ['127.0.0.1', 'fe80::1', '::1'], true) || \PHP_SAPI === 'cli-server')
) {
header('HTTP/1.0 403 Forbidden');
exit('You are not allowed to access this file. Check ' . basename(__FILE__) . ' for more information.');
}
$loader = require_once __DIR__ . '/../app/bootstrap.php.cache';
Debug::enable();
require_once __DIR__ . '/../app/AppKernel.php';
$kernel = new AppKernel('dev', true);
$kernel->loadClassCache();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

View File

@@ -5,7 +5,7 @@
{% block title 'Remove activity'|trans %}
{% block personcontent %}
{% block content %}
{{ include('@ChillMain/Util/confirmation_template.html.twig',
{
'title' : 'Remove activity'|trans,

View File

@@ -35,7 +35,7 @@
{{ form_row(edit_form.socialActions) }}
{% endif %}
{%- if edit_form.socialIssues is defined or edit_form.socialIssues is defined -%}
{%- if edit_form.socialIssues is defined or edit_form.socialActions is defined -%}
<div id="social-issues-acc"></div>
{% endif %}
@@ -83,6 +83,10 @@
{{ form_row(edit_form.comment) }}
{% endif %}
{%- if edit_form.privateComment is defined -%}
{{ form_row(edit_form.privateComment) }}
{% endif %}
{%- if edit_form.attendee is defined -%}
{{ form_row(edit_form.attendee) }}
{% endif %}
@@ -116,3 +120,11 @@
{{ form_end(edit_form) }}
{# {{ form(delete_form) }} #}
{% block js %}
{{ encore_entry_script_tags('mod_pickentity_type') }}
{% endblock %}
{% block css %}
{{ encore_entry_link_tags('mod_pickentity_type') }}
{% endblock %}

View File

@@ -30,4 +30,5 @@
{{ parent() }}
{{ encore_entry_link_tags('mod_async_upload') }}
{{ encore_entry_link_tags('vue_activity') }}
{{ encore_entry_link_tags('page_edit_activity') }}
{% endblock %}

View File

@@ -20,7 +20,7 @@
{% block title 'Update activity'|trans %}
{% block personcontent %}
{% block content %}
<div class="activity-edit">
<div id="activity"></div> {# <=== vue component #}

View File

@@ -2,12 +2,30 @@
{% if is_granted('CHILL_ACTIVITY_SEE_DETAILS', activity) %}
{% if no_action is not defined or no_action == false %}
<li>
<a class="btn btn-misc" href="{{ chill_path_add_return_path('chill_main_notification_create', {
'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity',
'entityId': activity.id
}) }}">
<i class="fa fa-paper-plane fa-fw"></i>
{{ 'notification.Notify'|trans }}</a>
{% set showGroup = activity.accompanyingPeriod is not null and activity.accompanyingPeriod.hasUser and activity.accompanyingPeriod.user is not same as(app.user) %}
<div class="{% if showGroup %}btn-group{% endif %}" {% if showGroup %}role="group"{% endif %}>
{% if showGroup %}
<button id="btnGroupNotifyButtons" type="button" class="btn btn-notify dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
{{ 'notification.Notify'|trans }}
</button>
<ul class="dropdown-menu" aria-labelledby="btnGroupNotifyButtons">
<li>
<a class="dropdown-item" href="{{ chill_path_add_return_path('chill_main_notification_create', {'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity', 'entityId': activity.id, 'tos': [activity.accompanyingPeriod.user.id]}) }}">
{{ 'notification.Notify referrer'|trans }}
</a>
</li>
<li>
<a class="dropdown-item" href="{{ chill_path_add_return_path('chill_main_notification_create', {'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity', 'entityId': activity.id}) }}">
{{ 'notification.Notify any'|trans }}
</a>
</li>
</ul>
{% else %}
<a class="btn btn-notify" href="{{ chill_path_add_return_path('chill_main_notification_create', {'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity', 'entityId': activity.id}) }}">
{{ 'notification.Notify'|trans }}
</a>
{% endif %}
</div>
</li>
{% endif %}
{% if context == 'person' and activity.accompanyingPeriod is not empty %}

View File

@@ -30,7 +30,7 @@
{{ encore_entry_link_tags('mod_notification_toggle_read_status') }}
{% endblock %}
{% block personcontent %}
{% block content %}
{% set person_id = null %}
{% if person %}

View File

@@ -35,7 +35,7 @@
{{ form_row(form.socialActions) }}
{% endif %}
{%- if form.socialIssues is defined or form.socialIssues is defined -%}
{%- if form.socialIssues is defined or form.socialActions is defined -%}
<div id="social-issues-acc"></div>
{% endif %}
@@ -81,19 +81,22 @@
{% endif %}
{%- if form.comment is defined -%}
{# TODO .. public and private #}
{{ form_row(form.comment) }}
{% endif %}
{%- if form.privateComment is defined -%}
{{ form_row(form.privateComment) }}
{% endif %}
{%- if form.attendee is defined -%}
{{ form_row(form.attendee) }}
{% endif %}
{%- if form.documents is defined -%}
{{ form_row(form.documents) }}
<div data-docgen-template-picker="data-docgen-template-picker" data-entity-class="Chill\ActivityBundle\Entity\Activity" data-entity-id="{{ entity.id }}"></div>
{% endif %}
{%- if form.attendee is defined -%}
{{ form_row(form.attendee) }}
{% endif %}
{# TODO .. status #}
<ul class="record_actions sticky-form-buttons">
@@ -116,3 +119,11 @@
</li>
</ul>
{{ form_end(form) }}
{% block js %}
{{ encore_entry_script_tags('mod_pickentity_type') }}
{% endblock %}
{% block css %}
{{ encore_entry_link_tags('mod_pickentity_type') }}
{% endblock %}

View File

@@ -4,7 +4,7 @@
{% block title 'Activity creation' |trans %}
{% block personcontent %}
{% block content %}
<div class="activity-new">
<div id="activity"></div> {# <=== vue component #}

View File

@@ -4,6 +4,6 @@
{% block title 'Activity creation'|trans %}
{% block personcontent %}
{% block content %}
{% include 'ChillActivityBundle:Activity:selectType.html.twig' %}
{% endblock %}

View File

@@ -1,4 +1,5 @@
{%- set t = entity.type -%}
{% set userId = app.user.id %}
{%- import "@ChillDocStore/Macro/macro.html.twig" as m -%}
<h1>{{ "Activity"|trans }}</h1>
@@ -146,13 +147,28 @@
</dd>
{% endif %}
{% if t.privateCommentVisible and is_granted('CHILL_ACTIVITY_SEE_DETAILS', entity) and entity.privateComment.hasCommentForUser(app.user) %}
{% if t.privateCommentLabel is not empty %}
<dt class="inline">{{ t.privateCommentLabel }}</dt>
{% else %}
<dt class="inline">{{ 'Private comment'|trans }}</dt>
{% endif %}
<dd>
<section class="chill-entity entity-comment-embeddable">
<blockquote class="chill-user-quote private-quote">
{{ entity.privateComment.comments[userId] }}
</blockquote>
</section>
</dd>
{% endif %}
{% if t.documentsVisible and is_granted('CHILL_ACTIVITY_SEE_DETAILS', entity) %}
<dt class="inline">{{ 'Documents'|trans }}</dt>
<dd>
{% if entity.documents|length > 0 %}
<ul>
{% for d in entity.documents %}
<li>{{ m.download_button(d) }}</li>
<li>{{ d.title }}{{ m.download_button(d) }}</li>
{% endfor %}
</ul>
{% else %}
@@ -201,9 +217,30 @@
</a>
</li>
<li>
<a class="btn btn-notify" href="{{ chill_path_add_return_path('chill_main_notification_create', {'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity', 'entityId': entity.id}) }}">
{{ 'notification.Notify'|trans }}
</a>
{% set showGroup = entity.accompanyingPeriod is not null and entity.accompanyingPeriod.hasUser and entity.accompanyingPeriod.user is not same as(app.user) %}
<div class="{% if showGroup %}btn-group{% endif %}" {% if showGroup %}role="group"{% endif %}>
{% if showGroup %}
<button id="btnGroupNotifyButtons" type="button" class="btn btn-notify dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
{{ 'notification.Notify'|trans }}
</button>
<ul class="dropdown-menu" aria-labelledby="btnGroupNotifyButtons">
<li>
<a class="dropdown-item" href="{{ chill_path_add_return_path('chill_main_notification_create', {'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity', 'entityId': entity.id, 'tos': [entity.accompanyingPeriod.user.id]}) }}">
{{ 'notification.Notify referrer'|trans }}
</a>
</li>
<li>
<a class="dropdown-item" href="{{ chill_path_add_return_path('chill_main_notification_create', {'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity', 'entityId': entity.id}) }}">
{{ 'notification.Notify any'|trans }}
</a>
</li>
</ul>
{% else %}
<a class="btn btn-notify" href="{{ chill_path_add_return_path('chill_main_notification_create', {'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity', 'entityId': entity.id}) }}">
{{ 'notification.Notify'|trans }}
</a>
{% endif %}
</div>
</li>
{% if is_granted('CHILL_ACTIVITY_UPDATE', entity) %}
<li>

View File

@@ -18,11 +18,11 @@
{% import 'ChillActivityBundle:ActivityReason:macro.html.twig' as m %}
{% block personcontent -%}
{% block content -%}
<div class="activity-show">
{% include 'ChillActivityBundle:Activity:show.html.twig' with {'context': 'person'} %}
</div>
{% endblock personcontent %}
{% endblock %}
{% block block_post_menu %}
<div class="post-menu pt-4">

View File

@@ -1,10 +1,10 @@
{% extends "@ChillActivity/Admin/layout_activity.html.twig" %}
{% extends '@ChillMain/CRUD/Admin/index.html.twig' %}
{% block title %}
{% include('@ChillMain/CRUD/_edit_title.html.twig') %}
{% include('@ChillMain/CRUD/_edit_title.html.twig') %}
{% endblock %}
{% block layout_wvm_content %}
{% block admin_content %}
{% embed '@ChillMain/CRUD/_edit_content.html.twig' %}
{% block content_form_actions_view %}{% endblock %}
{% block content_form_actions_save_and_show %}{% endblock %}

View File

@@ -1,4 +1,4 @@
{% extends "@ChillActivity/Admin/layout_activity.html.twig" %}
{% extends '@ChillMain/CRUD/Admin/index.html.twig' %}
{% block admin_content %}
<h1>{{ 'ActivityPresence list'|trans }}</h1>
@@ -34,7 +34,7 @@
</tbody>
</table>
<ul class="record_actions">
<ul class="record_actions sticky-form-buttons">
<li>
<a href="{{ path('chill_crud_activity_presence_new') }}" class="btn btn-create">
{{ 'Create a new activity presence'|trans }}

View File

@@ -1,11 +1,11 @@
{% extends "@ChillActivity/Admin/layout_activity.html.twig" %}
{% extends '@ChillMain/CRUD/Admin/index.html.twig' %}
{% block title %}
{% include('@ChillMain/CRUD/_new_title.html.twig') %}
{% include('@ChillMain/CRUD/_new_title.html.twig') %}
{% endblock %}
{% block layout_wvm_content %}
{% embed '@ChillMain/CRUD/_new_content.html.twig' %}
{% block content_form_actions_save_and_show %}{% endblock %}
{% endembed %}
{% block admin_content %}
{% embed '@ChillMain/CRUD/_new_content.html.twig' %}
{% block content_form_actions_save_and_show %}{% endblock %}
{% endembed %}
{% endblock %}

View File

@@ -1,20 +1,4 @@
{#
* Copyright (C) 2014, Champs Libres Cooperative SCRLFS, <http://www.champs-libres.coop>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
{% extends "@ChillActivity/Admin/layout_activity.html.twig" %}
{% extends '@ChillMain/Admin/layoutWithVerticalMenu.html.twig' %}
{% block admin_content %}
<h1>{{ 'ActivityReason edit'|trans }}</h1>
@@ -24,7 +8,7 @@
{{ form_row(edit_form.active) }}
{{ form_row(edit_form.category) }}
<ul class="record_actions">
<ul class="record_actions sticky-form-buttons">
<li class="cancel">
<a href="{{ path('chill_activity_activityreason') }}" class="btn btn-cancel">{{ 'Back to the list'|trans }}</a>
</li>

View File

@@ -1,20 +1,4 @@
{#
* Copyright (C) 2014, Champs Libres Cooperative SCRLFS, <http://www.champs-libres.coop>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
{% extends "@ChillActivity/Admin/layout_activity.html.twig" %}
{% extends '@ChillMain/Admin/layoutWithVerticalMenu.html.twig' %}
{% block admin_content %}
<h1>{{ 'ActivityReason list'|trans }}</h1>
@@ -45,7 +29,11 @@
</tbody>
</table>
<ul class="record_actions">
<ul class="record_actions sticky-form-buttons">
<li class='cancel'>
<a href="{{ path('chill_main_admin_central') }}" class="btn btn-cancel">{{'Back to the admin'|trans}}</a>
</li>
<li>
<a href="{{ path('chill_activity_activityreason_new') }}" class="btn btn-new">
{{ 'Create a new activity reason'|trans }}

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