/*================================================================================================================\
+
+ Project : GoData-Eicher
+ Filename : reportTicketClose.js
+ Module Name : CloseTicketReport
+ Purpose : For reporting
+ Coded By : Parul Gupta
+
+================================================================================================================*/
/**
* For reporting
* @module ReportModule
*/
/**
* This class contains functionality of Ticket report(Close)
* @class CloseTicketReport
* @constructor
*/
var xhr_exportExport;
//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();
},
error: function (data) {
console.log(data);
}
});
}
/**
* Function to get close tickets history
* @method getCloseTicketHistory
* @for CloseTicketReport
*/
function getCloseTicketHistory() {
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();
}
//console.log(userID);
//send ajax request
$.ajax({
type: "POST",
url: "/Report/Ticket_Close_Grid/",
data: { userId: userID, startDate: startDate, endDate: endDate, ticketStatus: "close" },
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 () {
startDateParam = "";
endDateParam = "";
},
error: function (data) {
console.log(data);
}
});
}
/**
* Function to apply filters on kendo grid based on parameters
* @method applyFiltersBasedOnParametersToKendoGrid
* @for CloseTicketReport
*/
function applyFiltersBasedOnParametersToKendoGrid() {
if (assignedTo) {
applyFilterToKendoGrid('CloseTicket', 'AssignedTo', 'eq', assignedTo);
} else if (responseTime) {
applyFilterToKendoGrid('CloseTicket', 'TotalTicketLifeCycleTimeSlab', 'eq', responseTime);
} else if (vehicleTag && !age) {
applyFilterToKendoGrid('CloseTicket', 'VehicleTagging', 'eq', vehicleTag);
} else if (vehicleTag && age) {
applyFilterToKendoGridWithLogic('CloseTicket', ['VehicleTagging', 'Age'], 'and', ['eq', 'lte'], [vehicleTag, age]);
}
}
/**
* Function call on row bound of close tickets table
* @method onRowBound
* @for CloseTicketReport
*/
function onRowBound(e) {
$('.k-grid-TicketDetails').text("").removeClass("k-button k-button-icontext").html("<span class='k-icon k-justifyFull'></span>");
$('.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 = data[i].Age;
// get 24 hrs reason of row
var reasonFor24Hrs = data[i].DefaultCol3;
var row = this.table.find("tr[data-uid='" + uid + "']");
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) && (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) && (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) && (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 && (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 && (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" },
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");
}
});
}
/**
* 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);
}
var assignedTo, startDateParam, endDateParam, responseTime, vehicleTag, age;
//============================= 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');
responseTime = getParameterByName('responseTime');
vehicleTag = getParameterByName('vehicleTag');
age = getParameterByName('age');
//console.log(startDateParam, endDateParam);
getCloseTicketHistory();
addKendoWindow("#divTicketDetails", "Ticket Details", "1000px", 150, 120);
$("#divTicketDetails").parent().addClass("TicketReportDetails_Window");
});