API Docs for:
Show:

File: Report\reportTicketClose.js

/*================================================================================================================\
+
+ 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>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<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");
});