Skip to content

Instantly share code, notes, and snippets.

@ChuckJonas
Last active November 17, 2018 19:04
Show Gist options
  • Save ChuckJonas/93853c2477dcbb3688008b5aa44846c2 to your computer and use it in GitHub Desktop.
Save ChuckJonas/93853c2477dcbb3688008b5aa44846c2 to your computer and use it in GitHub Desktop.
LeadCloneWithActivitesController
// Author Charlie@callaway.cloud
// Replacement clone page which copies activity history
public with sharing class LeadCloneWithActivitiesController {
private SObjectDeepClone cloner; //cloning util
public Lead clone {get; private set;} //editable lead
public Metadata.Layout leadLayout {get; private set;} //layout
public Metadata.UiBehavior editEnum {
get{ return Metadata.UiBehavior.Edit; }
}
public LeadCloneWithActivitiesController(ApexPages.StandardController controller) {
Id idToClone = ((Lead)controller.getRecord()).Id;
try{
//get lead layout
List<Metadata.Metadata> components = Metadata.Operations.retrieve(
Metadata.MetadataType.Layout,
new String[]{'Lead-Lead Layout'}
);
leadLayout = (Metadata.Layout) components.get(0);
//setup clone obj
cloner = new SObjectDeepClone(
idToClone,
new Set<String>{
'Tasks',
'Events'
}
);
// set SObject so user can edit values
this.clone = (Lead) cloner.clone;
}catch(Exception e){
ApexPages.addMessages(e);
}
}
//save object
public PageReference saveClone() {
try{
Id newLeadId = cloner.save();
return new PageReference('/'+newLeadId);
}catch(Exception e){
ApexPages.addMessages(e);
return null;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment