Name
sn_sow.SOWUpcomingLinksService
Description
No description available
Script
var SOWUpcomingLinksService = Class.create();
SOWUpcomingLinksService.prototype = {
type: 'SOWUpcomingLinksService',
initialize: function() {},
_getDate: function(input, defaultValue) {
var out = defaultValue;
try {
if ('function' == typeof gs[input]) {
out = gs[input]();
} else {
out = new GlideDateTime(input);
}
} catch (e1) {
try {
out = new GlideDateTime(input);
} catch (e2) {}
}
return out;
},
getAssginToQuery: function() {
var user = gs.getUserID();
var assginToQuery = "assigned_to=" + user;
var gr = new GlideRecordSecure("sys_user_delegate");
gr.addQuery("delegate", user);
gr.addQuery("assignments", "true");
gr.addQuery("starts", "<=", gs.daysAgo(0));
gr.addQuery("ends", ">=", gs.daysAgo(0));
gr.query();
while (gr.next()) {
assginToQuery = assginToQuery + "^ORassigned_to=" + gr.user;
}
return assginToQuery;
},
process: function(request) {
if (gs.nil(request)) {
throw gs.getMessage("Missing required parameter: request");
}
var fromDateTime = this._getDate(request.from, null);
var toDateTime = this._getDate(request.to, null);
if (gs.nil(fromDateTime)) {
throw gs.getMessage("Missing/Invalid request parameter: from");
}
if (gs.nil(toDateTime)) {
throw gs.getMessage("Missing/Invalid request parameter: to");
}
var response = {};
var errors = {};
var status = {};
var items = [];
var count = -1; // No extensions processed
var extensions = new GlideScriptedExtensionPoint().getExtensions("sn_sow.UpcomingLinkProvider");
if (extensions.length > 0) {
count = 0;
var assginToQuery = this.getAssginToQuery();
for (var i = 0; i < extensions.length; i++) {
var extension = extensions[i];
var extensionStatus = {};
var extensionId = extension.type;
status[extensionId] = extensionStatus;
var startTime = Date.now();
try {
var subItems = extension.process(request, fromDateTime, toDateTime, assginToQuery);
for (var j = 0; j < subItems.length; j++) {
count++;
items.push(subItems[j]);
}
} catch (e) {
try {
extensionStatus.error = JSON.stringify(e);
} catch (e) {
extensionStatus.error = "Unknown error";
}
}
var executionTime = Date.now() - startTime;
extensionStatus.runtime = executionTime;
}
}
response.from = fromDateTime;
response.to = toDateTime;
response.count = count;
response.links = items;
response.providers = status;
return response;
}
};
Sys ID
55c1200fc3a63010965e070e9140dd4d