public static void scheduleTaskCreationJob(Task p_task,Integer days,EmailTemplate p_etemplate,String targetObjectId){
System.debug('---scheduleTaskCreationJob---');
String day2=String.valueOf(datetime.now()+days);
String time_str=day2.substringAfter(' '); //2018-05-06 15:33:41, get time only
String month=day2.subStringBefore(' ').split('-')[1];
string day=day2.subStringBefore(' ').split('-')[2];
String[] ctime=time_str.split(':');
String sch = ctime[2]+' '+ctime[1]+' '+ctime[0]+' '+day+' '+month+' ?';
System.debug('sch: '+sch);
System.schedule('SalesProcessScheduler', sch, new SalesProcessScheduler(p_task,String.valueof(days+1),p_etemplate,targetObjectId));
}
global class SalesProcessScheduler implements Schedulable {
public static Task tsk;
public static String day;
public static EmailTemplate emailTemplate;
public static String targetObjectId;
global void execute(SchedulableContext ctx) {
createNewTask();
}
public static void createNewTask(){
System.debug('---createNewTask---');
Task t=new Task();
t.Subject='Day '+day;
t.WhoId=tsk.WhoId;
t.Status='Not Started';
insert t;
sendEmailTemplate(emailTemplate,tsk.whoId);
}
public SalesProcessScheduler(Task p_task,String p_day,EmailTemplate p_emailTemplate,String p_targetObjectId){
tsk=p_task;
day=p_day;
emailTemplate=p_emailTemplate;
targetObjectId=p_targetObjectId;
}
public static void sendEmailTemplate(EmailTemplate p_etemplate,String targetObjectId){
System.debug('---sendEmailTemplate---');
Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
List<String> emaillist=new List<String>();
// emaillist.add(email);
message.toAddresses = emaillist;
//message.ccAddresses = new List<String> {label.Off_Boarding_CC_Email_addresses};
message.setTargetObjectId(targetObjectId);
message.setSenderDisplayName('Lead Sales Process');
message.setUseSignature(false);
message.setBccSender(false);
message.setSaveAsActivity(false);
EmailTemplate et=p_etemplate;
message.setTemplateId(et.id);
Messaging.SingleEmailMessage[] messages =
new List<Messaging.SingleEmailMessage> {message};
Messaging.SendEmailResult[] results = Messaging.sendEmail(messages);
if (results[0].success) {
System.debug('The email was sent successfully.');
} else {
System.debug('The email failed to send: '
+ results[0].errors[0].message);
}
}
}
No comments:
Post a Comment