Salesforce Trigger Example

Salesforce Trigger Example to count number of completed tasks in a single contact

Below is an example of how to use Salesforce Trigger to count number of completed tasks in a single contact

trigger UpdateAccountNameFromContactLastName2 on Contact (before insert, after insert, before update, after update, before delete, after delete, after undelete) {
    set<Id> setAccountIds = new set<Id>() ;
    if(Trigger.isInsert){
        for(Contact oContact : Trigger.New){
            if(oContact.lastName != null) { //although lastName is required field; still checking for null
                setAccountIds.add(oContact.accountId) ;  
            }
        }
        system.debug('after insert-setAccountIds:: ' + setAccountIds) ;
    }    
    if(Trigger.isUpdate){
        for(Contact oContact : Trigger.New){
            if(oContact.lastName != null && oContact.lastName != Trigger.oldMap.get(oContact.Id).lastName) 
            setAccountIds.add(oContact.accountId) ;
        }
        system.debug('after update-setAccountIds:: ' + setAccountIds) ;
    }    
    if(Trigger.isDelete){
        for(Contact oContact : Trigger.Old){
            if(oContact.lastName != null) 
            setAccountIds.add(oContact.accountId) ;
        }
        system.debug('after delete-setAccountIds:: ' + setAccountIds) ;
    }    
    if(Trigger.isUndelete){
        for(Contact oContact : Trigger.new){
            if(oContact.lastName != null) 
            setAccountIds.add(oContact.accountId) ;
        }
        system.debug('after undelete-setAccountIds:: ' + setAccountIds) ;
    }
    if(!setAccountIds.isEmpty()){
        set<String> setContactName = new set<String>() ;
        list<Account> listAccountToUpdate = new list<Account>() ;
        list<Account> listAccount = [Select Id, Name, (Select Id, LastName from Contacts order by createddate)     From Account Where Id IN: setAccountIds] ;
        if(listAccount != null && !listAccount.isEmpty()){
            for(Account oAccount : listAccount){
                for(Contact oContact : oAccount.Contacts){
                    if(!setContactName.contains(oContact.lastName)){
                        setContactName.add(oContact.lastName) ;
                    }
                }
                list<String> listContactName = new list<String>() ;
                listContactName.addAll(setContactName) ;
                oAccount.Name = oAccount.Name.substringBefore(listContactName[0]) ;
                for(String lastName : setContactName){
                    oAccount.Name = oAccount.Name +  ' ' + lastName  ;
                }
                listAccountToUpdate.add(oAccount) ;
            }
        }
        if(!listAccountToUpdate.isEmpty()) update listAccountToUpdate ;
    }
}

 

Popular Salesforce Blogs