Skip to content

Commit

Permalink
Merge pull request #100 from navikt/TidslinjeFix
Browse files Browse the repository at this point in the history
handle combination of multiple recordTypes on multiple relationship f…
  • Loading branch information
piszosta authored Oct 31, 2024
2 parents f36752a + 0d6c636 commit 99fc0ea
Showing 1 changed file with 14 additions and 8 deletions.
22 changes: 14 additions & 8 deletions force-app/main/default/classes/Timeline_Queries.cls
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,12 @@ public with sharing class Timeline_Queries {

for (TimelineParent__mdt mdt : sObjectsToQuery) {
// only query an sobject once
if (!queriedSobjects.contains(mdt.Timeline_Child__r.SObjectName__c + mdt.SObjectRelationshipField__c)) {
if (!queriedSobjects.contains(mdt.Timeline_Child__r.SObjectName__c + mdt.SObjectRelationshipField__c + mdt.Timeline_Child__r.CreateableObject_RecordType__c)) {
if (String.isNotBlank(mdt.Timeline_Child__r.CreateableObject_RecordType__c)) {
recordTypeId = recordTypesMap.get(mdt.Timeline_Child__r.SObjectName__c + mdt.Timeline_Child__r.CreateableObject_RecordType__c);
}
queries.add(Timeline_QueriesHelper.getQuery(sObjectsToQuery, mdt, recordId, amountOfMonths, recordTypeId));
queriedSobjects.add(mdt.Timeline_Child__r.SObjectName__c + mdt.SObjectRelationshipField__c);
queriedSobjects.add(mdt.Timeline_Child__r.SObjectName__c + mdt.SObjectRelationshipField__c + mdt.Timeline_Child__r.CreateableObject_RecordType__c);
recordTypeId = '';
}
}
Expand All @@ -62,14 +62,18 @@ public with sharing class Timeline_Queries {

public static List<SObject> getSObjectsFromQueries(List<String> queries) {
List<SObject> sObjects = new List<SObject>();
Map<Id, SObject> uniqueSObjects = new Map<Id, SObject>();

for (String query : queries) {
System.debug('query: ' + query);
List<SObject> sObjs = Database.query(query);
sObjects.addAll(sObjs);
for (SObject sObj : sObjs) {
// Added to remove duplicates
uniqueSObjects.put(sObj.Id, sObj);
}
}

return sObjects;
return uniqueSObjects.values();
}

// --------------------------------------------------- //
Expand Down Expand Up @@ -116,8 +120,8 @@ public with sharing class Timeline_Queries {
String recordTypeId = '';

for (TimelineParent__mdt mdt : sObjectsToQuery) {
if (!queriedSobjects.contains(mdt.Timeline_Child__r.SObjectName__c + mdt.SObjectRelationshipField__c)) {
String fields = 'Count()';
if (!queriedSobjects.contains(mdt.Timeline_Child__r.SObjectName__c + mdt.SObjectRelationshipField__c + mdt.Timeline_Child__r.CreateableObject_RecordType__c)) {
String fields = 'Id';
String sObjectType = mdt.Timeline_Child__r.SObjectName__c;
String parameter = mdt.SObjectRelationshipField__c + ' = \'' + recordId + '\'';

Expand All @@ -128,17 +132,19 @@ public with sharing class Timeline_Queries {
recordTypeId = recordTypesMap.get(mdt.Timeline_Child__r.SObjectName__c + mdt.Timeline_Child__r.CreateableObject_RecordType__c);
parameter += ' AND RecordTypeId = \'' + recordTypeId + '\'';
}
parameter += ' GROUP BY Id';

queries.add(Timeline_QueriesHelper.buildSoqlQuery(fields, sObjectType, parameter, null));
queriedSobjects.add(mdt.Timeline_Child__r.SObjectName__c + mdt.SObjectRelationshipField__c);
queriedSobjects.add(mdt.Timeline_Child__r.SObjectName__c + mdt.SObjectRelationshipField__c + mdt.Timeline_Child__r.CreateableObject_RecordType__c);
recordTypeId = '';
}
}

Integer count = 0;

for (String query : queries) {
count += Database.countQuery(query);
List<AggregateResult> results = Database.query(query);
count += results.size();
}

return count;
Expand Down

0 comments on commit 99fc0ea

Please sign in to comment.