- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-20-2024 05:25 PM
On the Portal, we added a widget on Major Incidents that allows the user to create a child incident.
We would like to add functionality that will only allow a user to create one child Incident on a Major Incident, so if they already have a child incident on the open Major Incident, they cannot create another one.
If they try to click the button again, we want to have a message pop up that tells them "Thank you for reporting, you have previously been added to the incident" and provide a link to take them to the My Requests on the Service Portal so they can see their individual ticket:
/esc?id=my_requests
<button type="button" class="btn btn-primary btn-block" ng-click="sysverb_child_new()">Add me to this issue</button>
// Server Script
(function() {
// Get table & sys_id
data.sys_id = input.sys_id || $sp.getParameter("sys_id");
//input
if (input && input.action == 'sysverb_child_new') {
var sr = new GlideRecord('incident');
if (sr.get(data.sys_id)) {
var jr = new GlideRecord('incident');
jr.initialize();
jr.setValue('incident_state', 'Assigned');
jr.setValue('state', 9);
jr.setValue('assigned_to', sr.assigned_to);
jr.setValue('assignment_group', sr.assignment_group);
jr.setValue('short_description', sr.short_description);
jr.setValue('description', sr.description);
jr.setValue('caller_id', gs.getUserID());
jr.setValue('parent_incident', data.sys_id);
jr.setValue('u_on_behalf_of', gs.getUserID());
jr.setValue('u_callback_number', gs.getUser().getRecord().getValue('phone'));
jr.setValue('location', gs.getUser().getRecord().getValue('location'));
jr.setValue('contact_type', 'self-service');
jr.setValue('category', sr.category);
jr.setValue('subcategory', sr.subcategory);
jr.setValue('impact', sr.impact);
jr.setValue('urgency', sr.urgency);
var sysIdTemp = jr.insert();
}
}
})();
// client controller
api.controller = function($scope,spUtil) {
var c = this;
$scope.sysverb_child_new = function() {
var clientObj = {action:'sysverb_child_new'};
c.server.get(clientObj).then(function(response) {
alert("You've been added to this Incident"); // This will give you an alert with ok button
$sp.getWidget();
c.data = response.data;
})
}
};
Any ideas on how to do this?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-20-2024 05:54 PM
Hi @JuliaHowells,
Haven't tested this but try the following:
Server script:
// Server Script
(function() {
// Get table & sys_id
data.sys_id = input.sys_id || $sp.getParameter("sys_id");
//input
if (input && input.action == 'sysverb_child_new') {
var sr = new GlideRecord('incident');
if (sr.get(data.sys_id)) {
var incCreated = false;
//Check if the user already created a child Incident
var incGr = new GlideRecord('incident');
inGr.addQuery('caller_id', gs.getUserID());
inGr.addQuery('parent_incident', data.sys_id);
// you may want to add more query such as the state
incGr.query();
if (!incGr.next()) {
var jr = new GlideRecord('incident');
jr.initialize();
jr.setValue('incident_state', 'Assigned');
jr.setValue('state', 9);
jr.setValue('assigned_to', sr.assigned_to);
jr.setValue('assignment_group', sr.assignment_group);
jr.setValue('short_description', sr.short_description);
jr.setValue('description', sr.description);
jr.setValue('caller_id', gs.getUserID());
jr.setValue('parent_incident', data.sys_id);
jr.setValue('u_on_behalf_of', gs.getUserID());
jr.setValue('u_callback_number', gs.getUser().getRecord().getValue('phone'));
jr.setValue('location', gs.getUser().getRecord().getValue('location'));
jr.setValue('contact_type', 'self-service');
jr.setValue('category', sr.category);
jr.setValue('subcategory', sr.subcategory);
jr.setValue('impact', sr.impact);
jr.setValue('urgency', sr.urgency);
var sysIdTemp = jr.insert();
if (sysIdTemp != -1) {
incCreated = true;
}
}
data.incResult = incCreated;
} else {
gs.addErrorMessage("No valid Incident record was found");
}
}
})();
Client controller:
api.controller = function($scope, spUtil) {
var c = this;
$scope.sysverb_child_new = function() {
var clientObj = {
action: 'sysverb_child_new'
};
c.server.get(clientObj).then(function(response) {
if (response.data.incResult == true) {
alert("You've been added to this Incident"); // This will give you an alert with ok button
} else {
if (window.confirm('Thank you for reporting, you have previously been added to the incident. Click "ok" to be redirected to your request)) {
window.location.href = '{yoururl}/esc?id=my_requests';
};
}
$sp.getWidget();
c.data = response.data;
})
}
};
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-20-2024 05:54 PM
Hi @JuliaHowells,
Haven't tested this but try the following:
Server script:
// Server Script
(function() {
// Get table & sys_id
data.sys_id = input.sys_id || $sp.getParameter("sys_id");
//input
if (input && input.action == 'sysverb_child_new') {
var sr = new GlideRecord('incident');
if (sr.get(data.sys_id)) {
var incCreated = false;
//Check if the user already created a child Incident
var incGr = new GlideRecord('incident');
inGr.addQuery('caller_id', gs.getUserID());
inGr.addQuery('parent_incident', data.sys_id);
// you may want to add more query such as the state
incGr.query();
if (!incGr.next()) {
var jr = new GlideRecord('incident');
jr.initialize();
jr.setValue('incident_state', 'Assigned');
jr.setValue('state', 9);
jr.setValue('assigned_to', sr.assigned_to);
jr.setValue('assignment_group', sr.assignment_group);
jr.setValue('short_description', sr.short_description);
jr.setValue('description', sr.description);
jr.setValue('caller_id', gs.getUserID());
jr.setValue('parent_incident', data.sys_id);
jr.setValue('u_on_behalf_of', gs.getUserID());
jr.setValue('u_callback_number', gs.getUser().getRecord().getValue('phone'));
jr.setValue('location', gs.getUser().getRecord().getValue('location'));
jr.setValue('contact_type', 'self-service');
jr.setValue('category', sr.category);
jr.setValue('subcategory', sr.subcategory);
jr.setValue('impact', sr.impact);
jr.setValue('urgency', sr.urgency);
var sysIdTemp = jr.insert();
if (sysIdTemp != -1) {
incCreated = true;
}
}
data.incResult = incCreated;
} else {
gs.addErrorMessage("No valid Incident record was found");
}
}
})();
Client controller:
api.controller = function($scope, spUtil) {
var c = this;
$scope.sysverb_child_new = function() {
var clientObj = {
action: 'sysverb_child_new'
};
c.server.get(clientObj).then(function(response) {
if (response.data.incResult == true) {
alert("You've been added to this Incident"); // This will give you an alert with ok button
} else {
if (window.confirm('Thank you for reporting, you have previously been added to the incident. Click "ok" to be redirected to your request)) {
window.location.href = '{yoururl}/esc?id=my_requests';
};
}
$sp.getWidget();
c.data = response.data;
})
}
};

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-20-2024 06:06 PM
You can try as below
// Server Script
(function() {
// Get table & sys_id
data.sys_id = input.sys_id || $sp.getParameter("sys_id");
//input
if (input && input.action == 'sysverb_child_new') {
var sr = new GlideRecord('incident');
if (sr.get(data.sys_id)) {
gs.addErrorMessage("hank you for reporting, you have previously been added to the incident");
}
else{
var jr = new GlideRecord('incident');
jr.initialize();
jr.setValue('incident_state', 'Assigned');
jr.setValue('state', 9);
jr.setValue('assigned_to', sr.assigned_to);
jr.setValue('assignment_group', sr.assignment_group);
jr.setValue('short_description', sr.short_description);
jr.setValue('description', sr.description);
jr.setValue('caller_id', gs.getUserID());
jr.setValue('parent_incident', data.sys_id);
jr.setValue('u_on_behalf_of', gs.getUserID());
jr.setValue('u_callback_number', gs.getUser().getRecord().getValue('phone'));
jr.setValue('location', gs.getUser().getRecord().getValue('location'));
jr.setValue('contact_type', 'self-service');
jr.setValue('category', sr.category);
jr.setValue('subcategory', sr.subcategory);
jr.setValue('impact', sr.impact);
jr.setValue('urgency', sr.urgency);
var sysIdTemp = jr.insert();
}
}
})();
Please mark correct if my response has solved your query.
Cheers,
Mohammed Basheer Ahmed.