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
Tapas TuloTapas Tulo 

trigger on note not working

Hi ,

I have written a trigger on NOTE ,which will update a checkbox called note_availbale__c on event object.

scenario:
if there is a note the Note_avilable__c should be checked

Here My Code:-
trigger NoteAvilable on Note (after insert,before delete,after update){

   if(trigger.isinsert){
       List<Event> co = New List<event>([select id from Event where id =: Trigger.New[0].ParentId]);
       If(co.size()>0){            
       co[0].Note_Available__c = True;
              update co;        
     }
}

  if(trigger.isdelete){
  List<Event> co = [select id from Event where id =: Trigger.old[0].ParentId];        
   If(co.size()>0){            
   co[0].Note_Available__c = false;            
    update co;        
    }
  }
 }

Its not firing .

Thanks In Advance
Tapas
Balayesu ChilakalapudiBalayesu Chilakalapudi
Try like this,
trigger NoteAvilable on Note (after insert,before delete,after update){
  Set<Id> newparentSet=new Set<Id>();
  Set<Id> oldparentSet=new Set<Id>();

  for(Note n:Trigger.new)
       newparentSet.add(n.ParentId);
  for(Note p:Trigger.old)
       oldparentSet.add(p.ParentId);  

   if(trigger.isinsert){    
       List<Event> co = New List<event>([select id from Event where id IN: newparentSet]);
       If(co.size()>0){            
       co[0].Note_Available__c = True;
              update co;        
     }
   }

  if(trigger.isdelete){
  List<Event> co = [select id from Event where id IN :oldparentSet];        
   If(co.size()>0){            
   co[0].Note_Available__c = false;            
    update co;        
    }
  }
 }

Let us know if it helps you.
Tapas TuloTapas Tulo
Hi Bala,

Thanks for your response, still the code is not working i mean the trigger is not firing.

Thanks
Tapas
rajat Maheshwari 6rajat Maheshwari 6

Hi Tapas,

Please use below code snippet and let me know the results :)

trigger NoteAvilable on Note (after insert,after delete,after update){
  Set<Id> parentSet=new Set<Id>();
  List<event> Evnt_Update = new List<Event>();

if(trigger.isAfter && (Trigger.isInsert || Trigger.isUpdate))
  {
     for(Note note_Recd : Trigger.new)
       {
          String str = note_Recd.ParentId;

           if(str.startsWith('00U'))
                 parentSet.add(note_Recd.ParentId);
        }
   }

if(trigger.isAfter && Trigger.isDelete)
   {
       for(Note note_Recd_Old : Trigger.old)
       {
          String str = note_Recd_Old.ParentId;

           if(str.startsWith('00U'))
                 parentSet.add(note_Recd_Old.ParentId);
        }
    }

 Map<Id,Integer> mp_Count = new Map<Id,Integer>();

for(AggregateResult aggResult : [Select ParentId,Count(Id) from Note where ParentId IN:parentSet group by ParentId])
   {
       mp_Count.put((Id)aggResult.get('ParentId'),(Integer)aggResult.get('expr0'));
   }

for(Event evt : [Select Id,Note_Available__c from Event where Id IN:parentSet])
   {
       if(mp_Count!=null && mp_Count.containsKey(evt.id) && mp_Count.get(evt.id)>0)
           {
               evt.Note_Available__c = True;
               Evnt_Update.add(evt);
            }
        else
           {
              evt.Note_Available__c = false;
               Evnt_Update.add(evt);
            }
      }
            

  if(Evnt_Update!=null && !Evnt_Update.isEmpty())
      update  Evnt_Update;        
        
    }

Thanks
Rajat Maheshwari
rajatzmaheshwari@gmail.com
Eric PepinEric Pepin
If trigger is not firing on Insert, Update or Delete, then the trigger must be Inactive. Check Active checkbox on Trigger to make sure that it is Active.
HARSHIL U PARIKHHARSHIL U PARIKH
Below Trigger will help you count the number of notes records on Event object then just make a formula that says when total_notes__c is greater then zero, Note_avilable__c should be checked this way you will be counting numbers of notes records as well as Note_avilable__c check-box.

Trigger for counting notes records.
 
Trigger NoteExists On Note(After Insert, After Update, After Delete, After UnDelete)
{
    List<Id> eventIds = New List<Id>();

        If(Trigger.IsInsert || Trigger.IsUpdate || Trigger.IsUnDelete)
        {
            For(Note n: Trigger.New)
            {
                String str = n.ParentId;    
                 If(str.startsWith('00U'))
                 {
                     eventIds.add(n.ParentId);
                 }         
            }
        }
        If(Trigger.IsDelete)
        {
            For(Note n: Trigger.Old)
            {
                String str = n.ParentId;    
                 If(str.startsWith('00U'))
                 {
                     eventIds.add(n.ParentId);
                 }
            }
        }
        
    List<Event> finalEventListToUpdate = New List<Event>();
    
        For(Event EveryEvt : [Select Id, total_notes__c, (Select Id FROM Notes) FROM Event WHERE Id =:eventIds])
        {
            EveryEvt.total_notes__c = EveryEvt.Notes.Size();
            finalEventListToUpdate.add(EveryEvt);
        }    
        try{
                If(!finalEventListToUpdate.IsEmpty())
                {
                    update finalEventListToUpdate;
                }
           }
        Catch(Exception e)
        {
            system.debug('Thrown Exception for NoteExists Trigger Is:: ' + e.getMessage());
        }
}