• Dennis Atwood
  • NEWBIE
  • 0 Points
  • Member since 2016

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 0
    Questions
  • 2
    Replies
Hi,

I have functionality to send 100 emails when Click on Notify button.

        List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();
            for(Contact con : contact)
            {
                Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();
                email.setTargetObjectId(con.Id); 
                email.setWhatId(accountId); 
                email.setSaveAsActivity(true);
                mails.add(email);
            }
            if(mails.size()>0)
            {
                Messaging.SendEmailResult [] r = Messaging.sendEmail(mails);
            }    
            
    When emails are sent, it will create Task record in contact. I have trigger on Task Object to update field in account. When 100 task records are getting created, it is calling SOQL query in my below trigger 100 times. Please advice if my trigger is bulkified or is there any issue in Email sending code.
    
    List<account> accountId  = new List<ACcount();
    List<Task> triggerTask = Trigger.new != null ? Trigger.new : Trigger.old;
            for (Task task: triggerTask){
               String accountId = task.WhatId;
               if(task.Status =='Completed' && task.Isclosed==true && task.IsRecurrence == false && accountId !=null){
                   accountId.add(task.whatId);
               }
            } 
      
        
       if(accountId.size()>0){  
           List<accountId> accountList = [SELECT Id, (SELECT Id FROM Tasks where Status='Completed' and Isclosed=true and IsRecurrence = false) FROM Account WHERE Id IN :accountId];
          
           for(Account acc:accountList) {
               if(acc.Tasks != null) {
                     acc.Activities__c= acc.Tasks.size();
                   }
              }
            if(accountList.size()>0){
               update accountList;
            }
        }