Name

sn_grc.ContentScopingAjax

Description

General AJAX utilities for GRC

Script

var ContentScopingAjax = Class.create();
ContentScopingAjax.prototype =  Object.extendsObject(global.AbstractAjaxProcessor, {
  associateContentToProfileTypes: function() {
  	var m2m;
  	var contentId = this.getParameter('sysparm_contentId');
  	var contentName = this.getParameter('sysparm_contentName');
  	var selectedPTsIds = this.getParameter('sysparm_selectedPTsIds');
  	var selectedPTsList = selectedPTsIds.split(',');
  	
  	for (var i = 0; i < selectedPTsList.length; i++) {
  		if (contentName == 'sn_compliance_policy_statement') {
  			m2m = new GlideRecord('sn_compliance_m2m_statement_profile_type');
  			m2m.sn_compliance_statement = contentId;
  		}
  		else if (contentName == 'sn_risk_definition') {
  			m2m = new GlideRecord('sn_risk_m2m_risk_definition_profile_type');
  			m2m.statement = contentId;
  		}
  		m2m.sn_grc_profile_type = selectedPTsList[i];
  		m2m.insert();
  	}
  },
  
  createProfileAndScope: function() {
  	var contentId = this.getParameter('sysparm_contentId');
  	var contentName = this.getParameter('sysparm_contentName');
  	var profileName = this.getParameter('sysparm_profile_name');		
  	var owner = this.getParameter('sysparm_owner');
  	var table = this.getParameter('sysparm_table');
  	var appliesTo = this.getParameter('sysparm_applies_to');		
  	
  	// Create profile if it doesnt already exist
  	var profileId = this.createProfile(table, appliesTo, owner, profileName);	
  	
  	// Create profile type if it doesnt already exist
  	this.createProfileType(profileId, profileName, contentName, contentId);
  	
  	return true;
  },
  
  createProfile: function(table, appliesTo, owner, profileName) {
  	var profileId = '';
  	var profile = new GlideRecord("sn_grc_profile");
  	profile.addQuery('table', table);
  	profile.addQuery('applies_to', appliesTo);
  	profile.setLimit(1);
  	profile.query();
  	if(profile.next()) 
  		profileId = profile.getUniqueValue();		
  	else {
  		profile = new GlideRecord("sn_grc_profile");
  		profile.table =  table;
  		profile.applies_to = appliesTo;
  		profile.owned_by = owner;
  		profile.name = profileName;
  		profileId = profile.insert();
  	}
  	return profileId;
  }, 

  createProfileType: function(profileId, profileName, contentName, contentId) {
  	var profileTypeId = '';
  	var profileType = new GlideRecord('sn_grc_profile_type');
  	if(profileType.get("name", profileName)) 
  		profileTypeId = profileType.getUniqueValue();
  	else {
  		profileType.name = profileName;
  		profileTypeId = profileType.insert();
  	}
  	
  	var profileToProfileType = new GlideRecord('sn_grc_m2m_profile_profile_type');
  	profileToProfileType.profile = profileId;
  	profileToProfileType.profile_type = profileTypeId;
  	profileToProfileType.insert();			
  	
  	var contentToProfileType;
  	if (contentName == 'sn_compliance_policy_statement') {
  		contentToProfileType = new GlideRecord('sn_compliance_m2m_statement_profile_type');							
  		contentToProfileType.sn_compliance_statement = contentId;
  	}
  	else if (contentName == 'sn_risk_definition') {
  		contentToProfileType = new GlideRecord('sn_risk_m2m_risk_definition_profile_type');
  		contentToProfileType.statement = contentId;
  	}
  	contentToProfileType.sn_grc_profile_type = profileTypeId;		
  	contentToProfileType.insert();
  },
  
  type: 'ContentScopingAjax'
});

Sys ID

31be3ff8d7800300bbc783e80e6103c1

Offical Documentation

Official Docs: