How to get closed incidents and closed RITMs of last three months through below Scripted REST API

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-16-2024 10:01 PM
Anyone having idea regarding this will be helpful
(function process( /RESTAPIRequest/ request, /RESTAPIResponse/ response) {
var respbody = {};
var TicketType = '';
var reqbody = request.body;
var reqdata = reqbody.data;
var objt = JSON.stringify(reqdata);
var objt1 = objt.toString();
var incomingData = JSON.parse(objt1);
var inc = [];
var instanceName = gs.getProperty('instance_name');
var inc_url = '';
var diff = '';
var diffindays = '';
//-----Below code retrieves the latest 5 incidents which were raised by the particular user and sends the response to chime tool----//
//Get sysid of user from incomingData.eml
var usrID = '';
var usr = new GlideRecord("sys_user");
usr.addQuery("email", incomingData.eml);
usr.addActiveQuery();
usr.query();
if (usr.next()) {
usrID = usr.sys_id;
}
var gr = new GlideRecord('incident');
gr.addEncodedQuery('caller_id.email=' + incomingData.eml + ' ^ORwatch_listLIKE' + usrID);
gr.addActiveQuery();
gr.setLimit('5');
gr.orderByDesc('sys_created_on');
gr.query();
while (gr.next()) {
var watchListInc = '';
var watchListFlagInc = 'false';
watchListInc = gr.watch_list;
//Check if user is in watchlist
if (watchListInc.indexOf(usrID) > -1 && gr.caller_id != usrID) {
watchListFlagInc = 'true';
}
var incstr = {};
var breached = false;
var escalatedVisibility = 'false';
var isEscalated = 'false';
var escalateFlag = 'false';
var sla = new GlideRecord('task_sla');
sla.addEncodedQuery('stage=in_progress^task=' + gr.sys_id.toString() + '^sla.sys_nameLIKEResolution');
sla.addQuery('sla.name', 'DOES NOT CONTAIN', 'ReponseTime');
sla.addQuery('sla.name', 'DOES NOT CONTAIN', 'ResponseTime');
sla.addQuery('sla.name', 'DOES NOT CONTAIN', 'Response');
sla.query();
while (sla.next()) {
if (sla.getValue('has_breached') == true)
breached = true;
}
if (sla.task.sys_class_name == 'incident' && breached == true && sla.task.state != '140' && sla.task.state != '150' && sla.task.state != '3' && sla.task.state != '10' && sla.task.state != '4' && sla.task.state != '7') {
escalatedVisibility = 'true';
}
isEscalated = this.checkEscalation(gr.number); //Check if ticket is already escalated
if (escalatedVisibility == 'true' && isEscalated == 'false') {
escalateFlag = 'true'; //Check if we can show the 'Esclation' button or not
}
inc_url = 'https://' + instanceName + '.service-now.com/sp_technipenergies?id=ticket&table=incident&sys_id=' + gr.getUniqueValue();
var test = gr.comments.getJournalEntry(1);
var new_string = test.replace('(Additional comments (end-user view))', '');
//--------------These below details for each incident is sent back in response to chime----------------//
incstr = {
'Ticket no': gr.getValue('number'),
'Sys_id': gr.getUniqueValue(),
'Ticket type': 'Incident',
'Short Description': gr.getValue('short_description'),
'Status': gr.getDisplayValue('state'),
'Assigned to': gr.getDisplayValue('assigned_to'),
'Assignment Group': gr.getDisplayValue('assignment_group'),
'Assignment Group Manager': gr.getDisplayValue('assignment_group.manager'),
'Assignment Group Manger Email': gr.getDisplayValue('assignment_group.manager.email'),
'Priority': gr.getDisplayValue('priority'),
'Created Date': gr.getDisplayValue('sys_created_on'),
'Work note': new_string,
'SLA': escalateFlag,
'incident_url': inc_url,
'Watched Incident': watchListFlagInc
};
inc.push(incstr);
}
var str = JSON.stringify(inc);
//-----Below code retrieves the latest 5 Requests which were raised by the particular user and sends the response to chime tool----//
var req = [];
var slaFlag = '';
var isRITMEscalated = '';
var escalateRITMFlag = '';
var gst = new GlideRecord('sc_req_item');
gst.addEncodedQuery('u_requested_for.email=' + incomingData.eml + ' ^ORwatch_listLIKE' + usrID);
gst.addEncodedQuery('stateNOT IN10,3,4,7');
gst.addActiveQuery();
gst.setLimit('5');
gst.orderByDesc('sys_created_on');
gst.query();
while (gst.next()) {
slaFlag = 'false';
isRITMEscalated = 'false';
escalateRITMFlag = 'false';
var reqstr = {};
var watchListRITM = '';
var watchListFlagRITM = 'false';
watchListRITM = gst.watch_list;
//Check if user is in watchlist
if (watchListRITM.indexOf(usrID) > -1 && gst.u_requested_for != usrID) {
watchListFlagRITM = 'true';
}
//--------------These below details for each Request is sent back in response to chime----------------//
inc_url = 'https://' + instanceName + '.service-now.com/sp_technipenergies?id=ticket&table=sc_req_item&sys_id=' + gst.getUniqueValue();
diff = gs.dateDiff(gst.sys_created_on, gs.nowDateTime(), true); // Positive if date is after today
diffindays = diff / 86400;
if (diffindays > 5) {
slaFlag = 'true';
}
isRITMEscalated = this.checkEscalation(gst.number); //Check if ticket is already escalated
if (slaFlag == 'true' && isRITMEscalated == 'false') {
escalateRITMFlag = 'true'; //Check if we can show the 'Esclation' button or not
}
var test1cmnt = gst.comments.getJournalEntry(1);
var new_string1 = test1cmnt.replace('(Additional comments (end-user view))', '');
reqstr = {
'Ticket no': gst.getValue('number'),
'Sys_id': gst.getUniqueValue(),
'Ticket type': 'RITM',
'Short Description': gst.getValue('short_description'),
'Status': gst.getDisplayValue('state'),
'Stage': gst.getDisplayValue('stage'),
'Assigned to': gst.getDisplayValue('assigned_to'),
'Assignment Group': gst.getDisplayValue('assignment_group'),
'Assignment Group Manager': gst.getDisplayValue('assignment_group.manager'),
'Assignment Group Manger Email': gst.getDisplayValue('assignment_group.manager.email'),
'Created Date': gst.getDisplayValue('sys_created_on'),
'Work note': new_string1,
'Escalation Visibility': escalateRITMFlag,
'requested_item_url': inc_url,
'Watched RITM': watchListFlagRITM,
};
req.push(reqstr);
}
var str1 = JSON.stringify(req);
if (str.length == 0) {
respbody.status = 'Error';
respbody.str = 'No record found';
} else {
respbody.status = 'success';
respbody.str = inc;
}
response.setstrType('application/json');
response.setStatus(200);
response.setBody(respbody);
if (str1.length == 0) {
respbody.status = 'Error';
respbody.str1 = 'No record found';
} else {
respbody.status = 'success';
respbody.str1 = req;
}
response.setstr1Type('application/json');
response.setStatus(200);
response.setBody(respbody);
})(request, response);
function checkEscalation(num) {
var flag = 'false';
var checkTagRITM = new GlideRecord('label_entry');
checkTagRITM.addQuery('label', 'IN', '37798f02dbb1b300017846621596195b, 44e33dabdbc9f740017846621596192e, ffa88302dbb1b3000178466215961977, a145b258db867b00431edbe6f49619b0'); // ## ESCALATION...
checkTagRITM.addQuery('id_display', num);
checkTagRITM.query();
if (checkTagRITM.next()) {
flag = 'true';
}
return flag;
}