Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Automate record creation from (Superbadge Apex Specialist)
- -----------------------------------------------------------
- SOURCE CODE1 : MaintenanceRequestHelper
- public with sharing class MaintenanceRequestHelper {
- public static void updateworkOrders(List<Case> updWorkOrders, Map<Id,Case> nonUpdCaseMap) {
- Set<Id> validIds = new Set<Id>();
- For (Case c : updWorkOrders){
- if (nonUpdCaseMap.get(c.Id).Status!='Closed'&& c.Status == 'Closed'){
- if (c.Type == 'Repair' || c.Type == 'Routine Maintenance'){
- validIds.add(c.Id);
- }
- }
- }
- if (!validIds.isEmpty()){
- List<Case> newCases = new List<Case>();
- Map<Id,Case>
- closedCasesM = new Map<Id,Case>([SELECT Id, Vehicle__c, Equipment__c, Equipment__r.Maintenance_Cycle__c, (SELECT Id, Equipment__c , Quantity__c FROM Equipment_Maintenance_Items__r)
- FROM Case WHERE Id IN :validIds]);
- Map<Id,Decimal> maintenanceCycles = new Map<ID,Decimal>();
- AggregateResult[] results = [SELECT Maintenance_Request__c, MIN(Equipment__r.Maintenance_Cycle__c)cycle FROM Equipment_Maintenance_Item__c WHERE Maintenance_Request__c IN :ValidIds GROUP BY Maintenance_Request__c];
- for (AggregateResult ar : results){
- maintenanceCycles.put((Id)
- ar.get('Maintenance_Request__c'), (Decimal) ar.get('cycle'));
- }
- for(Case cc : closedCasesM.values()){
- Case nc = new Case (
- ParentId = cc.Id,
- Status = 'New',
- Subject = 'Routine Maintenance',
- Type = 'Routine Maintenance',
- Vehicle__c = cc.Vehicle__c,
- Equipment__c =cc.Equipment__c,
- Origin = 'Web',
- Date_Reported__c = Date.Today()
- );
- If (maintenanceCycles.containskey(cc.Id)){
- nc.Date_Due__c = Date.today().addDays((Integer) maintenanceCycles.get(cc.Id));
- } else {
- nc.Date_Due__c = Date.today().addDays((Integer) cc.Equipment__r.maintenance_Cycle__c);
- }
- newCases.add(nc);
- }
- insert newCases;
- List<Equipment_Maintenance_Item__c> clonedWPs = new List<Equipment_Maintenance_Item__c>();
- for (Case nc : newCases){
- for (Equipment_Maintenance_Item__c wp : closedCasesM.get(nc.ParentId).Equipment_Maintenance_Items__r){
- Equipment_Maintenance_Item__c wpClone = wp.clone();
- wpClone.Maintenance_Request__c = nc.Id;
- ClonedWPs.add(wpClone);
- }
- }
- insert ClonedWPs;
- }
- }
- }
- --------------------------------------------------------------------------------------------
- SOURCE CODE2 : MaitenanceRequest
- trigger MaintenanceRequest on Case (before update, after update) {
- if(Trigger.isUpdate && Trigger.isAfter) {
- MaintenanceRequestHelper.updateworkOrders(Trigger.New, Trigger.OldMap);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement