Name

global.PlannedTaskDBApi

Description

Implements extension point global.PlannedTaskDBApiExtentions. This is a default extension and it should execute at last

Script

var PlannedTaskDBApi = Class.create();
PlannedTaskDBApi.prototype = {
  initialize: function() {
    this.isSecure = gs.getProperty("com.snc.planned_task_db_action.isSecure", false);
  },
  
  shouldExecute: function(table) {
  	var gr = new GlideRecord(table);
  	if(gr.instanceOf('pm_project') || gr.instanceOf('pm_project_task') || table === 'planned_task_rel_planned_task')
  		return true;
  	return false;
  },
  
  insert: function(table, task, columns, run_calc_brs, workflow) {
      var gr;
    if(this.isSecure == 'true')
      gr = new GlideRecordSecure(table);
    else
      gr = new GlideRecord(table);
    gr.get(task.id);
    if (!gr.isValidRecord()) {
        gr.setValue("parent", task.parent);
        this._setTaskValues(gr, task, columns);
        if(!workflow)
          gr.setWorkflow(false);
        else
          gr.setValue("run_calc_brs", run_calc_brs);
        return this._getResponse(gr.insert(), gr);
      } else {
  		      return this.update(table, task, columns, run_calc_brs, workflow);
  	  }
  },

  update: function(table, task, columns, run_calc_brs, workflow) {
  	var gr;
  	if(this.isSecure == 'true')
  		gr = new GlideRecordSecure(table);
  	else
  		gr = new GlideRecord(table);
  	gr.get(task.id);
  	gr.setValue("parent", task.parent);
      this._setTaskValues(gr, task, columns);
  	if(!workflow)
  		gr.setWorkflow(false);
  	else
  		gr.setValue("run_calc_brs", run_calc_brs);
  	return this._getResponse(gr.update(), gr);
  },
  
  saveRelation: function(table, relation, run_calc_brs, workflow) {
  	var relationGr = new GlideRecord(table);
  	relationGr.get(relation.id);
  	new PTGlobalAPI().buildPlannedTaskRelationGR(relationGr, relation);
  	if(!workflow)
  		relationGr.setWorkflow(false);
  	else
  		relationGr.setValue("run_calc_brs", run_calc_brs);
  	var id = relationGr.insert();
  	return this._getResponse(id, relationGr);
  },

  deleteRecord: function(table, id) {
  	var gr = new GlideRecord(table);
  	gr.get(id);
  	gr.deleteRecord()
  	return this._getResponse(id, gr);
  },
  
  deleteMultipleRecords: function(table,encodedQuery, run_calc_brs, workflow) {
  	if (workflow && !run_calc_brs){
  		var grD = new GlideRecord(table);
  		grD.addEncodedQuery(encodedQuery);
  		grD.setValue("run_calc_brs", run_calc_brs);
  		grD.setWorkflow(false);
  		grD.updateMultiple();
  	}
  	
  	var gr = new GlideRecord(table);
  	gr.addEncodedQuery(encodedQuery);
  	if(!workflow)
  		gr.setWorkflow(false);
  	gr.deleteMultiple();
  },

  _setTaskValues: function(gr, task, columns) {
      new global.PTGlobalAPI().buildGlideRecord(gr, task, columns);
  },
  
  _getResponse: function(id, gr) {
  	return {
  		sysId: id,
  		message: gr.getLastErrorMessage()
  	};
  },

  type: 'PlannedTaskDBApi'
};

Sys ID

c4d70b0877f31010b83a28489a106133

Offical Documentation

Official Docs: