Skip to main content

Hi Experts

I need quick help on one of the trigger i have written. I have a trigger on event object and what it does is updating a subject field with "Cencelled" word in front of the subject when one checkbox is checked.

Subject field : Subject__c

Checkbox : eventcancelled__c

trigger : public static void updateSubjectOnActivity(List<Event> newItems , Map<Id,Event> oldItems) {        for(Event currentEvent : newItems){

            if( (oldItems != null && currentEvent.GAM_MeetingCancelled__c != oldItems.get(currentEvent.Id).GAM_MeetingCancelled__c && currentEvent.GAM_MeetingCancelled__c == true )){

                currentEvent.Subject = 'CANCELLED' + ' - ' + currentEvent.Subject;

            }

            if( (oldItems != null && currentEvent.GAM_MeetingCancelled__c != oldItems.get(currentEvent.Id).GAM_MeetingCancelled__c && currentEvent.GAM_MeetingCancelled__c == false )){

                currentEvent.Subject = currentEvent.Subject ;

            }

        }

    }

This is working fine for me. Now i want to remove the "Cancelled" word from subject when again checkbox is unchecked. Not sure how should i take the first oldest value again in my map. 

Please help and thanks in advance..!!

Thank you
5 个回答
  1. 2021年8月24日 17:53
    Hi Ronu,

    Updated code:

     

    trigger : public static void updateSubjectOnActivity(List<Event> newItems , Map<Id,Event> oldItems) { for(Event currentEvent : newItems){

    if( (oldItems != null && currentEvent.GAM_MeetingCancelled__c != oldItems.get(currentEvent.Id).GAM_MeetingCancelled__c && currentEvent.GAM_MeetingCancelled__c == true )){

    currentEvent.Subject = 'CANCELLED' + ' - ' + currentEvent.Subject;

    }

    if( (oldItems != null && oldItems.get(currentEvent.Id).GAM_MeetingCancelled__c ==true && currentEvent.GAM_MeetingCancelled__c == false )){ if (currentEvent.Subject.contains('CANCELLED -'))

        {

        currentEvent.Subject = currentEvent.Subject.substringAfter('CANCELLED -') ; 

    } }

    }

    }

    If it helps mark it as best answer.

    Thanks!
0/9000