Name
sn_risk_advanced.RiskAssessmentComponentUtilsBase
Description
No description available
Script
var RiskAssessmentComponentUtilsBase = Class.create();
RiskAssessmentComponentUtilsBase.prototype = {
initialize: function() {
this.stateToAssessmentTypeMapping = {
"2": "1",
"3": "2",
"4": "3",
"10": "4"
};
this.defaultSectionLabels = {
"2": {
'section_title': gs.getMessage("Inherent assessment"),
'qualitative_score_label': gs.getMessage("Inherent risk"),
'quantitative_score_label': gs.getMessage("Inherent ALE")
},
"3": {
'section_title': gs.getMessage("Control assessment"),
'qualitative_score_label': gs.getMessage("Control effectiveness")
},
"4": {
'section_title': gs.getMessage("Residual assessment"),
'qualitative_score_label': gs.getMessage("Residual risk"),
'quantitative_score_label': gs.getMessage("Residual ALE")
},
"10": {
'section_title': gs.getMessage("Target assessment"),
'qualitative_score_label': gs.getMessage("Target risk"),
'quantitative_score_label': gs.getMessage("Target ALE")
}
};
},
getOverrideSectionInfo: function(assessmentId) {
return this._getOverrideSectionInfo(assessmentId);
},
getAssigneesToReassign: function(userIntials, type, options) {
return this._getAssigneesToReassign(userIntials, type, options);
},
getReasonsToReassign: function() {
return this._getReasonsToReassign();
},
getAssessmentType: function(assessmentState) {
return this._getAssessmentType(assessmentState);
},
getAssessmentData: function(assessmentId) {
return this._getAssessmentData(assessmentId);
},
getNavigationInfo: function(instanceId) {
return this._getNavigationInfo(instanceId);
},
updateRiskAssessmentComments: function(assessmentInstanceId, comments) {
return this._updateRiskAssessmentComments(assessmentInstanceId, comments);
},
getApprover: function(instance) {
return this._getApprover(instance);
},
getSectionLabels: function(ramId) {
return this._getSectionLabels(ramId);
},
_getSectionLabels: function(ramId) {
var result = {};
var ram = new GlideRecord('sn_risk_advanced_risk_assessment_methodology');
if (!ram.get(ramId)) {
return;
}
var asmtTypeToAsmtStateMapping = {
'sn_risk_advanced_inherent_assessment': '2',
'sn_risk_advanced_control_assessment': '3',
'sn_risk_advanced_residual_assessment': '4',
'sn_risk_advanced_target_assessment': '10'
};
var asmtInstance = new GlideRecord('sn_risk_advanced_assessment_type');
asmtInstance.addQuery('risk_assessment_methodology', ramId);
asmtInstance.query();
while (asmtInstance.next()) {
var asmtType = asmtInstance.getValue('sys_class_name');
result[asmtTypeToAsmtStateMapping[asmtType]] = {};
result[asmtTypeToAsmtStateMapping[asmtType]]['section_title'] = this._getLabel(asmtInstance, asmtTypeToAsmtStateMapping[asmtType], 'section_title', false);
result[asmtTypeToAsmtStateMapping[asmtType]]['qualitative_score_label'] = this._getLabel(asmtInstance, asmtTypeToAsmtStateMapping[asmtType], 'qualitative_score_label', false);
result[asmtTypeToAsmtStateMapping[asmtType]]['quantitative_score_label'] = this._getLabel(asmtInstance, asmtTypeToAsmtStateMapping[asmtType], 'quantitative_score_label', false);
// Get lowercase labels
result[asmtTypeToAsmtStateMapping[asmtType]]['section_title_lowercase'] = this._getLabel(asmtInstance, asmtTypeToAsmtStateMapping[asmtType], 'section_title', true);
result[asmtTypeToAsmtStateMapping[asmtType]]['qualitative_score_label_lowercase'] = this._getLabel(asmtInstance, asmtTypeToAsmtStateMapping[asmtType], 'qualitative_score_label', true);
result[asmtTypeToAsmtStateMapping[asmtType]]['quantitative_score_label_lowercase'] = this._getLabel(asmtInstance, asmtTypeToAsmtStateMapping[asmtType], 'quantitative_score_label', true);
}
// For assessment types that are not present, append default terminology to the result
for (var key in asmtTypeToAsmtStateMapping) {
if (!result.hasOwnProperty(asmtTypeToAsmtStateMapping[key])) {
result[asmtTypeToAsmtStateMapping[key]] = {};
result[asmtTypeToAsmtStateMapping[key]]['section_title'] = this._getLabel(null, asmtTypeToAsmtStateMapping[key], 'section_title', false);
result[asmtTypeToAsmtStateMapping[key]]['qualitative_score_label'] = this._getLabel(null, asmtTypeToAsmtStateMapping[key], 'qualitative_score_label', false);
result[asmtTypeToAsmtStateMapping[key]]['quantitative_score_label'] = this._getLabel(null, asmtTypeToAsmtStateMapping[key], 'quantitative_score_label', false);
// Get lowercase labels
result[asmtTypeToAsmtStateMapping[key]]['section_title_lowercase'] = this._getLabel(null, asmtTypeToAsmtStateMapping[key], 'section_title', true);
result[asmtTypeToAsmtStateMapping[key]]['qualitative_score_label_lowercase'] = this._getLabel(null, asmtTypeToAsmtStateMapping[key], 'qualitative_score_label', true);
result[asmtTypeToAsmtStateMapping[key]]['quantitative_score_label_lowercase'] = this._getLabel(null, asmtTypeToAsmtStateMapping[key], 'quantitative_score_label', true);
}
}
return result;
},
_getLabel: function(asmtInstance, state, label, convertToLowerCase) {
var finalLabel = '';
if (asmtInstance) {
var sectionLabel = asmtInstance.getDisplayValue(label);
if (sectionLabel)
finalLabel = sectionLabel;
else
finalLabel = this.defaultSectionLabels[state][label];
} else {
finalLabel = this.defaultSectionLabels[state][label];
}
return convertToLowerCase ? this._convertLabelToLowerCase(finalLabel) : finalLabel;
},
_convertLabelToLowerCase: function(label) {
if (!label) return null;
var words = label.split(" ");
for (var i = 0; i < words.length; i++) {
if (words[i].toUpperCase() != words[i]) {
words[i] = words[i].toLowerCase();
}
}
return words.join(" ");
},
_updateRiskAssessmentComments: function(assessmentInstanceId, comments) {
var assessmentInstance = new GlideRecord("sn_risk_advanced_risk_assessment_instance");
if (!assessmentInstance.get(assessmentInstanceId))
return;
assessmentInstance.comments = comments;
assessmentInstance.update();
},
_getAssessmentType: function(assessmentState) {
return this.stateToAssessmentTypeMapping[assessmentState];
},
_getAssessmentData: function(assessmentId) {
var data = {};
var assessmentInstance = new GlideRecord("sn_risk_advanced_risk_assessment_instance");
if (!assessmentInstance.get(assessmentId))
return data;
var state = assessmentInstance.getValue('state');
var ramId = assessmentInstance.getValue('risk_assessment_methodology');
var statesToFetchData = this._getStatesToFetchData(ramId, assessmentId);
for (var i = 0; i < statesToFetchData.length; i++) {
var stateToFetch = statesToFetchData[i];
if (stateToFetch != 10 && stateToFetch > state)
break;
//If state is response fetch response data else fetch factors data
if (stateToFetch == 5)
data[stateToFetch] = new sn_risk_advanced.RiskAssessmentUtils().getRiskResponseData(assessmentId);
else
data[stateToFetch] = new sn_risk_advanced.RiskAssessmentUtils().getAssessmentResponseData(assessmentId, this.stateToAssessmentTypeMapping[stateToFetch], ramId);
}
var appetiteUtils = new sn_risk_advanced.RiskAppetiteUtils();
data.riskResponseMandatoryData = new sn_risk_advanced.RiskAssessmentConfigurationUtils().isRiskResponseMandatory(assessmentInstance);
data.lastStateCommentMandatoryData = appetiteUtils.isJustificationRequired(assessmentId);
data.userInputMaxLengthInfo = this._gettMaxLengthOfUserInputFields();
data.sectionLabels = this.getSectionLabels(ramId);
data.isRiskResponseSingleSelect = assessmentInstance.risk_assessment_methodology.risk_response_single_select;
return data;
},
_gettMaxLengthOfUserInputFields: function() {
var data = {};
var advancedRiskUtils = new sn_risk_advanced.AdvancedRiskUtils();
data.factorResponseMaxLength = parseInt(advancedRiskUtils.getDictionaryFieldValue("sn_risk_advanced_risk_assessment_instance_response", "factor_response", "max_length"));
data.factorCommentsMaxLength = parseInt(advancedRiskUtils.getDictionaryFieldValue("sn_risk_advanced_risk_assessment_instance_response", "additional_comments", "max_length"));
data.inherentJustificationMaxLength = parseInt(advancedRiskUtils.getDictionaryFieldValue("sn_risk_advanced_risk_assessment_instance", "inherent_justification", "max_length"));
data.controlJustificationMaxLength = parseInt(advancedRiskUtils.getDictionaryFieldValue("sn_risk_advanced_risk_assessment_instance", "control_justification", "max_length"));
data.residualJustificationMaxLength = parseInt(advancedRiskUtils.getDictionaryFieldValue("sn_risk_advanced_risk_assessment_instance", "residual_justification", "max_length"));
data.riskResponseJustificationMaxLength = parseInt(advancedRiskUtils.getDictionaryFieldValue("sn_risk_advanced_risk_assessment_instance", "risk_response_justification", "max_length"));
data.targetJustificationMaxLength = parseInt(advancedRiskUtils.getDictionaryFieldValue("sn_risk_advanced_risk_assessment_instance", "target_justification", "max_length"));
return data;
},
_getStatesToFetchData: function(ramdId, assessmentId) {
var statesToFetchData = [];
var ram = new GlideRecord("sn_risk_advanced_risk_assessment_methodology");
ram.get(ramdId);
if (ram.getValue('inherent_risk') == true)
statesToFetchData.push(2);
if (ram.getValue('control_effectiveness') == true)
statesToFetchData.push(3);
if (ram.getValue('residual_risk') == true)
statesToFetchData.push(4);
if (new sn_risk_advanced.RiskAssessmentUtils().hasTargetAssessment(ramdId, assessmentId))
statesToFetchData.push(10);
if (ram.getValue('enable_risk_response_workflow') == true)
statesToFetchData.push(5);
return statesToFetchData;
},
_getNavigationInfo: function(instanceId) {
var navInfoObject = {};
var scoreFieldMap = {
'sn_risk_advanced_inherent_assessment': 'summary_inherent_risk',
'sn_risk_advanced_control_assessment': 'summary_control_effectiveness',
'sn_risk_advanced_residual_assessment': 'summary_residual_risk',
'sn_risk_advanced_target_assessment': 'summary_target_risk',
'sn_risk_advanced_inherent_assessment_state': '2',
'sn_risk_advanced_control_assessment_state': '3',
'sn_risk_advanced_residual_assessment_state': '4',
'sn_risk_advanced_target_assessment_state': '10',
'sn_risk_advanced_inherent_assessment_justification': 'inherent_justification',
'sn_risk_advanced_control_assessment_justification': 'control_justification',
'sn_risk_advanced_residual_assessment_justification': 'residual_justification',
'sn_risk_advanced_target_assessment_justification': 'target_justification',
'sn_risk_advanced_inherent_assessment_overridden': 'override_calculated_inherent_score',
'sn_risk_advanced_control_assessment_overridden': 'override_calculated_control_effectiveness',
'sn_risk_advanced_residual_assessment_overridden': 'override_calculated_residual_score',
'sn_risk_advanced_target_assessment_overridden': 'override_calculated_target_score',
'sn_risk_advanced_inherent_assessment_name': gs.getMessage('Inherent assessment'),
'sn_risk_advanced_control_assessment_name': gs.getMessage('Control assessment'),
'sn_risk_advanced_residual_assessment_name': gs.getMessage('Residual assessment'),
'sn_risk_advanced_target_assessment_name': gs.getMessage('Target assessment')
};
var ratingCriteria = new GlideRecord('sn_risk_advanced_rating_criteria');
var asmt = new GlideRecord("sn_risk_advanced_risk_assessment_instance");
asmt.get(instanceId);
navInfoObject.currentAsmtState = asmt.getValue('state');
var reAssessmentInProgress = asmt.getValue('sub_state') == 0;
var assessmentType = new GlideRecord('sn_risk_advanced_assessment_type');
assessmentType.addQuery('risk_assessment_methodology', asmt.getValue('risk_assessment_methodology'));
assessmentType.orderBy('display_order');
assessmentType.query();
var stageList = {};
var stageInfo;
while (assessmentType.next()) {
if (assessmentType.getValue('sys_class_name') === 'sn_risk_advanced_target_assessment') {
if (!new sn_risk_advanced.RiskAssessmentUtils().hasTargetAssessment(asmt.getValue('risk_assessment_methodology'), instanceId)) {
continue;
}
}
var assessmentTypeCol = ((assessmentType.getValue('sys_class_name') === 'sn_risk_advanced_control_assessment') ? 'control_assessment_methodology' : 'calculate_based_on');
stageInfo = {};
stageInfo.name = scoreFieldMap[assessmentType.getValue('sys_class_name') + '_name'];
stageInfo.score = asmt.getValue(scoreFieldMap[assessmentType.getValue('sys_class_name')] + '_score');
stageInfo.state = scoreFieldMap[assessmentType.getValue('sys_class_name') + '_state'];
stageInfo.overall_comments = asmt.getValue(scoreFieldMap[assessmentType.getValue('sys_class_name') + '_justification']);
var rating = asmt.getValue(scoreFieldMap[assessmentType.getValue('sys_class_name')]);
ratingCriteria.initialize();
if (ratingCriteria.get(rating)) {
stageInfo.riskRating = ratingCriteria.getValue('rating');
stageInfo.ratingColor = ratingCriteria.risk_color_style.background_color + '';
stageInfo.backgroundColor = ratingCriteria.risk_color_style.background_color_new + '';
}
var gr = new GlideRecord(assessmentType.getValue('sys_class_name'));
gr.get(assessmentType.getUniqueValue());
stageInfo.assessmentType = gr.getValue(assessmentTypeCol);
stageInfo.assessmentContribution = gr.getValue('assessment_contribution');
var factorsResponded = this._getAssessmentResponsesCount(asmt, this.stateToAssessmentTypeMapping[stageInfo.state]);
stageInfo.totalMandatoryFactors = factorsResponded.totalMandatoryFactors + '';
stageInfo.mandatoryFactorsAnswered = factorsResponded.mandatoryFactorsAnswered + '';
stageInfo.isScoreOverridden = (asmt.getValue(scoreFieldMap[assessmentType.getValue('sys_class_name') + '_overridden']) == "1");
stageInfo.isVisibleInWorkflow = true;
stageInfo.reAssessmentInProgress = reAssessmentInProgress;
if (assessmentType.getValue('sys_class_name') == "sn_risk_advanced_control_assessment" || assessmentType.getValue('sys_class_name') == "sn_risk_advanced_residual_assessment")
stageInfo.isAssessmentNotApplicable = this._isAssessmentNotApplicable(asmt, assessmentType.getValue('sys_class_name'));
if (assessmentType.getValue('sys_class_name') == "sn_risk_advanced_inherent_assessment")
stageInfo.quantitativeScore = (assessmentType.getValue('assessment_contribution') != '2') ? new sn_risk_advanced.GrcARAIntegrationUtils().getCurrencyValue(asmt.final_inherent_ale.getSessionCurrencyCode() + ";" + asmt.final_inherent_ale.getSessionValue()) : "";
else if (assessmentType.getValue('sys_class_name') == "sn_risk_advanced_residual_assessment")
stageInfo.quantitativeScore = (assessmentType.getValue('assessment_contribution') != '2') ? new sn_risk_advanced.GrcARAIntegrationUtils().getCurrencyValue(asmt.final_residual_ale.getSessionCurrencyCode() + ";" + asmt.final_residual_ale.getSessionValue()) : "";
else if (assessmentType.getValue('sys_class_name') == "sn_risk_advanced_target_assessment") {
stageInfo.quantitativeScore = (assessmentType.getValue('assessment_contribution') != '2') ? new sn_risk_advanced.GrcARAIntegrationUtils().getCurrencyValue(asmt.final_target_ale.getSessionCurrencyCode() + ";" + asmt.final_target_ale.getSessionValue()) : "";
stageInfo.isAssessmentMandatory = asmt.is_target_assessment_mandatory+'';
}
stageList[stageInfo.state] = stageInfo;
}
//Risk response
if (asmt.risk_assessment_methodology.enable_risk_response_workflow) {
stageInfo = {};
stageInfo.name = gs.getMessage('Risk response');
stageInfo.state = '5';
stageInfo.risk_response = asmt.getValue('risk_response');
stageInfo.comments = asmt.getValue('risk_response_justification');
stageInfo.isVisibleInWorkflow = true;
stageInfo.assessmentType = "RISK_RESPONSE";
stageInfo.reAssessmentInProgress = reAssessmentInProgress;
stageList[stageInfo.state] = stageInfo;
}
stageInfo = {};
if (navInfoObject.currentAsmtState < 6 || navInfoObject.currentAsmtState == 10) {
//Request approval/Mark as complete
if (new sn_risk_advanced.RiskAssessmentUtils().showRequestApproval(asmt)) {
stageInfo.name = 'Awaiting approval';
stageInfo.state = '6';
stageInfo.isVisibleInWorkflow = false;
} else if (new sn_risk_advanced.RiskAssessmentUtils().showMarkComplete(asmt)) {
stageInfo.name = 'Monitor';
stageInfo.state = '7';
stageInfo.isVisibleInWorkflow = false;
}
} else {
stageInfo.name = asmt.state.getDisplayValue();
stageInfo.state = navInfoObject.currentAsmtState;
stageInfo.isVisibleInWorkflow = false;
}
if (!gs.nil(stageInfo))
stageList[stageInfo.state] = stageInfo;
navInfoObject.stageList = stageList;
return navInfoObject;
},
_isAssessmentNotApplicable: function(asmt, asmtType) {
if (asmtType == "sn_risk_advanced_control_assessment") {
return asmt.getValue('mitigating_controls_to_assess') == "1";
} else {
return asmt.getValue("residual_risk_not_applicable") == "1";
}
},
_getAssessmentResponsesCount: function(asmt, assessmentType) {
var factorsResponded = {};
var instanceResponse = new GlideRecord('sn_risk_advanced_risk_assessment_instance_response');
instanceResponse.addQuery('assessment_instance_id', asmt.getUniqueValue());
instanceResponse.addQuery('assessment_type', assessmentType);
instanceResponse.addQuery('factor.mandatory_response', true);
instanceResponse.addQuery('factor.sys_class_name', 'sn_risk_advanced_manual_factor');
instanceResponse.query();
var totalMandatoryFactors = 0,
mandatoryFactorsAnswered = 0;
while (instanceResponse.next()) {
totalMandatoryFactors++;
if (instanceResponse.getValue('factor_response') != null) {
mandatoryFactorsAnswered++;
}
}
factorsResponded.totalMandatoryFactors = totalMandatoryFactors;
factorsResponded.mandatoryFactorsAnswered = mandatoryFactorsAnswered;
return factorsResponded;
},
_getOverrideSectionInfo: function(assessmentId) {
var result = {};
var asmtInstanceRecord = new GlideRecord("sn_risk_advanced_risk_assessment_instance");
asmtInstanceRecord.get(assessmentId);
var ramId = asmtInstanceRecord.getValue("risk_assessment_methodology");
var ram = new GlideRecord("sn_risk_advanced_risk_assessment_methodology");
ram.get(ramId);
//Get computed risk and ale scores and their colors
this._getComputedValues(result, assessmentId);
//Flag on ram to override of computed scores, if false return the calculated scores/ales
var allow_override = ram.getValue("enable_override_of_assessment_results");
result.allow_override = allow_override;
if (allow_override == 0) {
return result;
}
//Overriding score is allowed,hence can get relevant data required for overriding
this._getParamsForVisibility(result, ramId);
//Getting choices for responses in override section
//Inherent Override Score choices
result.inherent_overridden_risk_choices = this._getRiskScoreChoices(ramId, 'Inherent Assessment');
result.inherent_overridden_risk = asmtInstanceRecord.getValue('inherent_overridden_risk');
result.override_calculated_inherent_score = asmtInstanceRecord.getValue('override_calculated_inherent_score');
result.inherent_overridden_ale_currency = asmtInstanceRecord.inherent_overridden_ale.getSessionCurrencyCode();
result.inherent_overridden_ale_value = asmtInstanceRecord.inherent_overridden_ale.getSessionValue();
//Residual Override Score choices
result.residual_overridden_risk_choices = this._getRiskScoreChoices(ramId, 'Residual Assessment');
result.residual_overridden_risk = asmtInstanceRecord.getValue('residual_overridden_risk');
result.override_calculated_residual_score = asmtInstanceRecord.getValue('override_calculated_residual_score');
result.residual_overridden_ale_currency = asmtInstanceRecord.residual_overridden_ale.getSessionCurrencyCode();
result.residual_overridden_ale_value = asmtInstanceRecord.residual_overridden_ale.getSessionValue();
//Control effectivenees override score choices
result.control_overridden_effectiveness_choices = this._getRiskScoreChoices(ramId, 'Control Assessment');
result.control_overridden_effectiveness = asmtInstanceRecord.getValue('control_overridden_effectiveness');
result.override_calculated_control_effectiveness = asmtInstanceRecord.getValue('override_calculated_control_effectiveness');
//Target Override Score choices
result.target_overridden_risk_choices = this._getRiskScoreChoices(ramId, 'Target Assessment');
result.target_overridden_risk = asmtInstanceRecord.getValue('target_overridden_risk');
result.override_calculated_target_score = asmtInstanceRecord.getValue('override_calculated_target_score');
result.target_overridden_ale_currency = asmtInstanceRecord.target_overridden_ale.getSessionCurrencyCode();
result.target_overridden_ale_value = asmtInstanceRecord.target_overridden_ale.getSessionValue();
return result;
},
_getRiskScoreChoices: function(ramId, assessmentName) {
var ratingCriteria = new GlideRecord("sn_risk_advanced_rating_criteria");
var score = [];
var score_sysIdsQuery = new sn_risk_advanced.RiskAssessmentUtils().getRelatedRatingCriterias(ramId, assessmentName);
ratingCriteria.addEncodedQuery(score_sysIdsQuery);
ratingCriteria.orderBy("overridden_score");
ratingCriteria.query();
while (ratingCriteria.next()) {
var item = {};
item.id = ratingCriteria.getUniqueValue();
item.label = ratingCriteria.getValue("concat_rating_overridden_score");
item.color = ratingCriteria.getValue("background_color");
score.push(item);
}
return score;
},
_getComputedValues: function(result, assessmentId) {
var asmtInstanceRecord = new GlideRecord("sn_risk_advanced_risk_assessment_instance");
asmtInstanceRecord.get(assessmentId);
var ramId = asmtInstanceRecord.getValue("risk_assessment_methodology");
result.inherent_computed_risk_score = asmtInstanceRecord.getDisplayValue('inherent_computed_risk_score');
result.inherent_computed_ale = asmtInstanceRecord.inherent_computed_ale.getSessionDisplayValue();
result.inherent_calculated_color = asmtInstanceRecord.inherent_computed_risk.background_color;
result.residual_computed_risk_score = asmtInstanceRecord.getDisplayValue('residual_computed_risk_score');
result.residual_computed_ale = asmtInstanceRecord.residual_computed_ale.getSessionDisplayValue();
result.residual_calculated_color = asmtInstanceRecord.residual_computed_risk.background_color;
result.control_computed_effectiveness_score = asmtInstanceRecord.getDisplayValue('control_computed_effectiveness_score');
result.control_calculated_color = asmtInstanceRecord.control_computed_effectiveness.background_color;
result.target_computed_risk = asmtInstanceRecord.getValue('target_computed_risk');
result.target_computed_risk_score = asmtInstanceRecord.getValue('target_computed_risk_score');
result.target_computed_ale = asmtInstanceRecord.target_computed_ale.getSessionDisplayValue();
result.target_calculated_color = asmtInstanceRecord.target_computed_risk.background_color;
result.target_computed_risk_choices = this._getRiskScoreChoices(ramId, 'Target Assessment');
result.target_computed_ale_value = asmtInstanceRecord.target_computed_ale.getSessionValue();
result.target_computed_ale_currency = asmtInstanceRecord.target_computed_ale.getSessionCurrencyCode();
},
_getParamsForVisibility: function(result, ramId) {
//Flags for showing/hiding qualitative/quantitative assessment (initially set to false)
result.inherent_show_override_score = false;
result.inhernet_show_override_ale = false;
result.residual_show_override_score = false;
result.residual_show_override_ale = false;
result.target_show_override_score = false;
result.target_show_override_ale = false;
//This overrides the showing/hiding params
var assessmentTypeReference = new GlideRecord('sn_risk_advanced_assessment_type');
assessmentTypeReference.addQuery('risk_assessment_methodology', ramId);
assessmentTypeReference.query();
while (assessmentTypeReference.next()) {
if (assessmentTypeReference.name == "Inherent Assessment") {
var inherentAssessmentContribution = assessmentTypeReference.assessment_contribution;
if (inherentAssessmentContribution == "3") {
result.inherent_show_override_score = true;
result.inhernet_show_override_ale = true;
} else if (inherentAssessmentContribution == "2") {
result.inherent_show_override_score = true;
result.inhernet_show_override_ale = false;
} else {
result.inherent_show_override_score = false;
result.inhernet_show_override_ale = true;
}
}
if (assessmentTypeReference.name == "Residual Assessment") {
var residualAssessmentContribution = assessmentTypeReference.assessment_contribution;
if (residualAssessmentContribution == "3") {
result.residual_show_override_score = true;
result.residual_show_override_ale = true;
} else if (residualAssessmentContribution == "2") {
result.residual_show_override_score = true;
result.residual_show_override_ale = false;
} else {
result.residual_show_override_score = false;
result.residual_show_override_ale = true;
}
}
if (assessmentTypeReference.name == "Target Assessment") {
var targetAssessmentContribution = assessmentTypeReference.assessment_contribution;
if (targetAssessmentContribution == "3") {
result.target_show_override_score = true;
result.target_show_override_ale = true;
} else if (targetAssessmentContribution == "2") {
result.target_show_override_score = true;
result.target_show_override_ale = false;
} else {
result.target_show_override_score = false;
result.target_show_override_ale = true;
}
}
}
},
_getAssigneesToReassign: function(userInitials, type, options) {
var result = {};
var resultFound = false;
//Condition to check for domain or RAMs which can access extension points
if (options.domain != 0 || gs.getProperty('sn_risk_advanced.rams_with_extension_points').includes(options.ramId)) {
var hooks = new GlideScriptedExtensionPoint().getExtensions('sn_risk_advanced.getAssigneesToReassign');
hooks.forEach(function(hook) {
if (hook.handles(options)) {
result = hook.getUsersObject(userInitials, type, options);
}
//If result object returned not empty
if (!(Object.keys(result).length === 0 && result.constructor === Object)) {
resultFound = true;
return;
}
});
}
if (resultFound) {
return result;
}
var itemParent = {};
//Get count of total no. of users matching filter
var totalUsers = 0;
var userCount = new GlideAggregate('sys_user');
if (type == 'assessor')
userCount.addEncodedQuery("roles=sn_risk_advanced.ara_assessor^ORroles=sn_grc.business_user_lite^active=true");
else
userCount.addEncodedQuery("roles=sn_risk_advanced.ara_approver^active=true");
if (userInitials)
userCount.addEncodedQuery("^nameSTARTSWITH" + userInitials);
userCount.addAggregate('COUNT');
userCount.query();
if (userCount.next()) {
totalUsers = userCount.getAggregate('COUNT');
}
var heading = "";
var assigneeChoices = [];
var currentUser = gs.getUserID();
var users = new GlideRecord("sys_user");
if (type == 'assessor')
users.addEncodedQuery("roles=sn_risk_advanced.ara_assessor^ORroles=sn_grc.business_user_lite^active=true");
else
users.addEncodedQuery("roles=sn_risk_advanced.ara_approver^active=true");
if (userInitials)
users.addEncodedQuery("^nameSTARTSWITH" + userInitials);
users.orderBy("name");
users.setLimit(25);
users.query();
if (totalUsers > 25) {
heading = "Showing 1-25 out of " + totalUsers + " users";
} else {
if (totalUsers == 0) {
heading = "No users found";
} else {
heading = "Showing 1-" + totalUsers + " out of " + totalUsers + " users";
}
}
itemParent.label = heading;
while (users.next()) {
var item = {};
item.id = users.getUniqueValue();
item.label = users.getValue("name");
item.sublabel = users.getValue("email");
item.avatarProps = {
"userName": "user_name",
"imageSrc": users.getValue("avatar") + ".iix?t=small"
};
item.hasImage = users.getValue("avatar");
assigneeChoices.push(item);
}
itemParent.children = assigneeChoices;
result.assigneeChoices = [itemParent];
return result;
},
_getReasonsToReassign: function() {
var result = {};
var reasonsForReassigning = [{
"id": "incorrect",
"label": gs.getMessage("Incorrect assignment")
},
{
"id": "leave",
"label": gs.getMessage("Going on leave")
},
{
"id": "redistribute",
"label": gs.getMessage("Workload redistribution")
},
{
"id": "other",
"label": gs.getMessage("Other")
}
];
var choices = {
"reasonChoices": reasonsForReassigning,
"defaultReasonId": "incorrect"
};
result = choices;
return result;
},
_getApprover: function(instance) {
if (instance.getValue("approver_type") == '1') {
var approverUser = instance.getValue('approver_user');
if (approverUser)
return instance.approver_user.getDisplayValue();
} else if (instance.getValue("approver_type") == '2') {
var approverGroup = instance.getValue('approver_group');
if (approverGroup)
return instance.approver_group.getDisplayValue();
} else if (instance.getValue("approver_type") == '3') {
var mgr = new sn_risk_advanced.RiskAssessmentUtils().getAssessorManager(instance);
if (mgr != '') {
var user = new GlideRecord("sys_user");
user.get(mgr);
return user.getDisplayValue();
}
}
return '';
},
type: 'RiskAssessmentComponentUtilsBase'
};
Sys ID
6782aaec53072010bad1ddeeff7b12ba