Advertisement
Learnify_Rectify

Automate record creation

Jul 5th, 2024 (edited)
12,046
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.82 KB | Source Code | 1 0
  1. Automate record creation from (Superbadge Apex Specialist)
  2.  
  3. -----------------------------------------------------------
  4.  
  5. SOURCE CODE1 : MaintenanceRequestHelper
  6.  
  7. public with sharing class MaintenanceRequestHelper {
  8. public static void updateworkOrders(List<Case> updWorkOrders, Map<Id,Case> nonUpdCaseMap) {
  9. Set<Id> validIds = new Set<Id>();
  10.  
  11.  
  12. For (Case c : updWorkOrders){
  13. if (nonUpdCaseMap.get(c.Id).Status!='Closed'&& c.Status == 'Closed'){
  14. if (c.Type == 'Repair' || c.Type == 'Routine Maintenance'){
  15. validIds.add(c.Id);
  16.  
  17.  
  18. }
  19. }
  20. }
  21.  
  22.  
  23.  
  24.  
  25.  
  26. if (!validIds.isEmpty()){
  27. List<Case> newCases = new List<Case>();
  28. Map<Id,Case>
  29.  
  30.  
  31. 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)
  32. FROM Case WHERE Id IN :validIds]);
  33. Map<Id,Decimal> maintenanceCycles = new Map<ID,Decimal>();
  34. 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];
  35.  
  36. for (AggregateResult ar : results){
  37. maintenanceCycles.put((Id)
  38.  
  39.  
  40.  
  41. ar.get('Maintenance_Request__c'), (Decimal) ar.get('cycle'));
  42. }
  43.  
  44. for(Case cc : closedCasesM.values()){
  45. Case nc = new Case (
  46. ParentId = cc.Id,
  47. Status = 'New',
  48.  
  49.  
  50.  
  51.  
  52.  
  53. Subject = 'Routine Maintenance',
  54. Type = 'Routine Maintenance',
  55. Vehicle__c = cc.Vehicle__c,
  56. Equipment__c =cc.Equipment__c,
  57. Origin = 'Web',
  58. Date_Reported__c = Date.Today()
  59. );
  60.  
  61. If (maintenanceCycles.containskey(cc.Id)){
  62. nc.Date_Due__c = Date.today().addDays((Integer) maintenanceCycles.get(cc.Id));
  63. } else {
  64. nc.Date_Due__c = Date.today().addDays((Integer) cc.Equipment__r.maintenance_Cycle__c);
  65. }
  66.  
  67. newCases.add(nc);
  68. }
  69.  
  70. insert newCases;
  71. List<Equipment_Maintenance_Item__c> clonedWPs = new List<Equipment_Maintenance_Item__c>();
  72. for (Case nc : newCases){
  73.  
  74.  
  75.  
  76.  
  77.  
  78. for (Equipment_Maintenance_Item__c wp : closedCasesM.get(nc.ParentId).Equipment_Maintenance_Items__r){
  79. Equipment_Maintenance_Item__c wpClone = wp.clone();
  80. wpClone.Maintenance_Request__c = nc.Id;
  81.  
  82.  
  83. ClonedWPs.add(wpClone);
  84.  
  85. }
  86. }
  87. insert ClonedWPs;
  88. }
  89. }
  90. }
  91. --------------------------------------------------------------------------------------------
  92.  
  93. SOURCE CODE2 : MaitenanceRequest
  94.  
  95. trigger MaintenanceRequest on Case (before update, after update) {
  96. if(Trigger.isUpdate && Trigger.isAfter) {
  97. MaintenanceRequestHelper.updateworkOrders(Trigger.New, Trigger.OldMap);
  98. }
  99. }
  100.  
  101.  
  102.     
  103.  
  104.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement