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

Offical Documentation

Official Docs: