Name

sn_gf.GFUtil

Description

No description available

Script

var GFUtil = Class.create();
GFUtil.prototype = {
  initialize: function() {},

  type: 'GFUtil'
};

GFUtil.checkCircularLoop = function(childId, parentId, tableName, parentField) {
  if (childId == parentId)
      return true;
  if (!parentField)
      parentField = "parent_goal";
  var childEntities = new GlideRecord(tableName);
  childEntities.addQuery(parentField, childId);
  childEntities.query();
  while (childEntities.next()) {
      if (GFUtil.checkCircularLoop(childEntities.getUniqueValue(), parentId, tableName, parentField))
          return true;
  }
  return false;
};

GFUtil.checkDuplicateWorkItem = function(glideRecord) {
  if (!glideRecord.isValid())
      return false;
  var golaRelationshipGr = new GlideRecord(GoalFrameworkConstants.GOAL_RELATIONSHIP_TABLE);
  if (golaRelationshipGr.isValid()) {
      golaRelationshipGr.addQuery('goal', glideRecord.getValue('goal'));
      golaRelationshipGr.addQuery('entity_id', glideRecord.getValue('entity_id'));
      golaRelationshipGr.query();
      if (golaRelationshipGr.hasNext())
          return true;
  }
  return false;

};

GFUtil.getGoalRecordCount = function() {
  var goalGr = new GlideRecord(GoalFrameworkConstants.GOAL_CORE_TABLE);
  if (goalGr.isValid()) {
      goalGr.query();
      return goalGr.getRowCount();
  }
  return 0;

};

GFUtil.getStrategyRecordCount = function() {
  var strategyGr = new GlideRecord(GoalFrameworkConstants.STRATEGY_TABLE);
  if (strategyGr.isValid()) {
      strategyGr.query();
      return strategyGr.getRowCount();
  }
  return 0;

};

GFUtil.isInstanceOfCoreGoal = function(goalTableName) {
  var coreGoalHierarchy = new GlideTableHierarchy(sn_gf.GoalFrameworkConstants.GOAL_CORE_TABLE);
  var coreGoalHierarchyTables = coreGoalHierarchy.getHierarchy();
  return (coreGoalHierarchyTables.indexOf(goalTableName) > -1);
};

GFUtil.isInstanceOf = function(table,parentTable) {
  var glideTableHierarchy = new GlideTableHierarchy(table);
  var tableHierarchy = glideTableHierarchy.getHierarchy();
  return (tableHierarchy.indexOf(parentTable) > -1);
};

GFUtil.deleteRecord = function(tableName, sysId) {
  if(tableName === "goal")
  	tableName = "sn_gf_core_goal";
  else if(tableName === "target")
  	tableName = "sn_gf_goal_target";
  else
  	return false;
  
  var gr = new GlideRecord(tableName);
  gr.get(sysId);
  var recordDeleted = gr.deleteRecord();
  return recordDeleted;
};

GFUtil.updateRecord = function(tableName, sysId, fields) {
  var gr = new GlideRecordSecure(tableName);
  if (gr.get(sysId)) {
          var field = fields.split("=");
          if (field[0] === "actual_value" && !field[1] && tableName === "sn_gf_goal_target") {
              gr.setValue("percent_complete", "");
              gr.setValue(field[0], field[1]);
          } else if (field[0] === "contributors") {
              gr.setValue(field[0], field[1].split(","));
          } else {
              gr.setValue(field[0], field[1]);
          }
      
      var recordUpdated = gr.update();
      return recordUpdated;
  } else
      return false;
};

GFUtil.updateMultipleRecords = function(tableName, sysIds, fieldMap) {
  var gr = new GlideRecordSecure(tableName);
  if(!gr.isValid())
  	return;
  gr.addQuery('sys_id', 'IN', sysIds);
  gr.query();
  var fields = Object.keys(fieldMap);
  for(var i = 0; i < fields.length; i++) {
  	if(gr.isValidField(fields[i])) {
  		gr.setValue(fields[i], fieldMap[fields[i]]);
  	}
  }
  gr.updateMultiple();
};

GFUtil.getTableLabel= function(tableName) {
  var gr = new GlideRecord(tableName);
  return GlideStringUtil.escapeHTML(gr.getClassDisplayValue());
};

GFUtil.getTablePluralLabel= function(tableName) {
  var gr = new GlideRecord(tableName);
  return GlideStringUtil.escapeHTML(gr.getED().getPlural());
};

GFUtil.getTableHierarchy = function(tableName, tableHierarchyObject) {
  tableHierarchyObject[tableName] = true;
  var tableExtensions = new GlideTableHierarchy(tableName).getTableExtensions();
  for (var i = 0; i < tableExtensions.length; i++) {
      GFUtil.getTableHierarchy(tableExtensions[i], tableHierarchyObject);
  }
};

GFUtil.isValidTable = function(table) {
  if(gs.nil(table))
  	return false;
  var gr = new GlideRecord(table);
  return gr.isValid();
};

GFUtil.isValidField = function(table, field) {
  if(gs.nil(table) || gs.nil(field))
  	return false;
  var gr = new GlideRecord(table);
  return gr.isValid() && gr.isValidField(field);
};

GFUtil.isValidEnterpriseGoalField = function(field, considerCoreGoalFields) {
  var isValidEnterpriseGoalField = GFUtil.isValidField(sn_gf.GoalFrameworkConstants.GOAL_TABLE, field);
  if(!considerCoreGoalFields)
  	isValidEnterpriseGoalField = isValidEnterpriseGoalField && !GFUtil.isValidField(sn_gf.GoalFrameworkConstants.GOAL_CORE_TABLE, field);;
  return isValidEnterpriseGoalField;
};

GFUtil.getReferencedTable = function(table, field) {
  var dictionaryGr = new GlideRecord("sys_dictionary");
  dictionaryGr.addQuery("name", table);
  dictionaryGr.addQuery("element", field);
  dictionaryGr.query();
  if(dictionaryGr.next())
  	return dictionaryGr.getValue("reference");
  return "";
};

Sys ID

d6cba682c351b010242836046d40dd66

Offical Documentation

Official Docs: