Skip to content

Commit

Permalink
Merge pull request #1441 from SFDO-Community/feature/nw/rollup-lwc
Browse files Browse the repository at this point in the history
Get working in namespaced orgs via abstraction
  • Loading branch information
aheber authored Apr 1, 2024
2 parents a49b617 + 8420ca7 commit aa0544e
Show file tree
Hide file tree
Showing 4 changed files with 329 additions and 221 deletions.
192 changes: 143 additions & 49 deletions dlrs/main/classes/RollupEditorController.cls
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
public with sharing class RollupEditorController {
@AuraEnabled
public static Map<String, LookupRollupSummary2__mdt> getAllRollupConfigs() {
return LookupRollupSummary2__mdt.getAll();
public static List<RollupConfig> getAllRollupConfigs() {
List<RollupConfig> rollups = new List<RollupConfig>();
for (
RollupSummary summary : new RollupSummariesSelector.CustomMetadataSelector(
true,
true // retrieve for Edit
)
.selectAll()
) {
rollups.add(new RollupConfig((LookupRollupSummary2__mdt) summary.Record));
}
return rollups;
}

@AuraEnabled
public static LookupRollupSummary2__mdt getRollupConfig(String rollupName) {
return (LookupRollupSummary2__mdt) new RollupSummariesSelector.CustomMetadataSelector(
false,
true // retrieve for Edit
)
.selectByDeveloperName(new Set<String>{ rollupName })[0]
.Record;
public static RollupConfig getRollupConfig(String rollupName) {
return new RollupConfig(
(LookupRollupSummary2__mdt) new RollupSummariesSelector.CustomMetadataSelector(
true,
true // retrieve for Edit
)
.selectByDeveloperName(new Set<String>{ rollupName })[0]
.Record
);
}

public class SelectOption {
Expand Down Expand Up @@ -76,11 +88,12 @@ public with sharing class RollupEditorController {
*/
@AuraEnabled
public static Map<String, List<String>> validateRollupConfig(String rollup) {
// do things like validate that the Rollup Criteria can be used in a SOQL query
LookupRollupSummary2__mdt lookupConfig = (LookupRollupSummary2__mdt) JSON.deserialize(
RollupConfig cfg = (RollupConfig) JSON.deserialize(
rollup,
LookupRollupSummary2__mdt.class
RollupConfig.class
);
// do things like validate that the Rollup Criteria can be used in a SOQL query
LookupRollupSummary2__mdt lookupConfig = cfg.getRecord();

// Process only Custom Metadata records here
List<LookupRollupSummary2__mdt> mdtRecords = new List<LookupRollupSummary2__mdt>();
Expand All @@ -99,10 +112,11 @@ public with sharing class RollupEditorController {

@AuraEnabled
public static Id saveRollupConfig(String rollup) {
LookupRollupSummary2__mdt lookupConfig = (LookupRollupSummary2__mdt) JSON.deserialize(
RollupConfig cfg = (RollupConfig) JSON.deserialize(
rollup,
LookupRollupSummary2__mdt.class
RollupConfig.class
);
LookupRollupSummary2__mdt lookupConfig = cfg.getRecord();
return CustomMetadataService.initiateMetadataSave(
new List<SObject>{ lookupConfig }
);
Expand Down Expand Up @@ -146,89 +160,69 @@ public with sharing class RollupEditorController {
if (rollup.Error != null) {
buildErrorIfNeeded(errorMap, 'record', new List<String>{ rollup.Error });
}
buildErrorIfNeeded(errorMap, 'active', rollup.Fields.Active.errors);
buildErrorIfNeeded(
errorMap,
LookupRollupSummary2__mdt.fields.Active__c.getDescribe().getName(),
rollup.Fields.Active.errors
);
buildErrorIfNeeded(
errorMap,
LookupRollupSummary2__mdt.fields.AggregateOperation__c.getDescribe()
.getName(),
'aggregateOperation',
rollup.Fields.AggregateOperation.errors
);
buildErrorIfNeeded(
errorMap,
LookupRollupSummary2__mdt.fields.AggregateResultField__c.getDescribe()
.getName(),
'aggregateResultField',
rollup.Fields.AggregateResultField.errors
);
buildErrorIfNeeded(
errorMap,
LookupRollupSummary2__mdt.fields.CalculationMode__c.getDescribe()
.getName(),
'calculationMode',
rollup.Fields.CalculationMode.errors
);
buildErrorIfNeeded(
errorMap,
LookupRollupSummary2__mdt.fields.CalculationSharingMode__c.getDescribe()
.getName(),
'calculationSharingMode',
rollup.Fields.CalculationSharingMode.errors
);
buildErrorIfNeeded(
errorMap,
LookupRollupSummary2__mdt.fields.ChildObject__c.getDescribe().getName(),
'childObject',
rollup.Fields.ChildObject.errors
);
buildErrorIfNeeded(
errorMap,
LookupRollupSummary2__mdt.fields.Description__c.getDescribe().getName(),
'description',
rollup.Fields.Description.errors
);
buildErrorIfNeeded(
errorMap,
LookupRollupSummary2__mdt.fields.FieldToAggregate__c.getDescribe()
.getName(),
'fieldToAggregate',
rollup.Fields.FieldToAggregate.errors
);
buildErrorIfNeeded(
errorMap,
LookupRollupSummary2__mdt.fields.DeveloperName.getDescribe().getName(),
'developerName',
rollup.Fields.UniqueName.errors
);
buildErrorIfNeeded(
errorMap,
LookupRollupSummary2__mdt.fields.ParentObject__c.getDescribe().getName(),
'parentObject',
rollup.Fields.ParentObject.errors
);
buildErrorIfNeeded(
errorMap,
LookupRollupSummary2__mdt.fields.RelationshipCriteria__c.getDescribe()
.getName(),
'relationshipCriteria',
rollup.Fields.RelationshipCriteria.errors
);
buildErrorIfNeeded(
errorMap,
LookupRollupSummary2__mdt.fields.RelationshipCriteriaFields__c.getDescribe()
.getName(),
'relationshipCriteriaFields',
rollup.Fields.RelationshipCriteriaFields.errors
);
buildErrorIfNeeded(
errorMap,
LookupRollupSummary2__mdt.fields.RelationshipField__c.getDescribe()
.getName(),
'relationshipField',
rollup.Fields.RelationshipField.errors
);
buildErrorIfNeeded(
errorMap,
LookupRollupSummary2__mdt.fields.TestCode2__c.getDescribe().getName(),
rollup.Fields.TestCode.errors
);
buildErrorIfNeeded(
errorMap,
LookupRollupSummary2__mdt.fields.RowLimit__c.getDescribe().getName(),
rollup.Fields.RowLimit.errors
);
buildErrorIfNeeded(errorMap, 'testCode', rollup.Fields.TestCode.errors);
buildErrorIfNeeded(errorMap, 'rowLimit', rollup.Fields.RowLimit.errors);
return errorMap;
}

Expand All @@ -242,4 +236,104 @@ public with sharing class RollupEditorController {
}
errorMap.put(fieldName, errors);
}

@SuppressWarnings('PMD.TooManyFields')
public class RollupConfig {
@AuraEnabled
public Id id;
@AuraEnabled
public String label;
@AuraEnabled
public String developerName;
@AuraEnabled
public Boolean active;
@AuraEnabled
public Boolean aggregateAllRows;
@AuraEnabled
public String aggregateOperation;
@AuraEnabled
public String aggregateResultField;
@AuraEnabled
public String calculationMode;
@AuraEnabled
public String calculationSharingMode;
@AuraEnabled
public String childObject;
@AuraEnabled
public String concatenateDelimiter;
@AuraEnabled
public String description;
@AuraEnabled
public String fieldToAggregate;
@AuraEnabled
public String fieldToOrderBy;
@AuraEnabled
public String parentObject;
@AuraEnabled
public String relationshipCriteria;
@AuraEnabled
public String relationshipCriteriaFields;
@AuraEnabled
public String relationshipField;
@AuraEnabled
public Decimal rowLimit;
@AuraEnabled
public String testCode;
@AuraEnabled
public String testCodeParent;
@AuraEnabled
public Boolean testCodeSeeAllData;

public RollupConfig(LookupRollupSummary2__mdt record) {
this.id = record.Id;
this.label = record.Label;
this.developerName = record.DeveloperName;
this.active = record.Active__c;
this.aggregateAllRows = record.AggregateAllRows__c;
this.aggregateOperation = record.AggregateOperation__c;
this.aggregateResultField = record.AggregateResultField__c;
this.calculationMode = record.CalculationMode__c;
this.calculationSharingMode = record.CalculationSharingMode__c;
this.childObject = record.ChildObject__c;
this.concatenateDelimiter = record.ConcatenateDelimiter__c;
this.description = record.Description__c;
this.fieldToAggregate = record.FieldToAggregate__c;
this.fieldToOrderBy = record.FieldToOrderBy__c;
this.parentObject = record.ParentObject__c;
this.relationshipCriteria = record.RelationshipCriteria__c;
this.relationshipCriteriaFields = record.RelationshipCriteriaFields__c;
this.relationshipField = record.RelationshipField__c;
this.rowLimit = record.RowLimit__c;
this.testCode = record.TestCode2__c;
this.testCodeParent = record.TestCodeParent__c;
this.testCodeSeeAllData = record.TestCodeSeeAllData__c;
}

public LookupRollupSummary2__mdt getRecord() {
LookupRollupSummary2__mdt record = new LookupRollupSummary2__mdt();
record.Id = this.id;
record.Label = this.label;
record.DeveloperName = this.developerName;
record.Active__c = this.active;
record.AggregateAllRows__c = this.aggregateAllRows;
record.AggregateOperation__c = this.aggregateOperation;
record.AggregateResultField__c = this.aggregateResultField;
record.CalculationMode__c = this.calculationMode;
record.CalculationSharingMode__c = this.calculationSharingMode;
record.ChildObject__c = this.childObject;
record.ConcatenateDelimiter__c = this.concatenateDelimiter;
record.Description__c = this.description;
record.FieldToAggregate__c = this.fieldToAggregate;
record.FieldToOrderBy__c = this.fieldToOrderBy;
record.ParentObject__c = this.parentObject;
record.RelationshipCriteria__c = this.relationshipCriteria;
record.RelationshipCriteriaFields__c = this.relationshipCriteriaFields;
record.RelationshipField__c = this.relationshipField;
record.RowLimit__c = this.rowLimit;
record.TestCode2__c = this.testCode;
record.TestCodeParent__c = this.testCodeParent;
record.TestCodeSeeAllData__c = this.testCodeSeeAllData;
return record;
}
}
}
Loading

0 comments on commit aa0544e

Please sign in to comment.