Name
sn_grc.IGEntityActionHandler
Description
No description available
Script
var IGEntityActionHandler = Class.create();
IGEntityActionHandler.prototype = {
initialize: function(action) {
this.actionType = String(action.action);
this.source = String(action.source);
this.sourceTable = String(action.table);
if (action.entity_id) {
this.entityId = String(action.entity_id);
}
if (action.entity_ids) {
this.entityIds = String(action.entity_ids);
}
},
execute: function() {
if (gs.nil(this.actionType) || (gs.nil(this.entityId) && gs.nil(this.entityIds))) {
return;
}
switch (this.actionType) {
case 'deactivate_entity':
return this._deactivateEntity(this.entityId);
case 'deactivate_bulk_entities':
return this._deactivateEntity(this.entityIds);
case 'activate_entity':
return this._activateEntity(this.entityId);
case 'activate_bulk_entities':
return this._activateEntity(this.entityIds);
}
},
_deactivateEntity: function(entityIds) {
var utils = new ItemGenerationV2Utils();
var itemInheritance = new sn_grc.ItemInheritance();
var itemEntityM2mExtendedTables = itemInheritance.getChildrenOfItemToEntityTable();
for (var i in itemEntityM2mExtendedTables) {
var strategy = utils.getStrategy(itemEntityM2mExtendedTables[i]);
var itemToEntityGr = new GlideRecord(itemEntityM2mExtendedTables[i]);
itemToEntityGr.addQuery('entity', 'IN', entityIds);
itemToEntityGr.addQuery('active', true);
itemToEntityGr.addQuery('item.active', true);
itemToEntityGr.query();
while (itemToEntityGr.next()) {
itemToEntityGr.setValue('active', false);
itemToEntityGr.skipInsertActionToQueue = true;
itemToEntityGr.update();
var actionParams = {
'action': 'deactivate_entity_to_item',
'source': itemToEntityGr.getUniqueValue(),
'table': itemToEntityGr.getTableName(),
'entity_id': itemToEntityGr.entity + '',
'item_id': itemToEntityGr.item + ''
};
new sn_grc.IGItemToEntityActionHandler(actionParams, strategy).execute();
}
}
var itemExtendedTables = itemInheritance.getChildrenOfItemTable();
for (var i in itemExtendedTables) {
var itemStrategy = utils.getStrategy(itemExtendedTables[i]);
var item = new GlideRecord(itemExtendedTables[i]);
item.addQuery('profile', 'IN', entityIds);
item.addActiveQuery();
item.query();
while (item.next()) {
item.setValue('active', false);
item.skipInsertActionToQueue = true;
item.update();
if (item.update()) {
var actionParms = {
action: 'deactivate_item',
source: item.getUniqueValue(),
table: item.getTableName(),
item_id: item.getUniqueValue()
};
new IGItemActionHandler(actionParms, itemStrategy).execute();
}
}
}
if ((GlidePluginManager.isActive('sn_privacy') || GlidePluginManager.isActive('com.sn_privacy'))) {
var grProfile = new GlideRecord("sn_grc_profile");
grProfile.addQuery('sys_id', 'IN', entityIds);
grProfile.query();
while (grProfile.next()) {
var workNotes = gs.getMessage('This processing activity is deactivated because the related entity is deactivated and the processing activity is not considered for privacy reports.');
new sn_privacy.PrivacyUtils().processProcessingActivityOnEntityChange(grProfile, workNotes);
}
}
},
_activateEntity: function(entityIds) {
var utils = new ItemGenerationV2Utils();
var itemInheritance = new sn_grc.ItemInheritance();
var itemEntityM2mExtendedTables = itemInheritance.getChildrenOfItemToEntityTable();
for (var i in itemEntityM2mExtendedTables) {
var strategy = utils.getStrategy(itemEntityM2mExtendedTables[i]);
var itemToEntityGr = new GlideRecord(itemEntityM2mExtendedTables[i]);
itemToEntityGr.addQuery('entity', 'IN', entityIds);
itemToEntityGr.addQuery('active', false);
itemToEntityGr.addQuery('item.active', true);
itemToEntityGr.query();
while (itemToEntityGr.next())
strategy.addEntityToItem(itemToEntityGr.getValue('entity'), itemToEntityGr.getValue('item'), '', '', true);
}
var content = [];
var itemExtendedTables = itemInheritance.getChildrenOfItemTable();
for (var i in itemExtendedTables) {
var itemStrategy = utils.getStrategy(itemExtendedTables[i]);
var item = new GlideRecord(itemExtendedTables[i]);
item.addQuery('profile', 'IN', entityIds);
item.addQuery('content.active', 'true').addOrCondition('content', '=', '');
item.addQuery('active', 'false');
item.addQuery('source', '!=', '');
item.addQuery('retired_manually', 'false');
item.query();
while (item.next()) {
item.setValue('active', true);
if (!gs.nil(item.content))
content.push(item.getValue('content'));
item.skipInsertActionToQueue = true;
if (item.update()) {
var actionParms = {
action: 'activate_item',
source: item.getUniqueValue(),
table: item.getTableName(),
item_id: item.getUniqueValue(),
};
new IGItemActionHandler(actionParms, itemStrategy).execute();
}
}
}
if ((GlidePluginManager.isActive('sn_risk') || GlidePluginManager.isActive('com.sn_risk'))) {
this._checkContentToContent(content);
}
},
_checkContentToContent: function(content) {
var strategy = new ItemGenerationV2Utils().getStrategy('sn_risk');
var RStoCO = new GlideRecord('sn_risk_m2m_risk_definition_policy_statement');
RStoCO.addQuery('sn_compliance_policy_statement', 'IN', content).addOrCondition('sn_risk_definition', 'IN', content);
RStoCO.query();
while (RStoCO.next()) {
var actionParams = {
'action': 'add_content_to_content',
'source': RStoCO.getUniqueValue(),
'table': RStoCO.getTableName(),
'content_id': RStoCO.getValue('sn_risk_definition')
};
new IGContentActionHandler(actionParams, strategy).execute();
}
},
type: 'IGEntityActionHandler'
};
Sys ID
ff6b697707403010bbc77f04a9d300ab