Advertisement
Guest User

Batchuserabsence

a guest
Jul 16th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.84 KB | None | 0 0
  1. global class BatchUserAbsence implements Database.Batchable<sObject>, Database.Stateful {
  2.  
  3. List<User> usersToUpdate {get; set;}
  4. Map<Id, TimeReport__c> ownerIdToTrMap;
  5.  
  6. global Database.querylocator start(Database.BatchableContext bc) {
  7. System.debug(LoggingLevel.WARN, '@# start');
  8. usersToUpdate = new List<User>();
  9. ownerIdToTrMap = new Map<Id, TimeReport__c>();
  10. Date today = Date.today();
  11. String query = 'SELECT Date__c, AbsenceEndDate__c, ParentTimeReportId__r.Date__c, ParentTimeReportId__r.AbsenceEndDate__c, ReplacementEmployeeId__r.OwnerId, Employee__r.OwnerId '
  12. + 'FROM timereport__c '
  13. + 'WHERE AbsenceType__c != null AND Status__c = \'Accepted\' AND Date__c =: today';
  14. System.debug(LoggingLevel.WARN, '@# query ' + query);
  15. return Database.getQueryLocator(query);
  16. }
  17.  
  18. global void execute(Database.BatchableContext bc, List<sObject> scope) {
  19. System.debug(LoggingLevel.WARN, '@# scope ' + scope);
  20.  
  21. for (sObject obj : scope) {
  22. TimeReport__c tr = (TimeReport__c)obj;
  23. ownerIdToTrMap.put(tr.Employee__r.OwnerId, tr);
  24. }
  25.  
  26. System.debug(LoggingLevel.WARN, '@# mapa ' + ownerIdToTrMap);
  27.  
  28. List<User> users = [SELECT AbsenceStartDate__c, AbsenceEndDate__c, AbsenceReplacementUser__c FROM User WHERE Id IN: ownerIdToTrMap.keySet()];
  29.  
  30. System.debug(LoggingLevel.WARN, '@# users ' + users);
  31.  
  32. for (User user : users) {
  33. if(ownerIdToTrMap.containsKey(user.Id)) {
  34. TimeReport__c tr = ownerIdToTrMap.get(user.Id);
  35. user.AbsenceStartDate__c = tr.ParentTimeReportId__r.Date__c != null ? tr.ParentTimeReportId__r.Date__c : tr.Date__c;
  36. user.AbsenceEndDate__c = tr.AbsenceEndDate__c != NULL ? tr.AbsenceEndDate__c : tr.ParentTimeReportId__r.AbsenceEndDate__c;
  37. if (tr.ReplacementEmployeeId__c != null) {
  38. user.AbsenceReplacementUser__c = tr.ReplacementEmployeeId__r.OwnerId;
  39. }
  40. } else {
  41. user.AbsenceStartDate__c = null;
  42. user.AbsenceEndDate__c = null;
  43. user.AbsenceReplacementUser__c = null;
  44. }
  45. }
  46.  
  47. System.debug(LoggingLevel.WARN, users);
  48. usersToUpdate.addAll(users);
  49. }
  50.  
  51. global void finish(Database.BatchableContext bc) {
  52.  
  53. update usersToUpdate;
  54.  
  55. //usuwam przypisany urlop jak sie skonczyl
  56. List<User> users = [SELECT AbsenceStartDate__c, AbsenceEndDate__c, AbsenceReplacementUser__c FROM User WHERE AbsenceStartDate__c != NULL];
  57. for (User user : users) {
  58. if(!ownerIdToTrMap.containsKey(user.Id)) {
  59. user.AbsenceStartDate__c = null;
  60. user.AbsenceEndDate__c = null;
  61. user.AbsenceReplacementUser__c = null;
  62. }
  63. }
  64.  
  65. update users;
  66.  
  67. }
  68.  
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement