I'm checking the incoming value whether exist in custom metadata or not . If the incoming value exist in custom metadata record returns TRUE otherwise returns FALSE. kindly please here how to avoid this error .
Original Code:
public static boolean fetchBICCode(String IoCaseOrgid){
IO_Case__c lstIoCases = [Select Id, Name, Onboard_BIC_Code__c, Onboard_CareQualityCommission__c From IO_Case__c
WHERE io_Organisation_ID__c = :IoCaseOrgid LIMIT 1];
Boolean res = false;
List<OnboardingBICCode__mdt> bicCodeList = [SELECT Id, Label, BicCode__c FROM OnboardingBICCode__mdt];
if(bicCodeList.size() > 0){
for(onboardingBICCode__mdt m :bicCodeList){
System.debug('Metadata Bic Codes---->'+m.BicCode__c);//returns null
System.debug('Onboard_BIC_Code__c---->'+lstIoCases.Onboard_BIC_Code__c);//getting value
// Here I'm getting dereference null object error
if(m.BicCode__c.contains(lstIoCases.Onboard_BIC_Code__c)){
System.debug('Test3---->');
res = true;
}
}
}
system.debug('res'+res);
return res;
}
Updated Code:
public static boolean fetchBICCode(String IoCaseOrgid){
IO_Case__c lstIoCases = [Select Id, Name, Onboard_BIC_Code__c, Onboard_CareQualityCommission__c From IO_Case__c
WHERE io_Organisation_ID__c = :IoCaseOrgid LIMIT 1];
Boolean res = false;
Set<String> bicCodeSet = new Set<String>();
List<OnboardingBICCode__mdt> bicCodeList = [SELECT Id, Label, BicCode__c FROM OnboardingBICCode__mdt];
for(onboardingBICCode__mdt m :bicCodeList){
bicCodeSet.add(m.BicCode__c);
}
bicCodeSet.remove(null);
res = bicCodeSet.contains(lstIoCases.Onboard_BIC_Code__c);
if(res){
System.debug('Test3---->');
res = true;
}
system.debug('res:::::---->'+res);
return res;
}