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
Carolina W 2Carolina W 2 

For loop inside For

Hi! 
I want to avoid this For loop inside another For... Is there any way?
 
public class ManagerAccountTeamMember {

  public static Boolean isFirstTimeBEFORE = true;

  public static void myMethod (List<AccountTeamMember> TeamMembers) {

    for( AccountTeamMember accTeamMember: TeamMembers){
        if(accTeamMember.TeamMemberRole == '001'){
           isFirstTimeBEFORE = false;
           accTeamMember.Code__c = '001';
         } 

         if(isFirstTimeBEFORE) {
            isFirstTimeBEFORE = false;

            Map<String,AccountTeamMember> accId_X_TeamMember = new Map<String,AccountTeamMember>();

             for(AccountTeamMember TeamMember : TeamMembers) {
                     accId_X_TeamMember.put(TeamMember.AccountId,TeamMember);
             }
    
             List<Account> accounts = [SELECT Id,RecordTypeId,OwnerId FROM Account WHERE Id IN: accId_X_TeamMember.keySet()];

             for(Account account : accounts) {
                 if(acc.OwnerId != UserInfo.getUserId()) {
accId_X_TeamMember.get(account.Id).addError('Msg');
                  }
              }
        }
   }
 }    
}

 
Best Answer chosen by Carolina W 2
Carolina W 2Carolina W 2
What I did:
1 - I created a  Set  to add the  AccountIds  of  AccountTeamMembers
2 - So I use the method  contais  to search the itens of the  Set  in the another  for  looping
 
public class ManagerAccountTeamMember {
   public static Boolean isFirstTimeBEFORE = true;

   public static void myMethod (List TeamMembers) {
      if(isFirstTimeBEFORE) {
         isFirstTimeBEFORE = false;

         Set<String> accId = new Set<String>();
         Map<String,AccountTeamMember> accId_X_TeamMember = new Map<String,AccountTeamMember>();

         for(AccountTeamMember TeamMember : TeamMembers) {
            if(accTeamMember.TeamMemberRole == '001'){
               accTeamMember.Code__c = '001';
                  accId.add(TeamMember.AccountId);  
             }
             accId_X_TeamMember.put(TeamMember.AccountId,TeamMember);
         }
    
         List accounts = [SELECT Id,RecordTypeId,OwnerId FROM Account WHERE Id IN: accId_X_TeamMember.keySet()];

         for(Account account : accounts) {
            if(!accId.contains(account.Id)){
               if(acc.OwnerId != UserInfo.getUserId()) {
                  accId_X_TeamMember.get(account.Id).addError('Msg');
               }
            }
         }
      }
   }    
}