473 lines
19 KiB
JavaScript
473 lines
19 KiB
JavaScript
|
|
var xhr_exportExport;
|
|
var assignedTo, startDateParam, endDateParam, responseTime, vehicleTag, age, assignedToUser, isTicketScore;
|
|
//Global variables
|
|
var slaMetImagePath = "../../Content/css/images/icons/green_circle.png";
|
|
var slaNotMetImagePath = "../../Content/css/images/icons/red_circle.png";
|
|
|
|
|
|
/**
|
|
* Function to display close ticket details
|
|
* @method showCloseTicketDetails
|
|
* @for CloseTicketReport
|
|
*/
|
|
function showCloseTicketDetails(e) {
|
|
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
|
|
// console.log(dataItem.Id);
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/Report/Ticket_GetOpencloseTicketFullDetails/",
|
|
data: { ticketId: dataItem.Id, ticketStatus: "close" },
|
|
success: function (data) {
|
|
$("#divTicketDetails").html(data);
|
|
|
|
//open window in new dialog box
|
|
$("#divTicketDetails").data("kendoWindow").open();
|
|
openKendoWindowInCenter("#divTicketDetails");
|
|
},
|
|
error: function (data) {
|
|
console.log(data);
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Function to get close tickets history
|
|
* @method getCloseTicketHistory
|
|
* @for CloseTicketReport
|
|
*/
|
|
function getCloseTicketHistory(currentPage) {
|
|
var startDate, endDate;
|
|
var userID = userId;
|
|
// console.log(startDateParam, endDateParam);
|
|
if (startDateParam) {
|
|
startDate = startDateParam;
|
|
$("#startDate").val(startDate);
|
|
} else {
|
|
startDate = $("#startDate").val();
|
|
}
|
|
|
|
if (endDateParam) {
|
|
endDate = endDateParam;
|
|
$("#endtDate").val(endDate);
|
|
} else {
|
|
endDate = $("#endtDate").val();
|
|
}
|
|
|
|
var strtype = "Close";
|
|
var ddlval=$('#ddFilterType').val();
|
|
if(ddlval == "Close"){
|
|
}
|
|
else{
|
|
strtype = "Close,"+ddlval;
|
|
}
|
|
console.log(strtype);
|
|
var date1 = new Date(startDate);
|
|
var date2 = new Date(endDate);
|
|
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
|
|
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
|
|
$('.excelIcon').show();
|
|
if (diffDays <= 90) {
|
|
//console.log(userID);
|
|
//send ajax request
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/Report/Ticket_Close_Grid/",
|
|
data: { userId: userID, startDate: startDate, endDate: endDate, ticketStatus: "close", isTicketScore: isTicketScore, TicketType: strtype },
|
|
success: function (data) {
|
|
$("#divGrid").html(data);
|
|
if (document.getElementById('CloseTicket') !== null) {
|
|
applyFiltersBasedOnParametersToKendoGrid();
|
|
setTimeout(function () {
|
|
//console.log($("#CloseTicket .k-grid-content table tbody tr").length);
|
|
if ($("#CloseTicket .k-grid-content table tbody tr").length > 0) {
|
|
$('.excelIcon').show();
|
|
} else {
|
|
$('.excelIcon').hide();
|
|
}
|
|
}, 1000);
|
|
} else {
|
|
$('.excelIcon').hide();
|
|
}
|
|
},
|
|
complete: function (data) {
|
|
console.log(data);
|
|
//if (currentPage) {
|
|
// setTimeout(function () { $("#CloseTicket").data('kendoGrid').dataSource.page(currentPage); }, 1000);
|
|
//}
|
|
startDateParam = "";
|
|
endDateParam = "";
|
|
if (isTicketScore != "true") {
|
|
if (typeof $("#CloseTicket").data("kendoGrid") != "undefined" && $("#CloseTicket").data("kendoGrid") != null) {
|
|
var grid = $("#CloseTicket").data("kendoGrid");
|
|
grid.hideColumn("Score");
|
|
}
|
|
}
|
|
},
|
|
error: function (data) {
|
|
console.log(data);
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
jAlert("Please select 3 months data only.", 'message');
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Function to apply filters on kendo grid based on parameters
|
|
* @method applyFiltersBasedOnParametersToKendoGrid
|
|
* @for CloseTicketReport
|
|
*/
|
|
function applyFiltersBasedOnParametersToKendoGrid() {
|
|
if (assignedToUser && assignedTo) {
|
|
if (assignedTo.trim().toLowerCase() == "van") {
|
|
applyFilterToKendoGridWithLogic('CloseTicket', ['ServiceEngineerName', 'AssignedTo'], 'and', ['contains', 'eq'], [assignedToUser, assignedTo]);
|
|
} else if (assignedTo.trim().toLowerCase() == "dealer") {
|
|
applyFilterToKendoGridWithLogic('CloseTicket', ['DealerDealerName', 'AssignedTo'], 'and', ['contains', 'eq'], [assignedToUser, assignedTo]);
|
|
}
|
|
} else if (assignedTo && !responseTime) {
|
|
applyFilterToKendoGrid('CloseTicket', 'AssignedTo', 'eq', assignedTo);
|
|
} else if (responseTime && !assignedTo) {
|
|
applyFilterToKendoGrid('CloseTicket', 'TotalTicketLifeCycleTimeSlab', 'eq', responseTime);
|
|
} else if (vehicleTag && !age) {
|
|
applyFilterToKendoGrid('CloseTicket', 'VehicleTagging', 'eq', vehicleTag);
|
|
} else if (vehicleTag && age) {
|
|
applyFilterToKendoGridWithLogic('CloseTicket', ['VehicleTagging', 'Age'], 'and', ['eq', 'lt'], [vehicleTag, age]);
|
|
} else if (responseTime && assignedTo) {
|
|
applyFilterToKendoGridWithLogic('CloseTicket', ['TotalTicketLifeCycleTimeSlab', 'AssignedTo'], 'and', ['eq', 'eq'], [responseTime, assignedTo]);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Function call on row bound of close tickets table
|
|
* @method onRowBound
|
|
* @for CloseTicketReport
|
|
*/
|
|
function onRowBound(e) {
|
|
|
|
if (_userRole.toLowerCase().trim() == 'cce' || _userRole.toLowerCase().trim() == 'cce_admin') {
|
|
$('.k-grid-EditTicketFeedback').text("").removeClass("k-button k-button-icontext").html("<span class='k-icon k-edit'></span>").show();
|
|
$('.k-grid-TicketDetails').hide();
|
|
} else {
|
|
$('.k-grid-TicketDetails').text("").removeClass("k-button k-button-icontext").html("<span class='k-icon k-justifyFull'></span>").show();
|
|
$('.k-grid-EditTicketFeedback').hide();
|
|
}
|
|
|
|
$('.k-grid-feedback').text("").removeClass("k-button k-button-icontext").html("<span class='k-icon k-justifyFull'></span>");
|
|
//$('.k-grid-Performance').text("").removeClass("k-button k-button-icontext").html("<span class='k-icon k-performance'></span>");
|
|
|
|
// called common file function to show title on mouse hover.
|
|
addTitleAttribute();
|
|
|
|
// sla met or not met functionality
|
|
var data = this.dataSource.view();
|
|
//console.log(this.dataSource.view());
|
|
for (var i = 0; i < data.length; i++) {
|
|
|
|
//get uid of row
|
|
var uid = data[i].uid;
|
|
// get default sla time of row
|
|
var defaultSla = data[i].DefaultSlaTime;
|
|
// get total ticket life cycle sla value
|
|
var totalLifeCycleSla = data[i].TotalTicketLifeCycleTimeSlab;
|
|
|
|
// get feedback of row
|
|
var feedback = data[i].DefaultCol2;
|
|
// get age of row
|
|
var age = parseFloat(data[i].Age, 10);
|
|
//console.log(age);
|
|
// get 24 hrs reason of row
|
|
var reasonFor24Hrs = data[i].DefaultCol3;
|
|
|
|
// get feedback of row
|
|
var feedbackCallStatus = data[i].CallStatus;
|
|
//console.log(feedbackCallStatus);
|
|
var row = this.table.find("tr[data-uid='" + uid + "']");
|
|
feedbackCallStatus = (feedbackCallStatus == null) ? "" : feedbackCallStatus;
|
|
|
|
|
|
if ((age >= 24) && ((feedbackCallStatus).toLowerCase().trim() == "feedback collected") && (reasonFor24Hrs != "" && reasonFor24Hrs != null)) {
|
|
//if ((age >= 24) && (feedback != "" && feedback != null) && (reasonFor24Hrs != "" && reasonFor24Hrs != null)) {
|
|
row.find('.k-grid-feedback').text("").removeClass("k-button k-button-icontext").html("<span id='spanFeedback' class='feedback' style='background: green;'>F</span> <span id='span24Hrs' class='Hours' style='background: green;'>24</span>");
|
|
row.find('.k-grid-feedbackDetails').text("").removeClass("k-button k-button-icontext").html("<span id='spanFeedback' class='feedback' style='background: green;'>F</span>");
|
|
row.find('.k-grid-reason24Hrs').text("").removeClass("k-button k-button-icontext").html("<span id='span24Hrs' class='Hours' style='background: green;'>24</span>");
|
|
} else if ((age >= 24) && ((feedbackCallStatus).toLowerCase().trim() != "feedback collected" || feedbackCallStatus == "" || feedbackCallStatus == null) && (reasonFor24Hrs != "" && reasonFor24Hrs != null)) {
|
|
//} else if ((age >= 24) && (feedback == "" || feedback == null) && (reasonFor24Hrs != "" && reasonFor24Hrs != null)) {
|
|
row.find('.k-grid-feedback').text("").removeClass("k-button k-button-icontext").html("<span id='spanFeedback' class='feedback' style='background: red;'>F</span> <span id='span24Hrs' class='Hours' style='background: green;'>24</span>");
|
|
row.find('.k-grid-feedbackDetails').text("").removeClass("k-button k-button-icontext").html("<span id='spanFeedback' class='feedback' style='background: green;'>F</span>");
|
|
row.find('.k-grid-reason24Hrs').text("").removeClass("k-button k-button-icontext").html("<span id='span24Hrs' class='Hours' style='background: red;'>24</span>");
|
|
} else if ((age >= 24) && ((feedbackCallStatus).toLowerCase().trim() != "feedback collected" || feedbackCallStatus == "" || feedbackCallStatus == null) && (reasonFor24Hrs == "" || reasonFor24Hrs == null)) {
|
|
//} else if ((age >= 24) && (feedback == "" || feedback == null) && (reasonFor24Hrs == "" || reasonFor24Hrs == null)) {
|
|
row.find('.k-grid-feedback').text("").removeClass("k-button k-button-icontext").html("<span id='spanFeedback' class='feedback' style='background: red;'>F</span> <span id='span24Hrs' class='Hours' style='background: red;'>24</span>");
|
|
row.find('.k-grid-feedbackDetails').text("").removeClass("k-button k-button-icontext").html("<span id='spanFeedback' class='feedback' style='background: red;'>F</span>");
|
|
row.find('.k-grid-reason24Hrs').text("").removeClass("k-button k-button-icontext").html("<span id='span24Hrs' class='Hours' style='background: red;'>24</span>");
|
|
} else if ((age >= 24) && ((feedbackCallStatus).toLowerCase().trim() == "feedback collected") && (reasonFor24Hrs == "" || reasonFor24Hrs == null)) {
|
|
//} else if ((age >= 24) && (feedback != "" && feedback != null) && (reasonFor24Hrs == "" || reasonFor24Hrs == null)) {
|
|
row.find('.k-grid-feedback').text("").removeClass("k-button k-button-icontext").html("<span id='spanFeedback' class='feedback' style='background: green;'>F</span> <span id='span24Hrs' class='Hours' style='background: red;'>24</span>");
|
|
row.find('.k-grid-feedbackDetails').text("").removeClass("k-button k-button-icontext").html("<span id='spanFeedback' class='feedback' style='background: red;'>F</span>");
|
|
row.find('.k-grid-reason24Hrs').text("").removeClass("k-button k-button-icontext").html("<span id='span24Hrs' class='Hours' style='background: green;'>24</span>");
|
|
} else if (age < 24 && ((feedbackCallStatus).toLowerCase().trim() != "feedback collected" || feedbackCallStatus == "" || feedbackCallStatus == null)) {
|
|
//} else if (age < 24 && (feedback == "" || feedback == null)) {
|
|
row.find('.k-grid-feedback').text("").removeClass("k-button k-button-icontext").html("<span id='spanFeedback' class='feedback' style='background: red;'>F</span>");
|
|
row.find('.k-grid-feedbackDetails').text("").removeClass("k-button k-button-icontext").html("<span id='spanFeedback' class='feedback' style='background: red;'>F</span>");
|
|
row.find('.k-grid-reason24Hrs').text("").removeClass("k-button k-button-icontext").html("<span style='color:black'>NA</span>");
|
|
} else if (age < 24 && ((feedbackCallStatus).toLowerCase().trim() == "feedback collected")) {
|
|
//} else if (age < 24 && (feedback != "" && feedback != null)) {
|
|
row.find('.k-grid-feedback').text("").removeClass("k-button k-button-icontext").html("<span id='spanFeedback' class='feedback' style='background: green;'>F</span>");
|
|
row.find('.k-grid-feedbackDetails').text("").removeClass("k-button k-button-icontext").html("<span id='spanFeedback' class='feedback' style='background: green;'>F</span>");
|
|
row.find('.k-grid-reason24Hrs').text("").removeClass("k-button k-button-icontext").html("<span style='color:black'>NA</span>");
|
|
}
|
|
|
|
|
|
|
|
|
|
if (defaultSla > totalLifeCycleSla) {
|
|
//row.find('.k-grid-feedback').text("").removeClass("k-button k-button-icontext").html("<span style='background: green;' class='feedback'>F</span>");
|
|
row.find('.k-grid-resolutionSla').text("").removeClass("k-button k-button-icontext").html("<img src='" + slaMetImagePath + "' title='SLA met'>");
|
|
} else {
|
|
// row.find('.k-grid-feedback').text("").removeClass("k-button k-button-icontext").html("<img src='" + slaMetImagePath + "' title='SLA met'>");
|
|
row.find('.k-grid-resolutionSla').text("").removeClass("k-button k-button-icontext").html("<img src='" + slaNotMetImagePath + "' title='SLA not met'>");
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
//function call on change of start date
|
|
/**
|
|
* Add 15 days in endDate based on the startDate.
|
|
* @method onChangeDateSelection
|
|
* @for CloseTicketReport
|
|
*/
|
|
function onChangeDateSelection() {
|
|
|
|
}
|
|
|
|
/**
|
|
* To get filter parameters and export report.
|
|
* @method exportReport
|
|
* @for CloseTicketReport
|
|
*/
|
|
// function exportReport() {
|
|
// var userID = userId;
|
|
// var startDate = $("#startDate").val();
|
|
// var endDate = $("#endtDate").val();
|
|
|
|
|
|
// // sending ajax request to export ICR Unique Users and Data Usage to Excel, and hadling its completion
|
|
// if (xhr_exportExport && xhr_exportExport.readystate != 4) {
|
|
// xhr_exportExport.abort();
|
|
// }
|
|
// xhr_exportExport = $.ajax({
|
|
// type: "POST",
|
|
// url: "/Report/Ticket_Close_Open_ExportToExcel/",
|
|
// data: { UserId: userID, startDate: startDate, endDate: endDate, ticketStatus: "close", isTicketScore: isTicketScore },
|
|
// success: function (data) {
|
|
// // making the generated Excel available for downloading.
|
|
// window.location.href = data;
|
|
// },
|
|
// complete: function () {
|
|
// },
|
|
// error: function (data) {
|
|
// console.log("Error in Export to Excel");
|
|
// }
|
|
// });
|
|
// }
|
|
|
|
//function exportReport() {
|
|
// var userID = userId;
|
|
// var startDate = $("#startDate").val();
|
|
// var endDate = $("#endtDate").val();
|
|
|
|
|
|
// // sending ajax request to export ICR Unique Users and Data Usage to Excel, and hadling its completion
|
|
// if (xhr_exportExport && xhr_exportExport.readystate != 4) {
|
|
// xhr_exportExport.abort();
|
|
// }
|
|
// xhr_exportExport = $.ajax({
|
|
// type: "POST",
|
|
// url: "/Report/Ticket_Close_Open_NewExportToExcel/",
|
|
// data: { UserId: userID, startDate: startDate, endDate: endDate, ticketStatus: "close", isTicketScore: isTicketScore },
|
|
// success: function (data) {
|
|
// // making the generated Excel available for downloading.
|
|
// window.location.href = data;
|
|
// },
|
|
// complete: function () {
|
|
// },
|
|
// error: function (data) {
|
|
// console.log("Error in Export to Excel");
|
|
// }
|
|
// });
|
|
//}
|
|
function exportReport() {
|
|
var userID = userId;
|
|
// var apiUrl = url + "Api/Ticket?tickettype=count&openData=hh&isOpenclose=true&iscount=true&isajax=t&isajaxcount=true";
|
|
////alert(userID);
|
|
/// var apiUrl = WCFRESTURL.GetConsolidateCount;
|
|
var startDate = $("#startDate").val();
|
|
var endDate = $("#endtDate").val();
|
|
console.log(startDate + 'startDate' + endtDate);
|
|
var apiurldata = WCFRESTURL.GetcloseDataList;
|
|
var strtype = "Close";
|
|
var ddlval=$('#ddFilterType').val();
|
|
if(ddlval == "Close"){
|
|
}
|
|
else{
|
|
strtype = "Close,"+ddlval;
|
|
}
|
|
console.log(strtype);// sending ajax request to export ICR Unique Users and Data Usage to Excel, and hadling its completion
|
|
if (xhr_exportExport && xhr_exportExport.readystate != 4) {
|
|
xhr_exportExport.abort();
|
|
}
|
|
xhr_exportExport = $.ajax({
|
|
type: "POST",
|
|
//url: apiUrl,
|
|
url: apiurldata,
|
|
data: { UserId: userID, StartDate: startDate, EndDate: endDate, ticketStatus: "close", FromDate: startDate, ToDate: endDate, UtcMinute: UtcMinutes, Token: securityToken, Limit: "10000000", OffSet: "0", _timeOffSetMinutes: "330", TicketType: strtype },
|
|
dataType: "json",
|
|
success: function (data) {
|
|
|
|
// alert(data);
|
|
// making the generated Excel available for downloading.
|
|
window.location.href = data;
|
|
},
|
|
complete: function () {
|
|
},
|
|
error: function (data) {
|
|
//alert(data);
|
|
console.log("Error in Export to Excel");
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
* To apply filters to the Kendo-Grid-Columns.
|
|
* @method applyFilterToKendoGridWithLogic
|
|
* @param {String} gridId Target-Grid
|
|
* @param {Array} columnName Target-Column-Name
|
|
* @param {String} logic Filtering-Logic (eg: for Equals-to = eq)
|
|
* @param {Array} operator Filtering-Operator (eg: AND, OR)
|
|
* @param {Array} filterValues Values to be filtered in the Target column
|
|
* @for CloseTicketReport
|
|
*/
|
|
function applyFilterToKendoGridWithLogic(gridId, columnName, logic, operator, filterValues) {
|
|
var filter = {
|
|
logic: logic,
|
|
filters: []
|
|
};
|
|
for (var i = 0; i < filterValues.length; i++) {
|
|
filter.filters.push({
|
|
field: columnName[i],
|
|
operator: operator[i],
|
|
value: filterValues[i]
|
|
});
|
|
}
|
|
//console.log(gridId);
|
|
$("#" + gridId).data('kendoGrid').dataSource.filter(filter);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* To apply filters to the Kendo-Grid-Columns.
|
|
* @method applyFilterToKendoGrid
|
|
* @param {String} gridId Target-Grid
|
|
* @param {String} columnName Target-Column-Name
|
|
* @param {String} logic Filtering-Logic (eg: for Equals-to = eq)
|
|
* @param {String} operator Filtering-Operator (eg: AND, OR)
|
|
* @param {String} filterValues Values to be filtered in the Target column
|
|
* @for CloseTicketReport
|
|
*/
|
|
function applyFilterToKendoGrid(gridId, columnName, operator, filterValues) {
|
|
var filter = {
|
|
"field": columnName,
|
|
"operator": operator,
|
|
"value": filterValues
|
|
}
|
|
$("#" + gridId).data('kendoGrid').dataSource.filter(filter);
|
|
}
|
|
|
|
|
|
/**
|
|
* To get refresh reports on close of ticket details.
|
|
* @method getRefresh
|
|
* @for CloseTicketReport
|
|
*/
|
|
function getRefresh() {
|
|
$(".k-i-close").click(function () {
|
|
var currentPage = $("#CloseTicket").data('kendoGrid').dataSource.page();
|
|
//getCloseTicketHistory(currentPage);
|
|
$('#CloseTicket').data('kendoGrid').dataSource.read();
|
|
$('#CloseTicket').data('kendoGrid').refresh();
|
|
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Function call on edit button and redirect to ticket feedback page to edit feedback
|
|
* @method editTicketFeedback
|
|
* @for Report
|
|
*/
|
|
function editFeedback(e) {
|
|
//alert('hello kitty');
|
|
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
|
|
var ticketid = dataItem.Id;
|
|
//window.location.href = "/Ticket/TicketAdministration?complaintNo=" + ticketid;
|
|
window.open("/Ticket/TicketAdministration?complaintNo=" + ticketid + "&feedback=yes");
|
|
}
|
|
|
|
|
|
//============================= document ready function ===============================//
|
|
|
|
$(document).ready(function () {
|
|
$('.excelIcon').hide();
|
|
/**
|
|
* Global References: Getting parameters from query string.
|
|
* @for OpenTicketReport
|
|
*/
|
|
assignedTo = getParameterByName('assignedTo');
|
|
startDateParam = getParameterByName('startDate');
|
|
endDateParam = getParameterByName('endDate');
|
|
setTimeout(function () {
|
|
console.log(isepsFlag.toLowerCase());
|
|
|
|
if(isepsFlag.toLowerCase() == 'yes'){
|
|
$("#ddFilterType option").not("[value='EPS']").remove();
|
|
//$("#ddReasonForDealerTicket option[value='EPS']").remove();
|
|
}
|
|
else{
|
|
if (_userRole.toLowerCase().trim() == 'cce'){
|
|
if(isepsFlag.toLowerCase() == 'both'){
|
|
}
|
|
else{
|
|
$("#ddFilterType option[value='EPS']").remove();
|
|
}
|
|
}
|
|
}
|
|
}, 2000);
|
|
responseTime = getParameterByName('responseTime');
|
|
vehicleTag = getParameterByName('vehicleTag');
|
|
age = getParameterByName('age');
|
|
assignedToUser = getParameterByName('assignedToUser');
|
|
isTicketScore = getParameterByName('isTicketScore');
|
|
//console.log(startDateParam, endDateParam);
|
|
// getCloseTicketHistory();
|
|
|
|
addKendoWindow("#divTicketDetails", "Ticket Details", "1000px", 150, 120);
|
|
$("#divTicketDetails").parent().addClass("TicketReportDetails_Window");
|
|
}); |