Name

sn_grc.IGItemToEntityTypeActionHandler

Description

No description available

Script

var IGItemToEntityTypeActionHandler = Class.create();
IGItemToEntityTypeActionHandler.prototype = {
  initialize: function(action) {
      this.actionType = action.action + '';
      this.source = action.source;
      this.sourceTable = action.table;
      this.entityTypeId = action.entity_type_id + '';
      this.itemId = action.item_id + '';
  },

  execute: function() {
      if (gs.nil(this.entityTypeId) || gs.nil(this.itemId)) {
          return;
      }

      var itemGr = new GlideRecord('sn_grc_item');
      if (!itemGr.get(this.itemId)) return;
      this.strategy = new ItemGenerationV2Utils().getStrategy(itemGr.getValue('sys_class_name'));

      if (this.strategy.itemTable == 'sn_risk_risk') return;

      switch (this.actionType) {
          case 'add_entity_type_to_item':
              return this._addEntityTypeToItem();
          case 'remove_entity_type_from_item':
              return this._removeEntityTypeFromItem();
      }
  },

  _addEntityTypeToItem: function() {
      var entityToEntityType = new GlideRecord('sn_grc_m2m_profile_profile_type');
      entityToEntityType.addQuery('profile_type', this.entityTypeId);
      entityToEntityType.addQuery('profile.active', true);
      entityToEntityType.query();

      while (entityToEntityType.next()) {
          var entityId = entityToEntityType.getValue('profile');
          this.strategy.addEntityToItem(entityId, this.itemId, 'source_entity_types', this.entityTypeId, true);
      }
  },

  _removeEntityTypeFromItem: function() {
      var itemEntityM2mExtendedTables = new sn_grc.ItemInheritance().getChildrenOfItemToEntityTable();

      for (var i in itemEntityM2mExtendedTables) {
          var itemToEntity = new GlideRecord(itemEntityM2mExtendedTables[i]);
          itemToEntity.addQuery('item', this.itemId);
          itemToEntity.addQuery('source_entity_types', 'CONTAINS', this.entityTypeId);
          itemToEntity.query();

          while (itemToEntity.next()) {
              this.strategy.deleteOrUpdateSourceInItemEntityM2m(itemToEntity, 'source_entity_types', this.entityTypeId, true);
          }
      }
  },

  type: 'IGItemToEntityTypeActionHandler'
};

Sys ID

f653df4577751110878c49647a5a99f0

Offical Documentation

Official Docs: