Name

global.UserTaskStatsUtil

Description

No description available

Script

var UserTaskStatsUtil = Class.create();
UserTaskStatsUtil.prototype = {
  initialize: function() {
  },
  
  conditionCheck : function(current,previous){
  	//1. if insert, check if assigned_to is not nil and update the num_tasks.
  	//2. if update, and assigned_to not nil, update num_tasks for current and decrement for previous user.
  	//3. on delete decrement for count for user.
  	//4. state becomes closed, decrement for user.
  	
  	if(current.operation() == "delete"){
  		if(!current.assigned_to.nil()){
  			this.decrementTaskAssigned(current.assigned_to);
  		}
  		return false;
  	}
  	if(current.assigned_to.changes() && previous && !previous.assigned_to.nil()){
  		this.decrementTaskAssigned(previous.assigned_to);
  	}
  	if(current.assigned_to.changes() || current.active.changes())
  		return true;
  	
  	return false;
  },
  
  incrementTaskAssigned: function(user){
  	var result = false;
  	if(!user.nil()){
  		var userTaskStats = new GlideRecord("user_task_stats");
  		userTaskStats.addQuery("user",user);
  		userTaskStats.query();
  		if(userTaskStats.next()){
  			userTaskStats.work_load = userTaskStats.work_load + 1;
  			userTaskStats.last_work_assigned = new GlideDateTime();
  			result = userTaskStats.update();
  		}
  		else{
  			userTaskStats.initialize();
  			userTaskStats.user = current.assigned_to;
  			userTaskStats.work_load = 1;
  			userTaskStats.last_work_assigned = new GlideDateTime();
  			result = userTaskStats.insert();
  		}
  	}
  	return result;
  },
  
  decrementTaskAssigned: function(user){
  	var result = false;
  	if(!user.nil()){
  		var userTaskStats = new GlideRecord("user_task_stats");
  		userTaskStats.addQuery("user",user);
  		userTaskStats.query();
  		if(userTaskStats.next()){
  			var currentLoad = userTaskStats.work_load;
  			if(currentLoad > 0)
  			{
  				userTaskStats.work_load = userTaskStats.work_load - 1;
  				result = userTaskStats.update();
  			}
  		}
  	}
  	return result;
  },

  type: 'UserTaskStatsUtil'
};

Sys ID

3c9025a0c33002001c845cb981d3ae91

Offical Documentation

Official Docs: