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