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
Sergio Ruiz Barrios 5Sergio Ruiz Barrios 5 

Trigger Doubt

Hi All,

I have a trigger that every time a record is created it duplicates it in the Activities object (as an event). I need to modify the trigger to every time a record is updated, the Events gets updated too and not create a different Event. 

trigger CLONAREVENTOS on Visita__c (after insert) {
List<Event> newevento = new List<Event>();
  for (Visita__c visita: Trigger.new) {

 Event event = new Event();
 event.Subject= Visita.name;
 event.StartDateTime= Visita.Fecha_Inicio__c;
 event.EndDateTime=  Visita.Fecha_Fin__c;
 event.Anunciante_o_Agencia__c=  Visita.Anunciante_Agencia__c;
 event.OwnerId=Visita.CreatedById;
 event.Contacto__c=  Visita.contacto_visita__c;
 event.WhatId=Visita.Id;
    newevento .add(event);
  }
  insert newevento ;

}

Thanks All!
Best Answer chosen by Sergio Ruiz Barrios 5
Amit Chaudhary 8Amit Chaudhary 8
Please try to update your code like below
trigger CLONAREVENTOS on Visita__c (after insert ,after Update ) 
{

	if(Trigger.isInsert)
	{
		List<Event> newevento = new List<Event>();
		for (Visita__c visita: Trigger.new) 
		{
			Event event = new Event();
			event.Subject= Visita.name;
			event.StartDateTime= Visita.Fecha_Inicio__c;
			event.EndDateTime=  Visita.Fecha_Fin__c;
			event.Anunciante_o_Agencia__c=  Visita.Anunciante_Agencia__c;
			event.OwnerId=Visita.CreatedById;
			event.Contacto__c=  Visita.contacto_visita__c;
			event.WhatId=Visita.Id;
			
			newevento .add(event);
		}
		
		if(newevento.size() > 0 )
		{
			insert newevento ;
		}	
	}
	else if (Trigger.isUpdate)
	{
		Set<ID> setVisitaId = new Set<Id>();
		for (Visita__c visita: Trigger.new) 
		{
			setVisitaId.add(visita.id);
		}
		List<Event> lstEvent =  [select id ,Subject,StartDateTime,EndDateTime,Anunciante_o_Agencia__c,OwnerId,Contacto__c,WhatId from Event where WhatId in :setVisitaId ];
		
		Map<Id,Event> MapVisitaWiseEvent = new Map<Id,Event>();
		for(Event e: lstEvent)
		{
			MapVisitaWiseEvent.put(e.whatid ,e);
		}
		
		List<Event> EventToUpdate = new List<Event>();
		for (Visita__c visita: Trigger.new) 
		{
			if(MapVisitaWiseEvent.containsKey(visita.id))
			{
				Event event = MapVisitaWiseEvent.get(visita.id);
				event.Subject= Visita.name;
				event.StartDateTime= Visita.Fecha_Inicio__c;
				event.EndDateTime=  Visita.Fecha_Fin__c;
				event.Anunciante_o_Agencia__c=  Visita.Anunciante_Agencia__c;
				event.OwnerId=Visita.CreatedById;
				event.Contacto__c=  Visita.contacto_visita__c;
				event.WhatId=Visita.Id;
				
				EventToUpdate.add(event);
				
			}
		}
		if(EventToUpdate.size() > 0 )
		{
			update EventToUpdate;
		}
	}
}

Let us know if this will help you

All Answers

Amit Chaudhary 8Amit Chaudhary 8
Please try to update your code like below
trigger CLONAREVENTOS on Visita__c (after insert ,after Update ) 
{

	if(Trigger.isInsert)
	{
		List<Event> newevento = new List<Event>();
		for (Visita__c visita: Trigger.new) 
		{
			Event event = new Event();
			event.Subject= Visita.name;
			event.StartDateTime= Visita.Fecha_Inicio__c;
			event.EndDateTime=  Visita.Fecha_Fin__c;
			event.Anunciante_o_Agencia__c=  Visita.Anunciante_Agencia__c;
			event.OwnerId=Visita.CreatedById;
			event.Contacto__c=  Visita.contacto_visita__c;
			event.WhatId=Visita.Id;
			
			newevento .add(event);
		}
		
		if(newevento.size() > 0 )
		{
			insert newevento ;
		}	
	}
	else if (Trigger.isUpdate)
	{
		Set<ID> setVisitaId = new Set<Id>();
		for (Visita__c visita: Trigger.new) 
		{
			setVisitaId.add(visita.id);
		}
		List<Event> lstEvent =  [select id ,Subject,StartDateTime,EndDateTime,Anunciante_o_Agencia__c,OwnerId,Contacto__c,WhatId from Event where WhatId in :setVisitaId ];
		
		Map<Id,Event> MapVisitaWiseEvent = new Map<Id,Event>();
		for(Event e: lstEvent)
		{
			MapVisitaWiseEvent.put(e.whatid ,e);
		}
		
		List<Event> EventToUpdate = new List<Event>();
		for (Visita__c visita: Trigger.new) 
		{
			if(MapVisitaWiseEvent.containsKey(visita.id))
			{
				Event event = MapVisitaWiseEvent.get(visita.id);
				event.Subject= Visita.name;
				event.StartDateTime= Visita.Fecha_Inicio__c;
				event.EndDateTime=  Visita.Fecha_Fin__c;
				event.Anunciante_o_Agencia__c=  Visita.Anunciante_Agencia__c;
				event.OwnerId=Visita.CreatedById;
				event.Contacto__c=  Visita.contacto_visita__c;
				event.WhatId=Visita.Id;
				
				EventToUpdate.add(event);
				
			}
		}
		if(EventToUpdate.size() > 0 )
		{
			update EventToUpdate;
		}
	}
}

Let us know if this will help you
This was selected as the best answer
Sergio Ruiz Barrios 5Sergio Ruiz Barrios 5
Awesome, It works perfectly!!!

Thank you so much Amit