-
-
Save dylanmensaert/176a21b78e47fd6d57b13c1023672795 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
public class MaintenanceRequestHelper { | |
public static void updateWorkOrders(List<Case> caseList){ | |
Map<Id, Case> caseToNewCaseMap = new Map<Id, Case>(); | |
for(Case caseInstance : caseList) | |
{ | |
Case oldCase = (case)Trigger.oldMap.get(caseInstance.Id); | |
if(caseInstance.Status == 'Closed' && oldCase.Status != 'Closed' && (caseInstance.Type == 'Repair' || caseInstance.Type == 'Routine Maintenance')) | |
{ | |
Case newCase = caseInstance.clone(false); | |
newCase.Date_Reported__c = Date.today(); | |
newCase.Status = 'New'; | |
newCase.Type = 'Routine Maintenance'; | |
caseToNewCaseMap.put(caseInstance.Id, newCase); | |
} | |
} | |
insert caseToNewCaseMap.values(); | |
List<Work_Part__c> workPartList = [SELECT Id, Equipment__c FROM Work_Part__c WHERE Maintenance_Request__c IN :caseToNewCaseMap.keySet() ORDER BY Equipment__r.Maintenance_Cycle__c]; | |
List<Work_Part__c> newWorkPartList = new List<Work_Part__c>(); | |
Set<Id> caseIds = new Set<Id>(); | |
for(Work_Part__c workPart : workPartList) | |
{ | |
Work_Part__c newWorkPart = workPart.clone(false); | |
Case newCase = caseToNewCaseMap.get(workPart.Maintenance_Request__c); | |
newWorkPart.Maintenance_Request__c = newCase.Id; | |
newWorkPartList.add(newWorkPart); | |
if(!caseIds.contains(workPart.Maintenance_Request__c)) | |
{ | |
newCase.Date_DUe__c = Date.today().addDays((Integer)workPart.Equipment__r.Maintenance_Cycle__c); | |
caseIds.add(workPart.Maintenance_Request__c); | |
} | |
} | |
update caseToNewCaseMap.values(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment