/* * Author: Yanan Chen * Created Date: 02/22/2022 * Purpose: Utility class for describe layouts * Test Class: NewAndEditContactController * History: * 02/22/2022 - Yanan Chen - Initial Code. * * */ global class NewAndEditContactController extends NewAndEditBaseController { public String accountId{get; set;} public Account account{get; private set;} public NewAndEditContactController(ApexPages.StandardController controller){ List fieldList = new List(Schema.getGlobalDescribe().get('Contact').getDescribe().fields.getMap().keyset()); // Add fields to controller. This is to avoid the SOQL error in visualforce page //Get Account Id from url param // this.accountId = ApexPages.currentPage().getParameters().get('retURL'); system.debug('mso='+ApexPages.currentPage().getParameters()); this.accountId = ApexPages.currentPage().getParameters().get('accid'); if(string.isBlank(this.accountId)){ system.debug('retake accid'); this.accountId = ApexPages.currentPage().getParameters().get('con4_lkid'); } System.debug('accountId = ' + accountId); // System.debug('accountType = ' + ); if(!Test.isRunningTest()){ controller.addFields(fieldList); } Init(controller.getRecord()); if (this.accountId != '/003/o' && this.accountId != null && this.isNewMode) { ID accId = ID.valueOf(this.accountId); System.debug('accId = ' + accId); account = [select id, Name, PhoneD__c, FaxD__c, Address1D__c, PostCodeD__c, ProductSegment__c from Account where id =:accId]; System.debug('account = ' + account); } SObject obj = controller.getRecord(); if(obj.Id == null){ //初始化加载值 obj.put('OwnerId',UserInfo.getUserId()); } if (this.account != null) { obj.put('AccountId', this.accountId); obj.put('ProductSegment'+this.account.ProductSegment__c+'__c', true); obj.put('Fax', this.account.FaxD__c); obj.put('FaxD__c', this.account.FaxD__c); obj.put('Phone', this.account.PhoneD__c); obj.put('PhoneD__c', this.account.PhoneD__c); obj.put('Address1__c', this.account.Address1D__c); obj.put('Address1D__c', this.account.Address1D__c); obj.put('Postcode__c', this.account.PostcodeD__c); obj.put('PostcodeD__c', this.account.PostcodeD__c); } } PageReference RedirectStandardPage(){ system.debug('RedirectStandardPage'); Map mso = ApexPages.currentPage().getParameters(); system.debug(mso); PageReference pg = null; mso.remove('sfdc.override'); mso.remove('save_new'); system.debug('recordId='+recordId); if(string.isBlank(recordId)){ pg = new PageReference('/003/e'); }else{ pg = new PageReference('/'+recordId+'/e'); } pg.getParameters().putAll(mso); //pg.getParameters().put('RecordType',mso.get('RecordType')); //pg.getParameters().put('accid',mso.get('accid')); pg.getParameters().put('nooverride','1'); pg.setRedirect(true); return pg; } public PageReference PageLoad(){ system.debug('rtTypeId='+rtTypeId); string s = null; string accid = ApexPages.currentPage().getParameters().get('accid'); if(string.isBlank(accid)){ system.debug('retake accid'); accid = ApexPages.currentPage().getParameters().get('con4_lkid'); } if(!string.isBlank(accid)){ List accs = [select RecordType.DeveloperName from account where id = :accid]; system.debug(accs); if(accs.size()>0){ s = Schema.SObjectType.Account.getRecordTypeInfosById().get(accs[0].RecordTypeId).getDeveloperName(); system.debug('s='+s); if(s == 'Dealer' || s == 'Agency'){ return RedirectStandardPage(); } } } system.debug('null'); return null; } @RemoteAction global static Response saveContact(String contactJson, String transId, Boolean isNew){ if(Test.isRunningTest()){ return new Response(); } return save(new Contact(), contactJson, transId, isNew); } }