Advertisement
Guest User

Untitled

a guest
Oct 25th, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.42 KB | None | 0 0
  1. public class Account_CloneCasesOnAnniversary implements Database.Batchable<SObject>
  2. {
  3. String errors = '';
  4. integer todayday = date.today().day();
  5. Integer currentmonth = date.today().month();
  6.  
  7. public Database.QueryLocator start(Database.BatchableContext bc) {
  8. return Database.getQueryLocator('SELECT Anniversary__c, NSCHBC__c, Status__c, ID, (SELECT Id, Anniversary__c, OwnerId, ContactId, ContactEmail, ContactPhone, Description, Priority, RecordTypeId, Subject FROM cases order by CreatedDate) from Account WHERE DAY_IN_MONTH(Anniversary__c) =:todayday AND CALENDAR_MONTH(Anniversary__c ) =: currentmonth');
  9. }
  10.  
  11. public void execute(Database.BatchableContext bc, List<Account> scope) {
  12. Id Activation_Action_Plan_RecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByName().get('Activation Action Plan').getRecordTypeId();
  13. Id Master_Action_Plan_RecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByName().get('Master Action Plan').getRecordTypeId();
  14. Id NSCHBC_Action_Plan_RecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByName().get('NSCHBC Action Plan').getRecordTypeId();
  15. Id Total_Core_Action_Plan_RecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByName().get('Total Core Action Plan').getRecordTypeId();
  16.  
  17. if(scope.isEmpty()) return;
  18.  
  19.  
  20. Map<Id, Case> clonedCasesMap = new Map<Id,Case>();
  21. Map<Id, list<Case>> NSCHBCAccountToCasesMap = new Map<Id, list<Case>>();
  22. for(Account account : scope) {
  23. // Clone cases on Anniversary
  24. if(account.cases!=null && account.cases.size() > 0) {
  25. list<Case> lstCase = new list<Case>();
  26. for(Case objcase : account.cases){
  27. // Fetch only those Cases to be cloned whose Record type is of
  28. if(objcase.RecordTypeId == Activation_Action_Plan_RecordTypeId
  29. || objcase.RecordTypeId == Master_Action_Plan_RecordTypeId
  30. || objcase.RecordTypeId ==NSCHBC_Action_Plan_RecordTypeId
  31. || objcase.RecordTypeId ==Total_Core_Action_Plan_RecordTypeId){
  32. Case cloneCase = new Case();
  33. cloneCase = objcase.clone();
  34. clonedCasesMap.put(objcase.Id,cloneCase);
  35. }
  36. }
  37. }
  38.  
  39. // Check whether Account is of NSCHBS type
  40. if(account.NSCHBC__c && account.Status__c == 'Active') {
  41. NSCHBCAccountToCasesMap.put(account.Id, account.cases);
  42. }
  43. system.debug('--- NSCHBCAccountToCasesMap --->' + NSCHBCAccountToCasesMap);
  44. }
  45.  
  46. if(!clonedCasesMap.isEmpty()) {
  47. Database.SaveResult[] srList = Database.insert(clonedCasesMap.values(), false);
  48. Integer index = 0;
  49.  
  50. for(Database.SaveResult result : srList ) {
  51. if(!result.isSuccess()) {
  52. String errMsg = result.getErrors()[0].getMessage();
  53. }
  54. index++;
  55. }
  56. }
  57.  
  58. // create task on cases
  59. List<Task> taskCreateList = new List<Task>();
  60. if(!NSCHBCAccountToCasesMap.isEmpty()) {
  61. for(Id accountId : NSCHBCAccountToCasesMap.keyset()){
  62. if(NSCHBCAccountToCasesMap.get(accountId) != null && NSCHBCAccountToCasesMap.get(accountId).size() > 0) {
  63. for(Case caseObj : NSCHBCAccountToCasesMap.get(accountId)) {
  64. Task createTask = new Task();
  65. createTask.subject = 'QCR Anniversary';
  66. createTask.ActivityDate = caseObj.Anniversary__c + 330;
  67. createTask.OwnerId = caseObj.OwnerId;
  68. taskCreateList.add(createTask);
  69. }
  70. }
  71. }
  72.  
  73. }
  74.  
  75. // check for task list is empty or not
  76. if(!taskCreateList.isEmpty()) {
  77. // insert task list Of Task which were cloned
  78. Database.SaveResult[] srListTask = Database.insert(taskCreateList, false);
  79. Integer indexTask = 0;
  80. System.debug('Created Task is' +srListTask);
  81.  
  82. for(Database.SaveResult resultTask : srListTask ) {
  83. if(!resultTask.isSuccess()) {
  84. String errMsgTask = resultTask.getErrors()[0].getMessage();
  85. }
  86. indexTask++;
  87. }
  88. }
  89. }
  90.  
  91. public void finish(Database.BatchableContext context) {
  92.  
  93. }
  94. }
  95.  
  96. @isTest
  97. private class Account_CloneCasesOnAnniversaryTest {
  98.  
  99. static testmethod void test() {
  100.  
  101. Account objAcc = new Account ();
  102. objAcc.name = 'TestClass';
  103. objAcc.Anniversary__c = date.today();
  104. objAcc.NSCHBC__c=true;
  105. objAcc.Status__c='Active';
  106. insert objAcc;
  107.  
  108. Id Total_Core_Action_Plan_RecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByName().get('Total Core Action Plan').getRecordTypeId();
  109. Case objCase = new Case();
  110. objCase.AccountId = objAcc.Id;
  111. objCase.RecordTypeId=Total_Core_Action_Plan_RecordTypeId;
  112. insert objCase;
  113.  
  114.  
  115. Task objTask = new Task();
  116. ObjTask.WhatId = ObjCase.Id;
  117. insert objTask;
  118.  
  119.  
  120. Test.startTest();
  121. Account_CloneCasesOnAnniversary c = new Account_CloneCasesOnAnniversary();
  122. Database.executeBatch(c);
  123. Test.stopTest();
  124.  
  125. // Verify merchandise items got deleted
  126. Integer i = [SELECT COUNT() FROM Case];
  127. System.assertEquals(i, 2);
  128.  
  129. Integer j = [select count() from Task];
  130. system.assertEquals(j,2);
  131.  
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement