Hii SaiReddy
public class NumberOfChildTriggerHandler {
public static Void InsertMethod(list<Contact> lstCon ){
List<Account> accList=new List<Account>();
Set<Id> setAccIds = new Set<Id>();
for(Contact con : lstCon){
if(con.AccountId != null){
setAccIds.add(con.AccountId);
}
}
for(Account acc :[Select id,Total_Contacts__c ,(Select id,name from contacts) from Account where Id in : setAccIds]){
acc.Total_Contacts__c = acc.contacts.size();
acclist.add(acc);
}
if(acclist.size()>0){
update accList;
}
}
public static Void UpdateMethod(list<Contact> lstCon,map<Id,Contact>oldmap ){
List<Account> accList=new List<Account>();
Set<Id> setAccIds = new Set<Id>();
for(Contact con : lstCon){
if(con.AccountId != null && con.AccountId != oldMap.get(con.Id).AccountId){
setAccIds.add(con.AccountId);
setAccIds.add(oldMap.get(con.Id).AccountId);
}
}
for(Account acc :[Select id,Total_Contacts__c ,(Select id,name from contacts) from Account where Id in : setAccIds]){
acc.Total_Contacts__c = acc.contacts.size();
acclist.add(acc);
}
if(acclist.size()>0){
update accList;
}
}
public static Void deleteMethod(list<Contact> lstCon){
List<Account> accList=new List<Account>();
Set<Id> setAccIds = new Set<Id>();
for(Contact con : lstCon){
if(con.AccountId != null){
setAccIds.add(con.AccountId);
}
}
for(Account acc :[Select id,Total_Contacts__c ,(Select id,name from contacts) from Account where Id in : setAccIds]){
acc.Total_Contacts__c = acc.contacts.size();
acclist.add(acc);
}
if(acclist.size()>0){
update accList;
}
}
}
Please Mark It As Best Answer If It Helpstrigger NumberOfChild on Contact (After Insert,After Update,After Delete) {
If(trigger.isAfter &&Trigger.isInsert){
NumberOfChildTriggerHandler.insertMethod(trigger.new);
}
If(trigger.isAfter &&Trigger.isUpdate){
NumberOfChildTriggerHandler.updateMethod(trigger.new,trigger.oldMap);
}
If(trigger.isAfter &&Trigger.isDelete){
NumberOfChildTriggerHandler.deleteMethod(trigger.old);
}
}
Thank You!
6 answers