API Docs for:
Show:

File: Ticket\manageEscalation.js

/*================================================================================================================\
+
+ Project     : GoData-VECV
+ Filename    : manageEscalation.js
+ Module Name : Ticket
+ Purpose     : For Manage Escalation CRUD.
+ Coded By    : Parul Gupta
+
+================================================================================================================*/


/**
* For manage escalation
* @module Ticket
*/


/**
* This class contains functions related to show escaltion details and mange CURD.
* @class ManageEscalation
* @constructor
*/

var activeRequest, activeRequest_Edit, xhr_exportReport, activeRequest_service, activeRequest_dataSource, activeRequest_dealer;
var activeRequest_Organization;


// ========================== Common function ===================================================================

/**
*  Close the kendo window.
* @method closeWindow
* @param divId : Id which we want to close kendowindo. 
* @for ManageEscalation
*/
function closeWindow(divId) {
    $(divId).data("kendoWindow").close();
}

// ========================== End of Common function ===================================================================

//================= Escalation Details ==============================================================================

/**
* Fired when data bound to grid Escalation.
* @method onRowBoundConnectedDevice
* @for ManageEscalation
*/
function onRowBoundEscalation(e) {
    // Add Edit and delete icon.
    $('.k-grid-Edit').text("").removeClass("k-button k-button-icontext").html("<span class='k-icon k-edit'></span>");
    $('.k-grid-Delete').text("").removeClass("k-button k-button-icontext").html("<span class='k-icon k-delete'></span>");

    // called common file function to show title on mouse hover.
    addTitleAttribute();

    // show no data available message when grid has no data.
    displayNoResult(e)
}

/**
* Delete escalation entry.
* @method deleteConnection
* @for ManageEscalation
*/
function deleteEscalation(e) {
    // get row data on which click event fired
    var dataItem = this.dataItem($(e.currentTarget).closest("tr"));

    jConfirm(MANAGE_ESCALATION_MESSAGES.confirmDeleteEscalation + ' <b> ' + dataItem.ManagerName + '</b> ?', 'Delete', function (result) {
        //again check whether user input is true
        if (result) {
            //send ajax request to controller to delete connected device entry. 
            $.ajax({
                type: "POST",
                url: "/Ticket/DeleteEscalation/",
                data: { escalationId: dataItem.Id },
                success: function (data) {
                    if (data.success == true) {
                        var grid = $("#gridEscalation").data("kendoGrid");
                        grid.removeRow(grid.tbody.find("tr")[$(e.currentTarget).closest("tr").index()]);
                        //jAlert('Escalation deleted successfully!!', 'Message');
                        jAlert(MANAGE_ESCALATION_MESSAGES.escalationDeleteSuccess, 'Message');
                    }
                    else {
                        //alert box to show unsuccess deletion message 
                        jAlert(MANAGE_ESCALATION_MESSAGES.escalationDeleteFailed, 'Message');
                    }

                },
                error: function (data) {
                    console.log(data);
                }
            });
        }
    });
}

/**
* Show escalation details to grid.
* @method showEscalationDetails
* @for ManageEscalation
*/
function showEscalationDetails(dealerId) {
    console.log(dealerId);
    $.post("/Ticket/ManageEscalation_Details?dealerId=" + dealerId, null, function (data) {
        $("#divEscalationDetails").html(data);
        $("#DealerId").data('kendoComboBox').value(dealerId);
    });
}

/**
* Get Escalation data of selected dealer from combo box.
* @method onSelectDealer
* @for ManageEscalation
*/
function onSelectDealer() {

    // Get dealer id
    var dealerId = $("#DealerId").data("kendoComboBox").value();
    $("#divEscalationDetails").html('');
    // check request already exist or not.
    if (activeRequest_dealer && activeRequest_dealer.readystate != 4) {
        activeRequest_dealer.abort();
    }

    // Get service of dealer.
    activeRequest_dealer = $.post("/Ticket/ManageEscalation_Details?dealerId=" + dealerId, null, function (data) {
        //$("#divEscalationDetails").html('');
        $("#divEscalationDetails").html(data);
    });
}

//================= End of Escalation Details ==============================================================================

// ========================== Create Escalation ======================================================================

/**
* This function create a popup for Create escalation.
* @method createConnection
* @for ManageEscalation
*/
function createEscalation() {
    // Ajax request
    if (activeRequest && activeRequest.readystate != 4) {
        activeRequest.abort();
    }
    activeRequest = $.ajax({
        type: "GET",
        url: "/Ticket/CreateEscalation",
        success: function (data) {
            $("#divEditEscalation").html('');
            $("#divCreateEscalation").html('');
            $("#divCreateEscalation").html(data);
            //open form in new dialog box
            $("#divCreateEscalation").data("kendoWindow").open();
            openKendoWindowInCenter("#divCreateEscalation");
        },
        error: function (data) {
            console.log(data);
        }
    });
}

/**
* Function To bind vehicle product variant list
* @method bindVehicleProductVariant
* @for ManageEscalation
*/
function bindVehicleProductVariant() {
    // empty data source dropdown.
    $("#ddVehicleType").text("");

    // by default add select text.
    $("#ddVehicleType").append($('<option></option>').val("").html("-Select-"));

    // add data to dropdown.
    if (vehicleProductVariantList) {
        //console.log('v p v');
        for (var counter = 0; counter < vehicleProductVariantList.length; counter++) {
            $("#ddVehicleType").append($('<option></option>').val(vehicleProductVariantList[counter].Value).html(vehicleProductVariantList[counter].Text));
        }
    }
}

/**
* Function To bind Manager Level list
* @method bindManagerLevel
* @for ManageEscalation
*/
function bindManagerLevel() {
    // empty data source dropdown.
    $("#ddManagerLevel").text("");

    // by default add select text.
    $("#ddManagerLevel").append($('<option></option>').val("").html("-Select-"));

    // add data to dropdown.
    if (managerLevelListForEscalation) {
        for (var counter = 0; counter < managerLevelListForEscalation.length; counter++) {
            $("#ddManagerLevel").append($('<option></option>').val(managerLevelListForEscalation[counter].Value).html(managerLevelListForEscalation[counter].Text));
        }
    }
}

/**
* Fired when change in State list.
* @method onChangeState
* @for ManageEscalation
*/
function onChangeState() {
    // get device id and service id.
    var stateId = $("#ddStateList").val();

    $("#stateName").val($('#ddStateList').find('option:selected').text());

    // ajax request which load data  sources.
    if (activeRequest_dataSource && activeRequest_dataSource.readystate != 4) {
        activeRequest_dataSource.abort();
    }
    activeRequest_dataSource = $.ajax({
        type: "GET",
        url: "/Ticket_CustomerInventory/showCityStateWise",
        data: { stateVal: stateId },
        success: function (data) {
            // empty data source dropdown.
            $("#ddCityList").text("");

            // by default add select text.
            $("#ddCityList").append($('<option></option>').val("").html("-Select-"));

            // add data to dropdown.
            if (data.list) {
                for (var counter = 0; counter < data.list.length; counter++) {
                    $("#ddCityList").append($('<option></option>').val(data.list[counter].Value).html(data.list[counter].Text));
                }
            }
        },
        error: function (data) {
            console.log(data);
        }
    });
}

/**
* Fired when change on Organization.
* @method onChangeOrganization
* @for ManageEscalation
*/
function onChangeOrganization() {
    // get organization id.
    var organizationId = $("#ddOrganization").val();

    $("#regionName").val($('#ddOrganization').find('option:selected').text());

    // ajax request for get Device list based on organization id.
    if (activeRequest_Organization && activeRequest_Organization.readystate != 4) {
        activeRequest_Organization.abort();
    }
    activeRequest_Organization = $.ajax({
        type: "GET",
        url: "/Ticket/GetDealerListOrganizationWise",
        data: { organizationId: organizationId },
        success: function (data) {
            // empty Dealer dropdown.
            $("#ddDealerName").data("kendoComboBox").value("");

            // add data to dropdown.
            if (data.list) {
                if (data.list.length > 0) {
                    $("#ddDealerName").kendoComboBox({
                        dataTextField: "Text",
                        dataValueField: "Value",
                        filter: "contains",
                        dataSource: data.list
                    });
                }
                else {
                    $("#ddDealerName").kendoComboBox({
                        dataTextField: "",
                        dataValueField: "",
                        filter: "contains",
                        dataSource: ""
                    });
                }
            }
        },
        error: function (data) {
            console.log(data);
        }
    });
}

/**
* Called when submit button clicked on Create Escation and Edit escalation form.
* and Validate create escalation form.
* @method onBeginCreateEscalation
* @for ManageEscalation
*/
function onBeginCreateEscalation() {

    // get length of chech box values and email/phone numbers
    var chkEmail = $("#chkEmail").is(':checked');
    var chkSMS = $("#chkSms").is(':checked');
    var emailFieldval = $("#Emails").val();
    var phoneNoFieldval = $("#Phones").val();

    // Hide error message for Email and phone number.
    $("#spanEmail").hide();
    $("#spanPhoneNo").hide();

    if (chkEmail == false && chkSMS == false) {
        $("#spanNotificationType").show();
        return false;
    }
    else {
        $("#spanNotificationType").hide();
    }

    // If both email and sms required
    if (chkEmail == true && chkSMS == true) {
        if (emailFieldval == "" && phoneNoFieldval == "") {
            $("#spanEmail").show(); $("#spanPhoneNo").show();
            return false;
        }
        else {
            $("#spanEmail").hide(); $("#spanPhoneNo").hide();
        }
    }

    // if only mail required
    if (chkEmail == true) {
        if (emailFieldval == "") {
            $("#spanEmail").show(); $("#spanPhoneNo").hide();
            return false;
        }
        else {
            $("#spanEmail").hide(); $("#spanPhoneNo").hide();
        }
    }

    // if only SMS required
    if (chkSMS == true) {
        if (phoneNoFieldval == "") {
            $("#spanPhoneNo").show(); $("#spanEmail").hide();
            return false;
        }
        else {
            $("#spanPhoneNo").hide(); $("#spanEmail").hide();
        }
    }
}

/**
* Called when escalation added successfully.
* In case of success close popup otherwise show error message.
* @method onSuccessEscalation
* @for ManageEscalation
*/
function onSuccessEscalation(result) {
    if (result.success == true) {
        // close popup for create escalation
        closeWindow("#divCreateEscalation");
        jAlert('Escalation added successfully!!!', 'message');
        // show updated escalation details
        showEscalationDetails(result.dealerId);
    }
    else {
        //jAlert('This escalation already exist!!!.', 'message');
        jAlert(MANAGE_ESCALATION_MESSAGES.escalationAlreadyExist, 'message');
    }
}


// ========================== Edit Escalation ======================================================================

/**
* Open edit escalation popup window.
* @method editEscalation
* @for ManageEscalation
*/
function editEscalation(e) {

    // Get selected row
    var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
    console.log(dataItem);
    var escalationId = dataItem.Id;

    // Ajax request for edit ; if exist then kill it.
    if (activeRequest_Edit && activeRequest_Edit.readystate != 4) {
        activeRequest_Edit.abort();
    }
    activeRequest_Edit = $.ajax({
        type: "POST",
        url: "/Ticket/EditEscalation",
        data: { escalationId: escalationId },
        success: function (data) {
            $("#divCreateEscalation").html('');
            $("#divEditEscalation").html('');
            $("#divEditEscalation").html(data);
            //open form in new dialog box
            $("#divEditEscalation").data("kendoWindow").open();
            openKendoWindowInCenter("#divEditEscalation");
        },
        error: function (data) {
            console.log(data);
        }
    });
}

/**
* Called after updation of Edit escalation form.
* Update Details form.
* @method onSuccessEditEscalation
* @for ManageEscalation
*/
function onSuccessEditEscalation(result) {
    if (result.success == true) {
        closeWindow("#divEditEscalation");
        jAlert('Escalation updated successfully!!!', 'message');
        showEscalationDetails(result.dealerId);
    }
    else if (result.success == "error") {
        jAlert(MANAGE_ESCALATION_MESSAGES.errorInEditEscalation, 'Message');
    }
    else {
        jAlert(MANAGE_ESCALATION_MESSAGES.exceptionInEditEscalation, 'Message');
    }
}

//  ========================== End of Edit Escalation ======================================================================

/**
* Export all devices in excel form.
* @method exportToExcel
* @for ManageEscalation
*/
function exportToExcel() {

    // check request already exist or not.
    if (xhr_exportReport && xhr_exportReport.readystate != 4) {
        xhr_exportReport.abort();
    }
    xhr_exportReport = $.post("/Ticket/ManageEscalation_ExportToExcel", function (data) {
        window.location.href = data;
    });
}

//========================== document ready=======================
/**
* To do some initial functionality on page when Document is ready.
* @event document.ready
* @for ManageEscalation
*/
$(document).ready(function () {

    addKendoWindow("#divCreateEscalation", "Create Escalation", "1000px", 340, 180);
    addKendoWindow("#divEditEscalation", "Edit Escalation", "1000px", 340, 180);

    $("#divCreateEscalation").parent().addClass("ManageEscalation_Window");
    $("#divEditEscalation").parent().addClass("ManageEscalation_Window");
    onSelectDealer();
});