/*================================================================================================================\ + + 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 onRowBoundEscalation * @for ManageEscalation */ function onRowBoundEscalation(e) { // Add Edit and delete icon. $('.k-grid-Edit').text("").removeClass("k-button k-button-icontext").html(""); $('.k-grid-Delete').text("").removeClass("k-button k-button-icontext").html(""); // 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 deleteEscalation * @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 + ' ' + dataItem.manager_name + ' ?', 'Delete', function (result) { //again check whether user input is true if (result) { //send ajax request to controller to delete connected dealer's 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); var grid = $("#gridEscalation").data("kendoGrid"); var gridDataSource = grid.dataSource; var filter = gridDataSource.filter(); console.log(filter); }); } /** * Show escalation details to grid. * @method showEscalationDetailsStateWise * @for ManageEscalation */ function showEscalationDetailsStateWise(stateId) { var dealerId = null; $("#StateId").data('kendoComboBox').value(stateId); onSelectState(); //$.post("/Ticket/ManageEscalation_Details?dealerId=" + dealerId + "&stateId=" + stateId, null, function (data) { // $("#divEscalationDetails").html(data); // $("#StateId").data('kendoComboBox').value(stateId); // var grid = $("#gridEscalation").data("kendoGrid"); // var gridDataSource = grid.dataSource; // var filter = gridDataSource.filter(); // console.log(filter); //}); } /** * 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); }); } /** * Get Escalation data of selected State from combo box. * @method onSelectState * @for ManageEscalation */ function onSelectState() { // Get dealer id var dealerId = null; //var stateId = $("#StateId").data("kendoComboBox").text(); var stateId = $("#StateId").data("kendoComboBox").value(); var grid = $("#gridEscalation").data("kendoGrid"); if (grid != null) { var gridDataSource = grid.dataSource; var filter = gridDataSource.filter(); var stateName = $("#StateId").data("kendoComboBox").text(); if (filter) { for (var i = 0; i < filter.filters.length - 1; i++) { if (filter.filters[i].field === 'organization_name') { filter.filters.splice(i, 1); } } filter.filters.push({ field: 'organization_name', operator: 'eq', value: stateName }); gridDataSource.query({ filter: filter, pageSize: 20, page: 1 }); } else { $("#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 + "&stateId=" + stateId, null, function (data) { //$("#divEscalationDetails").html(''); $("#divEscalationDetails").html(data); }); } } else { $("#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 + "&stateId=" + stateId, null, function (data) { //$("#divEscalationDetails").html(''); $("#divEscalationDetails").html(data); }); } } //================= End of Escalation Details ============================================================================== // ========================== Create Escalation ====================================================================== /** * This function create a popup for Create escalation. * @method createEscalation * @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($('').val("").html("-Select-")); // add data to dropdown. if (vehicleProductVariantList) { //console.log('v p v'); for (var counter = 0; counter < vehicleProductVariantList.length; counter++) { $("#ddVehicleType").append($('').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($('').val("").html("-Select-")); // add data to dropdown. if (managerLevelListForEscalation) { for (var counter = 0; counter < managerLevelListForEscalation.length; counter++) { $("#ddManagerLevel").append($('').val(managerLevelListForEscalation[counter].Value).html(managerLevelListForEscalation[counter].Text)); } } } /** * Fired when change in State list. * @method onChangeState * @for ManageEscalation */ function onChangeState() { // get state id. $("#stateName").val($('#ddStateList').find('option:selected').text()); // empty City dropdown $("#ddCityList").text(""); // by default add select text. $("#ddCityList").append($('').val("").html("-Select-")); var stateId = $("#ddStateList").val(); if (stateId != "-Select-" && stateId != "") { stateId = $("#ddStateList").val(); } else { stateId = 0; } if (stateId != "") { console.log(stateId); // 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) { if (data.success == true) { // empty data source dropdown. $("#ddCityList").text(""); // by default add select text. $("#ddCityList").append($('').val("").html("-Select-")); // add data to dropdown. if (data.list) { for (var counter = 0; counter < data.list.length; counter++) { $("#ddCityList").append($('').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(ddId) { // get organization id. var organizationId = $("#ddOrganization").val(); $("#regionName").val($('#ddOrganization').find('option:selected').text()); // ajax request for get dealers 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, change: function (e) { if (this.value() && this.selectedIndex == -1) { jAlert('This Dealer does not exist!', 'Message'); $("#ddDealerName").data("kendoComboBox").value(""); } } }).data('kendoComboBox'); } else { $("#ddDealerName").kendoComboBox({ dataTextField: "", dataValueField: "", filter: "contains", dataSource: "" }); } } }, complete: function (data) { LoadStateListRegionWise(ddId, 'ddStateList', 'ddCityList'); }, 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(); } } //=== if email or phones are provided then check if relevent fields are checked or not ===// // If both email and sms required if (emailFieldval !== "" && phoneNoFieldval !== "") { if (chkEmail == false && chkSMS == false) { $("#spanNotificationType").show(); return false; } else { $("#spanNotificationType").hide(); } } // if only mail required if (emailFieldval !== "") { if (chkEmail == false) { $("#spanNotificationType").show(); return false; } else { $("#spanNotificationType").hide(); } } // if only SMS required if (phoneNoFieldval !== "") { if (chkSMS == false) { $("#spanNotificationType").show(); return false; } else { $("#spanNotificationType").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', function () { showEscalationDetailsStateWise(result.stateId); }); // 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 when submit button clicked on Create Escation and Edit escalation form. * and Validate create escalation form. * @method onBeginEditEscalation * @for ManageEscalation */ function onBeginEditEscalation() { // 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(); var managerLevel, managerName, state, city, productVariant; managerLevel = $("#ddManagerLevel").val(); managerName = $("#ManagerName").val(); state = $("#ddStateList").val(); city = $("#ddCityList").val(); productVariant = $("#ddVehicleType").val(); // Hide error message for Email and phone number. $("#spanEmail").hide(); $("#spanPhoneNo").hide(); $("#spanManagerName").hide(); $("#spanManagerLevel").hide(); $("#spanState").hide(); $("#spanCity").hide(); $("#spanProductVariant").hide(); $("#spanNotificationType").hide(); if (managerName == "") { $("#spanManagerName").show(); return false; } else if (managerLevel == "") { $("#spanManagerLevel").show(); return false; } else if (state == "-Select-" || state == "") { $("#spanState").show(); return false; } else if (city == "-Select-" || city == "") { $("#spanCity").show(); return false; } else if (productVariant == "-Select-" || productVariant == "") { $("#spanProductVariant").show(); return false; } else if (emailFieldval == "") { $("#spanEmail").show(); return false; } else if (phoneNoFieldval == "") { $("#spanPhoneNo").show(); return false; } else if (chkEmail == false) { $("#spanNotificationType").show(); return false; } else if (chkSMS == false) { $("#spanNotificationType").show(); return false; } } /** * 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', function () { //showEscalationDetailsStateWise(result.stateId); onDataUpdated(); }); //showEscalationDetails(result.dealerId); } else if (result.success == "error") { jAlert(MANAGE_ESCALATION_MESSAGES.errorInEditEscalation, 'Message'); } else if (result.success == false && result.message) { jAlert(result.message, 'Message'); } else { jAlert(MANAGE_ESCALATION_MESSAGES.exceptionInEditEscalation, 'Message'); } } // ========================== End of Edit Escalation ====================================================================== /** * Export all escalation 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; }); } function onDataUpdated() { var grid = $("#gridEscalation").data("kendoGrid"); grid.dataSource.read(); $("#divLoadingElement").hide(); } //========================== 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(); onSelectState(); });