Name
global.PlannedTaskNotificationHandler
Description
Notification handler - handles accepting of notification and raising notification
Script
var PlannedTaskNotificationHandler = Class.create();
PlannedTaskNotificationHandler.prototype = {
initialize: function() {
this.syncColumns = ['start_date', 'end_date', 'duration', 'short_description'];
this.plannedTaskNotification = new PlannedTaskNotification();
},
raiseNotification: function(taskId, origTaskId, relationId, previousStartDate) {
PPMDebug.log("Into PlannedTaskNotificationHandler.raiseNotification -> " + taskId + " | " + origTaskId +
" | " + relationId);
var ptn = new PlannedTaskNotification();
var relation = ShadowTaskQueryHelper.relationRecord(relationId);
if ( relation.isValidRecord() ) {
var predUpstreamTask = relation.parent.getRefRecord();
if ( predUpstreamTask.isValidRecord() ) {
var shadowTaskOfAffectedTask = ShadowTaskQueryHelper.projectTaskRecord(taskId);
var params = { source_id: predUpstreamTask.getValue('sys_id'),
task_id: origTaskId,
shadow_task_id: taskId,
relation_applied: relation.getValue("sys_id"),
start_date: shadowTaskOfAffectedTask.getValue('start_date'),
previous_start_date: previousStartDate
};
params.msg = this.formulateNotificationMessage(params);
var raised = ptn.isNewNotificationPending(params);
var notification;
var extenalRelation = ShadowTaskQueryHelper.findExternalRelation(params.relation_applied);
var downStreamRelation = new PlannedTaskRelation(ShadowTaskQueryHelper.findDownstreamShadowRelation(extenalRelation.getValue("sys_id")));
downStreamRelation.setProcessFlag(false);
if ( !raised.status ) {
notification = ptn.createNotification(params);
return {status: true, record: notification};
}
else {
notification = raised.record;
//ptn.updateNotification(notification, params);
return { status: false, record: notification};
}
}
}
return { status: false };
},
formulateNotificationMessage: function(params) {
PPMDebug.log("Into PlannedTaskNotificationHandler.formulateNotificationMessage -> " + (new JSON()).encode(params));
var affectedTask = ShadowTaskQueryHelper.projectTaskRecord(params['task_id']);
var sourceTask = ShadowTaskQueryHelper.projectTaskRecord(params['source_id']);
var shadowTaskOfAffectedTask = ShadowTaskQueryHelper.projectTaskRecord(params['shadow_task_id']);
var previousStartDate = new GlideDateTime();
if(JSUtil.notNil(params['previous_start_date'])) {
previousStartDate.setValue(params['previous_start_date']);
} else {
previousStartDate.setValue(shadowTaskOfAffectedTask.getValue('start_date'));
}
var msg = gs.getMessage('{0} - {1} impacted by changes in {2} - {3} with Current Start Date: {4} to New Start Date: {5}',
[affectedTask.getValue('number'), affectedTask.getDisplayValue(),
sourceTask.getValue('number'), sourceTask.getDisplayValue(),
affectedTask.getDisplayValue("start_date"), previousStartDate.getDisplayValue()]);
PPMDebug.log("Into PlannedTaskNotificationHandler.formulateNotificationMessage msg-> " + msg);
return msg;
},
acceptNotification: function (_current) {
PPMDebug.log("Into PlannedTaskNotificationHandler.acceptNotification -> " + _current.getValue("sys_id"));
var notif = new PlannedTaskNotification(_current);
var project = notif.getProject();
this.acceptNotificationAndRecalRelationIfRequired(project.getValue('sys_id'), project.getValue('sys_class_name'), notif.getValue('sys_id'));
},
acceptNotificationAndRecalRelationIfRequired: function(entityId, sysClassName, notificationSysid){
gs.info("Into PlannedTaskNotificationHandler.acceptNotificationAndRecalRelationIfRequired, entityID-> "+entityId +",sysClassName-> "+sysClassName+
" ,notification id ->"+notificationSysid);
var api = new SNC.PlannedTaskAPI();
var msgs = PlanningConsoleMessages.seededMessages();
api.setTranslatedMessages(msgs);
var data = api.acceptNotification(entityId, sysClassName, notificationSysid);
PostEngineHandlers.fire(entityId, data);
this._recalculateDownstreamRelationWhenFireBrFromPlanningConsoleIsEnabled(entityId, sysClassName, api, notificationSysid);
return data;
},
_recalculateDownstreamRelationWhenFireBrFromPlanningConsoleIsEnabled: function(entityId, sysClassName, plannedTaskAPI, notificationSysid){
var fireBrEnabledFromPlanningConsoleIsEnabled = PMPropertiesUtil.getProperty('com.snc.project.fire_brs_from_planning_console', sysClassName);
if(fireBrEnabledFromPlanningConsoleIsEnabled){
this._recalculateDownstreamRelationAndFirePostEngineHandlers(entityId, notificationSysid, plannedTaskAPI);
}
},
_recalculateDownstreamRelationAndFirePostEngineHandlers: function(topTaskId ,notificationSysid, plannedTaskAPI){
var plannedTaskNotification = new PlannedTaskNotification();
plannedTaskNotification = plannedTaskNotification.get(notificationSysid);
var relationApplied = plannedTaskNotification.getValue("relation_applied");
if(JSUtil.notNil(relationApplied)){
PPMDebug.log("Into PlannedTaskNotificationHandler._recalculateRelation relationApplied-> " +relationApplied);
var extenalRelation = ShadowTaskQueryHelper.findExternalRelation(relationApplied);
var downStreamShadowRelation = new PlannedTaskRelation(ShadowTaskQueryHelper.findDownstreamShadowRelation(extenalRelation.getValue("sys_id")));
downStreamShadowRelation.setProcessFlag(true);
var data = plannedTaskAPI.recalculateRelation(downStreamShadowRelation.record(), topTaskId, "update");
PostEngineHandlers.fire(topTaskId, data);
}
},
type: 'PlannedTaskNotificationHandler'
};
Sys ID
e15d7dc39f122200598a5bb0657fcf03