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
Ashu sharma 38Ashu sharma 38 

How to resolve the issue in map

Hi,

I am stuck in map.
Map-1 contactsAndEnrollmentMap  
     which contain           contactsAndEnrollmentMap.put(mc.hed__Contact__r.id,enRollmentId);

Map --2 programEnrollmentAndProgramCodeMap
which contain
 programEnrollmentAndProgramCodeMap.put(pe.id,programCode);

Now I want to create new map which contain programCode(Key ) and hed__Contact__r(Value);


Thanks
ManojjenaManojjena
Hi Ashu,

If possible you provide your object relationship ,or your code snnipet which should have query from these objects .So that some one can help you to built the map .

Thanks ,
Manoj
Ashu sharma 38Ashu sharma 38
Hi,

Map 1
  list<hed__Course_Offering__c> moduleOfferingList=new list<hed__Course_Offering__c>();
        moduleOfferingList=[select id,hed__Term__r.id,(select id,hed__Contact__r.id,hed__Program_Enrollment__r.id from hed__Course_Enrollment__r) from hed__Course_Offering__c];
        for(hed__Course_Offering__c mo:moduleOfferingList){
            set<id> contactId=new set<id>();
            set<id> enRollmentId=new set<id>();
            for(hed__Course_Enrollment__c mc:mo.hed__Course_Enrollment__r){
                contactId.add(mc.hed__Contact__r.id);
                enRollmentId.add(mc.hed__Program_Enrollment__r.id);
                
                contactsAndEnrollmentMap.put(mc.hed__Contact__r.id,enRollmentId);//enrollment id and contacts
            } 
              system.debug('contactId' +contactId);
        system.debug('enRollmentId' +enRollmentId);
            
        }

Map 2
 list<hed__Program_Enrollment__c> programEnrollmentList=new list<hed__Program_Enrollment__c>();
        programEnrollmentList=  [select id,Program__r.Program_Code__c from hed__Program_Enrollment__c ];
        map<id,set<string>> programEnrollmentAndProgramCodeMap=new map<id,set<string>>();
        if(!programEnrollmentList.isEmpty()){
            for(hed__Program_Enrollment__c pe:programEnrollmentList){
                set<id> enrollmentIDs=new set<id>();
                set<string> programCode=new set<string>();
                programCode.add(pe.Program__r.Program_Code__c);
                
                enrollmentIDs.add(pe.id);
               
                programEnrollmentAndProgramCodeMap.put(pe.id,programCode);//enrollment id and Program code
             system.debug('Program code' +programCode);
             system.debug('enrollmentIDs' +enrollmentIDs);
            }
           
        }

Now I am trying to make a new map for Program code as key and contacts as Value
ManojjenaManojjena
HI Ashu,

Are you able to save this code ? Hope this map have soem issue .Share me your relationship .

 contactsAndEnrollmentMap.put(mc.hed__Contact__r.id,enRollmentId);//enrollment id and contacts

Above code have soem issue .

Thanks ,
Manoj
 
Ashu sharma 38Ashu sharma 38

Hi,

Yes I am able but its working.

Here I am creating Maps :
1--enrollment id and Program code
2--for ContactIds and Program code
3--Program term and Program code


So I need to update the count of contactsIds and update on field.


global class countContactRecordsBatch implements Database.Batchable<sObject> {
    global Database.QueryLocator start(Database.BatchableContext bc) {
        string query='select id,Census_Date__c from hed__Term__c where Census_Date__c=LAST_N_DAYS:6';
        system.debug('query' +query) ;
        return Database.getQueryLocator(query); 
    }
    
    global void execute(Database.BatchableContext bc, List<hed__Term__c> scope){
        system.debug('====scope====');
        
        system.debug('====scope====');
        //Map term and Program term
        Map<id,list<Program_Session__c>> termProgramtermMap=new Map<id,list<Program_Session__c>>();
        
        list<hed__Term__c> termList=new list<hed__Term__c>();
        termList=[select id,name,(select id,name from Program_Sessions__r),(select id from hed__Course_Offerings__r) from hed__Term__c];
        for(hed__Term__c tm:termList){
            termProgramtermMap.put(tm.id, tm.Program_Sessions__r);
            
        }
        system.debug('termProgramtermMap1' +termProgramtermMap);
        
        //Map for getting Contact and Enrollment id from Module offering //
        Map<id,set<id>> contactsAndEnrollmentMap=new Map<id,set<id>>();
        
        
        //contact Id and Program Enrollment id 
        list<hed__Course_Offering__c> moduleOfferingList=new list<hed__Course_Offering__c>();
        moduleOfferingList=[select id,hed__Term__r.id,(select id,hed__Contact__r.id,hed__Program_Enrollment__r.id from hed__Course_Enrollment__r) from hed__Course_Offering__c];
        for(hed__Course_Offering__c mo:moduleOfferingList){
            set<id> contactId=new set<id>();
            set<id> enRollmentId=new set<id>();
            for(hed__Course_Enrollment__c mc:mo.hed__Course_Enrollment__r){
                contactId.add(mc.hed__Contact__r.id);
                enRollmentId.add(mc.hed__Program_Enrollment__r.id);
                
                contactsAndEnrollmentMap.put(mc.hed__Contact__r.id,enRollmentId);//enrollment id and contacts
            } 
              system.debug('contactId' +contactId);
        system.debug('enRollmentId' +enRollmentId);
            
        }
      
        system.debug('termModuleofferingModuleConnectionMap' +contactsAndEnrollmentMap);
        
        list<hed__Program_Enrollment__c> programEnrollmentList=new list<hed__Program_Enrollment__c>();
        programEnrollmentList=  [select id,Program__r.Program_Code__c from hed__Program_Enrollment__c ];
        map<id,set<string>> programEnrollmentAndProgramCodeMap=new map<id,set<string>>();
        if(!programEnrollmentList.isEmpty()){
            for(hed__Program_Enrollment__c pe:programEnrollmentList){
                set<id> enrollmentIDs=new set<id>();
                set<string> programCode=new set<string>();
                programCode.add(pe.Program__r.Program_Code__c);
                
                enrollmentIDs.add(pe.id);
               
                programEnrollmentAndProgramCodeMap.put(pe.id,programCode);//enrollment id and Program code
             system.debug('Program code' +programCode);
             system.debug('enrollmentIDs' +enrollmentIDs);
            }
           
        }
                        system.debug('programEnrollmentAndProgramCodeMap' +programEnrollmentAndProgramCodeMap);

       /* ========*/
        
        map<id,string> contactIdAndProgramCode=new map<id,string>();// for ContactIds and Program code
        for(id i:contactsAndEnrollmentMap.keySet()){//contact Ids
            for(string proC:programEnrollmentAndProgramCodeMap.get(i)){
                contactIdAndProgramCode.put(i,proC);/*ContactIds and Program code */
                 system.debug('==contactIdAndProgramCode=' +contactIdAndProgramCode);
        system.debug('contactIdAndProgramCode' +contactIdAndProgramCode);
            }
        }
       
        map<string,id> updatedContactIdAndProgramCode=new map<string,id>();
        for(id keyValue :contactIdAndProgramCode.keySet()){
            updatedContactIdAndProgramCode.put(contactIdAndProgramCode.get(keyValue),keyValue);  //Program Code and ContactIds
        system.debug('updatedContactIdAndProgramCode' +updatedContactIdAndProgramCode);
        }
     
        
        

        
        list<Program_Session__c> programTermListWithProgramCode=new list<Program_Session__c>();
        programTermListWithProgramCode= [select id,Program__r.id,Program__r.Program_Code__c from Program_Session__c];   
        
        map<id,string> programTermAndprogramCodeMap=new map<id,string>();
        for(Program_Session__c ps:programTermListWithProgramCode){
            
            programTermAndprogramCodeMap.put(ps.id,ps.Program__r.Program_Code__c);   //Program term and Program code //
            
        }
        system.debug('programTermAndprogramCodeMap' +programTermAndprogramCodeMap);
        map<string,id> updatedprogramTermAndprogramCodeMap=new map<string,id>();
        for(id KeyValue :programTermAndprogramCodeMap.keySet()){
            updatedprogramTermAndprogramCodeMap.put(programTermAndprogramCodeMap.get(KeyValue),keyValue);//Program code and Program Term
        }
        
        system.debug('updatedprogramTermAndprogramCodeMap' +updatedprogramTermAndprogramCodeMap);
        
        // updatedprogramTermAndprogramCodeMap.put(programTermAndprogramCodeMap.get(KeyValue),keyValue);Program code and Program Term
        //  updatedContactIdAndProgramCode.put(contactIdAndProgramCode.get(keyValue),keyValue);Program Code and ContactIds
        list<Program_Session__c> programTermListUpdated=new list<Program_Session__c>();
        
        for(id termId:termProgramtermMap.keySet()){
            for(Program_Session__c pt : termProgramtermMap.get(termId)){
                if(!updatedprogramTermAndprogramCodeMap.isEmpty() && !updatedContactIdAndProgramCode.isEmpty()){
                    for(string s:updatedContactIdAndProgramCode.keySet()){
                        if(updatedprogramTermAndprogramCodeMap.containsKey(s)){
                         //   pt.New_enrolments_actual__c=updatedContactIdAndProgramCode.values().size();
                            system.debug('==New_enrolments_actual__c==' +pt.New_enrolments_actual__c);
                            programTermListUpdated.add(pt);
                        }
                    }
                }
            }
        }   
        if(!programTermListUpdated.isEmpty()){
            update programTermListUpdated;
        }
                    system.debug('programTermListUpdated' +programTermListUpdated);

        
    }
    global void finish(Database.BatchableContext bc){
        // execute any post-processing operations
    }
}

Ashu sharma 38Ashu sharma 38
Hi,

On the Basis of program code I have to count number of contactsIds and Update on field.

 
Manav MathurManav Mathur
Try consulting this Digital Marketing Company in India (https://manushdigitech.com), they might help for free.