You need to sign in to do that
Don't have an account?
Jai
Could you pls help me to write test class for the below code
Apex class
------------
public class NASurveyHandler {
Public static Boolean naSurveyCheck = false;
Public static void naServeycriteria(List<Case> caseList,map<id,Case> oldMap) {
Set<Id> caseRecordID = new Set<Id>();
Map<String,String> caseSurveyMap = new Map<String,String>();
Map<String,String> caseSurvey2Map = new Map<String,String>();
Map<ID, RecordType> recordTypeMap = New Map<ID, RecordType>([Select ID, Name From RecordType Where sObjectType = 'Case']);
for(Case caseRecord : caseList)
{
/*if(recordTypeMap.get(caseRecord.recordTypeId).name.containsIgnoreCase('Consumer Complaints') && (caseRecord.Pro_Survey__c != null || caseRecord.Pro_Survey_2__c != null) && caseRecord.Patient_Email_Address__c !=null && caseRecord.Status == 'Closed')
{
if(Trigger.isInsert) {
caseRecordID.add(caseRecord.Id);
system.debug('case details11 '+caseRecordID);
}
}*/
naSurveyCheck = true;
if(Trigger.isUpdate && !oldMap.isEmpty() && recordTypeMap.get(caseRecord.recordTypeId).name.containsIgnoreCase('Consumer Complaint') && (caseRecord.Pro_Survey__c != null && oldMap.get(caseRecord.Id).Pro_Survey__c != caseRecord.Pro_Survey__c) || (caseRecord.Pro_Survey_2__c != null && oldMap.get(caseRecord.Id).Pro_Survey_2__c != caseRecord.Pro_Survey_2__c) && caseRecord.Status == 'Closed' && caseRecord.Status!=oldMap.get(caseRecord.Id).Status) {
caseRecordID.add(caseRecord.Id);
caseSurveyMap.put(caseRecord.Id,caseRecord.Pro_Survey__c);
caseSurvey2Map.put(caseRecord.Id,caseRecord.Pro_Survey_2__c);
} else if(Trigger.isUpdate && recordTypeMap.get(caseRecord.recordTypeId).name.containsIgnoreCase('Customer Support') && caseRecord.Team_Function__c == 'NA Sales Support' && (caseRecord.Pro_Survey__c == 'Sales Support Team Survey'|| caseRecord.Pro_Survey_2__c == 'Sales Support Team Survey') && caseRecord.Status == 'Closed' && caseRecord.Status!=oldMap.get(caseRecord.Id).Status ) {
caseRecordID.add(caseRecord.Id);
caseSurveyMap.put(caseRecord.Id,caseRecord.Pro_Survey__c);
caseSurvey2Map.put(caseRecord.Id,caseRecord.Pro_Survey_2__c);
}
}
if(!caseRecordID.isEmpty()) {
naServeyInvitation(caseRecordID,caseSurveyMap,Trigger.isUpdate,caseSurvey2Map);
}
}
@future
public static void naServeyInvitation(Set<Id> caseIds,Map<String,String> caseSurveyMap,Boolean isAftrUpdate,Map<String,String> caseSurvey2Map) {
try {
final Set<String> setProgramNames = new Set<String>();
List<Case> caseList;
caseList = new List<Case> ();
caseList = [select id,Pro_Survey__c,Pro_Survey_2__c,TFM_Cluster_Contact__c,ContactId,Team_Function__c from case where id in: caseIds WITH SECURITY_ENFORCED];
List<SurveyInvitation> lstSurveyInvitn ;
lstSurveyInvitn = new List<SurveyInvitation>();
for(case caseRecord: caseList) {
if(caseRecord.Pro_Survey__c != null) {
setProgramNames.add(caseRecord.Pro_Survey__c);
}
if(caseRecord.Pro_Survey_2__c != null) {
setProgramNames.add(caseRecord.Pro_Survey_2__c);
}
}
//Query Survey to get the ID's based on program names
final Map<String,Id> mapProgramName = new Map<String,Id>();
for(Survey surveyRecord : [select id,name from Survey where name in: setProgramNames WITH SECURITY_ENFORCED]) {
mapProgramName.put(surveyRecord.name,surveyRecord.id);
}
lstSurveyInvitn = getConsumerCareSurveyInvitationLst(caseList,mapProgramName,isAftrUpdate,caseSurveyMap,caseSurvey2Map);
//trRecList = getTrainingRecLst(caseList,mapProgramName,isAftrInsert,caseSurveyMap,caseSurvey2Map);
if (!lstSurveyInvitn.isEmpty() && Schema.sObjectType.SurveyInvitation.isCreateable()) {
insert lstSurveyInvitn;
}
} catch(Exception e) {
final UCB_ExceptionService exceptionService = new UCB_ExceptionService(userinfo.getuserid(), 'NASurveyHandler Error', 'NASurveyHandler Error', '');
exceptionService.add(e);
exceptionService.publish();
}
}
public static List<SurveyInvitation> getConsumerCareSurveyInvitationLst(List<Case> caseList,Map<String,Id> mapProgramName,Boolean isAftrUpdate,Map<String, String> caseSurveyMap,Map<String, String> caseSurvey2Map) {
SurveyInvitation invitation;
List<SurveyInvitation> lstSurveyInvitn;
lstSurveyInvitn = new List<SurveyInvitation>();
for(Case caseRecord : caseList) {
if((isAftrUpdate && caseRecord.Pro_Survey__c != null) || (!caseSurveyMap.isEmpty() && caseSurveyMap.containsKey(caseRecord.Id) && caseRecord.Pro_Survey__c != null && caseSurveyMap.get(caseRecord.Id) != caseRecord.Pro_Survey__c)) {
invitation = new SurveyInvitation();
invitation.TFM_Cluster_Contact__c = caseRecord.TFM_Cluster_Contact__c;
invitation.Case__c = caseRecord.Id;
invitation.SurveyId = mapProgramName.get(caseRecord.Pro_Survey__c);
invitation.name = caseRecord.Pro_Survey__c;
lstSurveyInvitn.add(invitation);
}
if((isAftrUpdate && caseRecord.Pro_Survey_2__c != null) || (!caseSurvey2Map.isEmpty() && caseSurvey2Map.containsKey(caseRecord.Id) && caseRecord.Pro_Survey_2__c != null && caseSurvey2Map.get(caseRecord.Id) != caseRecord.Pro_Survey_2__c)) {
invitation = new SurveyInvitation();
invitation.TFM_Cluster_Contact__c = caseRecord.TFM_Cluster_Contact__c;
invitation.Case__c = caseRecord.Id;
invitation.SurveyId = mapProgramName.get(caseRecord.Pro_Survey_2__c);
invitation.name = caseRecord.Pro_Survey_2__c;
lstSurveyInvitn.add(invitation);
}
}
return lstSurveyInvitn;
}
}
Thanks!!
------------
public class NASurveyHandler {
Public static Boolean naSurveyCheck = false;
Public static void naServeycriteria(List<Case> caseList,map<id,Case> oldMap) {
Set<Id> caseRecordID = new Set<Id>();
Map<String,String> caseSurveyMap = new Map<String,String>();
Map<String,String> caseSurvey2Map = new Map<String,String>();
Map<ID, RecordType> recordTypeMap = New Map<ID, RecordType>([Select ID, Name From RecordType Where sObjectType = 'Case']);
for(Case caseRecord : caseList)
{
/*if(recordTypeMap.get(caseRecord.recordTypeId).name.containsIgnoreCase('Consumer Complaints') && (caseRecord.Pro_Survey__c != null || caseRecord.Pro_Survey_2__c != null) && caseRecord.Patient_Email_Address__c !=null && caseRecord.Status == 'Closed')
{
if(Trigger.isInsert) {
caseRecordID.add(caseRecord.Id);
system.debug('case details11 '+caseRecordID);
}
}*/
naSurveyCheck = true;
if(Trigger.isUpdate && !oldMap.isEmpty() && recordTypeMap.get(caseRecord.recordTypeId).name.containsIgnoreCase('Consumer Complaint') && (caseRecord.Pro_Survey__c != null && oldMap.get(caseRecord.Id).Pro_Survey__c != caseRecord.Pro_Survey__c) || (caseRecord.Pro_Survey_2__c != null && oldMap.get(caseRecord.Id).Pro_Survey_2__c != caseRecord.Pro_Survey_2__c) && caseRecord.Status == 'Closed' && caseRecord.Status!=oldMap.get(caseRecord.Id).Status) {
caseRecordID.add(caseRecord.Id);
caseSurveyMap.put(caseRecord.Id,caseRecord.Pro_Survey__c);
caseSurvey2Map.put(caseRecord.Id,caseRecord.Pro_Survey_2__c);
} else if(Trigger.isUpdate && recordTypeMap.get(caseRecord.recordTypeId).name.containsIgnoreCase('Customer Support') && caseRecord.Team_Function__c == 'NA Sales Support' && (caseRecord.Pro_Survey__c == 'Sales Support Team Survey'|| caseRecord.Pro_Survey_2__c == 'Sales Support Team Survey') && caseRecord.Status == 'Closed' && caseRecord.Status!=oldMap.get(caseRecord.Id).Status ) {
caseRecordID.add(caseRecord.Id);
caseSurveyMap.put(caseRecord.Id,caseRecord.Pro_Survey__c);
caseSurvey2Map.put(caseRecord.Id,caseRecord.Pro_Survey_2__c);
}
}
if(!caseRecordID.isEmpty()) {
naServeyInvitation(caseRecordID,caseSurveyMap,Trigger.isUpdate,caseSurvey2Map);
}
}
@future
public static void naServeyInvitation(Set<Id> caseIds,Map<String,String> caseSurveyMap,Boolean isAftrUpdate,Map<String,String> caseSurvey2Map) {
try {
final Set<String> setProgramNames = new Set<String>();
List<Case> caseList;
caseList = new List<Case> ();
caseList = [select id,Pro_Survey__c,Pro_Survey_2__c,TFM_Cluster_Contact__c,ContactId,Team_Function__c from case where id in: caseIds WITH SECURITY_ENFORCED];
List<SurveyInvitation> lstSurveyInvitn ;
lstSurveyInvitn = new List<SurveyInvitation>();
for(case caseRecord: caseList) {
if(caseRecord.Pro_Survey__c != null) {
setProgramNames.add(caseRecord.Pro_Survey__c);
}
if(caseRecord.Pro_Survey_2__c != null) {
setProgramNames.add(caseRecord.Pro_Survey_2__c);
}
}
//Query Survey to get the ID's based on program names
final Map<String,Id> mapProgramName = new Map<String,Id>();
for(Survey surveyRecord : [select id,name from Survey where name in: setProgramNames WITH SECURITY_ENFORCED]) {
mapProgramName.put(surveyRecord.name,surveyRecord.id);
}
lstSurveyInvitn = getConsumerCareSurveyInvitationLst(caseList,mapProgramName,isAftrUpdate,caseSurveyMap,caseSurvey2Map);
//trRecList = getTrainingRecLst(caseList,mapProgramName,isAftrInsert,caseSurveyMap,caseSurvey2Map);
if (!lstSurveyInvitn.isEmpty() && Schema.sObjectType.SurveyInvitation.isCreateable()) {
insert lstSurveyInvitn;
}
} catch(Exception e) {
final UCB_ExceptionService exceptionService = new UCB_ExceptionService(userinfo.getuserid(), 'NASurveyHandler Error', 'NASurveyHandler Error', '');
exceptionService.add(e);
exceptionService.publish();
}
}
public static List<SurveyInvitation> getConsumerCareSurveyInvitationLst(List<Case> caseList,Map<String,Id> mapProgramName,Boolean isAftrUpdate,Map<String, String> caseSurveyMap,Map<String, String> caseSurvey2Map) {
SurveyInvitation invitation;
List<SurveyInvitation> lstSurveyInvitn;
lstSurveyInvitn = new List<SurveyInvitation>();
for(Case caseRecord : caseList) {
if((isAftrUpdate && caseRecord.Pro_Survey__c != null) || (!caseSurveyMap.isEmpty() && caseSurveyMap.containsKey(caseRecord.Id) && caseRecord.Pro_Survey__c != null && caseSurveyMap.get(caseRecord.Id) != caseRecord.Pro_Survey__c)) {
invitation = new SurveyInvitation();
invitation.TFM_Cluster_Contact__c = caseRecord.TFM_Cluster_Contact__c;
invitation.Case__c = caseRecord.Id;
invitation.SurveyId = mapProgramName.get(caseRecord.Pro_Survey__c);
invitation.name = caseRecord.Pro_Survey__c;
lstSurveyInvitn.add(invitation);
}
if((isAftrUpdate && caseRecord.Pro_Survey_2__c != null) || (!caseSurvey2Map.isEmpty() && caseSurvey2Map.containsKey(caseRecord.Id) && caseRecord.Pro_Survey_2__c != null && caseSurvey2Map.get(caseRecord.Id) != caseRecord.Pro_Survey_2__c)) {
invitation = new SurveyInvitation();
invitation.TFM_Cluster_Contact__c = caseRecord.TFM_Cluster_Contact__c;
invitation.Case__c = caseRecord.Id;
invitation.SurveyId = mapProgramName.get(caseRecord.Pro_Survey_2__c);
invitation.name = caseRecord.Pro_Survey_2__c;
lstSurveyInvitn.add(invitation);
}
}
return lstSurveyInvitn;
}
}
Thanks!!