Name

global.AgentEventUtil

Description

Implements extension point global.AgentEventUtil

Script

var AgentEventUtil = Class.create();
AgentEventUtil.prototype = {
  initialize: function() {
  },
  
  computeEvents: function(){
  	try {
  		var usersScheduleData = new global.AgentScheduleExtPointUtil().loadExtension("global.AgentScheduleUtil").getTimeOffSpansForUsers(users, startDate, endDate, eventType, configId, displayField);
  		for (var index = 0; index < users.length; index++) {
  			var user = users[index];
  			var scheduleData = usersScheduleData[user];
  			for (var i = 0; i < scheduleData.length; i++) {
  				var timeoffData = scheduleData[i];
  				var timeOffObj = {};
  					
  					timeOffObj.start_date = timeoffData.origin_start_date.getGlideDateTime().getValue();
  					timeOffObj.end_date = timeoffData.origin_end_date.getGlideDateTime().getValue();
  					
  					timeOffObj.start_date_display = timeoffData.origin_start_date.convertTimeZone(timeoffData.timezone, GlideSession.get().getTimeZoneName());
  					timeOffObj.end_date_display = timeoffData.origin_end_date.convertTimeZone(timeoffData.timezone, GlideSession.get().getTimeZoneName());
  					
  					timeOffObj.origin_start_date = timeoffData.origin_start_date.convertTimeZone(timeoffData.timezone, GlideSession.get().getTimeZoneName());
  					timeOffObj.origin_end_date = timeoffData.origin_end_date.convertTimeZone(timeoffData.timezone, GlideSession.get().getTimeZoneName());
                      
  					timeOffObj.dhtmlx_start_date = timeoffData.origin_start_date.getGlideDateTime().getDisplayValueInternal();
  					timeOffObj.dhtmlx_end_date = timeoffData.origin_end_date.getGlideDateTime().getDisplayValueInternal();						
  					timeOffObj.number = timeoffData.text;
  					timeOffObj.sys_id = timeoffData.sys_id;
  					timeOffObj.user = user;
  					result.push(timeOffObj);
  				}
  				var agentScheduleUtil = new global.AgentScheduleUtil();
  				var personalScheduleGR = agentScheduleUtil.getAgentPersonalSchedule(user);
  				if(personalScheduleGR.getRowCount() == 0) {
  					var personalScheduleID = this.createPersonalSchedule(user);
  					if (personalScheduleID) {
  						var agentPersonalScheduleConfigID = this.createPersonalScheduleConfig(user, personalScheduleID);
  						if (agentPersonalScheduleConfigID) {
  							var agentEventGR = new GlideRecord("agent_events");
  							agentEventGR.addQuery("user", user);
  							agentEventGR.query();
  							if (agentEventGR.next()) {
  								result.personalSchedule["name"] = agentEventGR.getDisplayValue("personal_schedule");
  								result.personalSchedule["sys_id"] = agentEventGR.getValue("sys_id");
  							}
  						}
  					}
  				}
  			}
  		} catch (err) {
  			gs.info(err);
  		}
  	},
  	
  	createPersonalSchedule: function(user) {
  		var personalScheduleID = "";
  		if (user) {
  			var userGR = new GlideRecord("sys_user");
  			userGR.addQuery('sys_id', user);
  			userGR.query();
  			if (userGR.next()) {
  				var personalScheduleGR = new GlideRecord('cmn_schedule');
  				personalScheduleGR.initialize();
  				personalScheduleGR.setValue('name', userGR.getValue('name') + " Personal Schedule");
  				if(userGR.getValue('time_zone'))
  					personalScheduleGR.setValue('time_zone',userGR.getValue('time_zone'));
  				personalScheduleID = personalScheduleGR.insert();
  			}
  		}
  		return personalScheduleID;
  	},
  	
  	createPersonalScheduleConfig: function(user, personalScheduleID) {
  		var agentPersonalScheduleConfigID = "";
  		if (user && personalScheduleID) {
  			var agentEventGR = new GlideRecord('agent_events');
  			agentEventGR.initialize();
  			agentEventGR.setValue('user', user);
  			agentEventGR.setValue('personal_schedule', personalScheduleID);
  			agentPersonalScheduleConfigID = agentEventGR.insert();
  		}
  		return agentPersonalScheduleConfigID;
  	},
  	
  	type: 'AgentEventUtil'
  };

Sys ID

c3969d76231023002dd6cb0a56bf65f0

Offical Documentation

Official Docs: