From 410599fdf4f96d7f19b51bc28e544fa4e8780a1e Mon Sep 17 00:00:00 2001
From: binxie <137736985@qq.com>
Date: 星期一, 26 六月 2023 14:06:00 +0800
Subject: [PATCH] backup
---
force-app/main/default/classes/NewAndEditLeadController.cls | 669 ++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 563 insertions(+), 106 deletions(-)
diff --git a/force-app/main/default/classes/NewAndEditLeadController.cls b/force-app/main/default/classes/NewAndEditLeadController.cls
index d7c8bf0..023e13b 100644
--- a/force-app/main/default/classes/NewAndEditLeadController.cls
+++ b/force-app/main/default/classes/NewAndEditLeadController.cls
@@ -3,118 +3,575 @@
* Created Date: 01/19/2022
* Purpose: Utility class for describe layouts
* Test Class: NewAndEditLeadController
- * History:
+ * History:
* 01/19/2022 - Bubba Li - Initial Code.
- *
+ *
* */
-public 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 String rtTypeId {get; set;}
- public String AWSDataId{set;get;}
- //fieldLabel fieldAPI
- public String fieldApiListStr {get; set;}
- public NewAndEditLeadController(ApexPages.StandardController controller) {
- isNewMode = 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
- controller.addFields(fieldList);
- SObject obj = controller.getRecord();
- //rtTypeId = ApexPages.currentPage().getParameters().get('RecordType');
- rtTypeId = '01210000000QiRa';//For testing
- layoutSections = LayoutDescriberHelper.describeSectionWithFields(rtTypeId, 'Lead','classic');
- if(obj.Id != null){
- isNewMode = false;
- Lead leadData = [select Id,RecordTypeId,AWS_Data_Id__c from Lead where id =: obj.Id];
- rtTypeId = leadData.RecordTypeId;
- AWSDataId = leadData.AWS_Data_Id__c;
+global without sharing class NewAndEditLeadController {
+ 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> fieldApiList = new List<String>();
- for (LayoutDescriberHelper.LayoutSection ls : layoutSections) {
- for (LayoutDescriberHelper.LayoutField lf : ls.layoutFields) {
- if (lf.fieldAPI != '') {
- fieldApiList.add(lf.fieldAPI);
- }
- }
+ if (c != null && c.AWS_Data_Id__c != '') {
+ contactDataId = c.AWS_Data_Id__c;
}
- fieldApiListStr = JSON.serialize(fieldApiList);
- //awsToken = AWSServiceTool.getAWSToken();
+ //鏌ヨ鎴樼暐绉戝鍒嗙被
+ 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');
}
- public 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>>();
- @RemoteAction
- public 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()) {
- Schema.DisplayType fielddataType = fieldAPIToTypeMap.get(fieldAPI).getDescribe().getType();
- String fieldValue = String.valueOf(fieldValueMap.get(fieldAPI));
- if(String.isBlank(fieldValue)){
- continue;
- }
- if(String.valueOf(fielddataType)=='DATE'){
- leadInfo.put(fieldAPI, Date.valueOf(String.valueOf(fieldValueMap.get(fieldAPI)).replace('/', '-')));
- }else if(String.valueOf(fielddataType)=='DATETIME'){
- String dt = String.valueOf(fieldValueMap.get(fieldAPI));
- if(String.isNotBlank(dt)&&dt.contains('T')){
- dt = dt.replace('T',' ');
- leadInfo.put(fieldAPI, Datetime.valueOfGmt(dt));
- }
- }else if(String.valueOf(fielddataType)=='Number'||String.valueOf(fielddataType)=='DOUBLE' ){
- leadInfo.put(fieldAPI, Decimal.valueOf(String.valueOf(fieldValueMap.get(fieldAPI))));
- } else if(String.valueof(fielddataType)=='BOOLEAN'){
- leadInfo.put(fieldAPI, Boolean.valueOf(fieldValueMap.get(fieldAPI)));
- }else {
- leadInfo.put(fieldAPI, String.valueOf(fieldValueMap.get(fieldAPI)));
- }
+ 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) + '\''
+ );
}
-
- //2. Save Record Process
- String status = 'success';
- Response resp = new Response();
- Savepoint sp = Database.setSavepoint();
- try{
- if(isNew){
- insert leadInfo;
- }else{
- //Id leadIdValue = [select id from Lead where AWS_Data_Id__c =:awsId];
- leadInfo.put('Id','00Q1m000001lVY8');//For testing;
- update leadInfo;
- }
- // //saveTransLog(transId, leadInfo.AWS_Data_Id__c, status, '');
- // Transaction_Log__c traLog = new Transaction_Log__c();
- // // AWS_Data_Id__c=AWSDataId,TransId__c=transId,JsonContent__c=leadJson,Status__c=status
- // traLog.AWS_Data_Id__c = AWSDataId;
- // traLog.TransId__c = transId;
- // traLog.JsonContent__c = leadJson;
- // traLog.Status__c = status;
- // insert traLog;
- resp.recordId = leadInfo.Id;
- // resp.message = 'success saveLead';
- resp.status = status;
- return resp;
-
- } catch(Exception e) {
- Database.rollback(sp);
- // status = 'fail';
- // //saveTransLog(transId, leadInfo.AWS_Data_Id__c, status, '');
- // system.System.debug(e.getMessage() + '-' + e.getStackTraceString() + '-' + e.getLineNumber());
- // resp.message = e.getMessage();
- // resp.recordId = 'fail saveLead';
- resp.status = status;
- return resp;
- }
+ 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);
+ }
}
-}
\ No newline at end of file
+ // 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;
+
+ return i;
+ }
+}
--
Gitblit v1.9.1