EOS/Scripts/Ticket/manageEscalation.js
Nidhi Bhargava f0c1ab20e1 code push
2025-09-04 16:25:07 +05:30

688 lines
23 KiB
JavaScript

/*================================================================================================================\
+
+ 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("<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 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 + ' <b> ' + dataItem.manager_name + '</b> ?', '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($('<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 state id.
$("#stateName").val($('#ddStateList').find('option:selected').text());
// empty City dropdown
$("#ddCityList").text("");
// by default add select text.
$("#ddCityList").append($('<option></option>').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($('<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(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();
});