• Sree valli 12
  • NEWBIE
  • 0 Points
  • Member since 2017

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 1
    Questions
  • 6
    Replies
Below is my code

public class MaintenanceRequestHelper {

     

    public static void updateWorkOrders(List<case>ClosedCaseList){

        // update workorders

         

        list<case> insertCaseList = new list<case>();

         

        for(Case c : ClosedCaseList)

             

            {

                Case newCase = new Case();

                newCase.Type = 'Routine Maintenance';

                newCase.Status = 'New';

                newCase.Vehicle__c = c.Vehicle__c;

                newCase.Subject =  c.Subject;

                newCase.Date_Reported__c = Date.today();

                newCase.Date_Due__c = Date.today();

                newCase.Equipment__c = c.Equipment__c;

                insertCaseList.add(newCase);

            }

         

        if(insertCaseList.size()>0){

        insert insertCaseList;

        }

    }

         

}




Trigger

trigger MaintenanceRequest on Case (before update, after update) {

     

     List<case>ClosedCaseList = [SELECT Id, subject, Vehicle__c, vehicle__r.Name, equipment__c, type FROM Case WHERE status = 'closed'];

     

     for(case c : Trigger.New){

         

        if(c.type == 'Repair' || c.type =='Routine Maintenance'){

             

            MaintenanceRequestHelper.updateWorkOrders(ClosedCaseList);

        }

    }

}
 
Below is my code

public class MaintenanceRequestHelper {

     

    public static void updateWorkOrders(List<case>ClosedCaseList){

        // update workorders

         

        list<case> insertCaseList = new list<case>();

         

        for(Case c : ClosedCaseList)

             

            {

                Case newCase = new Case();

                newCase.Type = 'Routine Maintenance';

                newCase.Status = 'New';

                newCase.Vehicle__c = c.Vehicle__c;

                newCase.Subject =  c.Subject;

                newCase.Date_Reported__c = Date.today();

                newCase.Date_Due__c = Date.today();

                newCase.Equipment__c = c.Equipment__c;

                insertCaseList.add(newCase);

            }

         

        if(insertCaseList.size()>0){

        insert insertCaseList;

        }

    }

         

}




Trigger

trigger MaintenanceRequest on Case (before update, after update) {

     

     List<case>ClosedCaseList = [SELECT Id, subject, Vehicle__c, vehicle__r.Name, equipment__c, type FROM Case WHERE status = 'closed'];

     

     for(case c : Trigger.New){

         

        if(c.type == 'Repair' || c.type =='Routine Maintenance'){

             

            MaintenanceRequestHelper.updateWorkOrders(ClosedCaseList);

        }

    }

}
 
I've finally completed step 4. Test automation logic. 

It took me long, because of incorrect requirement in spec. 
The requirement is: 
When an existing maintenance request of type Repair or Routine Maintenance is Closed, you create a new maintenance request for a future routine checkup. [...] The Subject should not be null and [...]

Unfortunatelly test checks something completelly different. See below line from error log:  
Execute Anonymous: System.assertEquals(402, [select count() from Case where subject like '%AMC Spirit%']);
Moreover, the error information from within Trailhead page suggests, that this is a problem with bulk processing. 

<joke> So, if you want to finish step 4 of those badge you need to set the subject to AMC Spirit in case created by your trigger </joke>