From 1dcff2f23cd4fe9124a18463c4ada67c976b8a2a Mon Sep 17 00:00:00 2001 From: Mathieu Jaumotte Date: Wed, 7 Sep 2022 19:58:38 +0200 Subject: [PATCH] exports: add condition with distinct alias on join clauses --- exports_alias_conventions.csv | 68 +++++++++++++++++ exports_alias_conventions.md | 76 +++++++++++++++++++ .../BySocialActionAggregator.php | 6 +- .../BySocialIssueAggregator.php | 6 +- .../ACPAggregators/ByThirdpartyAggregator.php | 6 +- .../ACPAggregators/ByUserAggregator.php | 6 +- .../ACPAggregators/LocationTypeAggregator.php | 6 +- .../ACPAggregators/UserScopeAggregator.php | 6 +- .../Aggregator/ActivityTypeAggregator.php | 23 +----- .../ActivityReasonAggregator.php | 41 +--------- .../LinkedToACP/AvgActivityDuration.php | 2 +- .../LinkedToACP/AvgActivityVisitDuration.php | 2 +- .../Export/LinkedToACP/CountActivity.php | 7 +- .../LinkedToACP/SumActivityDuration.php | 7 +- .../LinkedToACP/SumActivityVisitDuration.php | 7 +- .../Export/LinkedToPerson/CountActivity.php | 7 +- .../Export/LinkedToPerson/ListActivity.php | 10 +-- .../LinkedToPerson/StatActivityDuration.php | 6 +- .../ACPFilters/BySocialActionFilter.php | 6 +- .../Filter/ACPFilters/BySocialIssueFilter.php | 6 +- .../Export/Filter/ACPFilters/ByUserFilter.php | 6 +- .../Filter/ACPFilters/LocationTypeFilter.php | 6 +- .../Filter/ACPFilters/UserScopeFilter.php | 6 +- .../Export/Filter/ActivityTypeFilter.php | 19 ----- .../PersonFilters/ActivityReasonFilter.php | 34 +-------- .../Export/Aggregator/AgentAggregator.php | 6 +- .../Aggregator/CancelReasonAggregator.php | 4 +- .../Export/Aggregator/JobAggregator.php | 6 +- .../Export/Aggregator/LocationAggregator.php | 4 +- .../Aggregator/LocationTypeAggregator.php | 6 +- .../Export/Aggregator/ScopeAggregator.php | 6 +- .../Export/Filter/JobFilter.php | 6 +- .../Export/Filter/ScopeFilter.php | 6 +- .../HouseholdPositionAggregator.php | 8 +- .../MaritalStatusAggregator.php | 7 +- .../ActionTypeAggregator.php | 7 +- .../SocialWorkAggregators/GoalAggregator.php | 7 +- .../SocialWorkAggregators/JobAggregator.php | 6 +- .../ReferrerAggregator.php | 6 +- .../ResultAggregator.php | 17 ++++- .../SocialWorkAggregators/ScopeAggregator.php | 6 +- .../ActivityTypeFilter.php | 12 ++- .../SocialActionFilter.php | 6 +- .../ResidentialAddressAtThirdpartyFilter.php | 27 +++++-- .../ResidentialAddressAtUserFilter.php | 13 +++- .../Filter/SocialWorkFilters/JobFilter.php | 6 +- .../SocialWorkFilters/ReferrerFilter.php | 6 +- .../Filter/SocialWorkFilters/ScopeFilter.php | 6 +- .../ReferrerFilterTest.php | 4 +- 49 files changed, 343 insertions(+), 220 deletions(-) create mode 100644 exports_alias_conventions.csv create mode 100644 exports_alias_conventions.md diff --git a/exports_alias_conventions.csv b/exports_alias_conventions.csv new file mode 100644 index 000000000..1215479d8 --- /dev/null +++ b/exports_alias_conventions.csv @@ -0,0 +1,68 @@ +Entity,Join,Attribute,Alias +AccompanyingPeriod::class,,,acp +,AccompanyingPeriodWork::class,acp.works,acpw +,AccompanyingPeriodParticipation::class,acp.participations,acppart +,Location::class,acp.administrativeLocation,acploc +,ClosingMotive::class,acp.closingMotive,acpmotive +,UserJob::class,acp.job,acpjob +,Origin::class,acp.origin,acporigin +,Scope::class,acp.scopes,acpscope +,SocialIssue::class,acp.socialIssues,acpsocialissue +,User::class,acp.user,acpuser +AccompanyingPeriodWork::class,,,acpw +,AccompanyingPeriodWorkEvaluation::class,acpw.accompanyingPeriodWorkEvaluations,workeval +,Goal::class,acpw.goals,goal +,User::class,acpw.referrers,acpwuser +,Result::class,acpw.results,acpwresult +,SocialAction::class,acpw.socialAction,acpwsocialaction +AccompanyingPeriodParticipation::class,,,acppart +,Person::class,acppart.person,partperson +AccompanyingPeriodWorkEvaluation::class,,,workeval +,Evaluation::class,workeval.evaluation,eval +Goal::class,,,goal +,Result::class,goal.results,goalresult +Person::class,,,person +,Center::class,person.center,center +,HouseholdMember::class,partperson.householdParticipations,member +,MaritalStatus::class,person.maritalStatus,personmarital +ResidentialAddress::class,,,resaddr +,Person::class,resaddr.person,resaddrperson +,Center::class,resaddrperson.center,resaddrcenter +,ThirdParty::class,resaddr.hostThirdParty,tparty +ThirdParty::class,,,tparty +,ThirdPartyCategory::class,tparty.categories,tpartycat +HouseholdMember::class,,,member +,Household::class,member.household,household +,Person::class,member.person,memberperson +,,memberperson.center,membercenter +Household::class,,,household +,HouseholdComposition::class,household.compositions,composition +Activity::class,,,activity +,Person::class,activity.person,actperson +,AccompanyingPeriod::class,activity.accompanyingPeriod,actacp +,Person::class,activity_person_having_activity.person,person_person_having_activity +,ActivityReason::class,activity_person_having_activity.reasons,reasons_person_having_activity +,ActivityType::class,activity.activityType,acttype +,Location::class,activity.location,actloc +,SocialAction::class,activity.socialActions,actsocialaction +,SocialIssue::class,activity.socialIssues,actsocialssue +,ThirdParty::class,activity.thirdParties,acttparty +,User::class,activity.user,actuser +,User::class,activity.users,actusers +,ActivityReason::class,activity.reasons,actreasons +,Center::class,actperson.center,actcenter +ActivityReason::class,,,actreasons +,ActivityReasonCategory::class,actreason.category,actreasoncat +Calendar::class,,,cal +,CancelReason::class,cal.cancelReason,calcancel +,Location::class,cal.location,calloc +,User::class,cal.user,caluser +VendeePerson::class,,,vp +,Person::class,vp.person,vpperson +,Center::class,vpperson.center,vpcenter +,SituationProfessionelle::class,vp.situationProfessionelle,vpprof +,StatutLogement::class,vp.statutLogement,vplog +,TempsDeTravail::class,vp.tempsDeTravail,vptt +VendeePersonMineur::class,,,vpm +,Person::class,vpm.person,vpmperson +,Center::class,vpmperson.center,vpmcenter diff --git a/exports_alias_conventions.md b/exports_alias_conventions.md new file mode 100644 index 000000000..85973eec1 --- /dev/null +++ b/exports_alias_conventions.md @@ -0,0 +1,76 @@ +# Export conventions + + +Add condition with distinct alias on each export join clauses (Indicators + Filters + Aggregators) + +These are alias conventions : + +| Entity | Join | Attribute | Alias | +| :--- | :--- |:-------------------------------------------|:----------------------------------| +| AccompanyingPeriod::class | | | acp | +| | AccompanyingPeriodWork::class | acp.works | acpw | +| | AccompanyingPeriodParticipation::class | acp.participations | acppart | +| | Location::class | acp.administrativeLocation | acploc | +| | ClosingMotive::class | acp.closingMotive | acpmotive | +| | UserJob::class | acp.job | acpjob | +| | Origin::class | acp.origin | acporigin | +| | Scope::class | acp.scopes | acpscope | +| | SocialIssue::class | acp.socialIssues | acpsocialissue | +| | User::class | acp.user | acpuser | +| AccompanyingPeriodWork::class | | | acpw | +| | AccompanyingPeriodWorkEvaluation::class | acpw.accompanyingPeriodWorkEvaluations | workeval | +| | Goal::class | acpw.goals | goal | +| | User::class | acpw.referrers | acpwuser | +| | Result::class | acpw.results | acpwresult | +| | SocialAction::class | acpw.socialAction | acpwsocialaction | +| AccompanyingPeriodParticipation::class | | | acppart | +| | Person::class | acppart.person | partperson | +| AccompanyingPeriodWorkEvaluation::class | | | workeval | +| | Evaluation::class | workeval.evaluation | eval | +| Goal::class | | | goal | +| | Result::class | goal.results | goalresult | +| Person::class | | | person | +| | Center::class | person.center | center | +| | HouseholdMember::class | partperson.householdParticipations | member | +| | MaritalStatus::class | person.maritalStatus | personmarital | +| ResidentialAddress::class | | | resaddr | +| | Person::class | resaddr.person | resaddrperson | +| | Center::class | resaddrperson.center | resaddrcenter | +| | ThirdParty::class | resaddr.hostThirdParty | tparty | +| ThirdParty::class | | | tparty | +| | ThirdPartyCategory::class | tparty.categories | tpartycat | +| HouseholdMember::class | | | member | +| | Household::class | member.household | household | +| | Person::class | member.person | memberperson | +| | | memberperson.center | membercenter | +| Household::class | | | household | +| | HouseholdComposition::class | household.compositions | composition | +| Activity::class | | | activity | +| | Person::class | activity.person | actperson | +| | AccompanyingPeriod::class | activity.accompanyingPeriod | actacp | +| | Person::class | activity\_person\_having\_activity.person | person\_person\_having\_activity | +| | ActivityReason::class | activity\_person\_having\_activity.reasons | reasons\_person\_having\_activity | +| | ActivityType::class | activity.activityType | acttype | +| | Location::class | activity.location | actloc | +| | SocialAction::class | activity.socialActions | actsocialaction | +| | SocialIssue::class | activity.socialIssues | actsocialssue | +| | ThirdParty::class | activity.thirdParties | acttparty | +| | User::class | activity.user | actuser | +| | User::class | activity.users | actusers | +| | ActivityReason::class | activity.reasons | actreasons | +| | Center::class | actperson.center | actcenter | +| ActivityReason::class | | | actreasons | +| | ActivityReasonCategory::class | actreason.category | actreasoncat | +| Calendar::class | | | cal | +| | CancelReason::class | cal.cancelReason | calcancel | +| | Location::class | cal.location | calloc | +| | User::class | cal.user | caluser | +| VendeePerson::class | | | vp | +| | Person::class | vp.person | vpperson | +| | Center::class | vpperson.center | vpcenter | +| | SituationProfessionelle::class | vp.situationProfessionelle | vpprof | +| | StatutLogement::class | vp.statutLogement | vplog | +| | TempsDeTravail::class | vp.tempsDeTravail | vptt | +| VendeePersonMineur::class | | | vpm | +| | Person::class | vpm.person | vpmperson | +| | Center::class | vpmperson.center | vpmcenter | diff --git a/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/BySocialActionAggregator.php b/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/BySocialActionAggregator.php index 19299eb6a..f35fe6e6b 100644 --- a/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/BySocialActionAggregator.php +++ b/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/BySocialActionAggregator.php @@ -40,11 +40,11 @@ class BySocialActionAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - if (!in_array('socialaction', $qb->getAllAliases(), true)) { - $qb->join('activity.socialActions', 'socialaction'); + if (!in_array('actsocialaction', $qb->getAllAliases(), true)) { + $qb->join('activity.socialActions', 'actsocialaction'); } - $qb->addSelect('socialaction.id AS socialaction_aggregator'); + $qb->addSelect('actsocialaction.id AS socialaction_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/BySocialIssueAggregator.php b/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/BySocialIssueAggregator.php index 672076693..1126b9373 100644 --- a/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/BySocialIssueAggregator.php +++ b/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/BySocialIssueAggregator.php @@ -40,11 +40,11 @@ class BySocialIssueAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - if (!in_array('socialissue', $qb->getAllAliases(), true)) { - $qb->join('activity.socialIssues', 'socialissue'); + if (!in_array('actsocialissue', $qb->getAllAliases(), true)) { + $qb->join('activity.socialIssues', 'actsocialissue'); } - $qb->addSelect('socialissue.id AS socialissue_aggregator'); + $qb->addSelect('actsocialissue.id AS socialissue_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/ByThirdpartyAggregator.php b/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/ByThirdpartyAggregator.php index 81822e801..4b56c6fc7 100644 --- a/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/ByThirdpartyAggregator.php +++ b/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/ByThirdpartyAggregator.php @@ -40,11 +40,11 @@ class ByThirdpartyAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - if (!in_array('thirdparty', $qb->getAllAliases(), true)) { - $qb->join('activity.thirdParties', 'thirdparty'); + if (!in_array('acttparty', $qb->getAllAliases(), true)) { + $qb->join('activity.thirdParties', 'acttparty'); } - $qb->addSelect('thirdparty.id AS thirdparty_aggregator'); + $qb->addSelect('acttparty.id AS thirdparty_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/ByUserAggregator.php b/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/ByUserAggregator.php index 55df3febd..3787e5286 100644 --- a/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/ByUserAggregator.php +++ b/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/ByUserAggregator.php @@ -40,11 +40,11 @@ class ByUserAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - if (!in_array('user', $qb->getAllAliases(), true)) { - $qb->join('activity.users', 'user'); + if (!in_array('actusers', $qb->getAllAliases(), true)) { + $qb->join('activity.users', 'actusers'); } - $qb->addSelect('user.id AS users_aggregator'); + $qb->addSelect('actusers.id AS users_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/LocationTypeAggregator.php b/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/LocationTypeAggregator.php index 9664060da..d05c0eb41 100644 --- a/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/LocationTypeAggregator.php +++ b/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/LocationTypeAggregator.php @@ -40,11 +40,11 @@ class LocationTypeAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - if (!in_array('location', $qb->getAllAliases(), true)) { - $qb->join('activity.location', 'location'); + if (!in_array('actloc', $qb->getAllAliases(), true)) { + $qb->join('activity.location', 'actloc'); } - $qb->addSelect('IDENTITY(location.locationType) AS locationtype_aggregator'); + $qb->addSelect('IDENTITY(actloc.locationType) AS locationtype_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/UserScopeAggregator.php b/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/UserScopeAggregator.php index c05196375..faaa08b8e 100644 --- a/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/UserScopeAggregator.php +++ b/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/UserScopeAggregator.php @@ -40,11 +40,11 @@ class UserScopeAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - if (!in_array('user', $qb->getAllAliases(), true)) { - $qb->join('activity.user', 'user'); + if (!in_array('actuser', $qb->getAllAliases(), true)) { + $qb->join('activity.user', 'actuser'); } - $qb->addSelect('IDENTITY(user.mainScope) AS userscope_aggregator'); + $qb->addSelect('IDENTITY(actuser.mainScope) AS userscope_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityTypeAggregator.php b/src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityTypeAggregator.php index f31e2e73f..5c285ca3e 100644 --- a/src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityTypeAggregator.php +++ b/src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityTypeAggregator.php @@ -44,8 +44,8 @@ class ActivityTypeAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - if (!in_array('aty', $qb->getAllAliases(), true)) { - $qb->join('activity.activityType', 'aty'); + if (!in_array('acttype', $qb->getAllAliases(), true)) { + $qb->join('activity.activityType', 'acttype'); } $qb->addSelect(sprintf('IDENTITY(activity.activityType) AS %s', self::KEY)); @@ -94,23 +94,4 @@ class ActivityTypeAggregator implements AggregatorInterface { return 'Aggregate by activity type'; } - - /** - * Check if a join between Activity and another alias. - * - * @param Join[] $joins - * @param string $alias the alias to search for - * - * @return bool - */ - private function checkJoinAlreadyDefined(array $joins, $alias) - { - foreach ($joins as $join) { - if ($join->getAlias() === $alias) { - return true; - } - } - - return false; - } } diff --git a/src/Bundle/ChillActivityBundle/Export/Aggregator/PersonAggregators/ActivityReasonAggregator.php b/src/Bundle/ChillActivityBundle/Export/Aggregator/PersonAggregators/ActivityReasonAggregator.php index 83347bf11..9d7cd3116 100644 --- a/src/Bundle/ChillActivityBundle/Export/Aggregator/PersonAggregators/ActivityReasonAggregator.php +++ b/src/Bundle/ChillActivityBundle/Export/Aggregator/PersonAggregators/ActivityReasonAggregator.php @@ -67,29 +67,15 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali $qb->addSelect($elem . ' as ' . $alias); // make a jointure only if needed - $join = $qb->getDQLPart('join'); - - if ( - ( - array_key_exists('activity', $join) - && !$this->checkJoinAlreadyDefined($join['activity'], 'reasons') - ) - || (!array_key_exists('activity', $join)) - ) { - $qb->add( - 'join', - [ - 'activity' => new Join(Join::INNER_JOIN, 'activity.reasons', 'reasons'), - ], - true - ); + if (!in_array( 'actreasons', $qb->getAllAliases(), true)) { + $qb->innerJoin('activity.reasons', 'actreasons'); } // join category if necessary if ('activity_categories_id' === $alias) { // add join only if needed - if (!$this->checkJoinAlreadyDefined($qb->getDQLPart('join')['activity'], 'category')) { - $qb->join('reasons.category', 'category'); + if (!in_array('actreasoncat', $qb->getAllAliases(), true)) { + $qb->join('actreasons.category', 'actreasoncat'); } } @@ -193,23 +179,4 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali ->addViolation(); } } - - /** - * Check if a join between Activity and another alias. - * - * @param Join[] $joins - * @param string $alias the alias to search for - * - * @return bool - */ - private function checkJoinAlreadyDefined(array $joins, $alias) - { - foreach ($joins as $join) { - if ($join->getAlias() === $alias) { - return true; - } - } - - return false; - } } diff --git a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityDuration.php b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityDuration.php index 90fc7822b..be20d2b9c 100644 --- a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityDuration.php +++ b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityDuration.php @@ -84,7 +84,7 @@ class AvgActivityDuration implements ExportInterface, GroupedExportInterface public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) { $qb = $this->repository->createQueryBuilder('activity') - ->join('activity.accompanyingPeriod', 'acp'); + ->join('activity.accompanyingPeriod', 'actacp'); $qb->select('AVG(activity.durationTime) as export_avg_activity_duration'); diff --git a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityVisitDuration.php b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityVisitDuration.php index 02ad4a5e3..021c82d72 100644 --- a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityVisitDuration.php +++ b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityVisitDuration.php @@ -84,7 +84,7 @@ class AvgActivityVisitDuration implements ExportInterface, GroupedExportInterfac public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) { $qb = $this->repository->createQueryBuilder('activity') - ->join('activity.accompanyingPeriod', 'acp'); + ->join('activity.accompanyingPeriod', 'actacp'); $qb->select('AVG(activity.travelTime) as export_avg_activity_visit_duration'); diff --git a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/CountActivity.php b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/CountActivity.php index aaf8c9463..1f8b742dd 100644 --- a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/CountActivity.php +++ b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/CountActivity.php @@ -84,8 +84,11 @@ class CountActivity implements ExportInterface, GroupedExportInterface public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) { - $qb = $this->repository->createQueryBuilder('activity') - ->join('activity.accompanyingPeriod', 'acp'); + $qb = $this->repository->createQueryBuilder('activity'); + + if (!in_array('actacp', $qb->getAllAliases(), true)) { + $qb->join('activity.accompanyingPeriod', 'actacp'); + } $qb->select('COUNT(activity.id) as export_count_activity'); diff --git a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityDuration.php b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityDuration.php index d11a7ded0..4d9b43034 100644 --- a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityDuration.php +++ b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityDuration.php @@ -83,8 +83,11 @@ class SumActivityDuration implements ExportInterface, GroupedExportInterface public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) { - $qb = $this->repository->createQueryBuilder('activity') - ->join('activity.accompanyingPeriod', 'acp'); + $qb = $this->repository->createQueryBuilder('activity'); + + if (!in_array('actacp', $qb->getAllAliases(), true)) { + $qb->join('activity.accompanyingPeriod', 'actacp'); + } $qb->select('SUM(activity.durationTime) as export_sum_activity_duration'); diff --git a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityVisitDuration.php b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityVisitDuration.php index bc67e7569..212b1384f 100644 --- a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityVisitDuration.php +++ b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityVisitDuration.php @@ -83,8 +83,11 @@ class SumActivityVisitDuration implements ExportInterface, GroupedExportInterfac public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) { - $qb = $this->repository->createQueryBuilder('activity') - ->join('activity.accompanyingPeriod', 'acp'); + $qb = $this->repository->createQueryBuilder('activity'); + + if (!in_array('actacp', $qb->getAllAliases(), true)) { + $qb->join('activity.accompanyingPeriod', 'actacp'); + } $qb->select('SUM(activity.travelTime) as export_sum_activity_visit_duration'); diff --git a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/CountActivity.php b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/CountActivity.php index 6881528f6..398fb14bb 100644 --- a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/CountActivity.php +++ b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/CountActivity.php @@ -84,8 +84,11 @@ class CountActivity implements ExportInterface, GroupedExportInterface { $centers = array_map(static fn ($el) => $el['center'], $acl); - $qb = $this->activityRepository->createQueryBuilder('activity') - ->join('activity.person', 'person'); + $qb = $this->activityRepository->createQueryBuilder('activity'); + + if (!in_array('actperson', $qb->getAllAliases(), true)) { + $qb->join('activity.person', 'actperson'); + } $qb->select('COUNT(activity.id) as export_count_activity'); diff --git a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/ListActivity.php b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/ListActivity.php index fd2b36e65..17b9bd687 100644 --- a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/ListActivity.php +++ b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/ListActivity.php @@ -210,9 +210,9 @@ class ListActivity implements ListInterface, GroupedExportInterface $qb ->from('ChillActivityBundle:Activity', 'activity') - ->join('activity.person', 'person') - ->join('person.center', 'center') - ->andWhere('center IN (:authorized_centers)') + ->join('activity.person', 'actperson') + ->join('actperson.center', 'actcenter') + ->andWhere('actcenter IN (:authorized_centers)') ->setParameter('authorized_centers', $centers); foreach ($this->fields as $f) { @@ -239,8 +239,8 @@ class ListActivity implements ListInterface, GroupedExportInterface break; case 'user_username': - $qb->join('activity.user', 'user'); - $qb->addSelect('user.username AS user_username'); + $qb->join('activity.user', 'actuser'); + $qb->addSelect('actuser.username AS user_username'); break; diff --git a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/StatActivityDuration.php b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/StatActivityDuration.php index eabe5a15b..bcb4da05d 100644 --- a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/StatActivityDuration.php +++ b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/StatActivityDuration.php @@ -120,9 +120,9 @@ class StatActivityDuration implements ExportInterface, GroupedExportInterface } return $qb->select($select) - ->join('activity.person', 'person') - ->join('person.center', 'center') - ->where($qb->expr()->in('center', ':centers')) + ->join('activity.person', 'actperson') + ->join('actperson.center', 'actcenter') + ->where($qb->expr()->in('actcenter', ':centers')) ->setParameter(':centers', $centers); } diff --git a/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/BySocialActionFilter.php b/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/BySocialActionFilter.php index 7c3508674..5737220b2 100644 --- a/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/BySocialActionFilter.php +++ b/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/BySocialActionFilter.php @@ -39,11 +39,11 @@ class BySocialActionFilter implements FilterInterface { $where = $qb->getDQLPart('where'); - if (!in_array('socialaction', $qb->getAllAliases(), true)) { - $qb->join('activity.socialActions', 'socialaction'); + if (!in_array('actsocialaction', $qb->getAllAliases(), true)) { + $qb->join('activity.socialActions', 'actsocialaction'); } - $clause = $qb->expr()->in('socialaction.id', ':socialactions'); + $clause = $qb->expr()->in('actsocialaction.id', ':socialactions'); if ($where instanceof Andx) { $where->add($clause); diff --git a/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/BySocialIssueFilter.php b/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/BySocialIssueFilter.php index a1b5ad1ba..1a9fdb519 100644 --- a/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/BySocialIssueFilter.php +++ b/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/BySocialIssueFilter.php @@ -39,11 +39,11 @@ class BySocialIssueFilter implements FilterInterface { $where = $qb->getDQLPart('where'); - if (!in_array('socialissue', $qb->getAllAliases(), true)) { - $qb->join('activity.socialIssues', 'socialissue'); + if (!in_array('actsocialissue', $qb->getAllAliases(), true)) { + $qb->join('activity.socialIssues', 'actsocialissue'); } - $clause = $qb->expr()->in('socialissue.id', ':socialissues'); + $clause = $qb->expr()->in('actsocialissue.id', ':socialissues'); if ($where instanceof Andx) { $where->add($clause); diff --git a/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/ByUserFilter.php b/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/ByUserFilter.php index 75e9dfa16..19ddee3ca 100644 --- a/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/ByUserFilter.php +++ b/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/ByUserFilter.php @@ -39,11 +39,11 @@ class ByUserFilter implements FilterInterface { $where = $qb->getDQLPart('where'); - if (!in_array('user', $qb->getAllAliases(), true)) { - $qb->join('activity.users', 'user'); + if (!in_array('actusers', $qb->getAllAliases(), true)) { + $qb->join('activity.users', 'actusers'); } - $clause = $qb->expr()->in('user.id', ':users'); + $clause = $qb->expr()->in('actusers.id', ':users'); if ($where instanceof Andx) { $where->add($clause); diff --git a/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/LocationTypeFilter.php b/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/LocationTypeFilter.php index def2ac84d..4ab27f043 100644 --- a/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/LocationTypeFilter.php +++ b/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/LocationTypeFilter.php @@ -37,12 +37,12 @@ class LocationTypeFilter implements FilterInterface public function alterQuery(QueryBuilder $qb, $data) { - if (!in_array('location', $qb->getAllAliases(), true)) { - $qb->join('activity.location', 'location'); + if (!in_array('actloc', $qb->getAllAliases(), true)) { + $qb->join('activity.location', 'actloc'); } $where = $qb->getDQLPart('where'); - $clause = $qb->expr()->in('location.locationType', ':locationtype'); + $clause = $qb->expr()->in('actloc.locationType', ':locationtype'); if ($where instanceof Andx) { $where->add($clause); diff --git a/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/UserScopeFilter.php b/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/UserScopeFilter.php index ba0f8cb75..c0cda26a4 100644 --- a/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/UserScopeFilter.php +++ b/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/UserScopeFilter.php @@ -37,13 +37,13 @@ class UserScopeFilter implements FilterInterface public function alterQuery(QueryBuilder $qb, $data) { - if (!in_array('user', $qb->getAllAliases(), true)) { - $qb->join('activity.user', 'user'); + if (!in_array('actuser', $qb->getAllAliases(), true)) { + $qb->join('activity.user', 'actuser'); } $where = $qb->getDQLPart('where'); - $clause = $qb->expr()->in('user.mainScope', ':userscope'); + $clause = $qb->expr()->in('actuser.mainScope', ':userscope'); if ($where instanceof Andx) { $where->add($clause); diff --git a/src/Bundle/ChillActivityBundle/Export/Filter/ActivityTypeFilter.php b/src/Bundle/ChillActivityBundle/Export/Filter/ActivityTypeFilter.php index e6504ba26..77d887fdf 100644 --- a/src/Bundle/ChillActivityBundle/Export/Filter/ActivityTypeFilter.php +++ b/src/Bundle/ChillActivityBundle/Export/Filter/ActivityTypeFilter.php @@ -102,23 +102,4 @@ class ActivityTypeFilter implements ExportElementValidatedInterface, FilterInter ->addViolation(); } } - - /** - * Check if a join between Activity and Reason is already defined. - * - * @param Join[] $joins - * @param mixed $alias - * - * @return bool - */ - private function checkJoinAlreadyDefined(array $joins, $alias) - { - foreach ($joins as $join) { - if ($join->getAlias() === $alias) { - return true; - } - } - - return false; - } } diff --git a/src/Bundle/ChillActivityBundle/Export/Filter/PersonFilters/ActivityReasonFilter.php b/src/Bundle/ChillActivityBundle/Export/Filter/PersonFilters/ActivityReasonFilter.php index 1ab5ffff4..6d78b3b38 100644 --- a/src/Bundle/ChillActivityBundle/Export/Filter/PersonFilters/ActivityReasonFilter.php +++ b/src/Bundle/ChillActivityBundle/Export/Filter/PersonFilters/ActivityReasonFilter.php @@ -52,20 +52,9 @@ class ActivityReasonFilter implements ExportElementValidatedInterface, FilterInt $where = $qb->getDQLPart('where'); $join = $qb->getDQLPart('join'); $clause = $qb->expr()->in('reasons', ':selected_activity_reasons'); - //dump($join); - // add a join to reasons only if needed - if ( - ( - array_key_exists('activity', $join) - && !$this->checkJoinAlreadyDefined($join['activity'], 'reasons') - ) - || (!array_key_exists('activity', $join)) - ) { - $qb->add( - 'join', - ['activity' => new Join(Join::INNER_JOIN, 'activity.reasons', 'reasons')], - true - ); + + if (!in_array('actreasons', $qb->getAllAliases(), true)) { + $qb->join('activity.reasons', 'actreasons'); } if ($where instanceof Expr\Andx) { @@ -123,21 +112,4 @@ class ActivityReasonFilter implements ExportElementValidatedInterface, FilterInt ->addViolation(); } } - - /** - * Check if a join between Activity and Reason is already defined. - * - * @param Join[] $joins - * @param mixed $alias - */ - private function checkJoinAlreadyDefined(array $joins, $alias): bool - { - foreach ($joins as $join) { - if ($join->getAlias() === $alias) { - return true; - } - } - - return false; - } } diff --git a/src/Bundle/ChillCalendarBundle/Export/Aggregator/AgentAggregator.php b/src/Bundle/ChillCalendarBundle/Export/Aggregator/AgentAggregator.php index e0a024f45..57ec33cdd 100644 --- a/src/Bundle/ChillCalendarBundle/Export/Aggregator/AgentAggregator.php +++ b/src/Bundle/ChillCalendarBundle/Export/Aggregator/AgentAggregator.php @@ -40,9 +40,11 @@ final class AgentAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('cal.user', 'u'); + if (!in_array('caluser', $qb->getAllAliases(), true)) { + $qb->join('cal.user', 'caluser'); + } - $qb->addSelect('u.id AS agent_aggregator'); + $qb->addSelect('caluser.id AS agent_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillCalendarBundle/Export/Aggregator/CancelReasonAggregator.php b/src/Bundle/ChillCalendarBundle/Export/Aggregator/CancelReasonAggregator.php index 76b2cb133..a07f052bf 100644 --- a/src/Bundle/ChillCalendarBundle/Export/Aggregator/CancelReasonAggregator.php +++ b/src/Bundle/ChillCalendarBundle/Export/Aggregator/CancelReasonAggregator.php @@ -41,7 +41,9 @@ class CancelReasonAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { // TODO: still needs to take into account appointments without a cancel reason somehow - $qb->join('cal.cancelReason', 'cr'); + if (!in_array('calcancel', $qb->getAllAliases(), true)) { + $qb->join('cal.cancelReason', 'calcancel'); + } $qb->addSelect('IDENTITY(cal.cancelReason) as cancel_reason_aggregator'); diff --git a/src/Bundle/ChillCalendarBundle/Export/Aggregator/JobAggregator.php b/src/Bundle/ChillCalendarBundle/Export/Aggregator/JobAggregator.php index 0e9352198..17905cf35 100644 --- a/src/Bundle/ChillCalendarBundle/Export/Aggregator/JobAggregator.php +++ b/src/Bundle/ChillCalendarBundle/Export/Aggregator/JobAggregator.php @@ -40,9 +40,11 @@ final class JobAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('cal.user', 'u'); + if (!in_array('caluser', $qb->getAllAliases(), true)) { + $qb->join('cal.user', 'caluser'); + } - $qb->addSelect('IDENTITY(u.userJob) as job_aggregator'); + $qb->addSelect('IDENTITY(caluser.userJob) as job_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillCalendarBundle/Export/Aggregator/LocationAggregator.php b/src/Bundle/ChillCalendarBundle/Export/Aggregator/LocationAggregator.php index cd7e88a1e..236b1b74f 100644 --- a/src/Bundle/ChillCalendarBundle/Export/Aggregator/LocationAggregator.php +++ b/src/Bundle/ChillCalendarBundle/Export/Aggregator/LocationAggregator.php @@ -36,7 +36,9 @@ final class LocationAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('cal.location', 'l'); + if (!in_array('calloc', $qb->getAllAliases(), true)) { + $qb->join('cal.location', 'calloc'); + } $qb->addSelect('IDENTITY(cal.location) as location_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillCalendarBundle/Export/Aggregator/LocationTypeAggregator.php b/src/Bundle/ChillCalendarBundle/Export/Aggregator/LocationTypeAggregator.php index dea8eecb4..c8d02160f 100644 --- a/src/Bundle/ChillCalendarBundle/Export/Aggregator/LocationTypeAggregator.php +++ b/src/Bundle/ChillCalendarBundle/Export/Aggregator/LocationTypeAggregator.php @@ -40,9 +40,11 @@ final class LocationTypeAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('cal.location', 'l'); + if (!in_array('calloc', $qb->getAllAliases(), true)) { + $qb->join('cal.location', 'calloc'); + } - $qb->addSelect('IDENTITY(l.locationType) as location_type_aggregator'); + $qb->addSelect('IDENTITY(calloc.locationType) as location_type_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillCalendarBundle/Export/Aggregator/ScopeAggregator.php b/src/Bundle/ChillCalendarBundle/Export/Aggregator/ScopeAggregator.php index 4ae3fb99c..7605c3d5d 100644 --- a/src/Bundle/ChillCalendarBundle/Export/Aggregator/ScopeAggregator.php +++ b/src/Bundle/ChillCalendarBundle/Export/Aggregator/ScopeAggregator.php @@ -40,9 +40,11 @@ final class ScopeAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('cal.user', 'u'); + if (!in_array('caluser', $qb->getAllAliases(), true)) { + $qb->join('cal.user', 'caluser'); + } - $qb->addSelect('IDENTITY(u.mainScope) as scope_aggregator'); + $qb->addSelect('IDENTITY(caluser.mainScope) as scope_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillCalendarBundle/Export/Filter/JobFilter.php b/src/Bundle/ChillCalendarBundle/Export/Filter/JobFilter.php index cb3b8b2cd..03cd4857d 100644 --- a/src/Bundle/ChillCalendarBundle/Export/Filter/JobFilter.php +++ b/src/Bundle/ChillCalendarBundle/Export/Filter/JobFilter.php @@ -42,10 +42,12 @@ class JobFilter implements FilterInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('cal.user', 'u'); + if (!in_array('caluser', $qb->getAllAliases(), true)) { + $qb->join('cal.user', 'caluser'); + } $where = $qb->getDQLPart('where'); - $clause = $qb->expr()->in('u.userJob', ':job'); + $clause = $qb->expr()->in('caluser.userJob', ':job'); if ($where instanceof Andx) { $where->add($clause); diff --git a/src/Bundle/ChillCalendarBundle/Export/Filter/ScopeFilter.php b/src/Bundle/ChillCalendarBundle/Export/Filter/ScopeFilter.php index 55699d79a..cbd566e9e 100644 --- a/src/Bundle/ChillCalendarBundle/Export/Filter/ScopeFilter.php +++ b/src/Bundle/ChillCalendarBundle/Export/Filter/ScopeFilter.php @@ -42,10 +42,12 @@ class ScopeFilter implements FilterInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('cal.user', 'u'); + if (!in_array('caluser', $qb->getAllAliases(), true)) { + $qb->join('cal.user', 'caluser'); + } $where = $qb->getDQLPart('where'); - $clause = $qb->expr()->in('u.mainScope', ':scope'); + $clause = $qb->expr()->in('caluser.mainScope', ':scope'); if ($where instanceof Andx) { $where->add($clause); diff --git a/src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/HouseholdPositionAggregator.php b/src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/HouseholdPositionAggregator.php index b63d3842f..c0b52053d 100644 --- a/src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/HouseholdPositionAggregator.php +++ b/src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/HouseholdPositionAggregator.php @@ -48,12 +48,12 @@ final class HouseholdPositionAggregator implements AggregatorInterface, ExportEl $qb->resetDQLPart('from'); $qb->from(HouseholdMember::class, 'member'); - if (!in_array('person', $qb->getAllAliases(), true)) { - $qb->join('member.person', 'person'); + if (!in_array('memberperson', $qb->getAllAliases(), true)) { + $qb->join('member.person', 'memberperson'); } - if (!in_array('center', $qb->getAllAliases(), true)) { - $qb->join('person.center', 'center'); + if (!in_array('membercenter', $qb->getAllAliases(), true)) { + $qb->join('memberperson.center', 'membercenter'); } $qb->andWhere($qb->expr()->andX( diff --git a/src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/MaritalStatusAggregator.php b/src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/MaritalStatusAggregator.php index 5e39c6310..e799d8dfa 100644 --- a/src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/MaritalStatusAggregator.php +++ b/src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/MaritalStatusAggregator.php @@ -37,8 +37,11 @@ final class MaritalStatusAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('person.maritalStatus', 'ms'); - $qb->addSelect('ms.id as marital_status_aggregator'); + if (!in_array('personmarital', $qb->getAllAliases(), true)) { + $qb->join('person.maritalStatus', 'personmarital'); + } + + $qb->addSelect('personmarital.id as marital_status_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ActionTypeAggregator.php b/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ActionTypeAggregator.php index d0da45560..b76db495d 100644 --- a/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ActionTypeAggregator.php +++ b/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ActionTypeAggregator.php @@ -38,8 +38,11 @@ final class ActionTypeAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('acpw.socialAction', 'sa'); - $qb->addSelect('sa.id as action_type_aggregator'); + if (!in_array('acpwsocialaction', $qb->getAllAliases(), true)) { + $qb->join('acpw.socialAction', 'acpwsocialaction'); + } + + $qb->addSelect('acpwsocialaction.id as action_type_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/GoalAggregator.php b/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/GoalAggregator.php index d1f33ca7a..4310dcac2 100644 --- a/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/GoalAggregator.php +++ b/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/GoalAggregator.php @@ -37,8 +37,11 @@ final class GoalAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('acpw.goals', 'g'); - $qb->addSelect('g.id as goal_aggregator'); + if (!in_array('goal', $qb->getAllAliases(), true)) { + $qb->join('acpw.goals', 'goal'); + } + + $qb->addSelect('goal.id as goal_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/JobAggregator.php b/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/JobAggregator.php index 10c588809..4d27aa873 100644 --- a/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/JobAggregator.php +++ b/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/JobAggregator.php @@ -39,9 +39,11 @@ final class JobAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('acpw.referrers', 'u'); + if (!in_array('acpwuser', $qb->getAllAliases(), true)) { + $qb->join('acpw.referrers', 'acpwuser'); + } - $qb->addSelect('IDENTITY(u.userJob) as job_aggregator'); + $qb->addSelect('IDENTITY(acpwuser.userJob) as job_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ReferrerAggregator.php b/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ReferrerAggregator.php index efda6b783..35e1e218d 100644 --- a/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ReferrerAggregator.php +++ b/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ReferrerAggregator.php @@ -39,9 +39,11 @@ final class ReferrerAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('acpw.referrers', 'u'); + if (!in_array('acpwuser', $qb->getAllAliases(), true)) { + $qb->join('acpw.referrers', 'acpwuser'); + } - $qb->addSelect('u.id AS referrer_aggregator'); + $qb->addSelect('acpwuser.id AS referrer_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ResultAggregator.php b/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ResultAggregator.php index 9bdcebb60..47391ed69 100644 --- a/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ResultAggregator.php +++ b/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ResultAggregator.php @@ -37,10 +37,19 @@ final class ResultAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('acpw.results', 'res'); - $qb->join('acpw.goals', 'g'); - $qb->join('g.results', 'gres'); - $qb->addSelect('res.id, IDENTITY(g.results) as result_aggregator'); + if (!in_array('acpwresult', $qb->getAllAliases(), true)) { + $qb->join('acpw.results', 'acpwresult'); + } + + if (!in_array('goal', $qb->getAllAliases(), true)) { + $qb->join('acpw.goals', 'goal'); + } + + if (!in_array('goalresult', $qb->getAllAliases(), true)) { + $qb->join('goal.results', 'goalresult'); + } + + $qb->addSelect('acpwresult.id, IDENTITY(goal.results) as result_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ScopeAggregator.php b/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ScopeAggregator.php index ee2509977..ee479d503 100644 --- a/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ScopeAggregator.php +++ b/src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ScopeAggregator.php @@ -39,9 +39,11 @@ final class ScopeAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('acpw.referrers', 'u'); + if (!in_array('acpwuser', $qb->getAllAliases(), true)) { + $qb->join('acpw.referrers', 'acpwuser'); + } - $qb->addSelect('IDENTITY(u.mainScope) as scope_aggregator'); + $qb->addSelect('IDENTITY(acpwuser.mainScope) as scope_aggregator'); $groupBy = $qb->getDQLPart('groupBy'); diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ActivityTypeFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ActivityTypeFilter.php index 2659172a4..f76a00c33 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ActivityTypeFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ActivityTypeFilter.php @@ -45,12 +45,16 @@ class ActivityTypeFilter implements FilterInterface $qb->resetDQLPart('from'); $qb->from('ChillActivityBundle:Activity', 'activity'); - $qb - ->join('activity.accompanyingPeriod', 'acp') - ->join('activity.activityType', 'aty'); + if (!in_array('actacp', $qb->getAllAliases(), true)) { + $qb->join('activity.accompanyingPeriod', 'actacp'); + } + + if (!in_array('acttype', $qb->getAllAliases(), true)) { + $qb->join('activity.activityType', 'acttype'); + } $where = $qb->getDQLPart('where'); - $clause = $qb->expr()->in('aty.id', ':activitytypes'); + $clause = $qb->expr()->in('acttype.id', ':activitytypes'); if ($where instanceof Andx) { $where->add($clause); diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/SocialActionFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/SocialActionFilter.php index c0eb98513..0664f2a8d 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/SocialActionFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/SocialActionFilter.php @@ -47,12 +47,12 @@ class SocialActionFilter implements FilterInterface $qb->join('acp.works', 'acpw'); } - if (!in_array('acpw', $qb->getAllAliases(), true)) { - $qb->join('acpw.socialAction', 'sa'); + if (!in_array('acpwsocialaction', $qb->getAllAliases(), true)) { + $qb->join('acpw.socialAction', 'acpwsocialaction'); } $where = $qb->getDQLPart('where'); - $clause = $qb->expr()->in('sa.id', ':socialactions'); + $clause = $qb->expr()->in('acpwsocialaction.id', ':socialactions'); if ($where instanceof Andx) { $where->add($clause); diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/ResidentialAddressAtThirdpartyFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/ResidentialAddressAtThirdpartyFilter.php index 860598927..73c551286 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/ResidentialAddressAtThirdpartyFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/ResidentialAddressAtThirdpartyFilter.php @@ -39,18 +39,29 @@ class ResidentialAddressAtThirdpartyFilter implements FilterInterface public function alterQuery(QueryBuilder $qb, $data) { $qb->resetDQLPart('from'); - $qb->from('ChillPersonBundle:Person\ResidentialAddress', 'ra'); + $qb->from('ChillPersonBundle:Person\ResidentialAddress', 'resaddr'); - $qb->join('ra.person', 'person'); - $qb->join('person.center', 'center'); - $qb->join('ra.hostThirdParty', 't'); - $qb->join('t.categories', 'tc'); + if (!in_array('resaddrperson', $qb->getAllAliases(), true)) { + $qb->join('resaddr.person', 'resaddrperson'); + } + + if (!in_array('resaddrcenter', $qb->getAllAliases(), true)) { + $qb->join('resaddrperson.center', 'resaddrcenter'); + } + + if (!in_array('tparty', $qb->getAllAliases(), true)) { + $qb->join('resaddr.hostThirdParty', 'tparty'); + } + + if (!in_array('tpartycat', $qb->getAllAliases(), true)) { + $qb->join('tparty.categories', 'tpartycat'); + } $where = $qb->getDQLPart('where'); $clause = $qb->expr()->andX( - $qb->expr()->isNotNull('ra.hostThirdParty'), - $qb->expr()->between(':date', 'ra.startDate', 'ra.endDate'), - $qb->expr()->in('tc.id', ':type') + $qb->expr()->isNotNull('resaddr.hostThirdParty'), + $qb->expr()->between(':date', 'resaddr.startDate', 'resaddr.endDate'), + $qb->expr()->in('tpartycat.id', ':type') ); if ($where instanceof Expr\Andx) { diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/ResidentialAddressAtUserFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/ResidentialAddressAtUserFilter.php index 5fd2a718b..5e78e574e 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/ResidentialAddressAtUserFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/ResidentialAddressAtUserFilter.php @@ -26,13 +26,18 @@ class ResidentialAddressAtUserFilter implements FilterInterface public function alterQuery(QueryBuilder $qb, $data) { $qb->resetDQLPart('from'); - $qb->from('ChillPersonBundle:Person\ResidentialAddress', 'ra'); + $qb->from('ChillPersonBundle:Person\ResidentialAddress', 'resaddr'); - $qb->join('ra.person', 'person'); - $qb->join('person.center', 'center'); + if (!in_array('resaddrperson', $qb->getAllAliases(), true)) { + $qb->join('resaddr.person', 'resaddrperson'); + } + + if (!in_array('resaddrcenter', $qb->getAllAliases(), true)) { + $qb->join('resaddrperson.center', 'resaddrcenter'); + } $where = $qb->getDQLPart('where'); - $clause = $qb->expr()->isNotNull('ra.hostPerson'); + $clause = $qb->expr()->isNotNull('resaddr.hostPerson'); if ($where instanceof Andx) { $where->add($clause); diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/JobFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/JobFilter.php index 386570c8e..a93dae54d 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/JobFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/JobFilter.php @@ -42,10 +42,12 @@ class JobFilter implements FilterInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('acpw.referrers', 'u'); + if (!in_array('acpwuser', $qb->getAllAliases(), true)) { + $qb->join('acpw.referrers', 'acpwuser'); + } $where = $qb->getDQLPart('where'); - $clause = $qb->expr()->in('u.userJob', ':job'); + $clause = $qb->expr()->in('acpwuser.userJob', ':job'); if ($where instanceof Andx) { $where->add($clause); diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ReferrerFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ReferrerFilter.php index f3fa7e359..e1ddd70fd 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ReferrerFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ReferrerFilter.php @@ -36,10 +36,12 @@ class ReferrerFilter implements FilterInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('acpw.referrers', 'u'); + if (!in_array('acpwuser', $qb->getAllAliases(), true)) { + $qb->join('acpw.referrers', 'acpwuser'); + } $where = $qb->getDQLPart('where'); - $clause = $qb->expr()->in('u', ':agents'); + $clause = $qb->expr()->in('acpwuser', ':agents'); if ($where instanceof Andx) { $where->add($clause); diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ScopeFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ScopeFilter.php index d707edf7f..ae525a4e5 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ScopeFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ScopeFilter.php @@ -42,10 +42,12 @@ class ScopeFilter implements FilterInterface public function alterQuery(QueryBuilder $qb, $data) { - $qb->join('acpw.referrers', 'u'); + if (!in_array('acpwuser', $qb->getAllAliases(), true)) { + $qb->join('acpw.referrers', 'acpwuser'); + } $where = $qb->getDQLPart('where'); - $clause = $qb->expr()->in('u.mainScope', ':scope'); + $clause = $qb->expr()->in('acpwuser.mainScope', ':scope'); if ($where instanceof Andx) { $where->add($clause); diff --git a/src/Bundle/ChillPersonBundle/Tests/Export/Filter/AccompanyingCourseFilters/ReferrerFilterTest.php b/src/Bundle/ChillPersonBundle/Tests/Export/Filter/AccompanyingCourseFilters/ReferrerFilterTest.php index a332c89dc..8d2c8ef5b 100644 --- a/src/Bundle/ChillPersonBundle/Tests/Export/Filter/AccompanyingCourseFilters/ReferrerFilterTest.php +++ b/src/Bundle/ChillPersonBundle/Tests/Export/Filter/AccompanyingCourseFilters/ReferrerFilterTest.php @@ -79,8 +79,8 @@ final class ReferrerFilterTest extends AbstractFilterTest ->select('acpw.id'), $em->createQueryBuilder() ->from('ChillPersonBundle:AccompanyingPeriod\AccompanyingPeriodWork', 'acpw') - ->join('acpw.referrers', 'r') - ->select('r.id'), + ->join('acpw.referrers', 'acpwuser') + ->select('acpwuser.id'), ]; } }