Name
global.AjaxReleaseMgmtDateUtil
Description
This is to leverage api similar to AjaxPlannedTaskDateUtil.
Script
var AjaxReleaseMgmtDateUtil = Class.create();
AjaxReleaseMgmtDateUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getEndDate: function() {
var sysparmStartDate = this.getParameter('sysparm_start_date');
var sysparmDuration = this.getParameter('sysparm_duration');
if (!this.isValidDate(sysparmStartDate)) {
this.sendResponse('error', 'start_date');
return;
}
if (!this.isValidDuration(sysparmDuration)) {
this.sendResponse('error', 'duration');
return;
}
var end_date = this._calculateEndDate(sysparmStartDate, sysparmDuration);
var result = this.newItem('result');
result.setAttribute('status', 'success');
result.setAttribute('answer', end_date);
},
_calculateEndDate: function(startDate, duration) {
var dur;
var end_date;
startDate = this.getInternalDateFormat(startDate);
if (!this.isValidPositiveDuration(duration)) {
return startDate;
}
dur = new GlideDuration(0);
dur.setDisplayValue(duration);
end_date = new GlideDateTime();
end_date.setDisplayValueInternal(startDate);
end_date.addSeconds(dur.getNumericValue() / 1000);
return end_date.getDisplayValue();
},
isValidPositiveDuration: function(duration) {
return duration.indexOf('-') < 0;
},
isValidDuration: function(displayValue) {
var duration = new GlideDuration();
duration.setDisplayValue(displayValue);
return duration.isValid();
},
_calculateDuration: function(startDate, endDate) {
var startDateInternal = this.getInternalDateFormat(startDate);
var endDateInternal = this.getInternalDateFormat(endDate);
var start = new GlideDateTime();
start.setDisplayValueInternal(startDateInternal);
var end = new GlideDateTime();
end.setDisplayValueInternal(endDateInternal);
var duration = GlideDateTime.subtract(start, end);
return duration.getDurationValue();
},
getDuration: function() {
var result;
var resp = {};
var sysparmStartDate = this.getParameter('sysparm_start_date');
var sysparmEndDate = this.getParameter('sysparm_end_date');
if (!this.isValidDate(sysparmStartDate)) {
this.sendResponse('error', 'start_date');
return;
}
if (!this.isValidDate(sysparmEndDate)) {
this.sendResponse('error', 'end_date');
return;
}
var duration = this._calculateDuration(sysparmStartDate, sysparmEndDate);
result = this.newItem('result');
result.setAttribute('status', 'success');
result.setAttribute('answer', duration);
},
getInternalDateFormat: function(displayValue) {
var dateTime = new GlideDateTime();
dateTime.setDisplayValue(displayValue);
if (dateTime.isValid())
return dateTime.getDisplayValueInternal();
else {
var dt = new GlideDateTime();
return dt.getDisplayValueInternal();
}
},
isValidDate: function(displayValue) {
var dateTime = new GlideDateTime();
dateTime.setDisplayValue(displayValue);
return dateTime.isValid();
},
sendResponse: function(status, column, answer, message) {
var result = this.newItem("result");
result.setAttribute("column", column);
result.setAttribute("status", status);
if (answer)
result.setAttribute("answer", answer);
if (message)
result.setAttribute("message", message);
},
type: 'AjaxReleaseMgmtDateUtil'
});
Sys ID
2f042188c7bb20100c8f612827c260f8