Skip to main content
6 answers
  1. Aug 9, 2021, 9:23 AM

    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;

    }

    }

    }

    trigger 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);

    }

    }

    Please Mark It As Best Answer If It Helps

    Thank You!
0/9000