Name

sn_gf.WorkItemGoalRelationshipHelper

Description

No description available

Script

var WorkItemGoalRelationshipHelper = Class.create();

WorkItemGoalRelationshipHelper.insertOrUpdateWorkItemGoalRelationship = function(previous, current) {
  //previous & current are GlideRecord instances of Work Item
  var operation = current.operation();
  var previousPrimaryGoalId = previous.getValue('primary_goal');
  var currentPrimaryGoalId = current.getValue('primary_goal');
  var tableName = sn_gf.GFGoalRelationshipSNC.getWorkItemTableName(current);
  var workItemId = current.getUniqueValue();
  if (operation == "insert") { //WorkItem is inserted
      var planningItemIdForWorkItem = GlidePluginManager.isActive("com.sn_align_cmn_int") ? sn_gf.GFIntegrationUtil.getPlanningItemIdForExecutionEntity(workItemId) : null;
      if (planningItemIdForWorkItem != null && sn_gf.GFGoalRelationshipSNC.checkGoalRelationshipRec(currentPrimaryGoalId, "sn_align_core_planning_item", planningItemIdForWorkItem, true)) {
          sn_gf.GFGoalRelationshipSNC.populateWorkItemOfExistingGoalRelationships("sn_align_core_planning_item", planningItemIdForWorkItem, tableName, workItemId);
      } else {
          (new sn_gf.GFGoalRelationship()).createGoalRelationship(currentPrimaryGoalId, tableName, workItemId, true);
      }
  } else if (operation == "update") { //WorkItem is updated
      sn_gf.GoalRelationshipHelper.insertOrUpdateGoalRelationshipWhenWorkItemIsUpdated(previous, current);
  }
};
WorkItemGoalRelationshipHelper.getOtherPrimaryGoalRelationshipOnWorkItem = function(goalId, entityId) {
  var goalRelationshipGr = new GlideRecord(sn_gf.GoalFrameworkConstants.GOAL_RELATIONSHIP_TABLE);
  goalRelationshipGr.addQuery('goal', '!=', goalId);
  goalRelationshipGr.addQuery('entity_id', entityId);
  goalRelationshipGr.addQuery('is_primary_goal', true);
  goalRelationshipGr.query();
  if (goalRelationshipGr.next()) {
      return goalRelationshipGr;
  }
  return null;
};

WorkItemGoalRelationshipHelper.updatePrimaryGoalOnWorkItem = function(goalId, entityTableName, entityId) {
  if (!sn_gf.WorkItemGoalRelationshipHelper.isValidWorkItemWithPrimaryGoal(entityTableName))
      return;
  var entityGr = new GlideRecord(entityTableName);
  entityGr.get(entityId);
  if (entityGr.isValidRecord() && entityGr.isValidField('primary_goal')) {
      entityGr.setValue('primary_goal', goalId);
      entityGr.update();
  }
};

WorkItemGoalRelationshipHelper.resetPrimaryGoalOnWorkEntity = function(goalRelationshipRecord) {
  if (!goalRelationshipRecord.isValid() || (goalRelationshipRecord.isValidField('entity_id') && !goalRelationshipRecord.getValue('entity_id')))
      return;
  var workEntityGr = new GlideRecord(goalRelationshipRecord.getValue('table_name'));
  if (workEntityGr.isValid() && workEntityGr.isValidField('primary_goal') && workEntityGr.get(goalRelationshipRecord.getValue('entity_id'))) {
      workEntityGr.setValue('primary_goal', '');
      workEntityGr.update();
  }

};

WorkItemGoalRelationshipHelper.getDisplayNameOfWorkItem = function(goalRelationshipRecord) {
  if (!goalRelationshipRecord.isValid() || (goalRelationshipRecord.isValidField('entity_id') && !goalRelationshipRecord.getValue('entity_id')))
      return;
  var workEntityGr = new GlideRecord(goalRelationshipRecord.getValue('table_name'));
  if (workEntityGr.isValid() && workEntityGr.isValidField('primary_goal') && workEntityGr.get(goalRelationshipRecord.getValue('entity_id'))) {
      return GlideStringUtil.escapeHTML(goalRelationshipRecord.getDisplayValue('entity_id'));
  }

};

WorkItemGoalRelationshipHelper.doesAnyOtherPrimaryGoalExistForWorkItem = function(goalRelationshipRecord) {
  var goalRelationshipGr = new GlideRecord(sn_gf.GoalFrameworkConstants.GOAL_RELATIONSHIP_TABLE);
  goalRelationshipGr.addQuery('goal', '!=', goalRelationshipRecord.getValue('goal'));
  goalRelationshipGr.addQuery('entity_id', goalRelationshipRecord.getValue('entity_id'));
  goalRelationshipGr.addQuery('is_primary_goal', '1');
  goalRelationshipGr.query();
  return goalRelationshipGr.next();
};

WorkItemGoalRelationshipHelper.isValidWorkItemWithPrimaryGoal = function(tableName) {
  var validWorkItemsWithPrimaryGoal = {
      'pm_project': true,
      'pm_program': true,
      'dmn_demand': true,
      'rm_epic': true,
      'sn_safe_epic': true,
      'rm_feature': true,
  };
  if (GlidePluginManager.isActive('com.sn_align_core')) {
      var planningItemTables = sn_gf.GFAlignCoreUtil.getAllPlanningItemAndStrategicItemTables();
      for (var i = 0; i < planningItemTables.length; i++)
          validWorkItemsWithPrimaryGoal[planningItemTables[i]] = true;
  }

  return (tableName in validWorkItemsWithPrimaryGoal && validWorkItemsWithPrimaryGoal[tableName]);
};

Sys ID

f706a51677313010a55229354f5a9991

Offical Documentation

Official Docs: