Name
sn_risk.RiskUtilsAJAXV2
Description
Client-callable Risk methods.
Script
var RiskUtilsAJAXV2 = Class.create();
RiskUtilsAJAXV2.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
getRiskHeatmapData: function() {
var heatmapType = this.getParameter('sysparm_heatmapType');
var filter = this.getParameter('sysparm_filter');
var includeColor = this.getParameter('sysparm_includeColor');
return new global.JSON().encode(new RiskHeatmap().getRiskHeatmapData(heatmapType, filter, includeColor));
},
getRiskScore: function() {
if (!gs.hasRole('sn_risk.user') && !gs.hasRole('sn_compliance.manager'))
return '';
var impact = this.getParameter('sysparm_impact');
var likelihood = this.getParameter('sysparm_likelihood');
var grSignificance = new GlideRecord('sn_risk_criteria');
var grLikelihood = new GlideRecord('sn_risk_criteria');
if (!grSignificance.get(impact) || !grLikelihood.get(likelihood)) return '';
return new RiskUtilsV2().getRiskScore(grSignificance.currency_max_value.getReferenceValue(), grLikelihood.percentage_max_value).sys_id + '';
},
getRiskStatementFields: function() {
if (!gs.hasRole('sn_risk.user'))
return '';
var sysID = this.getParameter("sysparm_sysid");
var def = new GlideRecord("sn_risk_definition");
var fields = {};
if (def.get(sysID)) {
fields.name = def.name + "";
fields.description = def.description + "";
fields.additional_information = def.additional_information + "";
fields.category = def.category + "";
fields.impact = def.impact + "";
fields.likelihood = def.likelihood + "";
fields.residual_impact = def.residual_impact + "";
fields.residual_likelihood = def.residual_likelihood + "";
fields.inherent_currency = def.default_inherent_sle.getCurrencyCode() + "";
fields.residual_currency = def.default_residual_sle.getCurrencyCode() + "";
fields.default_inherent_sle = def.default_inherent_sle.getCurrencyValue() + "";
fields.default_residual_sle = def.default_residual_sle.getCurrencyValue() + "";
fields.default_inherent_aro = def.default_inherent_aro + "";
fields.default_residual_aro = def.default_residual_aro + "";
fields.attestation = def.attestation + "";
}
return (new global.JSON()).encode(fields);
},
getRiskCriteria: function() {
if (!gs.hasRole('sn_risk.user'))
return '';
var value = this.getParameter('sysparm_field_value');
// if the impact / likelihood selected is "None"
if (value == '') {
return '0';
}
var fieldType = this.getParameter('sysparm_field_type');
var gr = new GlideRecord('sn_risk_criteria');
gr.get(value);
var returnValue;
if (fieldType.equals('likelihood'))
returnValue = gr.getValue('percentage_max_value');
else {
var currencyCode = gr.currency_max_value.getCurrencyCode();
var val = gr.currency_max_value.getCurrencyValue();
returnValue = currencyCode + ";" + val;
}
if (returnValue)
return returnValue;
else
return false;
},
usingQualitative: function() {
if (!gs.hasRole('sn_risk.user'))
return '';
qual = gs.getProperty(this.getParameter('sysparm_prop_name'));
if (qual == 'true')
return 'true';
else
return 'false';
},
createRiskRelationship: function() {
if (gs.hasRole("sn_risk.user")) {
var upstreamRiskIDs = this.getParameter('sysparm_upstream_risk_ids').split(',');
var downstreamRiskIDs = this.getParameter('sysparm_downstream_risk_ids').split(',');
var stream = this.getParameter('sysparm_direction');
var mainID;
if (stream == 'upstream') {
mainID = downstreamRiskIDs;
this._createRelationships(mainID, upstreamRiskIDs, stream);
} else {
mainID = upstreamRiskIDs;
this._createRelationships(mainID, downstreamRiskIDs, stream);
}
var risk = new GlideRecord('sn_risk_risk');
if (risk.get(mainID[0])) {
var profile = new GlideRecord('sn_grc_profile');
if (profile.get(risk.getValue('profile'))) {
list = new RiskUtilsV2().getValidRisksForRelationships(profile, stream, mainID[0]);
if (list.length == 0)
return "true";
else
return "false";
}
}
}
return '';
},
removeAssociationToRiskIdentification: function() {
var table = this.getParameter('sysparm_table');
var riId = this.getParameter('sysparm_risk_identification_id');
var recordIds_list = this.getParameter('sysparm_record_ids').split(',');
var count = this._removeAssociationToRiskIdentification(riId, table, recordIds_list);
if (count == 0) {
return gs.getMessage("No associations removed.");
} else if (count == 1) {
return gs.getMessage("1 association removed successfully.");
} else {
return gs.getMessage("{0} associations removed successfully.", count);
}
},
_createRelationships: function(mainID, idsToLink, stream) {
var m2m;
for (var i = 0; i < idsToLink.length; i++) {
m2m = new GlideRecord('sn_risk_m2m_risk_risk');
if (stream == 'upstream') {
m2m.setValue('upstream_risk', idsToLink[i]);
m2m.setValue('downstream_risk', mainID[0]);
} else {
m2m.setValue('upstream_risk', mainID[0]);
m2m.setValue('downstream_risk', idsToLink[i]);
}
m2m.insert();
}
},
_removeAssociationToRiskIdentification: function(riId, table, recordIds_list) {
var confirmed_deletion = 0;
var table_name = table;
if (table_name == "sn_risk_risk") {
var ri = new GlideRecord('sn_risk_advanced_risk_identification');
ri.get(riId);
var risk = new GlideRecord('sn_risk_risk');
risk.addQuery('profile', ri.entity + '');
risk.addEncodedQuery('sys_idIN' + recordIds_list);
risk.query();
while (risk.next()) {
if (risk.deleteRecord()) {
confirmed_deletion = confirmed_deletion + 1;
}
}
return confirmed_deletion + '';
}
return 0;
},
});
Sys ID
91cfee8153130200dca62a9ca11c0803