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

Community Alums
Not applicable

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;
}

0 REPLIES 0