Name
global.CalendarRESTHelper
Description
No description available
Script
var CalendarRESTHelper = Class.create();
CalendarRESTHelper.prototype = {
initialize: function() {
this.response = {};
this.EVENT_CONFIG_TABLE = "agent_schedule_task_config";
this.USER_AND_EVENT_CONFIG_REL_TABLE = "agent_schedule_task_config_rel_user_pref";
this.USER_CONFIG_TABLE = "agent_schedule_user_pref";
this.GRP_MEMBER_TABLE = "sys_user_grmember";
this.USER_MAX_EVENTS = 100;
this.USER_TABLE = "sys_user";
this.VISIBLE_EXTERNALLY = "8201666b0b7003004502ab5c37673adb";
this.VISIBLE_INTERNALLY = "a6a0666b0b7003004502ab5c37673aef";
this.defaultUser = gs.getUserID();
this.sessionConfigKey = 'FSMEventConfig';
this.agentScheduleUtil = new AgentScheduleUtil();
},
getUserInfo: function(user){
if(typeof user === "object")
user = user[0];
var userInfo = {};
var personalScheduleId = this.getUserSchedule(user);
if(personalScheduleId)
userInfo['personal_schedule_id'] = personalScheduleId;
return userInfo;
},
getUserSchedule : function(user) {
var personalScheduleId = "";
if (JSUtil.nil(user)){
user = this.defaultUser;
}
var personalScheduleGR = this.agentScheduleUtil.getAgentPersonalSchedule(user);
if (personalScheduleGR && personalScheduleGR.hasNext()) {
personalScheduleGR.next();
personalScheduleId = personalScheduleGR.getValue("personal_schedule");
} else {
personalScheduleId = this.agentScheduleUtil.createPersonalSchedule(user);
}
return personalScheduleId;
},
getGroups:function(user){
var enable = gs.getProperty("team_calendar.enable_for_grpmember");
if (JSUtil.nil(user))
user = this.defaultUser;
var gr = new GlideAggregate(this.GRP_MEMBER_TABLE);
var queryString = "group.manager=" + user;
queryString += "^group.active=true";
if (enable=="true") {
queryString += "^NQgroup.typeLIKE" + this.VISIBLE_EXTERNALLY;
queryString += "^NQgroup.typeLIKE" + this.VISIBLE_INTERNALLY;
queryString += "^user=" + user;
}
gr.orderBy("group.name");
gr.groupBy("group");
//gr.addActiveQuery(); //removed since there is no active column on sys_user_grmember table.
gr.addEncodedQuery(queryString);
//gr.chooseWindow(0,99);
gr.setCategory('list');
gr.query();
var groupIds=[];
while(gr.next()){
//var sys_id = gr.group.sys_id;
var groupObj = {
'id':gr.group.sys_id,
'name': gr.group.name
};
groupIds.push(groupObj);
}
return groupIds;
},
getGroupEvents: function (groupIdsString, startDateNum, endDateNum, userStart, userEnd,searchString) {
var teamMembersObj = this.getTeamMembers(groupIdsString, userStart, userEnd,searchString);
var result = {};
result["users"] = {};
if ( JSUtil.notNil(teamMembersObj) && JSUtil.notNil(teamMembersObj.users) ) {
result["users"] = teamMembersObj.users;
var usersSysIdString = Object.keys(teamMembersObj.users);
this.USER_MAX_EVENTS = this.USER_MAX_EVENTS * usersSysIdString.length; //set the maximum events that will be fetched for display on calendar.
usersSysIdString = usersSysIdString.join(",");
var eventsObj = {};
var usersObj = teamMembersObj.users;
var events = this.getUserEvents(startDateNum, endDateNum, usersSysIdString, this.defaultUser);
//first prepare events obj with keys for every user
for (var user in usersObj) {
if(!eventsObj[user]){
eventsObj[user] = {"events": []};
}
}
//then populate the events object for each user key.
for(var i in events){
if(!eventsObj[events[i].user_sys_id.toString()]){
eventsObj[events[i].user_sys_id.toString()] = {"events": []};
}
eventsObj[events[i].user_sys_id.toString()]["events"].push(events[i]);
}
this.response['events'] = eventsObj;
} else {
this.response['events'] = {};
}
return this.response;
},
getTeamMembers: function(groupIdsString, userStart, userEnd,searchString) {
var users = {};
var groupDetails = {};
var userDetails = {};
var memGR = new GlideRecord(this.GRP_MEMBER_TABLE);
var searchArray = searchString&&searchString[0]?searchString[0].split(','):null;
if (searchArray && searchArray.length>0){
var qc = memGR.addQuery("user.name","LIKE",searchArray[0].trim());
for(var i = 1; i<searchArray.length;i++){
qc.addOrCondition("user.name","LIKE",searchArray[i].trim());
}
}
//groupIdsString = groupIdsString.join(',');
if (groupIdsString == "all"){
var groupObjs = this.getGroups(this.defaultUser);
groupIdsString = [];
for (var i = 0; i<groupObjs.length;i++){
groupIdsString.push(groupObjs[i].id);
}
groupIdsString = groupIdsString.join();
}
memGR.addQuery("group","IN",groupIdsString);
memGR.addQuery("user.active","true");
memGR.orderBy("user.name");
//memGR.addActiveQuery();
//memGR.setLimit(35); //Maximum 35 users are supported. Should improve by including pagination
var encodedQuery = memGR.getEncodedQuery();
memGR = new GlideAggregate(this.GRP_MEMBER_TABLE);
memGR.addEncodedQuery(encodedQuery);
memGR.groupBy("user");
if (JSUtil.notNil(userStart) && JSUtil.notNil(userEnd)){
memGR.chooseWindow(userStart, userEnd, true);
}
memGR.setCategory('list');
memGR.query();
var newUsers = [];
while(memGR.next()){
var memUser = memGR.user;
var userSysId = memUser.sys_id + "";
var memGroup = memGR.group;
var groupId = memGroup.sys_id + "";
var groupName = memGroup.name + "";
if (memUser && users[userSysId]) {
groupDetails = {};
groupDetails.id = groupId;
groupDetails.name = groupName;
users[userSysId].groups.push(groupDetails);
} else {
/* thre are musts to build a preview */
userDetails = {};
groupDetails = {};
this.buildUserProfileData(userDetails, memUser, true);
/* thre are others */
userDetails.isLoaded = true;
groupDetails.id = groupId;
groupDetails.name = groupName;
userDetails.groups = [];
userDetails.groups.push(groupDetails);
users[userSysId] = userDetails;
newUsers.push(userSysId);
}
}
if (newUsers.length > 0){
this.populateUsersSchedule(users, newUsers);
}
this.response["users"] = users;
this.response["user_count"] = memGR.getRowCount();
return this.response;
},
getUserProfileData: function(user){
var userDetails = {};
var gr = new GlideRecord("sys_user");
gr.get(user);
this.buildUserProfileData(userDetails, gr);
return userDetails;
},
buildUserProfileData:function(userDetails,userGR, skip){
userDetails.name = userGR.name;
userDetails.initials = this.getUserInitials(userGR.name);
userDetails.userID = userGR.sys_id;
userDetails.avatar = userGR.photo.getDisplayValue();
if (userDetails.avatar) {
userDetails.avatar = userDetails.avatar + "?t=small";
}
userDetails.title = userGR.title;
var loc = userGR.location;
if (loc){
userDetails.city = loc.city + "";
userDetails.state = loc.state + "";
userDetails.country = loc.country + "";
}
userDetails.businessPhone = userGR.phone;
userDetails.mobilePhone = userGR.mobile_phone;
userDetails.email = userGR.email;
userDetails.agent_status = userGR.agent_status.getDisplayValue();
userDetails.path = this.USER_TABLE + ".do?sys_id=" + userGR.sys_id + "&sysparm_view=Agent_Profile";
if (gs.nil(skip)){
userDetails.schedule = this.agentScheduleUtil.getCurrentUserScheduleName(userDetails.userID);
}
},
populateUsersSchedule: function(users, newUsers){
var schedules = this.agentScheduleUtil.getUserScheduleNames(newUsers);
for (var i=0; i<newUsers.length; i++){
users[newUsers[i]].schedule = schedules[newUsers[i]];
}
},
getUserInitials:function(name){
if (!name)
return "--";
var initials = name.split(" ").map(function(word) {
return word.toUpperCase();
}).filter(function(word) {
return word.match(/^[A-Z]/);
}).map(function(word) {
return word.substring(0,1);
}).join("");
return (initials.length > 3)? initials.substr(0, 3): initials;
},
getConfigurations: function(user) {
var userConfig = this.getUserConfigurations(user);
var configurations = [];
for (var i in userConfig.records) {
var configObj = userConfig.records[i];
var calendarConfig = {};
calendarConfig["id"] = configObj.relID;
calendarConfig["active"] = configObj.active;
calendarConfig["name"] = configObj.name;
calendarConfig["label"] = configObj.label;
calendarConfig["border_color"] = configObj.bordercolorVal;
calendarConfig["background_color"] = configObj.backGrdcolorVal;
calendarConfig["target_table"] = configObj.table;
calendarConfig["can_edit_events"] = configObj.can_edit_events;
calendarConfig["can_create_events"] = configObj.can_create_events;
calendarConfig["can_toggle_active"] = configObj.can_toggle_active;
calendarConfig["hidden"] = configObj.hidden;
calendarConfig["text_color"] = "black";
calendarConfig["are_background_events"] = configObj.are_background_events;
calendarConfig["sysparm_query"] = configObj.sysparm_query;
calendarConfig["view"] = configObj.view;
calendarConfig["start_date_field"] = configObj.start_date_field;
calendarConfig["end_date_field"] = configObj.end_date_field;
configurations.push(calendarConfig);
}
this.response["configurations"] = configurations;
this.response["default_group"] = userConfig.default_group;
this.response[this.USER_CONFIG_TABLE] = userConfig.sys_id;
this.response["page_limit"] = gs.getProperty("team_calendar.max_calendar_display",25);
return this.response;
},
updateConfiguration: function(id, value){
var result = {};
var configTaskGR = new GlideRecord(this.USER_AND_EVENT_CONFIG_REL_TABLE);
if(configTaskGR.get(id)){
configTaskGR.setValue("active", value);
configTaskGR.update();
var session = gs.getSession();
var key = this.sessionConfigKey;
session.clearClientData(key);
return true;
}else
return false;
},
updateDefaultGroupConfig: function(id, value){
var result = {};
var configTaskGR = new GlideRecord(this.USER_CONFIG_TABLE);
if(configTaskGR.get(id)){
configTaskGR.setValue("default_group", value);
configTaskGR.update();
var session = gs.getSession();
var key = this.sessionConfigKey;
session.clearClientData(key);
return true;
}else
return false;
},
getEvents: function(startDateNum, endDateNum, users) {
var events = [];
var userArray = [];
if(typeof users === "object")
users = users[0];
if (JSUtil.notNil(users)) {
userArray = users.split(",");
if (userArray.length > 0) {
for(var i in userArray) {
var user = userArray[i];
events = this.getUserEvents(startDateNum, endDateNum, user, this.defaultUser);
var result = {"events": events};
this.response[user] = result;
}
}
} else {
events = this.getUserEvents(startDateNum, endDateNum, this.defaultUser);
this.response["events"] = events;
}
return this.response;
},
getUsers: function(tableName, encodedQuery, userFieldName) {
var gr = new GlideRecordSecure(tableName);
gr.addEncodedQuery(encodedQuery);
gr.setCategory('list');
gr.query();
var users = "";
while (gr.next()) {
var user = gr.getElement(userFieldName);
users = users + user.sys_id + ",";
}
},
updateEvent: function(eventID, startDateNum, endDateNum, user){
var startDate = new GlideDateTime();
startDate.setDisplayValue(startDateNum);
var endDate = new GlideDateTime();
endDate.setDisplayValue(endDateNum);
var userEventGR = new GlideRecord("agent_events");
userEventGR.addQuery("user",user);
userEventGR.query();
if(userEventGR.next()){
var personal_schedule = userEventGR.getValue("personal_schedule");
var scheduleEntryGR = new GlideRecord("cmn_schedule_span");
scheduleEntryGR.addQuery("schedule",personal_schedule);
scheduleEntryGR.addQuery("sys_id",eventID);
scheduleEntryGR.query();
if(scheduleEntryGR.hasNext()){
while(scheduleEntryGR.next()){
scheduleEntryGR.start_date_time = startDate.getDisplayValue();
scheduleEntryGR.end_date_time = endDate.getDisplayValue();
scheduleEntryGR.update();
}
return true;
}
return false;
}
},
getUserConfig: function (user) {
var configGR = new GlideRecordSecure(this.USER_CONFIG_TABLE);
configGR.addQuery("user",user);
configGR.setCategory('list');
configGR.query();
if(!configGR.hasNext()){
var configId = this.createUserConfig(user);
if(configId){
configGR = new GlideRecordSecure(this.USER_CONFIG_TABLE);
configGR.addQuery("sys_id",configId);
configGR.query();
}
}
return configGR;
},
getUserConfigurations : function(user) {
var session = gs.getSession();
var key = this.sessionConfigKey;
var configResult = session.getClientData(key);
var config = {};
if (configResult) {
config = JSON.parse(configResult);
} else {
var configGR = this.getUserConfig(user);
var localConfig = {};
if(configGR.next()){
localConfig.name = configGR.getValue("name");
localConfig.sys_id = configGR.getValue("sys_id");
localConfig.default_group = configGR.getValue("default_group");
localConfig.records = [];
localConfig.records = this.prepareTaskConfigJSONRecords(configGR.getValue("sys_id"),user);
}
session.putClientData(key, JSON.stringify(localConfig));
config = localConfig;
}
return config;
},
getUserEvents : function(startDateNum, endDateNum, users, managerUser){
var timeoffSpans = [];
var startDate = null, endDate = null;
if (!users) {
users = this.defaultUser;
}
if(!JSUtil.nil(startDateNum))
{
startDate = new GlideDateTime();
startDate.setDisplayValue(startDateNum);
}
if(!JSUtil.nil(endDateNum))
{
endDate = new GlideDateTime();
endDate.setDisplayValue(endDateNum);
//endDate.addDaysUTC(1);
}
//Restrict to a month
var maxEndDate = new GlideDateTime();
maxEndDate.setDisplayValue(startDate.getDisplayValue());
maxEndDate.addMonthsLocalTime(1);
if(endDate.compareTo(maxEndDate) > 0) {
endDate.setDisplayValue(maxEndDate.getDisplayValue());
}
var events = this.computeEvents(startDate, endDate, users, managerUser);
for( i =0 ;i < events.length; i++){
var timeoffData = events[i];
var timeOffObj = {};
timeOffObj.start_date = timeoffData.start_date;
timeOffObj.end_date = timeoffData.end_date;
timeOffObj.start_date_display = timeoffData.start_date_display;
timeOffObj.end_date_display = timeoffData.end_date_display;
timeOffObj.dhtmlx_start_date = timeoffData.dhtmlx_start_date;
timeOffObj.dhtmlx_end_date = timeoffData.dhtmlx_end_date;
timeOffObj["quick_view"] = [];
timeOffObj["quick_view"].push({"label": gs.getMessage("Name"), "value": GlideStringUtil.escapeHTML(timeoffData.number)});
timeOffObj["quick_view"].push({"label": gs.getMessage("Type"), "value": timeoffData.label});
timeOffObj["quick_view"].push({"label": gs.getMessage("When"), "value": timeOffObj.start_date_display + " - " + timeOffObj.end_date_display});
timeOffObj.text = GlideStringUtil.escapeHTML(timeoffData.number);
timeOffObj["target_record"] = {};
timeOffObj.target_record["sys_id"] = timeoffData.sys_id;
timeOffObj.target_record["path"] = timeoffData.table + ".do?sys_id=" + timeoffData.sys_id; +"&sysparm_view=fsm_profile";
timeOffObj.target_record["table"] = timeoffData.table;
timeOffObj.configuration_id = timeoffData.relID;
timeOffObj.id = timeoffData.relID + '_' + timeoffData.sys_id;
timeOffObj.parent_id = timeoffData.relID + '_' + timeoffData.sys_id;
timeOffObj.user_sys_id = timeoffData.user_sys_id;
if (timeoffData.table == "wm_task") {
if (!gs.nil(timeoffData.location)) {
timeOffObj.location = timeoffData.location;
}
timeOffObj.state = timeoffData.state ? timeoffData.state : "";
timeOffObj.substate = timeoffData.substate ? timeoffData.substate : "";
timeOffObj.priority = timeoffData.priority ? timeoffData.priority : "";
timeOffObj.display_name = timeoffData.display_name ? timeoffData.display_name : "";
}
timeoffSpans.push(timeOffObj);
}
return timeoffSpans;
//this.response["events"] = timeoffSpans;
//return this.response;
},
computeEvents : function(startDate, endDate, users, managerUser) {
var events = [];
var records = [];
var event = {};
var eventCount = 0;
var config;
var value;
if(users) users = users.split(","); //convert users from comma separated sys_id string to array.
if (managerUser) {
config = this.getUserConfigurations(managerUser);
} else{
config = this.getUserConfigurations(users[0]);
}
if(!config.records)
return [];
for(var i in config.records) {
var eventConfig = config.records[i];
var configTable = eventConfig.table;
var configName = eventConfig.name;
var configTheme = eventConfig.theme;
var configBorderColor = eventConfig.bordercolorVal;
var configBackGrdColor = eventConfig.backGrdcolorVal;
var configLabel = eventConfig.label;
var configRelId = eventConfig.relID;
if(eventConfig.active && eventConfig.setup_options == "simple" ) {
var eventGR = new GlideRecord(configTable);
var query = eventConfig.start_date_field+">=" + startDate + "^"+eventConfig.start_date_field+"<=" + endDate;
query += "^NQ"+eventConfig.end_date_field+">=" + startDate + "^"+eventConfig.end_date_field+"<=" + endDate;
query += "^NQ"+eventConfig.start_date_field+"<=" + startDate + "^"+eventConfig.end_date_field+">=" + endDate;
eventGR.addEncodedQuery(query);
eventGR.addEncodedQuery(eventConfig.user_field + "IN" + users);
if(eventConfig.filter)
eventGR.addEncodedQuery(eventConfig.filter);
//maximum of 100 events are supported
//eventGR.chooseWindow(0,100,false);
eventGR.setCategory("list");
eventGR.query();
while(eventGR.next()){
event = {};
event.table = configTable;
event.sys_id = eventGR.getValue("sys_id");
event.number = eventGR.getDisplayValue(eventConfig.display_field);
event.desc = eventGR.getDisplayValue("short_description");
event.start_date_display = eventGR.getDisplayValue(eventConfig.start_date_field);
event.end_date_display = eventGR.getDisplayValue(eventConfig.end_date_field);
event.start_date = eventGR.getValue(eventConfig.start_date_field);
event.end_date = eventGR.getValue(eventConfig.end_date_field);
if (configTable == "wm_task") {
event.location = {
latitude: eventGR.location.getRefRecord().getValue("latitude"),
longitude: eventGR.location.getRefRecord().getValue("longitude"),
sys_id: eventGR.location.getRefRecord().getValue("sys_id"),
};
event.substate = eventGR.getValue("substate");
event.state = eventGR.getValue("state");
event.priority = eventGR.getValue("priority");
event.display_name = eventGR.getDisplayValue("number");
}
var startDateTime = new GlideDateTime(event.start_date);
var endDateTime = new GlideDateTime(event.end_date);
event.dhtmlx_start_date = event.start_date_display.split(" ")[0] + " " + startDateTime.getDisplayValueInternal().split(" ")[1];
event.dhtmlx_end_date = event.end_date_display.split(" ")[0] + " " + endDateTime.getDisplayValueInternal().split(" ")[1];
event.theme = configTheme;
event.bordercolorVal = configBorderColor;
event.backGrdcolorVal = configBackGrdColor;
event.label = configLabel;
event.name = configName;
event.relID = configRelId;
event.user = eval("eventGR." + eventConfig.user_field) + "";
event.user_sys_id = eval("eventGR." + eventConfig.user_field) + "";
events.push(event);
eventCount ++;
if(parseInt(eventCount) >= parseInt(this.USER_MAX_EVENTS))
return events;
}
} else if (eventConfig.active && eventConfig.setup_options == "script") {
var evaluator = new GlideScopedEvaluator();
evaluator.putVariable("users", users);
evaluator.putVariable("startDate", startDate);
evaluator.putVariable("endDate", endDate);
evaluator.putVariable("eventType", eventConfig.event_type);
evaluator.putVariable("configId",eventConfig.sys_id);
evaluator.putVariable("displayField",eventConfig.display_field);
evaluator.putVariable("result", []);
// Now retrieve the result
gr = new GlideRecord(this.EVENT_CONFIG_TABLE);
if (gr.get(eventConfig.sys_id)) {
evaluator.evaluateScript(gr, "script", null);
records = evaluator.getVariable("result");
}
for (var j in records) {
event = {};
var record = records[j];
event.table = configTable;
event.desc = configName;
event.theme = configTheme;
event.bordercolorVal = configBorderColor;
event.backGrdcolorVal = configBackGrdColor;
event.label = configLabel;
event.name = configName;
event.relID = configRelId;
event.sys_id = record.sys_id ? record.sys_id: "";
event.number = record.number ? record.number: configName;
event.start_date = record.start_date ? record.start_date: "";
event.end_date = record.end_date ? record.end_date: "";
event.start_date_display = record.start_date_display ? record.start_date_display: "";
event.end_date_display = record.end_date_display ? record.end_date_display: "";
event.origin_start_date = record.origin_start_date ? record.origin_start_date : "";
event.origin_end_date = record.origin_end_date ? record.origin_end_date : "";
event.user = record.user ? record.end_date_display : "";
var startDateTime = new GlideDateTime(event.start_date);
var endDateTime = new GlideDateTime(event.end_date);
event.dhtmlx_start_date = record.start_date_display.split(" ")[0] + " " + startDateTime.getDisplayValueInternal().split(" ")[1];
event.dhtmlx_end_date = record.end_date_display.split(" ")[0] + " " + endDateTime.getDisplayValueInternal().split(" ")[1];
event.user_sys_id = record.user;
events.push(event);
eventCount++;
if(parseInt(eventCount) >= parseInt(this.USER_MAX_EVENTS))
return events;
}
}
}
return events;
},
createUserConfig:function(userID){
if(userID){
var userGR = new GlideRecord("sys_user");
if(userGR.get(userID)){
var userConfigGR = new GlideRecord(this.USER_CONFIG_TABLE);
userConfigGR.initialize();
userConfigGR.setValue("name", userGR.name+ " Schedule Config");
userConfigGR.setValue("user", userID);
return userConfigGR.insert();
}
}
return "";
},
prepareTaskConfigJSONRecords: function(configID,user){
var configRecords = [];
var personalschedule = "";
if(configID){
var relGREntry = new GlideRecord(this.USER_AND_EVENT_CONFIG_REL_TABLE);
relGREntry.addQuery("config",configID);
relGREntry.setCategory('list');
relGREntry.query();
//Prepare a map of rel for configID with task_config records for later use in checking record presence.
var relGRMap = {};
while(relGREntry.next()){
relGRMap[relGREntry.getValue("task_config")] = {sys_id: relGREntry.getValue("sys_id"), task_config: relGREntry.getValue("task_config"), active: relGREntry.getValue("active")};
}
var taskTableAccessMap = {};
//Now query all task config records and prepare JSON array of configurations along with user preference true/false.
var taskConfigGR = new GlideRecord(this.EVENT_CONFIG_TABLE);
taskConfigGR.addActiveQuery();
taskConfigGR.orderBy("name");
taskConfigGR.setCategory('list');
taskConfigGR.query();
while(taskConfigGR.next()){
var taskConfig={};
taskConfig["name"] = taskConfigGR.getDisplayValue("name");
taskConfig["user_field"] = taskConfigGR.getValue("task_user_field");
taskConfig["display_field"] = taskConfigGR.getValue("display_field");
taskConfig["table"] = taskConfigGR.getValue("task_table");
taskConfig["filter"] = taskConfigGR.getValue("task_filter");
taskConfig["start_date_field"] = taskConfigGR.getValue("start_date_field");
taskConfig["end_date_field"] = taskConfigGR.getValue("end_date_field");
taskConfig["label"] = taskConfigGR.getDisplayValue("label");
taskConfig["theme"] = taskConfigGR.getDisplayValue("color_theme");
taskConfig["bordercolorVal"] = taskConfigGR.getValue("border_color");
taskConfig["backGrdcolorVal"] = taskConfigGR.getValue("background_color");
taskConfig["can_edit_events"] = taskConfigGR.getValue("can_edit_events") == "1";
taskConfig["can_create_events"] = taskConfigGR.getValue("can_create_events") == "1";
taskConfig["can_toggle_active"] = taskConfigGR.getValue("can_toggle_active") == "1";
taskConfig["hidden"] = taskConfigGR.getValue("hidden") == "1";
taskConfig["sys_id"] = taskConfigGR.getValue("sys_id");
taskConfig["setup_options"] = taskConfigGR.getValue("setup_options");
taskConfig["are_background_events"] = taskConfigGR.getValue("are_background_events") == "1";
taskConfig["event_type"] = taskConfigGR.getValue("event_type");
if (taskConfig["table"] == 'cmn_schedule_span') {
if (gs.nil(personalschedule))
personalschedule = this.getUserSchedule(user);
if (personalschedule) {
taskConfig["sysparm_query"] = "schedule="+personalschedule;
} else {
taskConfig["sysparm_query"] = "";
}
taskConfig["view"] = "Mobile_FSM";
} else {
taskConfig["view"] = "";
taskConfig["sysparm_query"] = "";
}
//check wether logged in user has access to task table in task Config
//use a map to store storing table related access and avoid repeated queries to the same task_table field value table.
var taskTable = taskConfigGR.getDisplayValue("task_table");
if(gs.nil(taskTableAccessMap[taskTable])){
taskTableAccessMap[taskTable] = true;
}
//check TaskConfig entry for user config
var relGREntryPresent = false;
if(!gs.nil(relGRMap[taskConfigGR.getValue("sys_id")])){
relGREntryPresent = true;
}
if((taskTableAccessMap[taskTable]==true) && !relGREntryPresent){
var relGR = new GlideRecord(this.USER_AND_EVENT_CONFIG_REL_TABLE);
relGR.initialize();
relGR.setValue("config",configID);
relGR.setValue("task_config",taskConfigGR.getValue("sys_id"));
var relID = relGR.insert();
if(relID){
taskConfig["active"] = relGR.getValue("active")=="1";
taskConfig["relID"] = relID;
configRecords.push(taskConfig);
}
}else if((taskTableAccessMap[taskTable]==true) && relGREntryPresent){
taskConfig["active"] = relGRMap[taskConfig.sys_id]["active"]=="1";
taskConfig["relID"] = relGRMap[taskConfig.sys_id]["sys_id"];
configRecords.push(taskConfig);
}
}
}
return configRecords;
},
type: "CalendarRESTHelper"
};
Sys ID
dde6f9417f232200c57212f44efa91da