compare hash logic 29-04-2022
List<Workflow_Activity__c> workflowWithPreviousHashList = [Select Id, Workflow_Activity_Metadata__r.Is_Stage_Change_Activity_Formula__c,Workflow_Activity_Metadata__r.Canonical_Name__c,
Workflow_Activity_Metadata__r.Previous_Stage__c,Workflow_Activity_Metadata__r.Application_Stages__c,Workflow_Activity_Metadata__r.Mandatory_Application_Stages__c,Workflow_Activity_Metadata__r.Hash_Template__c,
Workflow_Activity_Metadata__r.Handler_Name__c,Workflow_Activity_Metadata__r.Is_System_Activity__c,Workflow_Activity_Metadata__r.Additional_Hash_Computation_Activities__c,
Workflow_Activity_Metadata__r.CreatedDate,Activity_Hash_Value__c,ReAppraise_Activity_Hash_Value__c,Is_Active__c,Is_bypassed__c,Is_Unbounded__c,Is_System_Activity__c,Stage__c,Context_Object__c,Applicant__c,
Canonical_Name__c,Applicant__r.Name,Applicant__r.Mode_of_Application__c,Activity_Hash_JSON__c,LastModifiedDate FROM Workflow_Activity__c Where Canonical_Name__c='E-Application' AND Opportunity__c=:this.params.loanApplication.Id];
//Iterate over the all activities to get the list of activities
if(workflowWithPreviousHashList != null && !workflowWithPreviousHashList.isEmpty()){
for(Workflow_Activity__c activity : workflowWithPreviousHashList){
if(activity.Is_Active__c == true
&& activity.Is_Unbounded__c == false
&& activity.Is_bypassed__c == false
&& activity.Is_System_Activity__c == false
&& activity.Workflow_Activity_Metadata__r.Application_Stages__c != null
&& activity.Workflow_Activity_Metadata__r.Application_Stages__c.contains(this.params.loanApplication.StageName)
&& activity.Stage__c == GlobalConstants.WORKFLOW_ACTIVITY_STAGE_PASSED
) {
if(!activitiesToBeProcessed.containsKey(activity.Id)
&& String.isNotBlank(activity.Activity_Hash_Value__c)){
//check if the activities of only applicant to be executed
if(String.isNotBlank(applicantId) && activity.Applicant__c == applicantId){
activitiesToBeProcessed.put(activity.Id,activity);
}else if(String.isBlank(applicantId) ){//&& activity.Applicant__c == null){//for opportunity activities
activitiesToBeProcessed.put(activity.Id,activity);
}
}
}