KEMBAR78
Automate Case | PDF | Computer Programming | Software Engineering
0% found this document useful (0 votes)
7 views2 pages

Automate Case

Uploaded by

shiv
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views2 pages

Automate Case

Uploaded by

shiv
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

public with sharing class MaintenanceRequestHelper {

public static void updateWorkOrders(List<Case> caseList) {


List<case> newCases = new List<Case>();
Map<String,Integer> result=getDueDate(caseList);
list<Equipment_Maintenance_Item__c> itemsListToinsert= new
list<Equipment_Maintenance_Item__c>();
Map<String,list<Equipment_Maintenance_Item__c>>
resultItmes=getMaintainanceItems(caseList);
for(Case c : caseList){
if(c.status=='closed')
if(c.type=='Repair' || c.type=='Routine Maintenance'){
Case newCase = new Case();
newCase.Status='New';
newCase.Origin='web';
newCase.Type='Routine Maintenance';
newCase.Subject='Routine Maintenance of Vehicle';
newCase.Vehicle__c=c.Vehicle__c;
newCase.Equipment__c=c.Equipment__c;
newCase.Date_Reported__c=Date.today();
newcase.Cloned_Case_Id__c=c.Id;
if(result.get(c.Id)!=null)
newCase.Date_Due__c=Date.today()+result.get(c.Id);
else
newCase.Date_Due__c=Date.today();
newCases.add(newCase);
}
}
if(newCases.size()>0) {
insert newCases;
for(Case c : newCases){
List<Equipment_Maintenance_Item__c> temp =
resultItmes.get(c.Cloned_Case_Id__c);
if(temp !=null){
for(Equipment_Maintenance_Item__c row:temp){
Equipment_Maintenance_Item__c newitem = new
Equipment_Maintenance_Item__c();
newitem.Equipment__c=row.Equipment__c;
newitem.Maintenance_Request__c= c.Id;
newitem.Quantity__c= row.Quantity__c;
itemsListToinsert.add(newitem);
}
}
}
}
if(itemsListToinsert.size()>0){
insert itemsListToinsert;
}
}
//
public static Map<String,Integer> getDueDate(List<case> CaseIDs){
Map<String,Integer> result = new Map<String,Integer>();
Map<Id, case> caseKeys = new Map<Id, case> (CaseIDs);
List<AggregateResult> wpc=[
select
Maintenance_Request__r.ID

cID,min(Equipment__r.Maintenance_Cycle__c)cycle
from
Equipment_Maintenance_Item__c
where
Maintenance_Request__r.ID
in :caseKeys.keySet()
and

Equipment__r.Maintenance_Cycle__c != null
group by
Maintenance_Request__r.ID
];
for(AggregateResult res :wpc){
Integer addDays=0;
if(res.get('cycle')!=null)
addDays+=Integer.valueOf(res.get('cycle'));
result.put((String)res.get('cID'),addDays);
}
return result;
}

public static Map<String,list<Equipment_Maintenance_Item__c>>


getMaintainanceItems(List<case> CaseIDs){
Map<String,list<Equipment_Maintenance_Item__c>> mapofMaintainanceItems =
new Map<String,list<Equipment_Maintenance_Item__c>>();
Map<Id, case> caseKeys = new Map<Id, case> (CaseIDs);
list<Equipment_Maintenance_Item__c> lstrec =
new list<Equipment_Maintenance_Item__c>([
select
id,

Maintenance_Request__c,

Equipment__c,Quantity__c
from

Equipment_Maintenance_Item__c
where

Maintenance_Request__r.ID in :caseKeys.keySet()
]);

for(Equipment_Maintenance_Item__c row:lstrec) {
if (mapofMaintainanceItems.containsKey(row.Maintenance_Request__c)) {
List<Equipment_Maintenance_Item__c> temp =
mapofMaintainanceItems.get(row.Maintenance_Request__c);
temp.add(row);

mapofMaintainanceItems.put(row.Maintenance_Request__c, temp);
}
else{
mapofMaintainanceItems.put(row.Maintenance_Request__c,
new
List<Equipment_Maintenance_Item__c> { row });
}
}
return mapofMaintainanceItems;
}
}

You might also like