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
Prakhyat sapraPrakhyat sapra 

can anyone help me to resolve the error in apex.Expression must be a list type: Map<Id,List<String>>????

  global void execute(Database.BatchableContext BC, list<case> caseList){
        set<Id> getIDs = new Set<Id>();
        Map<Id,Id> caseWithCasePlanIdMap = new Map<Id,Id>();
        Map<Id, List<String>> casePlanWithGoalsMap = new Map<Id, List<String>>();
       
        for(Case cse : caseList){
            if(cse.Case_Plans__r != null && cse.Case_Plans__r.size() >0){
                caseWithCasePlanIdMap.put(cse.id, cse.Case_Plans__r[0].Id);
            }
        }
        system.debug('caseWithCasePlanIdMap'+caseWithCasePlanIdMap);
        Map<Id, case> caseMap = new Map<Id, case>(caseList);
        System.debug('caseMap'+caseMap);
        for(caseman__Goal__c goal : [SELECT Id,Name, caseman__CasePlan__c, caseman__Status__c FROM caseman__Goal__c 
                                     where caseman__CasePlan__c IN: caseWithCasePlanIdMap.values() AND caseman__Status__c !='Completed']){ // 'a0SM000000EBStkMAH' ]){
                                         System.debug('caseWithCasePlanIdMap.values()'+caseWithCasePlanIdMap.values());
                                         System.debug('goal'+goal);
                                         if(!casePlanWithGoalsMap.containskey(goal.caseman__CasePlan__c)){
                                             casePlanWithGoalsMap.put(goal.caseman__CasePlan__c, new List<String>());
                                         }
                                         casePlanWithGoalsMap.get(goal.caseman__CasePlan__c).add(goal.Name);
                                         casePlanWithGoalsMap.get(goal.caseman__CasePlan__c).add(goal.caseman__Status__c);
                                     }
        System.debug('casePlanWithGoalsMap'+casePlanWithGoalsMap);
        
        CaseSevenDayFollowUpEmailBatch.afterSevenDaysEmail(caseList,casePlanWithGoalsMap);

 global static void afterSevenDaysEmail(List<case> CaseList,  Map<Id, List<String>> casePlanData){
        System.debug('casePlanData'+casePlanData);
        // for(case cas : CaseList){
        //  for(caseman__CasePlan__c  c : cas.Case_Plans__r){
        // for(caseman__Goal__c  go :c.caseman__Goals__r){
        // List<caseman__CasePlan__c> casePlanList =[Select id, Name, caseman__Status__c From caseman__CasePlan__c WHERE caseman__Status__c!= 'Completed'];
        Integer casePlanLength= casePlanData.size();
        
        System.debug('casePlanLength'+casePlanLength);
        // }
        //}         
        // } 
        if(casePlanData.size() > 0){ //casePlanLength
            system.debug('casePlanData.size()'+casePlanData.size());
            //  Set<Id> casePlanId = new Set<Id>();
            
            
            Set<id> goalIdSet = new Set<Id>();
            for(case ca :CaseList){
                for(caseman__CasePlan__c casePlan1 : ca.Case_Plans__r){
                    System.debug('caseman__Goals__r'+casePlan1.caseman__Goals__r);
                    for(caseman__Goal__c goal : casePlan1.caseman__Goals__r){
                        
                        System.debug('goal - ' + goal);
                        goalIdSet.add(goal.Id);
                    }
                    
                    Map<id,List<caseman__ActionItem__c>> actionItemMap = new Map<id,List<caseman__ActionItem__c>>();
                    List<caseman__ActionItem__c> actionItemList = [Select Id,Name,caseman__Goal__c,caseman__Status__c
                                                                   from caseman__ActionItem__c where caseman__Goal__c =: goalIdSet];
                    System.debug('actionItemList'+actionItemList);
                    for(caseman__ActionItem__c item : actionItemList){
                        if(actionItemMap.containsKey(item.caseman__Goal__c))
                        {   
                            actionItemMap.get(item.caseman__Goal__c).add(item);
                            
                        }
                        else 
                        {   
                            actionItemMap.put(item.caseman__Goal__c,new list<caseman__ActionItem__c>{item}); 
                        }
                    }        
                    String casePlanStatus = '';
                        String caseGoalStatus = '';
                        if(iterCase.Case_Plans__r.size() > 0) {
                            casePlanStatus = '<br/>'+iterCase.Case_Plans__r[0].caseman__Status__c+'<br/>';
                            System.debug('casePlanStatus'+casePlanStatus);
                            System.debug('casePlanData - ' + casePlanData);
                            if(casePlanData.size() > 0){
                              //  System.debug('casePlanData - ' + casePlanData.get('caseman__Status__c'));
                                  caseGoalStatus = '<br/>'+casePlanData[1]+'<br/>';
                                System.debug('caseman__Goal__c.caseman__Status__c'+caseman__Goal__c.caseman__Status__c);
                                 System.debug('caseGoalStatus'+caseGoalStatus);
                            }
                        }
}
}



 
Prakhyat sapraPrakhyat sapra
there is a lookup between case & caseman__Caseplan__c & master detail in Casemail__Goal__c to Caseman__CasePlan__c
 
AnkaiahAnkaiah (Salesforce Developers) 
Hi prakshyat,

modify the below line will resolve the issue.

caseWithCasePlanIdMap.put(cse.id, new List<string> {cse.Case_Plans__r[0].Id});

If this helps, Please mark it as best answer.

​​​​​​​Thanks!!
 
Prakhyat sapraPrakhyat sapra
it is not working
AnkaiahAnkaiah (Salesforce Developers) 
Which line you were getting an error & send me the error message.?
 
Prince_sfdcPrince_sfdc

Looks like this line is erroneous: 

caseWithCasePlanIdMap.put(cse.id, cse.Case_Plans__r[0].Id);

As in the value pair you are adding the instance of the case_Plans object and the map type is expecting a List of String both are not matching. 

Change the map value pair data type accordingly. If this helps, Please mark it as best answer.