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

Offical Documentation

Official Docs: