Name

global.InterProjectEventManager

Description

Inter project event manager - does two things - it raises events and handle the event

Script

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

  type: 'InterProjectEventManager'
};

InterProjectEventManager.EVENT = 'inter.project.relation.recalculate';
InterProjectEventManager.FULL_RECALCULATE_EVENT = 'inter.project.relation.full_recalculate';

InterProjectEventManager.raiseEvent = function (topTaskId, dirtyTasks) {
  gs.info("InterProjectEventManager: raiseEvent -> " + topTaskId + " | " + dirtyTasks);
  if(JSUtil.notNil(topTaskId) && JSUtil.notNil(dirtyTasks)) {
      var gr = new GlideRecord("planned_task");
      if( gr.get(topTaskId) ) {
          gs.eventQueue(InterProjectEventManager.EVENT, gr, topTaskId, dirtyTasks);
      }
  }
};

InterProjectEventManager.raiseFullRecalculateEvent = function (topTaskId) {
  gs.info("InterProjectEventManager: raiseFullRecalculateEvent -> " + topTaskId);
  // Currently we raise in diffrent flows or InterProjectTaskDeletionHandler and InterProjectRelationDeletionaHandler
  if( !InterProjectEventManager.isFullRecalculateInProgress(topTaskId) ) {
      var gr = new GlideRecord("planned_task");
      if(gr.get(topTaskId))
          gs.eventQueue(InterProjectEventManager.FULL_RECALCULATE_EVENT, gr, topTaskId);
  }
};

InterProjectEventManager.handleEvent = function (topTaskId, dirtyTasks) {
  gs.info("InterProjectEventManager: handleEvent -> " + topTaskId + " | " + dirtyTasks);
  if( JSUtil.notNil(topTaskId) && JSUtil.notNil(dirtyTasks)) {
      (new InterProjectEventProcessor()).process(topTaskId, dirtyTasks);
  }
};

InterProjectEventManager.handleFullRecalculateEvent = function (topTaskId) {
  gs.info("InterProjectEventManager: handleFullRecalculateEvent -> " + topTaskId);
  if( JSUtil.notNil(topTaskId) ) {
      (new InterProjectEventProcessor()).processForFullRecalculate(topTaskId);
  }
};

InterProjectEventManager.isFullRecalculateInProgress = function (topTaskId) {
  gs.info("InterProjectEventManager: isFullRecalculateInProgress -> " + topTaskId);
  if( JSUtil.notNil(topTaskId) ) {
      var gr = new GlideRecord("sysevent");
      gr.addQuery("name", InterProjectEventManager.FULL_RECALCULATE_EVENT);
      gr.addQuery("state", "ready");
      gr.addQuery("parm1", topTaskId);
      gr.addQuery("sys_created_on", ">=" , gs.daysAgoStart(1));
      gr.query();
      if(gr.next()) {
          gs.info("InterProjectEventManager: isFullRecalculateInProgress -> TRUE");
          return true;
      } 
      gs.info("InterProjectEventManager: isFullRecalculateInProgress -> FALSE");
      return false;
  }
  return true; // If undefined
};

Sys ID

6bd632ed9f622200598a5bb0657fcf61

Offical Documentation

Official Docs: