function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Abhishek Malik 9Abhishek Malik 9 

APEX SUPERBADGE ERROR

Hi everyone
am trying to earn apex superbadge but am getting lots of errors like some times my trailhead account does not recognize my developer account and my helper class and trigger does not giving any error but then also my challenge is not completed yet , am sending my code also:
<************HElPER CLASS***************>

public class MaintenanceRequestHelper {

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

        if(caseList.size() > 0){
            List<Case> casesToCreate = new List<Case>();

            List<String> caseIdList = new List<String>();

            for(Case aCase : caseList){
                caseIdList.add(aCase.Id);
            }

            map<String, List<Work_Part__c>> workPartByCase = new map<String, List<Work_Part__c>>();

            for(Work_Part__c aWorkPart : [
                SELECT Id, Name, Equipment__c, Equipment__r.Maintenance_Cycle__c, Maintenance_Request__c
                FROM Work_Part__c
                WHERE Maintenance_Request__c IN :caseIdList
                AND Equipment__c != NULL
            ]){
                if(!workPartByCase.containsKey(aWorkPart.Maintenance_Request__c)){
                    workPartByCase.put(aWorkPart.Maintenance_Request__c, new List<Work_Part__c>()); 
                }

                workPartByCase.get(aWorkPart.Maintenance_Request__c).add(aWorkPart);            
            }

            for(Case aCase : caseList){

                Date dateDue = Date.today();
                Integer minMaintenanceCycle;

                if(workPartByCase.containsKey(aCase.Id)){

                    for(Work_Part__c aWorkPart : workPartByCase.get(aCase.Id)){
                        if(
                            (minMaintenanceCycle == NULL && aWorkPart.Equipment__r.Maintenance_Cycle__c != NULL && aWorkPart.Equipment__r.Maintenance_Cycle__c > 0)
                            || (minMaintenanceCycle != NULL && aWorkPart.Equipment__r.Maintenance_Cycle__c != NULL && aWorkPart.Equipment__r.Maintenance_Cycle__c < minMaintenanceCycle && aWorkPart.Equipment__r.Maintenance_Cycle__c > 0)
                        ){
                            minMaintenanceCycle = Integer.valueOf(aWorkPart.Equipment__r.Maintenance_Cycle__c);
                        }
                    }

                    if(minMaintenanceCycle != NULL){
                        dateDue = dateDue.addDays(minMaintenanceCycle);
                    }
                }

                casesToCreate.add(new Case(
                    Vehicle__c = aCase.Vehicle__c,
                    Equipment__c = aCase.Equipment__c,
                    Type = 'Routine Maintenance',
                    Subject = 'New maintenance request',
                    Date_Reported__c = Date.today(),
                    Date_Due__c = dateDue
                ));
            }

            insert casesToCreate;
        }
    }
}
<************TRIGGER***************>
trigger MaintenanceRequest on Case (before insert, after insert, before update, after update) {

    if(Trigger.isAfter){
        List<Case> caseList = new List<Case>();

        for(Case aCase : Trigger.new){

            if(aCase.IsClosed && aCase.Type != NULL && (aCase.Type.equals('Repair') || aCase.Type.equals('Routine Maintenance'))){
                caseList.add(aCase);
            }
        }

        if(caseList.size() > 0){
            MaintenanceRequestHelper.updateWorkOrders(caseList);
        }
    }
}
 
Nayana KNayana K
public class MaintenanceRequestHelper {
    
    private final static String TYPE_REPAIR = 'Repair';
    private final static String TYPE_ROUTINE_MAINTENANCE = 'Routine Maintenance';
    private final static String STATUS_CLOSED = 'Closed';
    
    public static void updateWorkOrders(Map<Id,Case> mapOldCase, List<Case> lstNewCase)
    {
        List<Case> lstCaseToInsert = new List<Case>();
        Set<Id> setCaseId = new Set<Id>();
        Map<Id,Integer> mapCaseIdToMinCycle = new Map<Id,Integer>();
        for(Case objCase : lstNewCase)
        {
            if((objCase.Type == TYPE_REPAIR || objCase.Type == TYPE_ROUTINE_MAINTENANCE)
            &&
            (objCase.Status == STATUS_CLOSED && objCase.Status != mapOldCase.get(objCase.Id).Status))
            {
                setCaseId.add(objCase.Id);
            }
        }
        
        AggregateResult[] groupedResults =  [ SELECT  MIN(Equipment__r.Maintenance_Cycle__c), Maintenance_Request__c
                                    FROM Work_Part__c
                                    WHERE Equipment__r.Maintenance_Cycle__c != NULL 
                                        AND Maintenance_Request__c IN: setCaseId
                                    GROUP BY Maintenance_Request__c
                                    ];
        for (AggregateResult ar : groupedResults)  
        {
            
            System.debug('Campaign ID' + ar.get('Maintenance_Request__c'));
            System.debug('Average amount' + ar.get('expr0'));
            
            mapCaseIdToMinCycle.put((Id)ar.get('Maintenance_Request__c'), Integer.valueOf(ar.get('expr0')));
        }
        
        
        for(Case objCase : lstNewCase)
        {
            if(setCaseId.contains(objCase.Id))
            {
                Date dateDue = Date.today();
                Case objCaseToAdd = new Case( Vehicle__c = objCase.Vehicle__c,
                    Equipment__c = objCase.Equipment__c,
                    Type = 'Routine Maintenance',
                    Subject = objCase.subject,
                    Date_Reported__c = Date.today());
                if(mapCaseIdToMinCycle.containsKey(objCase.Id))
                {
                    dateDue = dateDue.addDays(mapCaseIdToMinCycle.get(objCase.Id));
                }
                objCaseToAdd.Date_Due__c = dateDue;
                lstCaseToInsert.add(objCaseToAdd);
            }
            
        }
        
        if(!lstCaseToInsert.isEmpty())
            insert lstCaseToInsert;
    }         
}
 
trigger MaintenanceRequest on Case (before insert, after insert, before update, after update) 
{
    if(Trigger.isAfter && Trigger.isUpdate)
        MaintenanceRequestHelper.updateWorkOrders(Trigger.oldMap, Trigger.New);
}

Try this code.