• Akshay Phadnis 8
  • NEWBIE
  • 0 Points
  • Member since 2023

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 0
    Questions
  • 2
    Replies
Hi All
 I am facing this error from trailhead 
Challenge Not yet complete... here's what's wrong:
Closing a Maintenance Request of type 'Routine Maintenance' or 'Repair' did not join the new Maintenance Request with the correct equipment. The challenge is expecting the new Maintenance Request to be joined to the same Equipment as the closed Maintenance Request.

My Code 
For Trigger -> 


trigger Create_New_Maintenance_Request on Case (after insert,after update) {
    Create_Maintenance_Request_HelperClass.Create_Request(trigger.new);
}


For Helper Class ->

public class Create_Maintenance_Request_HelperClass {
    public static void Create_Request(list<case> request)
    {
        list<case> caseList=new list<case>();
        map<id,aggregateResult> cycle=new map<id,aggregateResult>([select maintenance_request__c Id,min(equipment__r.maintenance_cycle__c) days from Equipment_Maintenance_Item__c where maintenance_request__c!=null group by maintenance_request__c]);
        for(case c:request)
        {
            if(c.status=='Closed' && (c.Type=='Repair'||c.Type=='Routine Maintenance'))
            {
                //Creating a new Maintenance Request/Case record
                case ca=new case();
                ca.Subject='Created after closing of '+c.Id;
                ca.origin='Phone';
                ca.status='New';
                ca.Type='Routine Maintenance';
                ca.vehicle__c=c.vehicle__c;
                ca.equipment__c=c.Equipment__c;
                system.debug('Vehicle id is ->'+c.Vehicle__r.id);
                ca.date_reported__c=date.newInstance(System.now().year(),System.now().month(),System.now().day());
                
                if(cycle.get(c.id)!=null)
                {system.debug('Actual value is -> '+cycle.get(c.id).get('days'));

                ca.Date_Due__c=ca.date_reported__c.addDays(Integer.valueof(cycle.get(c.id).get('days')));
                }caseList.add(ca);
  
            }
            
        }
        insert caseList;
        
    }

}


//I  don't know why i am getting this error despite i myself tested the code

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

User-added image

  • April 05, 2021
  • Like
  • 0