Skip to content

Commit 7f50ab1

Browse files
authored
schedule a Service Catalog request for a future date and time (#2614)
* Create Readme.md * Create scheduled scriptinclude.JS * Create scheduled client script.js * Create scheduled_job.JS
1 parent bef4279 commit 7f50ab1

File tree

4 files changed

+47
-0
lines changed

4 files changed

+47
-0
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
This project allows users to schedule a Service Catalog request for a future date and time. Instead of submitting immediately, the request is stored and automatically submitted later using a Scheduled Job
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
function onSubmit() {
2+
var scheduledTime = g_form.getValue('scheduled_time');
3+
var currentTime = new Date().toISOString();
4+
5+
if (scheduledTime > currentTime) {
6+
var ga = new GlideAjax('ScheduledRequestHelper');
7+
ga.addParam('sysparm_name', 'storeScheduledRequest');
8+
ga.addParam('sysparm_item', g_form.getUniqueValue());
9+
ga.addParam('sysparm_time', scheduledTime);
10+
ga.getXMLAnswer(function(response) {
11+
alert('Your request has been scheduled for: ' + scheduledTime);
12+
});
13+
return false; // Prevent immediate submission
14+
}
15+
16+
return true; // Submit immediately if time is now or past
17+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
var ScheduledRequestHelper = Class.create();
2+
ScheduledRequestHelper.prototype = Object.extendsObject(AbstractAjaxProcessor, {
3+
storeScheduledRequest: function() {
4+
var itemID = this.getParameter('sysparm_item');
5+
var scheduledTime = this.getParameter('sysparm_time');
6+
7+
var record = new GlideRecord('x_snc_scheduled_requests'); // Custom table
8+
record.initialize();
9+
record.catalog_item = itemID;
10+
record.scheduled_time = scheduledTime;
11+
record.insert();
12+
13+
return 'Scheduled successfully';
14+
}
15+
});
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
var now = new GlideDateTime();
2+
var gr = new GlideRecord('x_snc_scheduled_requests');
3+
gr.addQuery('scheduled_time', '<=', now);
4+
gr.query();
5+
6+
while (gr.next()) {
7+
var request = new GlideRecord('sc_request');
8+
request.initialize();
9+
request.requested_for = gr.requested_for;
10+
request.cat_item = gr.catalog_item;
11+
request.insert();
12+
13+
gr.deleteRecord(); // Remove after submission
14+
}

0 commit comments

Comments
 (0)