+ Start a Discussion
Surya.236Surya.236 

Hi, How to convert the following nested for loop to map?,

How to convert the folloeing nested for loop using map.
as it a id, list . how to assign values.
public class SLAandAgeOverSLA {
    public void calculatetime(List<Case> caseids,Map<id,case> casemap){
         
        List<CaseMilestone> milestonelist = [select caseId,id,isCompleted,MilestoneTypeId,StartDate,TargetDate,BusinessHoursId,MilestoneType.name,CompletionDate from 
                                             CaseMilestone where(MilestoneType.name='First Response' or MilestoneType.name='Technical Resolution') 
                                             AND isCompleted=true AND caseid IN:caseids]; 
                                             
        map<string,List<CaseMilestone>> milestonemap = new map<string,List<CaseMilestone>>();
        for(CaseMilestone ml: milestonelist ){
            
            if(milestonemap.get(ml.caseId)==null){
                List<CaseMilestone> mtList=new List<CaseMilestone>();
                mtList.add(ml);
                milestonemap.put(ml.CaseId,mtList);
            }else if(milestonemap.get(ml.caseId)!=null){
                List<CaseMilestone> mtList=milestonemap.get(ml.caseId);
                mtList.add(ml);
            }
        }
        for(Case c: caseids){
            if(c.Request_for_Closure_Date__c!=null && milestonemap.containskey(c.id) ){
            
                for(CaseMilestone ml:milestonemap.get(c.id)){
                
                    if(ml.MilestoneType.name=='First Response'){
                        c.Test_Ignore__c = ml.CompletionDate;
                    }
                    else if(ml.MilestoneType.name=='Technical Resolution'){
                        c.Test_Ignore_2__c = ml.CompletionDate;
                    }
                }
            }
        }
    }
}
yogesh_patilyogesh_patil
Hello,

PFB the code.

public class SLAandAgeOverSLA {
    public void calculatetime(List<Case> caseids,Map<id,case> casemap){
         
        List<CaseMilestone> milestonelist = [select caseId,id,isCompleted,MilestoneTypeId,StartDate,TargetDate,BusinessHoursId,MilestoneType.name,CompletionDate from 
                                             CaseMilestone where(MilestoneType.name='First Response' or MilestoneType.name='Technical Resolution') 
                                             AND isCompleted=true AND caseid IN:caseids]; 
                                             
        map<string,List<CaseMilestone>> milestonemap = new map<string,List<CaseMilestone>>();
        for(CaseMilestone ml: milestonelist ){
            
            if(milestonemap.get(ml.caseId)==null){
                List<CaseMilestone> mtList=new List<CaseMilestone>();
                mtList.add(ml);
                milestonemap.put(ml.CaseId,mtList);
            }else if(milestonemap.get(ml.caseId)!=null){
                List<CaseMilestone> mtList=milestonemap.get(ml.caseId);
                mtList.add(ml);
            }
        }
        for(Case c: caseids){
            if(c.Request_for_Closure_Date__c!=null && milestonemap.containskey(c.id) ){
            
                //for(CaseMilestone ml:milestonemap.get(c.id)){
                CaseMilestone ml;
                if(milestonemap!=null && milestonemap.size()>0 && milestonemap).containsKey(c.Id){
                    m1 = milestonemap.get(c.id);
                    if(ml.MilestoneType.name=='First Response'){
                        c.Test_Ignore__c = ml.CompletionDate;
                    }
                    else if(ml.MilestoneType.name=='Technical Resolution'){
                        c.Test_Ignore_2__c = ml.CompletionDate;
                    }
                }
                //}
            }
        }
    }
}