Name

sn_risk_advanced.RiskIdentificationAjax

Description

No description available

Script

var RiskIdentificationAjax = Class.create();
RiskIdentificationAjax.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

  getStatesToHide: function() {
      var ri = new GlideRecord("sn_risk_advanced_risk_identification");
      ri.get(this.getParameter("sysparm_ri_id"));
      var states = [];
      if (!ri.risk_identification_configuration.initiate_questionnaire) {
          states.push("1");
          states.push("2");
      } else {
          if (!ri.risk_identification_configuration.questionnaire_review)
              states.push("2");
      }
      if (!ri.risk_identification_configuration.inherent_assessment || !ri.entity.applies_to) {
          states.push("3");
      }

      return states.join();
  },

  getUnassignedRecordsFromLibrary: function(riId, table) {
      if (gs.hasRole('sn_risk.manager') || gs.hasRole('sn_compliance.manager')) {

          var ri = new GlideRecord('sn_risk_advanced_risk_identification');
          ri.get(riId);
          var utils = new sn_risk_advanced.RiskIdentificationUtils();
          var records = '';
          if (table == 'sn_risk_definition') {
              records = utils.getUnassignedRisksFromLibrary(ri);
          } else if (table == 'sn_compliance_policy') {
              records = utils.getUnassignedPoliciesFromLibrary(ri);
          } else if (table == 'sn_compliance_citation') {
              records = utils.getUnassignedCitationsFromLibrary(ri);
          } else if (table == 'sn_compliance_policy_statement') {
              records = utils.getUnassignedControlObjectivesFromLibrary(ri);
          }
          return records;
      }
  },

  filterRecordsByInformationObjects: function(riId, table) {
      if (gs.hasRole('sn_risk.manager') || gs.hasRole('sn_compliance.manager')) {
          var ri = new GlideRecord('sn_risk_advanced_risk_identification');
          ri.get(riId);
          var utils = new sn_risk_advanced.RiskIdentificationUtils();
          var records = '';
          if (table == 'sn_risk_definition') {
              records = utils.filterRiskStatementsByInformationObjects(ri);
          } else if (table == 'sn_compliance_policy') {
              records = utils.filterPoliciesByInformationObjects(ri);
          } else if (table == 'sn_compliance_citation') {
              records = utils.filterCitationsByInformationObjects(ri);
          }
          return records;
      }
  },

  associateRecordsToRiskIdentification: function() {
      if (gs.hasRole('sn_compliance.manager') && gs.hasRole('sn_risk.manager')) {
          var count = 0;
          var riId = this.getParameter('sysparm_risk_identification_id');
          var table = this.getParameter('sysparm_table');
          var column = this.getParameter('sysparm_column');
          var recordIds = this.getParameter('sysparm_record_ids').split(',');
          for (var i = 0; i < recordIds.length; i++) {
              var utils = new sn_risk_advanced.RiskIdentificationUtils();
              var result = utils.associateRecordToRiskIdentification(riId, table, column, recordIds[i]);
              if (result == "success") {
                  count = count + 1;
              }
          }
          count = count + '';
          var recordType;
          var recordType_plural;
          if (column == "sn_grc_content") {
              recordType = gs.getMessage("citation");
              recordType_plural = gs.getMessage("citations");
          } else if (column == "sn_grc_document") {
              recordType = gs.getMessage("policy");
              recordType_plural = gs.getMessage("policies");
          }
          if (count == 0) {
              return gs.getMessage("0 association(s) added.");
          } else if (count == 1) {
              return gs.getMessage("1 {0} associated successfully.", recordType);
          } else {
              return gs.getMessage("{0} {1} associated successfully.", [count, recordType_plural]);
          }
      } else {
          return gs.getMessage("Insufficient privileges to perform this action");
      }
  },

  removeAssociation: function() {
      if (gs.hasRole('sn_compliance.manager') && gs.hasRole('sn_risk.manager')) {
          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 = 0;
          var utils = new sn_risk_advanced.RiskIdentificationUtils();
          count = utils.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);
          }
      } else {
          return gs.getMessage("Insufficient privileges to perform this action");
      }
  },

  attestControls: function() {
      if (gs.hasRole('sn_compliance.manager') && gs.hasRole('sn_risk.manager')) {
          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 = 0;
          var utils = new sn_risk_advanced.RiskIdentificationUtils();
          count = utils.moveControlsToAttestation(riId, table, recordIds_list);
          if (count == 0) {
              return gs.getMessage("0 control(s) moved to attest state.");
          } else if (count == 1) {
              return gs.getMessage("1 control moved to attest state successfully.");
          } else {
              return gs.getMessage("{0} controls moved to attest state successfully.", count);
          }
      } else {
          return gs.getMessage("Insufficient privileges to perform this action");
      }

  },

  getEntitiesWithoutRI: function(RiConfigId, table) {
      if (gs.hasRole('sn_risk.admin')) {
          var RiConfigObject = new GlideRecord('sn_risk_advanced_risk_identification_configuration');
          RiConfigObject.get(RiConfigId);
          var utils = new sn_risk_advanced.RiskIdentificationUtils();
          var records = '';
          if (table == 'sn_grc_profile') {
              records = utils.getEntitiesForRiskIdentificationConfiguration(RiConfigObject);
              return records;
          }
      }

  },

  createRiRecords: function() {
      if (gs.hasRole('sn_risk.admin')) {
          var count = 0;
          var RiConfigId = this.getParameter('sysparm_risk_identification_config_id');
          var RiConfigObject = new GlideRecord('sn_risk_advanced_risk_identification_configuration');
          RiConfigObject.get(RiConfigId);
          var recordIds_list = this.getParameter('sysparm_record_ids').split(',');
          var utils = new sn_risk_advanced.RiskIdentificationUtils();
          //Get count of newly created RI 
          count = utils.createRiForEntity(RiConfigObject, recordIds_list);
          if (count == 0) {
              return gs.getMessage("0 risk identification record(s) created.");
          } else if (count == 1) {
              return gs.getMessage("1 new risk identification record created.");
          } else {
              return gs.getMessage("{0} new risk identification records created.", count);
          }
      } else {
          return gs.getMessage("Insufficient privileges to perform this action");
      }
  },

  getAllControlListFromEntity: function(entity) {
      return new sn_risk_advanced.RiskIdentificationUtils().getAllControlListFromEntity(entity);
  },

  type: 'RiskIdentificationAjax'
});

Sys ID

fb489ad4777510102a272f589a1061f2

Offical Documentation

Official Docs: