Guest User

Untitled

a guest
May 27th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.85 KB | None | 0 0
  1. public abstract class LightningComponentRecordUtils {
  2.  
  3. @AuraEnabled
  4. public static Response createRecord(String objectType, List<String> fields, List<Object> values){
  5. Response resp;
  6. try {
  7. SObject newRecord = getRecord(objectType, fields, values);
  8. System.debug('newRecord ' + newRecord);
  9. insert newRecord;
  10. resp = new Response('success', 'record saved', newRecord);
  11. } catch(Exception e){
  12. System.debug(e.getMessage() + e.getStackTraceString());
  13. resp = new Response('fail', e.getStackTraceString());
  14. }
  15. return resp;
  16. }
  17.  
  18. @AuraEnabled
  19. public static Response updateRecord(String objectType, String recordId, List<String> fields, List<Object> values){
  20. Response resp;
  21. try {
  22. SObject newRecord = getRecord(objectType, fields, values);
  23. if (!idIncluded(fields))
  24. newRecord.put('Id', recordId);
  25. System.debug('newRecord ' + newRecord);
  26. update newRecord;
  27. resp = new Response('success', 'record saved', newRecord);
  28. } catch(Exception e){
  29. System.debug(e.getMessage() + e.getStackTraceString());
  30. resp = new Response('fail', e.getStackTraceString());
  31. }
  32. return resp;
  33. }
  34.  
  35. private static boolean idIncluded(List<String> fields){
  36. return new Set<String>(fields).contains('Id');
  37. }
  38.  
  39. //todo: add field type check
  40. @AuraEnabled
  41. public static SObject getRecord(String objectType, List<String> fields, List<Object> values){
  42. SObject obj = Schema.getGlobalDescribe().get(objectType).newSObject();
  43. for (Integer i = 0 ; i < fields.size(); i++) {
  44. if (!String.isBlank(fields[i]) && fieldExists(objectType, fields[i]) && values[i] != null)
  45. obj.put(fields[i], values[i]);
  46. }
  47. return obj;
  48. }
  49.  
  50. @AuraEnabled
  51. public static Boolean fieldExists(String objectType, String fieldName){
  52. Set<String> objectFields = Schema.getGlobalDescribe().get(objectType).getDescribe().fields.getMap().keySet();
  53. return objectFields.contains(fieldName.toLowerCase());
  54. }
  55.  
  56. /* Is used dyanically get fields info, dynamiclaly create inputs
  57. */
  58. @AuraEnabled
  59. public static Response getFieldDescr(String objectType){
  60. Map<String, FieldDescr> fieldDescr = new Map<String, FieldDescr>();
  61.  
  62. SObjectType templType = Schema.getGlobalDescribe().get(objectType);
  63. Map<String,Schema.SObjectField> mfields = templType.getDescribe().fields.getMap();
  64.  
  65. List<String> values;
  66. for (String fKey : mfields.keySet()){
  67. Schema.DescribeFieldResult dfr = mfields.get(fKey).getDescribe();
  68. System.debug(dfr.getName() + ' iscreaeable ' + dfr.isCreateable() + ', is def on create ' + dfr.isDefaultedOnCreate());
  69. if (dfr.isCreateable() && !dfr.isDefaultedOnCreate())
  70. fieldDescr.put(fkey, new FieldDescr(dfr.getLabel(), !dfr.isNillable(), String.valueOf(dfr.getType())));
  71. }
  72. return new Response('success','', fieldDescr);
  73. }
  74.  
  75. //get record w/ fields, generally for init purposes
  76. @AuraEnabled
  77. public static Response getDetailRecord(String objectType, String recordId, List<String> fields){
  78. Response resp;
  79. try {
  80. String query = 'SELECT ' + string.join(fields, ',') + ' FROM ' + objectType + ' WHERE ID=\'' + recordId + '\'';
  81. Sobject sobj = Database.query(query);
  82. resp = new Response('success', '', sobj);
  83. } catch (Exception e){
  84. System.debug(e.getMessage() + e.getStackTraceString());
  85. resp = new Response('fail', e.getStackTraceString());
  86. }
  87. return resp;
  88. }
  89.  
  90. //todo: make filter criteria not hardcoded
  91. @AuraEnabled
  92. public static Response getFilteredRecordList(String objectType, List<String> fields, String filter){
  93. Response resp;
  94. try {
  95. String query = 'SELECT ' + string.join(fields, ',') + ' FROM ' + objectType + (!string.isEmpty(filter) ? ' WHERE ' + filter : '');
  96. List<Sobject> sobjects = Database.query(query);
  97. resp = new Response('success', '', sobjects);
  98. } catch (Exception e){
  99. System.debug(e.getMessage() + e.getStackTraceString());
  100. resp = new Response('fail', e.getStackTraceString());
  101. }
  102. return resp;
  103. }
  104.  
  105. public class FieldDescr {
  106. @AuraEnabled
  107. public String label {get;set;}
  108. @AuraEnabled
  109. public Boolean required {get;set;}
  110. @AuraEnabled
  111. public String fieldType {get; set;}
  112.  
  113. public FieldDescr(String label, Boolean required, String fieldType){
  114. this.label = label;
  115. this.required = required;
  116. this.fieldType = fieldType;
  117. }
  118. }
  119. }
Add Comment
Please, Sign In to add comment