Skip to main content

Hi,

Can Any one suggest  me the reason for error. Here is my below code.

Apex Class:

public with sharing class MaintenanceRequestHelper {

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

List<case> newCases = new List<Case>();

Map<String,Integer> result=getDueDate(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.ProductId=c.ProductId;

newCase.Date_Reported__c=Date.today();

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);

}

}

insert newCases;

}

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() 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;

}

}

Apex Trigger;

trigger MaintenanceRequest on Case (after update) {

// ToDo: Call MaintenanceRequestHelper.updateWorkOrders

MaintenanceRequestHelper.updateWorkOrders(Trigger.New);

}

 

apex specialist challenge 1

6 respuestas
  1. 5 abr 2021, 13:38

    Trggier:

    trigger MaintenanceRequest on Case (before update, after update) { // ToDo: Call MaintenanceRequestHelper.updateWorkOrders if(Trigger.isAfter) MaintenanceRequestHelper.updateWorkOrders(Trigger.New); }

    Apex:

    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;

    }

    }