Name
sn_risk_advanced.AdvancedRiskAssessmentAjax
Description
No description available
Script
var AdvancedRiskAssessmentAjax = Class.create();
AdvancedRiskAssessmentAjax.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
checkIfInherentControlDefined: function() {
if (gs.hasRole('sn_risk_advanced.ara_admin')) {
var riskAsmtMethodology = this.getParameter('sysparm_ram');
var inherent = new GlideRecord('sn_risk_advanced_assessment_type');
inherent.addEncodedQuery('sys_class_name=sn_risk_advanced_inherent_assessment^assessment_contribution!=1^NQsys_class_name=sn_risk_advanced_control_assessment');
inherent.addQuery('risk_assessment_methodology', riskAsmtMethodology);
inherent.query();
if (inherent.getRowCount() == 2) {
return true;
}
return false;
}
return false;
},
validateScheduler: function(schedulerId) {
schedulerId = schedulerId ? schedulerId : this.getParameter('sysparm_sysId');
var scope = new GlideAggregate('sn_risk_advanced_risk_assessment_scope');
scope.addQuery('risk_assessment_scheduler', schedulerId);
scope.addAggregate('COUNT');
scope.query();
if (scope.next()) {
if (scope.getAggregate('COUNT') > 0)
return true;
}
return false;
},
bulkInitiateAsmtsEventFire: function() {
var schedulerId = this.getParameter('sysparm_sysId');
gs.eventQueue('sn_risk_advanced.bulk_initiate_asmts', null, schedulerId);
return true;
},
checkIfInherentDefined: function() {
if (gs.hasRole('sn_risk_advanced.ara_admin')) {
var riskAsmtMethodology = this.getParameter('sysparm_ram');
var inherent = new GlideRecord('sn_risk_advanced_inherent_assessment');
return inherent.get('risk_assessment_methodology', riskAsmtMethodology);
} else
return false;
},
checkIfResidualDefinedAndFactorBased: function() {
if (gs.hasRole('sn_risk_advanced.ara_admin')) {
var riskAsmtMethodology = this.getParameter('sysparm_ram');
var residual = new GlideRecord('sn_risk_advanced_residual_assessment');
if (residual.get('risk_assessment_methodology', riskAsmtMethodology)) {
return residual.getValue('calculate_based_on') == 'factor_responses';
} else {
return false;
}
} else
return false;
},
getAdvancedRiskHeatmapData: function() {
var heatmapType = this.getParameter('sysparm_heatmapType');
var includeColor = this.getParameter('sysparm_includeColor');
var ramID = this.getParameter('sysparm_ramID');
var encodedQuery = this.getParameter('sysparm_query');
// Last parameter is the limit, it is set to -1 so that all the records are fetched
return new global.JSON().encode(new sn_risk_advanced.RiskAdvancedHeatmap().getAdvancedRiskHeatmapData(heatmapType, includeColor, ramID, encodedQuery, -1));
},
getDefaultRAMForAnEntity: function() {
var entityId = this.getParameter('sysparm_entityId');
return new sn_risk_advanced.RiskAssessmentMethodologyUtils().getDefaultRAMForAnEntity(entityId);
},
getEntitiesWhichCanGetAssociatedToRAM: function(entityClasses, assessmentMethodology) {
var entityList = [];
if (gs.hasRole('sn_risk.manager')) {
var entities = new sn_risk_advanced.RiskAssessmentScopeUtils().getEntitiesAssociatedToRAM(assessmentMethodology);
var profile = new GlideRecord('sn_grc_profile');
profile.addActiveQuery();
profile.addQuery("profile_class", 'IN', entityClasses);
profile.addQuery("sys_id", "NOT IN", JSON.parse(entities));
profile.query();
while (profile.next()) {
entityList.push(profile.getUniqueValue());
}
}
return entityList;
},
createRiskAssessmentScope: function() {
if (!(new GlideRecord('sn_risk_advanced_risk_assessment_scope')).canCreate())
return this._error(gs.getMessage('Insufficient privileges to generate assessment scope'));
var assessmentMethodology = this.getParameter('sysparm_ram_id');
if (!assessmentMethodology)
return this._error(gs.getMessage('Risk assessment methodology is missing in the request'));
var entityIds = this.getParameter('sysparm_entity_ids');
if (!entityIds)
return this._error(gs.getMessage('Entity ids are missing in the request'));
var schedulerId = this.getParameter('sysparm_scheduler_id');
if (!schedulerId)
return this._error(gs.getMessage('Risk assessment scheduler id is missing in the request'));
var response = new sn_risk_advanced.RiskAssessmentScopeUtils().createRiskAssessmentScope(assessmentMethodology, entityIds, schedulerId);
var entityCreationMessage = ((response.scopesCreated == 1) ? gs.getMessage('{0} assessable entity associated', response.scopesCreated + '') : gs.getMessage('{0} assessable entities associated', response.scopesCreated + ''));
var result = {
successMessage: entityCreationMessage,
failureMessage: (response.failedScopeCount) > 0 ? gs.getMessage('Unable to generate {0} scopes', response.failedScopeCount + '') : '',
};
return new global.JSON().encode(result);
},
getValuesFromAssessment: function() {
var riskAsmtMethodology = this.getParameter('sysparm_ram');
var assessmentType = this.getParameter('sysparm_asmt');
var asmt = new GlideRecord(assessmentType);
if (asmt.get('risk_assessment_methodology', riskAsmtMethodology)) {
var asmtObject = {};
asmtObject.qualitative_scoring_logic = asmt.getValue('qualitative_scoring_logic');
asmtObject.quantitative_scoring_logic = asmt.getValue('quantitative_scoring_logic');
asmtObject.assessment_contribution = asmt.getValue('assessment_contribution');
asmtObject.qualitative_script = asmt.getValue('qualitative_script');
asmtObject.quantitative_script = asmt.getValue('quantitative_script');
asmtObject.enable_heatmap = asmt.getValue('enable_heatmap');
asmtObject.x_axis_factor = asmt.getValue('x_axis_factor');
asmtObject.y_axis_factor = asmt.getValue('y_axis_factor');
return new global.JSON().encode(asmtObject);
}
},
validateMakeAssessmentMandatoryScript: function() {
if (gs.hasRole('sn_risk_advanced.ara_admin') && gs.hasRole('sn_grc.developer')) {
var asmtTypeId = this.getParameter('sysparm_asmtTypeId');
var assessmentType = new GlideRecord('sn_risk_advanced_assessment_type');
assessmentType.get(asmtTypeId);
var result = new sn_risk_advanced.RiskAssessmentMethodologyUtils().validateScript(assessmentType, 'make_assessment_mandatory_script');
return JSON.stringify(result);
} else {
return gs.getMessage("Insufficient privileges to perform this action");
}
},
type: 'AdvancedRiskAssessmentAjax'
});
Sys ID
3440ad33b7950010bded618dce11a923