From 02ddc35714cbd1688b7cb057f770f1410de79dab Mon Sep 17 00:00:00 2001 From: buli <137736985@qq.com> Date: 星期五, 11 三月 2022 12:19:33 +0800 Subject: [PATCH] PIPL Updated Code 20220311 --- force-app/main/default/classes/LayoutDescriberHelper.cls | 76 +++++++++++++++++++++++++++++++++---- 1 files changed, 67 insertions(+), 9 deletions(-) diff --git a/force-app/main/default/classes/LayoutDescriberHelper.cls b/force-app/main/default/classes/LayoutDescriberHelper.cls index 8231dd8..94863c0 100644 --- a/force-app/main/default/classes/LayoutDescriberHelper.cls +++ b/force-app/main/default/classes/LayoutDescriberHelper.cls @@ -10,11 +10,29 @@ public class LayoutDescriberHelper { public static String urlPrefixToUse {get;set;} - public static Set<String> ConcatenationNameSType = new Set<String>{'Lead','Contact'}; + public static List<String> requiredFieldAPIList{set;get;} + public static Map<String,String> fieldAPIToLabelMap{set;get;} + public static Set<String> CaseWebFields = new Set<String>{'SuppliedCompany','SuppliedName','SuppliedEmail','SuppliedPhone'}; + public static Set<String> ConcatenationNameSType = new Set<String>{'Lead','Contact'}; + public static LayoutWrapper describeSectionWithFieldsWrapper(Id recordTypeId, String objectType,String userMode){ + if(String.isEmpty(recordTypeId)){ + //Assign default record type for sobject + recordTypeId = getDefaultRecordType(objectType); + } + List<LayoutSection> layoutSections = describeSectionWithFields(recordTypeId,objectType,userMode); + LayoutWrapper layoutWrapperValue = new LayoutWrapper(); + layoutWrapperValue.layoutSections = layoutSections; + layoutWrapperValue.requiredFieldAPIList = requiredFieldAPIList; + layoutWrapperValue.fieldAPIToLabelMap = fieldAPIToLabelMap; + system.debug('required API List:'+JSON.serialize(requiredFieldAPIList)); + return layoutWrapperValue; + } public static List<LayoutSection> describeSectionWithFields(Id recordTypeId, String objectType,String userMode){ system.debug('record type id ===>'+ recordTypeId+' object type===>'+objectType + ' userMode===>'+userMode); List<LayoutSection> layoutSections; Map<String,List<LayoutField>> layoutFields; + requiredFieldAPIList = new List<String>(); + fieldAPIToLabelMap = new Map<String,String>(); layoutSections = new List<LayoutSection>(); String theRespBody = getLayoutSchema(recordTypeId, objectType,userMode); Map<String, Object> layoutSection = (Map<String, Object>) JSON.deserializeUntyped(theRespBody); @@ -87,18 +105,28 @@ lf.isPlaceHolder = placeholderF; lf.editableField = isEditable; lf.fieldAPI = fieldLabelPrefix+addressType; + lf.fieldLabel = fieldLabelPrefix+' '+addressType; - lf.fieldType = 'string'; + lf.fieldType = 'string'; if(ls.Name != '' || layoutSections.size() == 1){ ls.layoutFields.add(lf); }else if(layoutSections.size() - 2 >= 0){ layoutSections.get(layoutSections.size() - 2).layoutFields.add(lf); - } + } + if(lf.isRequired){ + requiredFieldAPIList.add(lf.fieldAPI); + } + if(string.isBlank(lf.fieldAPI)){ + system.debug('==================================2'); + continue; + }else{ + fieldAPIToLabelMap.put(lf.fieldAPI,lf.fieldLabel); + } } continue; } if(userMode == 'classic' && apiName == 'Name' && ConcatenationNameSType.contains(objectType)){ - List<String> nameDetail = new List<String>{'LastName'}; + List<String> nameDetail = new List<String>{'Salutation','LastName'}; for(String nameField:nameDetail){ LayoutField lf = new LayoutField(); lf.isRequired = (Boolean)fields.get('required'); @@ -111,8 +139,20 @@ ls.layoutFields.add(lf); }else if(layoutSections.size() - 2 >= 0){ layoutSections.get(layoutSections.size() - 2).layoutFields.add(lf); - } + } + if(lf.isRequired){ + requiredFieldAPIList.add(lf.fieldAPI); + } + if(string.isBlank(lf.fieldAPI)){ + system.debug('==================================3'); + continue; + }else{ + fieldAPIToLabelMap.put(lf.fieldAPI,lf.fieldLabel); + } } + continue; + } + if(objectType == 'Case' && CaseWebFields.contains(apiName)){ continue; } LayoutField lf = new LayoutField(); @@ -126,7 +166,17 @@ ls.layoutFields.add(lf); }else if(layoutSections.size() - 2 >= 0){ layoutSections.get(layoutSections.size() - 2).layoutFields.add(lf); - } + } + if(lf.isRequired){ + requiredFieldAPIList.add(lf.fieldAPI); + } + if(string.isBlank(lf.fieldAPI)){ + system.debug('==================================1'); + continue; + }else{ + fieldAPIToLabelMap.put(lf.fieldAPI,lf.fieldLabel); + } + priorFieldLayoutAdded = true; }else priorFieldLayoutAdded = false; @@ -138,6 +188,7 @@ } } System.debug('Layout Section Result:'+JSon.serialize(layoutSections)); + system.debug('required API List:'+JSON.serialize(requiredFieldAPIList)); return layoutSections; } public static String getUrlPrefix(){ @@ -159,6 +210,7 @@ req.setMethod('GET'); if(userMode =='lightning'){ req.setEndPoint('callout:SF_Rest_API'+urlPost); + system.debug('callout:SF_Rest_API'+urlPost); }else if(userMode == 'classic'){ req.setEndpoint(urlForClassic); req.setHeader('Authorization', 'Bearer ' + UserInfo.getsessionid()); @@ -169,8 +221,10 @@ return resp.getBody(); } - public static Id getDefaultRecordType(SObject obj) { - Schema.DescribeSObjectResult describeResult = obj.getsObjectType().getDescribe(); + public static Id getDefaultRecordType(String ObjectName) { + Map<String, Schema.SObjectType> GlobalDescribeMap = Schema.getGlobalDescribe(); + Schema.SObjectType obj = GlobalDescribeMap.get(ObjectName); + Schema.DescribeSObjectResult describeResult = obj.getDescribe(); List<Schema.RecordTypeInfo> rtInfos = describeResult.getRecordTypeInfos(); for(Schema.RecordTypeInfo rtInfo : rtInfos) { if(rtInfo.DefaultRecordTypeMapping) { @@ -179,7 +233,11 @@ } return null; } - + public class LayoutWrapper{ + @AuraEnabled public List<LayoutSection> layoutSections{set;get;} + @AuraEnabled public List<String> requiredFieldAPIList{set;get;} + @AuraEnabled public Map<String,String> fieldAPIToLabelMap{set;get;} + } public class LayoutSection{ @AuraEnabled public boolean useHeader {get;set;} @AuraEnabled public String name {get;set;} -- Gitblit v1.9.1