Name

sn_grc.ItemGenerationV2UtilsBase

Description

No description available

Script

var ItemGenerationV2UtilsBase = Class.create();
ItemGenerationV2UtilsBase.prototype = {
  initialize: function() {},

  deletePTRelationships: function(profileType, m2mTableName, m2mFieldName, valueFieldName) {
      return this._deletePTRelationships(profileType, m2mTableName, m2mFieldName, valueFieldName);
  },

  deleteSourceInItem: function(itemGr, sourceId) {
      this._deleteSourceInItem(itemGr, sourceId);
  },

  getStrategy: function(tableName) {
      var strategy = null;
      if (tableName.match('sn_risk'))
          try {
              strategy = new sn_risk.RiskGeneratorV2Strategy();
          }
      catch (err) {
          gs.addErrorMessage(gs.getMessage('Item Generation requires that at least version GRC: Risk Management (13.x.x) and GRC: Policy and Compliance Management (13.x.x) be activated.'));
          return;
      } else if (tableName.match('sn_compliance') || tableName.match('sn_privacy'))
          try {
              strategy = new sn_compliance.ControlGeneratorV2Strategy();
          }
      catch (err) {
          gs.addErrorMessage(gs.getMessage('Item Generation requires that at least version GRC: Risk Management (13.x.x) and GRC: Policy and Compliance Management (13.x.x) be activated.'));
          return;
      }
      return strategy;
  },

  deleteOrUpdateSourceInItemEntityM2m: function(m2mGr, sourceField, source, skipInsertAction) {
  	var strategy = this.getStrategy(m2mGr.getTableName());
  	if(!gs.nil(strategy))
  		strategy.deleteOrUpdateSourceInItemEntityM2m(m2mGr, sourceField, source, skipInsertAction);
  },

  _deletePTRelationships: function(profileType, m2mTableName, m2mFieldName, valueFieldName) {
      var relatedRecordIds = {};
      var relatedRecordTables = new GlideTableHierarchy(m2mTableName).getTableExtensions();
      for (var item in relatedRecordTables) {
          var relatedRecord = new GlideRecord(relatedRecordTables[item]);
          relatedRecord.addQuery('sn_grc_profile_type', profileType.sys_id);
          relatedRecord.query();

          while (relatedRecord.next()) {
              var strategy = this.getStrategy(relatedRecord.getRecordClassName());
              strategy.deleteRecords(relatedRecord, false);
              if (valueFieldName != null)
                  relatedRecordIds[relatedRecord[m2mFieldName]] = relatedRecord[m2mFieldName][valueFieldName];
              else
                  relatedRecordIds[relatedRecord[m2mFieldName]] = true;
          }
      }
      return relatedRecordIds;
  },

  _deleteSourceInItem: function(itemGR, sourceId) {
      var isItemDeactivated = false;
      var source = '';
      if (itemGR && itemGR.isValidRecord()) {
          if (!itemGR.source.nil()) {
              source = itemGR.getValue('source');
              source = source.replace(sourceId + ',', '');
              itemGR.setValue('source', source);
              if (source == '' && itemGR.getValue('item_function') == '0') {
                  itemGR.setValue('active', false);
                  itemGR.skipInsertActionToQueue = true;
                  isItemDeactivated = true;
              }
              var itemId = itemGR.update();

              if (isItemDeactivated && itemId) {
                  var actionParms = {
                      action: 'deactivate_item',
                      source: itemGR.getUniqueValue(),
                      table: itemGR.getTableName(),
                      item_id: itemGR.getUniqueValue()
                  };
                  new sn_grc.IGItemActionHandler(actionParms, this.getStrategy(itemGR.getValue('sys_class_name'))).execute();
              }
          }
      }
  },

  type: 'ItemGenerationV2UtilsBase'
};

Sys ID

ebe380e7536220104f3eddeeff7b12c8

Offical Documentation

Official Docs: