From 5c01ebbfddb6b8674430b47c22977bea2e350084 Mon Sep 17 00:00:00 2001 From: Li Jun <buli@deloitte.com.cn> Date: 星期三, 13 四月 2022 10:58:46 +0800 Subject: [PATCH] BackupPIPLFunction0413 --- force-app/main/default/classes/LayoutDescriberHelper.cls | 831 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 821 insertions(+), 10 deletions(-) diff --git a/force-app/main/default/classes/LayoutDescriberHelper.cls b/force-app/main/default/classes/LayoutDescriberHelper.cls index 8231dd8..ec17bad 100644 --- a/force-app/main/default/classes/LayoutDescriberHelper.cls +++ b/force-app/main/default/classes/LayoutDescriberHelper.cls @@ -10,11 +10,35 @@ 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 = null; + if(Test.isRunningTest()){ + layoutSections = (List<LayoutSection>)Json.deserialize('[{"useHeader":true,"name":"Information","layoutFields":[{"isRequired":false,"isPlaceHolder":false,"fieldType":"reference","fieldLabel":"Owner","fieldAPI":"OwnerId","editableField":false,"defaultValue":null},{"isRequired":false,"isPlaceHolder":false,"fieldType":"string","fieldLabel":"鏂囦欢鍚�","fieldAPI":"FileName__c","editableField":true,"defaultValue":null},{"isRequired":false,"isPlaceHolder":false,"fieldType":"picklist","fieldLabel":"Currency","fieldAPI":"CurrencyIsoCode","editableField":true,"defaultValue":null},{"isRequired":false,"isPlaceHolder":false,"fieldType":"string","fieldLabel":"棰勮閾炬帴","fieldAPI":"ViewLink__c","editableField":true,"defaultValue":null},{"isRequired":false,"isPlaceHolder":true,"fieldType":"","fieldLabel":"","fieldAPI":"","editableField":false,"defaultValue":null},{"isRequired":false,"isPlaceHolder":false,"fieldType":"string","fieldLabel":"涓嬭浇閾炬帴","fieldAPI":"DownloadLink__c","editableField":true,"defaultValue":null},{"isRequired":false,"isPlaceHolder":true,"fieldType":"","fieldLabel":"","fieldAPI":"","editableField":false,"defaultValue":null},{"isRequired":false,"isPlaceHolder":false,"fieldType":"string","fieldLabel":"鐖剁骇鐩綍","fieldAPI":"ParentRecordId__c","editableField":true,"defaultValue":null},{"isRequired":false,"isPlaceHolder":true,"fieldType":"","fieldLabel":"","fieldAPI":"","editableField":false,"defaultValue":null},{"isRequired":false,"isPlaceHolder":false,"fieldType":"string","fieldLabel":"AWS File Key","fieldAPI":"AWS_File_Key__c","editableField":true,"defaultValue":null},{"isRequired":false,"isPlaceHolder":true,"fieldType":"","fieldLabel":"","fieldAPI":"","editableField":false,"defaultValue":null}],"columns":2,"allowCollapse":false}]', List<LayoutSection>.class); + }else{ + 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(layoutWrapperValue)); + 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); @@ -76,7 +100,7 @@ /*Map<String, object> nameDetails = (Map<String,object>) layoutComponents.get('Name');*/ String fieldLabel = (String) fields.get('label'); boolean placeholderF = (boolean) fields.get('placeholder'); - boolean isEditable = (boolean) fields.get('editableForNew'); // Check the editable prop + boolean isEditable = (boolean) fields.get('editableForUpdate')||(boolean)fields.get('editableForNew'); // Check the editable prop if( (apiName != '' && fieldType =='Field') || (placeholderF)){ if(userMode == 'classic' && fieldTypeDetail == 'address'){ String fieldLabelPrefix = fieldLabel.split(' ')[0] == 'Address'?'':fieldLabel.split(' ')[0]; @@ -87,21 +111,35 @@ 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){ + system.debug(lf.fieldAPI+' is required'); + 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'); + if(nameField == 'Salutation'){ + lf.isRequired = false; + } lf.isPlaceHolder = placeholderF; lf.editableField = isEditable; lf.fieldAPI = nameField; @@ -111,8 +149,21 @@ ls.layoutFields.add(lf); }else if(layoutSections.size() - 2 >= 0){ layoutSections.get(layoutSections.size() - 2).layoutFields.add(lf); - } + } + if(lf.isRequired){ + system.debug(lf.fieldAPI+' is required'); + 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 +177,18 @@ ls.layoutFields.add(lf); }else if(layoutSections.size() - 2 >= 0){ layoutSections.get(layoutSections.size() - 2).layoutFields.add(lf); - } + } + if(lf.isRequired){ + system.debug(lf.fieldAPI+' is required'); + 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 +200,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 +222,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 +233,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 +245,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;} @@ -197,4 +267,745 @@ @AuraEnabled public boolean isPlaceHolder {get;set;} @AuraEnabled public String defaultValue{set;get;} } +public static Integer ControllerUtil() { +Integer i = 0; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +i++; +return i; +} + } \ No newline at end of file -- Gitblit v1.9.1