From af7b716a60d889acea95560abba0e46eee008b8f Mon Sep 17 00:00:00 2001 From: buli <137736985@qq.com> Date: 星期三, 05 七月 2023 13:54:50 +0800 Subject: [PATCH] backup0705 --- force-app/main/default/classes/NewAndEditLeadController.cls | 1291 +++++++++++++++++++++++++--------------------------------- 1 files changed, 560 insertions(+), 731 deletions(-) diff --git a/force-app/main/default/classes/NewAndEditLeadController.cls b/force-app/main/default/classes/NewAndEditLeadController.cls index 2fa8f91..b36e1c7 100644 --- a/force-app/main/default/classes/NewAndEditLeadController.cls +++ b/force-app/main/default/classes/NewAndEditLeadController.cls @@ -3,745 +3,574 @@ * Created Date: 01/19/2022 * Purpose: Utility class for describe layouts * Test Class: NewAndEditLeadController - * History: + * History: * 01/19/2022 - Bubba Li - Initial Code. - * + * * */ global without sharing class NewAndEditLeadController { - public List <LayoutDescriberHelper.LayoutSection > layoutSections{set;get;} - public String awsToken{set;get;} - public static Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe(); - public static String sobjectTypeValue = 'Lead'; - public Boolean isNewMode{set;get;} - public Boolean isCloneMode{protected set;get;} - public String rtTypeId {get; set;} - public String AWSDataId{set;get;} - public String AWSDataIdInquiryForm{set;get;} - public String contactId{set;get;}//For Lookup field - public List<String> encryptedAPIList{set;get;} - public String staticResource {get; set;} - public String staticResourceContact {get; set;} - public String staticResourceInquiryForm{get; set;} - public String requiredFieldAPIListStr {get; set;} - public String fieldAPIToLabelMapStr {get; set;} - public String Input_Required_Field_Msg{set;get;} - public String PIPL_Name_Label{set;get;} - public String PIPL_Input_Account_Error_Msg{set;get;} - public String sobjectPrefix{set;get;} - public String sobjecttypeForFrontEnd{set;get;} - public String contactsInfo {set;get;}//key sfid;value awsid - public Inquiry_form__c ifc{get; private set;} - public String contactDataId{get; set;} - public String layoutSectionsStr {get; set;} - public String isDecryptContact {get; set;} - public final string ApiPrefix{get;private set;} //Add By Li Jun 20220403 - public Map<string,string> AWSToSobjectEncryptedMap{get;private set;} - public string AWSToSobjectEncryptedMapJson{get{return JSON.serialize(AWSToSobjectEncryptedMap);}} - public NewAndEditLeadController(ApexPages.StandardController controller) { - ApiPrefix = 'PIBackApi'; - isDecryptContact = '0'; - isNewMode = true; - isCloneMode = false; - Input_Required_Field_Msg = Label.Input_Required_Field_Msg; - PIPL_Name_Label = Label.PIPL_Name_Label; - PIPL_Input_Account_Error_Msg = label.PIPL_Input_Account_Error_Msg; - sobjecttypeForFrontEnd = sobjectTypeValue; - Map<string,string> mso = ApexPages.currentPage().getParameters(); - if(mso != null && mso.containsKey('newclone')){ - isCloneMode = true; + public List<LayoutDescriberHelper.LayoutSection> layoutSections { get; set; } + public String awsToken { get; set; } + public static Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe(); + public static String sobjectTypeValue = 'Lead'; + public Boolean isNewMode { get; set; } + public Boolean isCloneMode { get; protected set; } + public String rtTypeId { get; set; } + public String AWSDataId { get; set; } + public String AWSDataIdInquiryForm { get; set; } + public String contactId { get; set; } //For Lookup field + public List<String> encryptedAPIList { get; set; } + public String staticResource { get; set; } + public String staticResourceContact { get; set; } + public String staticResourceInquiryForm { get; set; } + public String requiredFieldAPIListStr { get; set; } + public String fieldAPIToLabelMapStr { get; set; } + public String Input_Required_Field_Msg { get; set; } + public String PIPL_Name_Label { get; set; } + public String PIPL_Input_Account_Error_Msg { get; set; } + public String sobjectPrefix { get; set; } + public String sobjecttypeForFrontEnd { get; set; } + public String contactsInfo { get; set; } //key sfid;value awsid + public Inquiry_form__c ifc { get; private set; } + public String contactDataId { get; set; } + public String layoutSectionsStr { get; set; } + public String isDecryptContact { get; set; } + public final string ApiPrefix { get; private set; } //Add By Li Jun 20220403 + public Map<string, string> AWSToSobjectEncryptedMap { get; private set; } + public string AWSToSobjectEncryptedMapJson { + get { + return JSON.serialize(AWSToSobjectEncryptedMap); + } + } + public String LeadCreatedDate { get; set; } // XLIU-CFE8M7 20220624 ssm + public String VLookUpFieldsJson { get; private set; } + //zhj MEBG鏂版柟妗堟敼閫� 2022-11-29 start + public String staticResourceV2 { get; set; } + //zhj MEBG鏂版柟妗堟敼閫� 2022-11-29 end + + public NewAndEditLeadController(ApexPages.StandardController controller) { + ApiPrefix = 'PIBackApi'; + isDecryptContact = '0'; + isNewMode = true; + isCloneMode = false; + Input_Required_Field_Msg = Label.Input_Required_Field_Msg; + PIPL_Name_Label = Label.PIPL_Name_Label; + PIPL_Input_Account_Error_Msg = label.PIPL_Input_Account_Error_Msg; + sobjecttypeForFrontEnd = sobjectTypeValue; + Map<string, string> mso = ApexPages.currentPage().getParameters(); + if (mso != null && mso.containsKey('newclone')) { + isCloneMode = true; + } + //鑾峰彇鎵�鏈夊瓧娈� + List<String> fieldList = new List<String>( + Schema.getGlobalDescribe() + .get('Lead') + .getDescribe() + .fields.getMap() + .keyset() + ); + // Add fields to controller. This is to avoid the SOQL error in visualforce page + if (!Test.isRunningTest()) { + controller.addFields(fieldList); + } + SObject obj = controller.getRecord(); + + // XLIU-CFE8M7 20220624 ssm + this.LeadCreatedDate = obj.get('CreatedDate') != null + ? Date.newInstance( + ((Datetime) obj.get('CreatedDate')).year(), + ((Datetime) obj.get('CreatedDate')).month(), + ((Datetime) obj.get('CreatedDate')).day() + ) + .format() + : Date.today().format(); + // this.LeadCreatedDate = Date.today().format(); + + if ( + ApexPages.currentPage().getParameters().get('CF00N1000000962np_lkid') != + null + ) { + System.debug('CF00N1000000962np_lkid'); + //浜у搧鍜ㄨ鍗曡繃鏉ョ殑 + String InquiryFormId = ApexPages.currentPage() + .getParameters() + .get('CF00N1000000962np_lkid'); + ifc = [ + SELECT + Id, + AWS_Data_Id__c, + Contact_Name__c, + Contact_Id__c, + Hospital_Name__c, + Hospital_ID__c, + Department_Class__c, + Department_ID__c, + Opp_Name_Search__c, + Opp_Name_Search_ID__c, + Campaign__c, + Campaign_ID__c, + Name, + Cancel_Reason__c, + Phone__c, + Email__c, + Last_Name__c, + LeadSource__c, + Opportunity_Division__c, + Request1__c, + Urgent__c, + Inquiry_Num__c, + Product_Owner__c + FROM Inquiry_form__c + WHERE id = :InquiryFormId + ]; + System.debug('ifc = ' + ifc); + if (ifc.Contact_Id__c != null && ifc.Contact_Id__c != '') { + Contact c = [ + SELECT AWS_Data_Id__c + FROM Contact + WHERE id = :ifc.Contact_Id__c + ]; + contactDataId = c.AWS_Data_Id__c; + } + AWSDataIdInquiryForm = ifc.AWS_Data_Id__c; + System.debug('ifc = ' + ifc); + rtTypeId = ApexPages.currentPage().getParameters().get('RecordType'); + obj.put('OwnerId', UserInfo.getUserId()); + obj.put('Inquiry_Num__c', ifc.Inquiry_Num__c); // 20220413 SWAG-CBUB2W you + obj.put('owner_not_automatically_update__c', ifc.Product_Owner__c); + controller.getRecord().put('LeadSource', ifc.LeadSource__c); + // controller.getRecord().put('Lead_Inquiry_form__c', ifc.Id); + } else if (obj.Id != null) { + //鏇存柊 + isNewMode = false; + Lead leadData = [ + SELECT + Id, + RecordTypeId, + AWS_Data_Id__c, + Contact_Name__r.Id, + Contact_Name__r.AWS_Data_Id__c + FROM Lead + WHERE id = :obj.Id + ]; + rtTypeId = leadData.RecordTypeId; + AWSDataId = leadData.AWS_Data_Id__c; + Map<String, String> sfIdToAWSIdMap = new Map<String, String>(); + if (leadData.Contact_Name__r.Id != null) { + sfIdToAWSIdMap.put( + String.valueof(leadData.Contact_Name__r.Id).subString(0, 15), + leadData.Contact_Name__r.AWS_Data_Id__c + ); + } + contactsInfo = JSON.serialize(sfIdToAWSIdMap); + } else { + //鐪嬮摼鎺ヤ腑鏈夋棤甯﹁繃鏉ョ殑鍙傛暟(瀹㈡埛浜哄憳) + // Map<string,string> mso = ApexPages.currentPage().getParameters(); + for (String key : mso.keySet()) { + System.debug('key=' + key + ',value=' + mso.get(key)); + } + //鑱旂郴浜� + if (mso.containsKey('CF00N10000006ps6f_lkid')) { + isDecryptContact = '1'; + String contactId = mso.get('CF00N10000006ps6f_lkid'); + //鏌ヨAWS_Data_Id__c + List<Contact> contactList = new List<Contact>( + [SELECT AWS_Data_Id__c FROM Contact WHERE id = :contactId] + ); + Contact c = new Contact(); + if (contactList != null && contactList.size() > 0) { + c = contactList[0]; } - //鑾峰彇鎵�鏈夊瓧娈� - List<String> fieldList = new List<String>(Schema.getGlobalDescribe().get('Lead').getDescribe().fields.getMap().keyset()); - // Add fields to controller. This is to avoid the SOQL error in visualforce page - if (!Test.isRunningTest()) { - controller.addFields(fieldList); - } - SObject obj = controller.getRecord(); - - if(ApexPages.currentPage().getParameters().get('CF00N1000000962np_lkid') != null){ - System.debug('CF00N1000000962np_lkid'); - //浜у搧鍜ㄨ鍗曡繃鏉ョ殑 - String InquiryFormId = ApexPages.currentPage().getParameters().get('CF00N1000000962np_lkid'); - ifc = [select Id,AWS_Data_Id__c,Contact_Name__c,Contact_Id__c,Hospital_Name__c,Hospital_ID__c,Department_Class__c, - Department_ID__c,Opp_Name_Search__c,Opp_Name_Search_ID__c,Campaign__c, - Campaign_ID__c,Name,Cancel_Reason__c,Phone__c,Email__c,Last_Name__c,LeadSource__c,Opportunity_Division__c,Request1__c, - Urgent__c,Inquiry_Num__c from Inquiry_form__c where id = :InquiryFormId]; - System.debug('ifc = ' + ifc); - if(ifc.Contact_Id__c !=null && ifc.Contact_Id__c != ''){ - Contact c = [select AWS_Data_Id__c from Contact where id = :ifc.Contact_Id__c]; - contactDataId = c.AWS_Data_Id__c; - } - AWSDataIdInquiryForm = ifc.AWS_Data_Id__c; - System.debug('ifc = ' + ifc); - rtTypeId = ApexPages.currentPage().getParameters().get('RecordType'); - obj.put('OwnerId',UserInfo.getUserId()); - obj.put('Inquiry_Num__c',ifc.Inquiry_Num__c);// 20220413 SWAG-CBUB2W you - }else if(obj.Id != null){ - //鏇存柊 - isNewMode = false; - Lead leadData = [select Id,RecordTypeId,AWS_Data_Id__c,Contact_Name__r.Id,Contact_Name__r.AWS_Data_Id__c from Lead where id =: obj.Id]; - rtTypeId = leadData.RecordTypeId; - AWSDataId = leadData.AWS_Data_Id__c; - Map<String,String> sfIdToAWSIdMap = new Map<String,String>(); - if(leadData.Contact_Name__r.Id != null){ - sfIdToAWSIdMap.put(String.valueof(leadData.Contact_Name__r.Id).subString(0,15),leadData.Contact_Name__r.AWS_Data_Id__c); - } - contactsInfo = JSON.serialize(sfIdToAWSIdMap); - }else{ - //鐪嬮摼鎺ヤ腑鏈夋棤甯﹁繃鏉ョ殑鍙傛暟(瀹㈡埛浜哄憳) - // Map<string,string> mso = ApexPages.currentPage().getParameters(); - for(String key : mso.keySet()){ - System.debug('key=' + key + ',value=' + mso.get(key)); - } - //鑱旂郴浜� - if(mso.containsKey('CF00N10000006ps6f_lkid')){ - isDecryptContact = '1'; - String contactId = mso.get('CF00N10000006ps6f_lkid'); - //鏌ヨAWS_Data_Id__c - List<Contact> contactList = new List<Contact>([select AWS_Data_Id__c from Contact where id=:contactId]); - Contact c = new Contact(); - if(contactList!=null&&contactList.size()>0){ - c = contactList[0]; - } - if (c != null&&c.AWS_Data_Id__c!='') { - contactDataId = c.AWS_Data_Id__c; - } - //鏌ヨ鎴樼暐绉戝鍒嗙被 - List<Contact> cs = [select Account.Department_Class__c from Contact where id=:contactId]; - if(cs.size()>0){ - controller.getRecord().put('Department_Class__c',cs[0].Account.Department_Class__c); - } - controller.getRecord().put('Contact_Name__c',mso.get('CF00N10000006ps6f_lkid')); - } - //鍖婚櫌鍚� - if(mso.containsKey('CF00N10000002CvC5_lkid')){ - controller.getRecord().put('Hospital_Name__c',mso.get('CF00N10000002CvC5_lkid')); - //閫氳繃鍖婚櫌id鏌ヨ鎴樼暐绉戝鍒嗙被 - String hospitalId = mso.get('CF00N10000002CvC5_lkid'); - List<Account> hospitalAccount = [select Department_Class__c from Account where Id=:hospitalId]; - if(hospitalAccount.size()>0){ - List<Account> departmentAccount = [select Id from Account where Id=:hospitalAccount[0].Department_Class__c]; - if (departmentAccount.size()>0) { - System.debug('Department_Class__c = ' + departmentAccount[0].Id); - controller.getRecord().put('Department_Class__c',departmentAccount[0].Id); - } - } - } - //鍏徃锛堢瀹わ級 - if(mso.containsKey('CF00N10000002CvC5')){ - controller.getRecord().put('Company',mso.get('CF00N10000002CvC5')); - } - //鎴樼暐绉戝CF00N10000006qNtt_lkid - // if(mso.containsKey('CF00N10000006qNtt_lkid ')){ - // controller.getRecord().put('Department_Class__c',mso.get('CF00N10000006qNtt_lkid ')); - // } - // 2022-04-13 鏉ユ簮 jz start 0414 lt - if (mso.containsKey('LeadSource')) { - controller.getRecord().put('LeadSource', mso.get('LeadSource')); - } - if (mso.containsKey('00N10000006qOFb')) { - controller.getRecord().put('Opportunity_stage__c', mso.get('00N10000006qOFb')); - } - if (mso.containsKey('00N10000006qOF0')) { - controller.getRecord().put('Close_Forecasted_Date__c', Date.parse(mso.get('00N10000006qOF0'))); - } - if (mso.containsKey('00N10000002EjE1')) { - controller.getRecord().put('Opp_Name__c', mso.get('00N10000002EjE1')); - } - // if (mso.containsKey('00N100000048UBf')) { - // controller.getRecord().put('Contact__c', mso.get('00N100000048UBf')); - // } - if (mso.containsKey('00N10000002Cl6Y')) { - controller.getRecord().put('Purchase_Reason__c', mso.get('00N10000002Cl6Y')); - } - if (mso.containsKey('00N10000002CpEz')) { - controller.getRecord().put('Fund_Basis__c', mso.get('00N10000002CpEz')); - } - if (mso.containsKey('00N10000002CpF9')) { - controller.getRecord().put('Purchase_Type__c', mso.get('00N10000002CpF9')); - } - //20220427 - if (mso.containsKey('00N1m000007YNMM')) { //鎷涙爣椤圭洰Id - controller.getRecord().put('Tender_information__c', mso.get('00N1m000007YNMM')); - } - if (mso.containsKey('00N1m000007YNN0')) { //缁忛攢鍟嗚浠稩d - controller.getRecord().put('Agency_Opportunity__c', mso.get('00N1m000007YNN0')); - } - if (mso.containsKey('00N10000008rqHj')) { //缁忛攢鍟嗚浠�--鎷涙爣鏂瑰紡 - controller.getRecord().put('Sales_Method__c', mso.get('00N10000008rqHj')); - } - // 2022-04-13 鏉ユ簮 jz end 0414 lt - rtTypeId = ApexPages.currentPage().getParameters().get('RecordType'); - // 20220420 lt OBSAP start - if (String.isBlank(rtTypeId) && mso.containsKey('RecordTypeId')) { - rtTypeId = mso.get('RecordTypeId'); - } - // 20220420 lt OBSAP end - obj.put('OwnerId',UserInfo.getUserId()); + if (c != null && c.AWS_Data_Id__c != '') { + contactDataId = c.AWS_Data_Id__c; } - LayoutDescriberHelper.LayoutWrapper LayoutWrapperValue = LayoutDescriberHelper.describeSectionWithFieldsWrapper(rtTypeId, 'Lead','classic'); - layoutSections = LayoutWrapperValue.layoutSections; - List<String> requiredFieldAPIList = LayoutWrapperValue.requiredFieldAPIList; - Map<String,String> fieldAPIToLabelMap = LayoutWrapperValue.fieldAPIToLabelMap; - requiredFieldAPIListStr = JSON.serialize(requiredFieldAPIList); - fieldAPIToLabelMapStr = JSON.serialize(fieldAPIToLabelMap); - PIHelper.PIIntegration piIntegration = PIHelper.getPIIntegrationInfo('Lead'); - staticResource = JSON.serialize(piIntegration); - staticResourceContact = JSON.serialize(PIHelper.getPIIntegrationInfo('Contact')); - staticResourceInquiryForm = JSON.serialize(PIHelper.getPIIntegrationInfo('Inquiry_form__c')); - encryptedAPIList = piIntegration.PIFields; - sobjectPrefix = piIntegration.sobjectPrefix; - layoutSectionsStr = JSON.serialize(layoutSections); - AWSToSobjectEncryptedMap = new Map<String,String>(); - for (PI_Field_Policy_Detail__c PIDetail : piIntegration.PIDetails) { - AWSToSobjectEncryptedMap.put(PIDetail.AWS_Field_API__c, PIDetail.SF_Field_API_Name__c); + //鏌ヨ鎴樼暐绉戝鍒嗙被 + List<Contact> cs = [ + SELECT Account.Department_Class__c + FROM Contact + WHERE id = :contactId + ]; + if (cs.size() > 0) { + controller.getRecord() + .put('Department_Class__c', cs[0].Account.Department_Class__c); } + controller.getRecord() + .put('Contact_Name__c', mso.get('CF00N10000006ps6f_lkid')); + } + //鍖婚櫌鍚� + if (mso.containsKey('CF00N10000002CvC5_lkid')) { + controller.getRecord() + .put('Hospital_Name__c', mso.get('CF00N10000002CvC5_lkid')); + //閫氳繃鍖婚櫌id鏌ヨ鎴樼暐绉戝鍒嗙被 + String hospitalId = mso.get('CF00N10000002CvC5_lkid'); + List<Account> hospitalAccount = [ + SELECT Department_Class__c + FROM Account + WHERE Id = :hospitalId + ]; + if (hospitalAccount.size() > 0) { + List<Account> departmentAccount = [ + SELECT Id + FROM Account + WHERE Id = :hospitalAccount[0].Department_Class__c + ]; + if (departmentAccount.size() > 0) { + System.debug('Department_Class__c = ' + departmentAccount[0].Id); + controller.getRecord() + .put('Department_Class__c', departmentAccount[0].Id); + } + } + } + //鍏徃锛堢瀹わ級 + if (mso.containsKey('CF00N10000002CvC5')) { + controller.getRecord().put('Company', mso.get('CF00N10000002CvC5')); + } + //鎴樼暐绉戝CF00N10000006qNtt_lkid + // if(mso.containsKey('CF00N10000006qNtt_lkid ')){ + // controller.getRecord().put('Department_Class__c',mso.get('CF00N10000006qNtt_lkid ')); + // } + // 2022-04-13 鏉ユ簮 jz start 0414 lt + if (mso.containsKey('LeadSource')) { + controller.getRecord().put('LeadSource', mso.get('LeadSource')); + } + if (mso.containsKey(System.Label.Opportunity_stage)) { + controller.getRecord() + .put('Opportunity_stage__c', mso.get(System.Label.Opportunity_stage)); + } + //20220505 lt 娉ㄩ噴鎺� + // if (mso.containsKey('00N10000006qOF0')) { + // controller.getRecord().put('Close_Forecasted_Date__c', Date.parse(mso.get('00N10000006qOF0'))); + // } + if (mso.containsKey(System.Label.Opp_Name)) { + controller.getRecord() + .put('Opp_Name__c', mso.get(System.Label.Opp_Name)); + } + // if (mso.containsKey('00N100000048UBf')) { + // controller.getRecord().put('Contact__c', mso.get('00N100000048UBf')); + // } + if (mso.containsKey(System.Label.Purchase_Reason)) { + controller.getRecord() + .put('Purchase_Reason__c', mso.get(System.Label.Purchase_Reason)); + } + if (mso.containsKey(System.Label.Fund_Basis)) { + controller.getRecord() + .put('Fund_Basis__c', mso.get(System.Label.Fund_Basis)); + } + if (mso.containsKey(System.Label.Purchase_Type)) { + controller.getRecord() + .put('Purchase_Type__c', mso.get(System.Label.Purchase_Type)); + } + //20220427 + if (mso.containsKey(System.Label.Tender_information)) { + //鎷涙爣椤圭洰Id + controller.getRecord() + .put( + 'Tender_information__c', + mso.get(System.Label.Tender_information) + ); + } + if (mso.containsKey(System.Label.Agency_Opportunity)) { + //缁忛攢鍟嗚浠稩d + controller.getRecord() + .put( + 'Agency_Opportunity__c', + mso.get(System.Label.Agency_Opportunity) + ); + } + if (mso.containsKey(System.Label.Sales_Method)) { + //缁忛攢鍟嗚浠�--鎷涙爣鏂瑰紡 + controller.getRecord() + .put('Sales_Method__c', mso.get(System.Label.Sales_Method)); + } + if (mso.containsKey(System.Label.Request)) { + controller.getRecord().put('Request__c', mso.get(System.Label.Request)); + } + if (mso.containsKey(System.Label.Request_Detail)) { + controller.getRecord() + .put('Request_Detail__c', mso.get(System.Label.Request_Detail)); + } + // 2022-04-13 鏉ユ簮 jz end 0414 lt + rtTypeId = ApexPages.currentPage().getParameters().get('RecordType'); + // 20220420 lt OBSAP start + if (String.isBlank(rtTypeId) && mso.containsKey('RecordTypeId')) { + rtTypeId = mso.get('RecordTypeId'); + } + // 20220420 lt OBSAP end + obj.put('OwnerId', UserInfo.getUserId()); + } + system.debug('RecordTypeId:' + rtTypeId); + LayoutDescriberHelper.LayoutWrapper LayoutWrapperValue = LayoutDescriberHelper.describeSectionWithFieldsWrapper( + rtTypeId, + 'Lead', + 'classic' + ); + layoutSections = LayoutWrapperValue.layoutSections; + List<String> requiredFieldAPIList = LayoutWrapperValue.requiredFieldAPIList; + Map<String, String> fieldAPIToLabelMap = LayoutWrapperValue.fieldAPIToLabelMap; + requiredFieldAPIListStr = JSON.serialize(requiredFieldAPIList); + fieldAPIToLabelMapStr = JSON.serialize(fieldAPIToLabelMap); + PIHelper.PIIntegration piIntegration = PIHelper.getPIIntegrationInfo( + 'Lead' + ); + staticResource = JSON.serialize(piIntegration); + staticResourceContact = JSON.serialize( + PIHelper.getPIIntegrationInfo('Contact') + ); + staticResourceInquiryForm = JSON.serialize( + PIHelper.getPIIntegrationInfo('Inquiry_form__c') + ); + //zhj MEBG鏂版柟妗堟敼閫� 2022-11-29 start + staticResourceV2 = JSON.serialize(PIHelper.getPIIntegrationInfo('LeadV2')); + //zhj MEBG鏂版柟妗堟敼閫� 2022-11-29 end + encryptedAPIList = piIntegration.PIFields; + sobjectPrefix = piIntegration.sobjectPrefix; + layoutSectionsStr = JSON.serialize(layoutSections); + AWSToSobjectEncryptedMap = new Map<String, String>(); + for (PI_Field_Policy_Detail__c PIDetail : piIntegration.PIDetails) { + AWSToSobjectEncryptedMap.put( + PIDetail.AWS_Field_API__c, + PIDetail.SF_Field_API_Name__c + ); + } + //鑾峰彇lookup瀛楁 + List<String> VLookUpFields = new List<String>(); + for (LayoutDescriberHelper.LayoutSection ls : layoutSections) { + for (LayoutDescriberHelper.LayoutField lf : ls.layoutFields) { + if (lf.fieldAPI != '' && lf.fieldType == 'reference') { + VLookUpFields.add(lf.fieldAPI); + } + } + } + VLookUpFieldsJson = Json.serialize(VLookUpFields); + } + + global class Response { + public String recordId { get; set; } + public String message { get; set; } + public String status { get; set; } + } + + @RemoteAction + global static Response saveLead( + String leadJson, + String transId, + Boolean isNew + ) { + System.debug('Lead Info:' + JSON.serialize(leadJson)); + //1. Prepare the payload for Lead + Schema.SObjectType leadSchema = schemaMap.get(sobjectTypeValue); + Map<String, Schema.SObjectField> fieldAPIToTypeMap = leadSchema.getDescribe() + .fields.getMap(); + Map<String, Object> fieldValueMap = (Map<String, Object>) JSON.deserializeUntyped( + leadJson + ); + Lead leadInfo = new Lead(); + String status = 'success'; + Response resp = new Response(); + Savepoint sp = Database.setSavepoint(); + Boolean isClone = false; + String rid = ''; + String awsDataId = ''; + try { + //鑷畾涔夋牸寮忚浆鎹� + for (String fieldAPI : fieldValueMap.keySet()) { + system.debug('field API=' + fieldAPI); + if (!fieldAPIToTypeMap.containskey(fieldAPI)) { + continue; + } + Schema.DisplayType fielddataType = fieldAPIToTypeMap.get(fieldAPI) + .getDescribe() + .getType(); + String fieldValue = String.valueOf(fieldValueMap.get(fieldAPI)); + system.debug( + 'Field Type:' + fielddataType + ' field Value=' + fieldValue + ); + if (String.valueOf(fielddataType) == 'DATE') { + leadInfo.put( + fieldAPI, + (String.isBlank(fieldValue) || String.isEmpty(fieldValue)) + ? null + : Date.valueOf(fieldValue.replace('/', '-')) + ); + } else if (String.valueOf(fielddataType) == 'DATETIME') { + if (String.isNotBlank(fieldValue) && fieldValue.contains('T')) { + fieldValue = fieldValue.replace('T', ' '); + leadInfo.put(fieldAPI, Datetime.valueOfGmt(fieldValue)); + } else { + leadInfo.put(fieldAPI, null); + } + } else if ( + String.valueof(fielddataType) == 'CURRENCY' || + String.valueof(fielddataType) == 'PERCENT' || + String.valueOf(fielddataType) == 'Number' || + String.valueOf(fielddataType) == 'DOUBLE' + ) { + leadInfo.put( + fieldAPI, + (String.isBlank(fieldValue) || String.isEmpty(fieldValue)) + ? null + : Decimal.valueOf(fieldValue.replace(',', '')) + ); + } else if (String.valueof(fielddataType) == 'BOOLEAN') { + leadInfo.put(fieldAPI, fieldValueMap.get(fieldAPI)); + } else { + leadInfo.put(fieldAPI, fieldValue); + } + } + + //2. Save Record Process + + System.debug('abcde'); + awsDataId = (String) leadInfo.get('AWS_Data_Id__c'); + System.debug('awsDataId = ' + awsDataId); + Lead[] leads = [SELECT id FROM Lead WHERE AWS_Data_Id__c = :awsDataId]; + + if (!isNew) { + isClone = leads.size() == 0; + } + System.debug('isClone---------' + isClone); + //2022-6-10 yjk SWAG-CEY8GZ start + if (leadInfo.Hospital_Name__c != null) { + Account acc = [ + SELECT id, Hospital__c + FROM Account + WHERE id = :leadInfo.Hospital_Name__c + ]; + leadInfo.hospital__c = acc.Hospital__c; + } + //2022-6-10 yjk SWAG-CEY8GZ end + if (isNew || isClone) { + System.debug('leadInfozhj = ' + leadInfo); + if (!Test.isRunningTest()) { + insert leadInfo; + } + } else { + System.debug('into update'); + // String awsDataId = (String)leadInfo.get('AWS_Data_Id__c'); + // System.debug('awsDataId = ' + awsDataId); + // Lead[] leads = [select id from Lead where AWS_Data_Id__c =:awsDataId]; + System.debug('leads[0].id = ' + leads[0].id); + leadInfo.put('Id', leads[0].id); //For testing; + if (!Test.isRunningTest()) { + update leadInfo; + } + } + rid = leadInfo.Id; + PIHelper.saveTransLog( + sobjectTypeValue, + (String) leadInfo.get('AWS_Data_Id__c'), + rid, + transId, + leadJson, + status, + '' + ); + resp.recordId = leadInfo.Id; + resp.message = ''; + resp.status = status; + System.debug('resp from sfdx back-end' + resp); + return resp; + } catch (DmlException e) { + Integer index = 0; + System.debug(e.getNumDml()); + System.debug(e.getDmlFields(index)); + System.debug(e.getDmlId(index)); + System.debug(e.getDmlIndex(index)); + System.debug(e.getDmlMessage(index)); + System.debug(e.getDmlStatusCode(index)); + System.debug(e.getDmlType(index)); + system.debug(e.getMessage()); + system.debug(e.getStackTraceString()); + + System.debug('into catch' + e.getMessage()); + Database.rollback(sp); + resp.status = 'Exception'; + resp.message = '淇濆瓨澶辫触锛屽師鍥�:' + e.getDmlMessage(index); + PIHelper.saveTransLog( + sobjectTypeValue, + (String) leadInfo.get('AWS_Data_Id__c'), + rid, + transId, + leadJson, + status, + e.getMessage() + e.getStackTraceString() + ); + return resp; + } catch (Exception e) { + System.debug('into catch' + e.getMessage()); + Database.rollback(sp); + status = 'fail'; + PIHelper.saveTransLog( + sobjectTypeValue, + (String) leadInfo.get('AWS_Data_Id__c'), + rid, + transId, + leadJson, + status, + e.getMessage() + ); + resp.message = e.getMessage(); + resp.status = status; + return resp; + } + } + + @RemoteAction + global static String queryAccount(String accountTypes, String accountId) { + System.debug('accountType=' + accountTypes); + System.debug('accountId=' + accountId); + List<Object> types = (List<Object>) JSON.deserializeUntyped(accountTypes); + System.debug('types=' + types); + String soql = 'select Id,Name,'; + for (Object t : types) { + soql += (String) t + ','; + } + soql = soql.substring(0, soql.length() - 1); + soql += ' from Account where id=\'' + accountId + '\''; + System.debug('soql=' + soql); + Sobject account = new Account(); + if (!Test.isRunningTest()) { + account = Database.query(soql); + } else { + account.put('Id', '000000000000000'); } - global class Response{ - public String recordId{set;get;} - public String message{set;get;} - public String status{set;get;} + Map<String, Map<String, String>> m = new Map<String, Map<String, String>>(); + + System.debug('account=' + account); + for (Object ty : types) { + String t = (String) ty; + if (account.get(t) != null || Test.isRunningTest()) { + Sobject acc = new Account(); + if (Test.isRunningTest()) { + acc.put('Id', '000000000000000'); + acc.put('Name', 'Name'); + } else { + acc = Database.query( + 'select Id,Name from Account where id=\'' + account.get(t) + '\'' + ); + } + Map<String, String> n = new Map<String, String>(); + n.put('Id', (String) acc.get('Id')); + n.put('Name', (String) acc.get('Name')); + m.put(t, n); + } } + // if (account.get('Hospital__c') != null){ + // m.put('Hospital__c', (String)account.get('Hospital__c')); + // m.put('Hospital__r.Name', (String)account.get('Hospital__r.Name')); + // } + // if (account.get('Department_Class__c') != null){ + // m.put('Department_Class__c', (String)account.get('Department_Class__c')); + // m.put('Department_Class__r.Name', (String)account.get('Department_Class__r.Name')); + // } + System.debug('m=' + m); + return JSON.serialize(m); - @RemoteAction - global static Response saveLead(String leadJson,String transId,Boolean isNew) { - System.debug('Lead Info:' + JSON.serialize(leadJson)); - //1. Prepare the payload for Lead - Schema.SObjectType leadSchema = schemaMap.get(sobjectTypeValue); - Map<String, Schema.SObjectField> fieldAPIToTypeMap = leadSchema.getDescribe().fields.getMap(); - Map<String,Object> fieldValueMap = (Map<String,Object>)JSON.deserializeUntyped(leadJson); - Lead leadInfo = new Lead(); - //鑷畾涔夋牸寮忚浆鎹� - for (String fieldAPI: fieldValueMap.keySet()) { - system.debug('field API='+fieldAPI); - if(!fieldAPIToTypeMap.containskey(fieldAPI)){ - continue; - } - Schema.DisplayType fielddataType = fieldAPIToTypeMap.get(fieldAPI).getDescribe().getType(); - String fieldValue = String.valueOf(fieldValueMap.get(fieldAPI)); - system.debug('Field Type:'+fielddataType+' field Value='+fieldValue); - if(String.valueOf(fielddataType)=='DATE'){ - leadInfo.put(fieldAPI,(String.isBlank(fieldValue)||String.isEmpty(fieldValue))? null:Date.valueOf(fieldValue.replace('/', '-'))); - }else if(String.valueOf(fielddataType)=='DATETIME'){ - if(String.isNotBlank(fieldValue)&&fieldValue.contains('T')){ - fieldValue = fieldValue.replace('T',' '); - leadInfo.put(fieldAPI, Datetime.valueOfGmt(fieldValue)); - }else{ - leadInfo.put(fieldAPI, null); - } - }else if(String.valueof(fielddataType)=='CURRENCY'|| String.valueof(fielddataType)=='PERCENT'||String.valueOf(fielddataType)=='Number'||String.valueOf(fielddataType)=='DOUBLE' ){ - leadInfo.put(fieldAPI, (String.isBlank(fieldValue)||String.isEmpty(fieldValue))?null:Decimal.valueOf(fieldValue.replace(',', ''))); - } else if(String.valueof(fielddataType)=='BOOLEAN'){ - leadInfo.put(fieldAPI, fieldValueMap.get(fieldAPI)); - }else { - leadInfo.put(fieldAPI,fieldValue); - } - } - - //2. Save Record Process - String status = 'success'; - Response resp = new Response(); - Savepoint sp = Database.setSavepoint(); - Boolean isClone = false; - String rid = ''; - String awsDataId = ''; - try{ - System.debug('abcde'); - awsDataId = (String)leadInfo.get('AWS_Data_Id__c'); - System.debug('awsDataId = ' + awsDataId); - Lead[] leads = [select id from Lead where AWS_Data_Id__c =:awsDataId]; - - if(!isNew){ - isClone = leads.size() == 0; - } - System.debug('isClone---------'+isClone); + // return (String)account.get('Hospital__c'); + } - if(isNew || isClone){ - System.debug('leadInfozhj = ' + leadInfo); - if(!Test.isRunningTest()){ - insert leadInfo; - } - }else{ - System.debug('into update'); - // String awsDataId = (String)leadInfo.get('AWS_Data_Id__c'); - // System.debug('awsDataId = ' + awsDataId); - // Lead[] leads = [select id from Lead where AWS_Data_Id__c =:awsDataId]; - System.debug('leads[0].id = ' + leads[0].id); - leadInfo.put('Id',leads[0].id);//For testing; - if(!Test.isRunningTest()){ - update leadInfo; - } - } - rid=leadInfo.Id; - PIHelper.saveTransLog(sobjectTypeValue,(String)leadInfo.get('AWS_Data_Id__c'),rid,transId,leadJson ,status,''); - resp.recordId = leadInfo.Id; - resp.message = ''; - resp.status = status; - System.debug('resp from sfdx back-end' + resp); - return resp; - - } catch(DmlException e) { - Integer index = 0; - System.debug(e.getNumDml()); - System.debug(e.getDmlFields(index)); - System.debug(e.getDmlId(index)); - System.debug(e.getDmlIndex(index)); - System.debug(e.getDmlMessage(index)); - System.debug(e.getDmlStatusCode(index)); - System.debug(e.getDmlType(index)); - system.debug(e.getMessage()); - system.debug(e.getStackTraceString()); - - System.debug('into catch'+e.getMessage()); - Database.rollback(sp); - resp.status = 'Exception'; - resp.message ='淇濆瓨澶辫触锛屽師鍥�:'+ e.getDmlMessage(index); - PIHelper.saveTransLog(sobjectTypeValue,(String)leadInfo.get('AWS_Data_Id__c'),rid,transId, leadJson ,status,e.getMessage()+e.getStackTraceString()); - return resp; - - } catch(Exception e) { - System.debug('into catch'+e.getMessage()); - Database.rollback(sp); - status = 'fail'; - PIHelper.saveTransLog(sobjectTypeValue,(String)leadInfo.get('AWS_Data_Id__c'),rid,transId,leadJson,status,e.getMessage()); - resp.message = e.getMessage(); - resp.status = status; - return resp; - } - } - - @RemoteAction - global static String queryAccount(String accountTypes,String accountId) { - System.debug('accountType='+accountTypes); - System.debug('accountId='+accountId); - List<Object> types = (List<Object>)JSON.deserializeUntyped(accountTypes); - System.debug('types='+types); - String soql = 'select Id,Name,'; - for (Object t : types) { - soql += (String)t+','; - } - soql = soql.substring(0,soql.length()-1); - soql += ' from Account where id=\''+accountId+'\''; - System.debug('soql='+soql); - Sobject account = new Account(); - if(!Test.isRunningTest()){ - account = Database.query(soql); - }else{ - account.put('Id','000000000000000'); - } - - - Map<String, Map<String, String>> m = new Map<String, Map<String, String>>(); - - System.debug('account='+account); - for (Object ty : types) { - String t = (String)ty; - if (account.get(t) != null||Test.isRunningTest()){ - Sobject acc = new Account(); - if(Test.isRunningTest()){ - acc.put('Id','000000000000000'); - acc.put('Name','Name'); - }else{ - acc = Database.query('select Id,Name from Account where id=\''+account.get(t)+'\''); - } - Map<String, String> n = new Map<String, String>(); - n.put('Id', (String)acc.get('Id')); - n.put('Name', (String)acc.get('Name')); - m.put(t, n); - } - } - // if (account.get('Hospital__c') != null){ - // m.put('Hospital__c', (String)account.get('Hospital__c')); - // m.put('Hospital__r.Name', (String)account.get('Hospital__r.Name')); - // } - // if (account.get('Department_Class__c') != null){ - // m.put('Department_Class__c', (String)account.get('Department_Class__c')); - // m.put('Department_Class__r.Name', (String)account.get('Department_Class__r.Name')); - // } - System.debug('m='+m); - return JSON.serialize(m); - - // return (String)account.get('Hospital__c'); - } - - 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++; - return i;} -} \ No newline at end of file + public static Integer ControllerUtil() { + Integer i = 0; + return i; + } +} -- Gitblit v1.9.1