Name
sn_grc.ItemGenerationV2ConditionsBase
Description
No description available
Script
var ItemGenerationV2ConditionsBase = Class.create();
ItemGenerationV2ConditionsBase.prototype = {
initialize: function(tableName) {
if (tableName) {
this.strategy = new ItemGenerationV2Utils().getStrategy(tableName);
}
},
documentHasActiveContents: function(documentId) {
if (gs.nil(this.strategy)) {
return false;
}
return this.strategy.documentHasContents(documentId, true);
},
documentHasInactiveContents: function(documentId) {
if (gs.nil(this.strategy)) {
return false;
}
return this.strategy.documentHasContents(documentId, false);
},
documentHasContents: function(documentId) {
if (gs.nil(this.strategy)) {
return false;
}
return this.strategy.documentHasContents(documentId);
},
documentHasEntityTypeAssociation: function(documentId) {
if (gs.nil(this.strategy)) {
return false;
}
return this.strategy.documentHasEntityTypeAssociation(documentId);
},
contentShouldAssociateProfileTypes: function(entityTypeId, content) {
if (gs.nil(this.strategy)) {
return false;
}
return this.entityTypeHasActiveEntities(entityTypeId) && this.strategy.contentShouldAssociateProfileTypes(content);
},
contentShouldDissociateProfileTypes: function(entityTypeId, contentId) {
// If entity type doesnt exist, meaning this action is caused by entity type deletion, skip item generation process
var profileType = new GlideRecord('sn_grc_profile_type');
if (!profileType.get(entityTypeId)) {
return false;
}
var contentRecord = new GlideRecord('sn_grc_content');
if (!contentRecord.get(contentId)) {
return false;
}
return this.entityTypeHasEntities(entityTypeId);
},
documentShouldAssociateEntityTypes: function(entityTypeId, document) {
if (gs.nil(this.strategy)) {
return false;
}
return this.strategy.documentShouldAssociateProfileTypes(document);
},
documentShouldDissociateEntityTypes: function(entityTypeId, documentId) {
// If entity type doesnt exist, meaning this action is caused by entity type deletion, skip item generation process
var profileType = new GlideRecord('sn_grc_profile_type');
if (!profileType.get(entityTypeId)) {
return false;
}
// If document doesnt exist, meaning this action is caused by document deletion, skip item generation process
var document = new GlideRecord('sn_grc_document');
if (!document.get(documentId)) {
return false;
}
return this.entityTypeHasEntities(entityTypeId);
},
entityTypeHasActiveContentAssociation: function(entityTypeId) {
var util = new ItemGenerationV2Utils();
// Get all the contents attached to the profile type
var contentToEntityTypeTables = new GlideTableHierarchy('sn_grc_m2m_content_profile_type').getTableExtensions();
for (var i = 0; i < contentToEntityTypeTables.length; i++) {
var contentToEntityTypeTable = contentToEntityTypeTables[i];
// Get contents
var contentToProfileType = new GlideRecord(contentToEntityTypeTable);
contentToProfileType.addQuery('sn_grc_profile_type', entityTypeId);
contentToProfileType.addQuery('sn_grc_content.active', 'true');
contentToProfileType.setLimit(1);
contentToProfileType.query();
if (contentToProfileType.hasNext()) {
return true;
}
}
return false;
},
entityTypeHasEntities: function(entityTypeId) {
var entityToET = new GlideRecord('sn_grc_m2m_profile_profile_type');
entityToET.addQuery('profile_type', entityTypeId);
entityToET.setLimit(1);
entityToET.query();
return entityToET.hasNext();
},
entityTypeHasActiveEntities: function(entityTypeId) {
var entityToET = new GlideRecord('sn_grc_m2m_profile_profile_type');
entityToET.addQuery('profile_type', entityTypeId);
entityToET.addQuery('profile.active', true);
entityToET.setLimit(1);
entityToET.query();
return entityToET.hasNext();
},
entityTypeHasInactiveEntities: function(entityTypeId) {
var entityToET = new GlideRecord('sn_grc_m2m_profile_profile_type');
entityToET.addQuery('profile_type', entityTypeId);
entityToET.addQuery('profile.active', false);
entityToET.setLimit(1);
entityToET.query();
return entityToET.hasNext();
},
entityHasAssociatedItem: function(entityId) {
var item = new GlideAggregate('sn_grc_item');
item.addQuery('profile', entityId);
item.addAggregate('COUNT');
item.query();
item.next();
if (item.getAggregate('COUNT') > 0) return true;
var itemEntityM2m = new GlideAggregate('sn_grc_m2m_item_entity');
itemEntityM2m.addQuery('entity', entityId);
itemEntityM2m.addAggregate('COUNT');
itemEntityM2m.query();
itemEntityM2m.next();
return itemEntityM2m.getAggregate('COUNT') > 0;
},
entityTypeHasItemAssociation: function(entityTypeId, addItemActiveQuery) {
var itemToEntityType = new GlideRecord('sn_grc_m2m_item_entity_type');
itemToEntityType.addQuery('entity_type', entityTypeId);
if (addItemActiveQuery)
itemToEntityType.addQuery('item.active', true);
itemToEntityType.setLimit(1);
itemToEntityType.query();
return itemToEntityType.hasNext();
},
hasEntityTypeSourceOnItemEntityAssociation: function(entityTypeId, isActive) {
var itemToEntity = new GlideRecord('sn_grc_m2m_item_entity');
itemToEntity.addQuery('source_entity_types', 'CONTAINS', entityTypeId);
itemToEntity.addQuery('active', isActive);
itemToEntity.setLimit(1);
itemToEntity.query();
return itemToEntity.hasNext();
},
canAssociateContentToEntity: function(content, profile) {
return this.strategy.canAssociateContentToEntity(content, profile);
},
contentHasActiveDownStreamEntities: function(contentID) {
return this.contentHasActiveAdditionalEntities(contentID) || this.contentHasActiveAssociatedEntities(contentID);
},
contentHasActiveDownStreamEntitiesOrItems: function(contentID) {
return this.contentHasActiveAdditionalEntities(contentID) || this.contentHasActiveAssociatedEntities(contentID) || this.contentHasActiveItems(contentID);
},
contentHasActiveItems: function(contentID) {
var item = new GlideRecord(this.strategy.itemTable);
item.addActiveQuery();
item.addQuery('content', contentID);
item.addQuery('instance', true);
item.setLimit(1);
item.query();
return item.hasNext();
},
contentHasActiveAssociatedEntities: function(contentID) {
var contentProfileTypeGr = new GlideRecord(this.strategy.getContentToProfileTypeTable());
contentProfileTypeGr.addQuery('sn_grc_content', contentID);
contentProfileTypeGr.addQuery('sn_grc_profile_type.active', true);
var profileTypeActiveEntity = contentProfileTypeGr.addJoinQuery('sn_grc_m2m_profile_profile_type', 'sn_grc_profile_type', 'profile_type');
profileTypeActiveEntity.addCondition('sn_grc_profile.active', true);
contentProfileTypeGr.query();
return contentProfileTypeGr.hasNext();
},
contentHasActiveAdditionalEntities: function(contentID) {
var addEntityGr = new GlideRecord('sn_grc_m2m_content_profile');
addEntityGr.addQuery('sn_grc_content', contentID);
addEntityGr.addQuery('sn_grc_profile.active', true);
addEntityGr.setLimit(1);
addEntityGr.query();
return addEntityGr.hasNext();
},
contentHasManualyCreatedItemOrInactiveCommonControl: function(contentID) {
var itemGr = new GlideAggregate('sn_grc_item');
itemGr.addAggregate('COUNT');
itemGr.addQuery('content', contentID);
itemGr.addQuery('profile.active', true);
itemGr.addQuery('active', false);
itemGr.addQuery('created_one_off=true^ORitem_function=1');
itemGr.addQuery('retired_manually', false);
itemGr.query();
if (itemGr.next() && itemGr.getAggregate('COUNT') > 0)
return true;
return false;
},
contentHasActiveProcessingActivities: function(contentID) {
var coProcessingActivityM2MGr = new GlideRecord('sn_privacy_m2m_policy_statement_processing_activity');
if (coProcessingActivityM2MGr.isValid()) {
coProcessingActivityM2MGr.addQuery('policy_statement', contentID);
coProcessingActivityM2MGr.addQuery('processing_activity.active', true);
coProcessingActivityM2MGr.setLimit(1);
coProcessingActivityM2MGr.query();
return coProcessingActivityM2MGr.hasNext();
}
return false;
},
contentActivationShouldGenerateAction: function(content) {
return (this.contentHasActiveDownStreamEntities(content.getUniqueValue()) || this.contentHasManualyCreatedItemOrInactiveCommonControl(content.getUniqueValue()) || this.contentHasActiveProcessingActivities(content.getUniqueValue())) && this.strategy.recordCanCreateItems(content);
},
contentHasActiveItem: function(contentId) {
if (gs.nil(this.strategy)) {
return false;
}
var item = new GlideRecord(this.strategy.itemTable);
item.addActiveQuery();
item.addQuery('content', contentId);
item.setLimit(1);
item.query();
return item.hasNext();
},
checkIfRiskComplianceInstalled: function() {
return (GlidePluginManager.isActive('sn_risk') || GlidePluginManager.isActive('com.sn_risk')) &&
(GlidePluginManager.isActive('sn_compliance') || GlidePluginManager.isActive('com.sn_compliance'));
},
type: 'ItemGenerationV2ConditionsBase'
};
Sys ID
d700add807722010bbc77f04a9d30099