Name

global.PMKingstonTopTaskUpgradeHelper

Description

No description available

Script

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

  process: function () {
      // gs.log("========== START OF PMKingstonTopTaskUpgradeHelper ============= ");
      this.populateTopTasksOnRelation();
      this.populateTopTaskOnNotification();
      // gs.log("========== END OF PMKingstonTopTaskUpgradeHelper ============= ");
  },

  distinctIds: function (table, column, nullQueryColumn) {
      // gs.log("Into distinctIds -> " + table + " | " + column + " | " + nullQueryColumn);
      var distinctSysIds = [];
      var ga = new GlideAggregate(table);
      ga.addAggregate("COUNT", column);
      ga.addNullQuery(nullQueryColumn);
      ga.groupBy(column);
      ga.query();
      while(ga.next()) {
          distinctSysIds.push(ga.getValue(column));
      }
      return distinctSysIds;
  },

  populateTopTasksOnRelation: function () {
      // gs.log("Into populateTopTasksOnRelation");
      var distinctParentIds = this.distinctIds("planned_task_rel_planned_task", "parent", "parent_top_task");
      var distinctChildIds = this.distinctIds("planned_task_rel_planned_task", "child", "child_top_task");
      var arrayUtil = new ArrayUtil();
      arrayUtil.concat(distinctParentIds, distinctChildIds);
      arrayUtil.unique(distinctParentIds);


      var gr = new GlideRecord("planned_task");
      gr.addQuery("sys_id", "IN", distinctParentIds.join(","));
      gr.query();
      while(gr.next()) {
          this.multiUpdateColumn("planned_task_rel_planned_task", "parent", gr.getValue("sys_id"),
              "parent_top_task", gr.getValue("top_task"));
          this.multiUpdateColumn("planned_task_rel_planned_task", "child", gr.getValue("sys_id"),
              "child_top_task", gr.getValue("top_task"));
      }
  },

  populateTopTaskOnNotification: function () {
      // gs.log("Into populateTopTaskOnNotification");
      var distinctTaskIds = this.distinctIds("planned_task_notification", "task", "task_top_task");
      if(distinctTaskIds.length > 0) {
          var gr = new GlideRecord("planned_task");
          gr.addQuery("sys_id", "IN", distinctTaskIds.join(","));
          gr.query();
          while(gr.next()) {
              this.multiUpdateColumn('planned_task_notification', 'task',
                  gr.getValue("sys_id"), 'task_top_task', gr.getValue("top_task"));
          }
      }
  },

  multiUpdateColumn: function (table, queryColumn, queryColumnValue, updateColumn, updateColumnValue) {
      //gs.log("Into multiUpdateColumn -> " + table + " | " + queryColumn + " | " + queryColumnValue + " | " + updateColumn
         // + " | " + updateColumnValue)
      var mUpdate = new GlideMultipleUpdate(table);
      mUpdate.addQuery(queryColumn, queryColumnValue);
      mUpdate.setValue(updateColumn, updateColumnValue);
      mUpdate.execute();
  },

  type: 'PMKingstonTopTaskUpgradeHelper'
};

Sys ID

85ab74e19fc00300598a5bb0657fcf65

Offical Documentation

Official Docs: