Last active
March 6, 2017 21:44
-
-
Save pcon/115d989c3eeeb5d1932b0807db0c6ecd to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
global class assignLeadToTerritoriesScheudle implements Schedulable | |
{ | |
global void execute(SchedulableContext ctx) | |
{ | |
String strFields = ''; | |
for(String strField : Schema.SObjectType.Lead.fields.getMap().keySet()) | |
{ | |
strFields += strField + ', '; | |
} | |
if(test.isRunningtest()) | |
{ | |
strFields = 'Id, Name, Country, State, postalcode, '; | |
} | |
String m_strAllLeadFields = strFields.substring(0, strFields.length()-2); | |
String strFilterInQuery = 'where No_Mass_Update__c != true'; | |
String strQuery = 'select ' + m_strAllLeadFields + ' from Lead ' + strFilterInQuery; | |
Map<Id, Lead> leadmap = new Map<Id, Lead>(); | |
ReassignLeadsBatch reassignLeadBatchJob = new ReassignLeadsBatch(strQuery,leadmap); | |
Database.executeBatch(reassignLeadBatchJob, 1); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class ManageLeadTerritoryController { | |
@TestVisible private static String SCHEDULED_JOB_NAME = 'Mass Update Leads'; | |
@RemoteAction | |
public static void massUpdateNow() | |
{ | |
List<Territory_Setup__c> LeadTerrSetups = [select Id, Next_Mass_Update_Date_Lead__c, Status__c from Territory_Setup__c | |
order by lastmodifieddate desc limit 1]; | |
if(LeadTerrSetups.size() > 0 && LeadTerrSetups[0].STatus__c == 'on') | |
{ | |
String strFields = ''; | |
for(String strField : Schema.SObjectType.Lead.fields.getMap().keySet()) | |
{ | |
strFields += strField + ', '; | |
} | |
String m_strAllLeadFields = strFields.substring(0, strFields.length()-2); | |
String strFilterInQuery = 'where No_Mass_Update__c != true'; | |
String strQuery = 'select ' + m_strAllLeadFields + ' from Lead ' + strFilterInQuery; | |
map<Id, lead> leadmap = new Map<Id, Lead>(); | |
ReassignLeadsBatch reassignLeadBatchJob = new ReassignLeadsBatch(strQuery, leadmap); | |
Database.executeBatch(reassignLeadBatchJob, 1); | |
} | |
//System.debug('massUpdateNow has fired'); | |
} | |
@RemoteAction | |
public static void scheduleMassUpdate(){ | |
List<Territory_Setup__c> LeadTerrSetup = [select Id, Next_Mass_Update_Date_Lead__c, Status__c | |
from Territory_Setup__c | |
order by lastmodifieddate | |
desc limit 1]; | |
if(LeadTerrSetup.size() > 0 && LeadTerrSetup[0].STatus__c == 'on') | |
{ | |
if(LeadTerrSetup[0].Next_Mass_Update_Date_Lead__c == null){ | |
System.debug('Please entry the updated date'); | |
} | |
System.savePoint savepoint = Database.setSavePoint(); | |
try{ | |
upsert LeadTerrSetup; | |
List<MassUpdateLeadJOBID__c> jobs = [select Job_ID__c from MassUpdateLeadJOBID__c]; | |
//System.debug(jobs); | |
for(MassUpdateLeadJOBID__c job : jobs) | |
{ | |
if(job.Job_ID__c != null) | |
{ | |
//System.debug('abort is firing'); | |
System.abortJob(jobs[0].Job_ID__c); | |
} | |
} | |
if(jobs.size() > 0) | |
{ | |
delete jobs; | |
} | |
Date massUpdateDate = [select Next_Mass_Update_Date_Lead__c from Territory_Setup__c where Id = :LeadTerrSetup[0].Id].Next_Mass_Update_Date_Lead__c; | |
//System.debug(massUpdateDate); | |
String year = string.valueOf(massUpdateDate.year()); | |
String month = string.valueOf(massUpdateDate.month()); | |
String day = string.valueOf(massUpdateDate.day()); | |
assignLeadToTerritoriesScheudle m = new assignLeadToTerritoriesScheudle(); | |
String sch = '0 0 1 ' + day + ' ' + month + ' ? ' + year; | |
String jobID = system.schedule(SCHEDULED_JOB_NAME, sch, m); | |
MassUpdateLeadJOBID__c newJob = new MassUpdateLeadJOBID__c(Name = 'Lead JOB', Job_ID__c = jobID); | |
Database.SaveResult e = Database.insert(newJob, false); | |
System.debug(e); | |
//insert newJob; | |
//System.debug('job scheduled successfully'); | |
} | |
catch(Exception ex){ | |
//System.debug(ex); | |
Database.rollBack(savepoint); | |
} | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@isTest | |
public class ManageLeadTerritoryControllerTest{ | |
@isTest static void testManageLeadTerritoryController(){ | |
Territory_Setup__c LeadTerrSetup = new Territory_Setup__c( | |
Next_Mass_Update_Date_Lead__c= Date.today(), | |
Status__c= 'On' | |
); | |
insert LeadTerrSetup; | |
MassUpdateLeadJOBID__c newJob = new MassUpdateLeadJOBID__c ( | |
Name = 'Test Job' | |
); | |
insert newJob; | |
ManageLeadTerritoryController.SCHEDULED_JOB_NAME = ManageLeadTerritoryController.SCHEDULED_JOB_NAME + ' ' + String.valueOf(Math.round(Math.random()*1000)) | |
Test.startTest(); | |
ManageLeadTerritoryController.massUpdateNow(); | |
ManageLeadTerritoryController.scheduleMassUpdate(); | |
Test.stopTestTest(); | |
} | |
@isTest static void testManageLeadTerritoryController2(){ | |
Territory_Setup__c LeadTerrSetup = new Territory_Setup__c( | |
Next_Mass_Update_Date_Lead__c= Date.today(), | |
Status__c= 'on' | |
); | |
insert LeadTerrSetup; | |
MassUpdateLeadJOBID__c newJob = new MassUpdateLeadJOBID__c ( | |
Name = 'Lead Job', | |
Job_ID__c = '123124' | |
); | |
insert newJob; | |
ManageLeadTerritoryController.SCHEDULED_JOB_NAME = ManageLeadTerritoryController.SCHEDULED_JOB_NAME + ' ' + String.valueOf(Math.round(Math.random()*1000)) | |
Test.startTest(); | |
ManageLeadTerritoryController.massUpdateNow(); | |
ManageLeadTerritoryController.scheduleMassUpdate(); | |
Test.stopTestTest(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment