+ Start a Discussion
sumit dsumit d 

Trigger to populate case field from custom metadata type

Hi All,
         I have a trigger in which i want to populate Case field(Email_team__c) using metadata (Team_Setup__mdt) field(Team__c).
my trigger helper is given below:-
 
public without sharing class CaseTriggerHelper {
    
    public static List<Case> newCases = new List<Case>();
    public static List<Case> oldCases = new List<Case>();    
    public static Map<Id, Case> newMapCases = new Map<Id, Case>();
    public static Map<Id, Case> oldMapCases = new Map<Id, Case>(); 
    
    Public static void caseEmailTeamInsertion(){
        Map<String, List<Team_Setup__mdt>> teamSetupMetadataMap = new Map<String,  List<Team_Setup__mdt>>();
        List<Team_Setup__mdt> teamSetupMetadata = new List<Team_Setup__mdt>([SELECT Id, Product__c,Queue__c,
                                                                             Record_Type__c,Team__c
                                                                             FROM Team_Setup__mdt
                                                                           ]);
        List<Case> CaseListToInsert = new List<Case>();
        if(teamSetupMetadata != Null && teamSetupMetadata.size() > 0){
            for(team_Setup__mdt ts : teamSetupMetadata){
                String stRecordType  =  ts.Record_Type__c.substringBefore(',');
                List<Team_Setup__mdt> tsList =   new List<Team_Setup__mdt>([SELECT Id, Product__c,Queue__c,
                                                                             Record_Type__c,Team__c
                                                                            FROM Team_Setup__mdt 
                                                                            WHERE Record_Type__c =: ts.Record_Type__c
                                                                            ]);
               teamSetupMetadataMap.put(stRecordType, tsList);     
            }
           
            
        }
         System.debug('*'+teamSetupMetadataMap);
        if(teamSetupMetadataMap != Null && teamSetupMetadataMap.size()  >0){
             
            for(Case caseObj : newCases){
                  System.debug('*' +teamSetupMetadataMap.containsKey(caseObj.RecordType.DeveloperName));
                if(caseObj.RecordType.DeveloperName != Null &&
                   teamSetupMetadataMap.containsKey(caseObj.RecordType.DeveloperName)){
                      
                    List<Team_Setup__mdt> tm = teamSetupMetadataMap.get(caseObj.RecordType.DeveloperName);
                       For( Integer TeamMetadata = 0; TeamMetadata <= tm.Size(); TeamMetadata++ ){
                           if(caseObj.Product__c ==  tm[TeamMetadata].Product__c){
                               caseObj.Email_Team__c = tm[TeamMetadata].Team__c;
                               CaseListToInsert.add(caseObj);
                               System.debug('*'+caseObj.Email_Team__c);
                           }
                           
                       }
                       
                }
            }
            if(CaseListToInsert.Size() > 0){
                insert CaseListToInsert;
            }
        }
     
    }
    
}
the case field is not populating.Can anyone help me with this?