-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDynamicDataTableWithFieldSetController.cls
More file actions
80 lines (56 loc) · 2.34 KB
/
DynamicDataTableWithFieldSetController.cls
File metadata and controls
80 lines (56 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
public class DynamicDataTableWithFieldSetController {
@AuraEnabled
public static DataTableResponse getAccounts(String strObjectName, String strFieldSetName) {
//Get the fields from FieldSet
Schema.SObjectType SObjectTypeObj = Schema.getGlobalDescribe().get(strObjectName);
Schema.DescribeSObjectResult DescribeSObjectResultObj = SObjectTypeObj.getDescribe();
Schema.FieldSet fieldSetObj = DescribeSObjectResultObj.FieldSets.getMap().get(strFieldSetName);
List<DataColumn> lstDataTableColumns = new List<DataColumn>();
//list to hold field names
List<String> lstQueryFields = new List<String>();
DataTableResponse response = new DataTableResponse();
for(Schema.FieldSetMember obj : fieldSetObj.getFields()) {
String dataType = String.valueOf(obj.getType()).toLowerCase();
if(dataType == 'datetime') {
dataType = 'date';
}
DataColumn objDataColumn = new DataColumn(String.valueOf(obj.getLabel()),
String.valueOf(obj.getFieldPath()),
String.valueOf(obj.getType()));
lstDataTableColumns.add(objDataColumn);
lstQueryFields.add(String.valueOf(obj.getFieldPath()));
}
if(lstDataTableColumns != NULL) {
response.lstDataColumns = lstDataTableColumns;
String strQuery = 'SELECT '+ String.join(lstQueryFields, ',') + ' FROM Account';
response.lstDataTableResponse = Database.query(strQuery);
System.debug('DataTableResponse '+response.lstDataTableResponse);
}
return response;
}
//Wrapper class to hold Data Table Column
public class DataColumn {
@AuraEnabled
public String strLabel {get;set;}
@AuraEnabled
public String strType {get;set;}
@AuraEnabled
public String strFieldName{get;set;}
public DataColumn( String strLabel, String strFieldName, String strType) {
this.strLabel = strLabel;
this.strType = strType;
this.strFieldName = strFieldName;
}
}
//Wrapper Class to hold FieldSet response
public class DataTableResponse {
@AuraEnabled
public List<DataColumn> lstDataColumns {get;set;}
@AuraEnabled
public List<sObject> lstDataTableResponse {get;set;}
public DataTableResponse() {
lstDataColumns = new List<DataColumn>();
lstDataTableResponse = new List<sObject>();
}
}
}