Last active
November 21, 2016 19:49
-
-
Save tstachl/653996131301656e3f53 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 FetchGroupsAndUsers implements Schedulable, Database.Batchable<DeskResource>, Database.AllowsCallouts | |
{ | |
public static String CRON_EXPRESSION = '0 0 0 * * ? *'; | |
global static final DeskClient DESK_CLIENT = new DeskClient(new Map<String, String>{ | |
'username' => '[email protected]', | |
'password' => 'somepassword', | |
'subdomain' => 'devel' | |
}); | |
global Iterable<DeskResource> start(Database.BatchableContext ctx) | |
{ | |
return DESK_CLIENT.getResource('groups').getEntries(); | |
} | |
global void execute(Database.BatchableContext ctx, List<DeskResource> scope) | |
{ | |
Map<String, User> userMap = new Map<String, User>(); | |
for (User u : [Select Email From User]) { | |
userMap.put(u.Email, u); | |
} | |
List<User> users = new List<User>(); | |
for (DeskResource res : scope) { | |
for (DeskResource usr : res.getResource('users').getEntries()) { | |
User u = userMap.get((String)usr.get('email')); | |
if (u != null /* && (u.DeskGroupId__c != res.getHref() || u.DeskUserId__c != usr.getHref()) */){ | |
/* | |
u.DeskGroupId__c = g.getHref(); | |
u.DeskUserId__c = usr.getHref(); | |
users.add(u); | |
*/ | |
} | |
} | |
} | |
if (users.size() > 0) update(users); | |
} | |
global void execute(SchedulableContext ctx) | |
{ | |
FetchGroupsAndUsers batch = new FetchGroupsAndUsers(); | |
// set batch size to five so we don't have problems with callouts | |
Database.executeBatch(batch, 5); | |
} | |
global void finish(Database.BatchableContext ctx) | |
{} | |
global String schedule() { return schedule('fetchGroupsAndUsers'); } | |
global String schedule(String jobName) | |
{ | |
return System.schedule(jobName, FetchGroupsAndUsers.CRON_EXPRESSION, new FetchGroupsAndUsers()); | |
} | |
global static void updateDeskCase(Integer deskCaseNumber, String deskGroupId, String deskUserId) | |
{ | |
updateDeskCase(String.valueOf(deskCaseNumber), deskGroupId, deskUserId); | |
} | |
@future(callout=true) | |
global static void updateDeskCase(String deskCaseNumber, String deskGroupId, String deskUserId) | |
{ | |
DESK_CLIENT.getResource('users').find(deskCaseNumber).patch(new Map<String, Object>{ | |
'_links' => new Map<String, Object>{ | |
'assigned_user' => new Map<String, Object>{ | |
'href' => deskUserId | |
}, | |
'assigned_group' => new Map<String, Object>{ | |
'href' => deskGroupId | |
} | |
} | |
}); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment