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

460 lines
15 KiB
JavaScript

/*================================================================================================================\
+
+ Project : GoData-Eicher
+ Filename : TicketFeedback.js
+ Module Name : Ticket
+ Purpose : For ticket feedback and reason for more than 24 hours of closing a ticket
+ Coded By : Parul Gupta
+
+================================================================================================================*/
/**
* For ticketing
* @module Ticket
*/
/**
* This class contains functionality of Ticket Feedback Details for CCE.
* @class TicketFeedback
* @constructor
*/
//Global variables
var suggestionArr = []; //array of suggestions
var complaintArr = []; //array of complaints
/**
* Function call on slide
* @method sliderOnSlide
* @for TicketFeedback
*/
function sliderOnSlide(e) {
//
}
/**
* Function call on change of slider
* @method sliderOnChange
* @for TicketFeedback
*/
function sliderOnChange(e) {
var sliderId = e.sender.element[0].id;
var spanCount = sliderId.split("_").pop();
var spanId = "#spanRate_" + spanCount;
$(spanId).text(e.value);
}
/**
* Function call to validate if rating has given or not
* @method checkIfRatingHaveGiven
* @for TicketFeedback
*/
function checkIfRatingHaveGiven() {
var _rating1 = $("#spanRate_1").text();
//var _rating2 = $("#spanRate_2").text();
//var _rating3 = $("#spanRate_3").text();
//var _rating4 = $("#spanRate_4").text();
//var _rating5 = $("#spanRate_5").text();
//var _rating6 = $("#spanRate_6").text();
var ddSuggestion = $("#SuggestionComplaintList").val();
var ddCompalint = $("#ComplaintList").val();
var otherSuggestion = $("#txtOtherSuggestionData").val();
var otherComplaint = $("#txtOtherComplaintData").val();
var ddCallStatustValue = $("#ddCallStatus").val();
var otherCallStatus = $("#txtOtherCallStatusData").val();
if ((_rating1 == "") && (ddSuggestion == null) && (otherSuggestion == "") && (ddCompalint == null) && (otherComplaint == "") && (ddCallStatustValue == "" || ddCallStatustValue == null) && (otherCallStatus == "")) {
//jAlert("Please select Call Status atleast !!", "Message");
jAlert(FEEDBACK_MESSAGES.requiredCallStatus, "Message");
return false;
} else { return true; }
}
/**
* Function call to check validations on feedback data
* @method onBeginFeedback
* @for TicketFeedback
*/
function onBeginFeedback() {
if (checkIfRatingHaveGiven() == true) {
if (($("#txtOtherSuggestionData").hasClass('requiredField') == true) || ($("#txtOtherComplaintData").hasClass('requiredField') == true) || ($("#txtOtherCallStatusData").hasClass('requiredField') == true)) {
//jAlert("Please fill required data to submit feedback !!", 'Message');
jAlert(FEEDBACK_MESSAGES.requiredFieldFill, 'Message');
return false;
} else {
return true;
}
}
}
/**
* Function call to submit feedback data
* @method addFeedbackDetails
* @for TicketFeedback
*/
function addFeedbackDetails(divId) {
//create object of feedback modelalerT(
var FeedBackModel = {};
var selectedSuggestionArr = [];
selectedSuggestionArr = $("#SuggestionComplaintList").val();
var selectedCompalintArr = [];
selectedCompalintArr = $("#ComplaintList").val();
if (onBeginFeedback() == true) {
var slider = $("#slider_1").kendoSlider().data("kendoSlider");
if (($("#ddCallStatus").val() != "" && $("#ddCallStatus").val() != null) || ($("#txtOtherCallStatusData").val() != "")) {
FeedBackModel.TicketId = $("#ticketId").val();
FeedBackModel.FeedBackOverAllExperience = $("#spanRate_1").text();
FeedBackModel.CreationTime = $("#creationTime").val();
if (selectedSuggestionArr != null) {
var indexOtherSuggestion = selectedSuggestionArr.indexOf("Other");
if (indexOtherSuggestion > -1) {
selectedSuggestionArr.splice(indexOtherSuggestion, 1);
}
}
if ($("#txtOtherSuggestionData").val() != "") {
selectedSuggestionArr.push($("#txtOtherSuggestionData").val());
}
FeedBackModel.SuggestionComplaintList = selectedSuggestionArr;
if (selectedCompalintArr != null) {
var indexOtherComplaint = selectedCompalintArr.indexOf("Other");
if (indexOtherComplaint > -1) {
selectedCompalintArr.splice(indexOtherComplaint, 1);
}
}
if ($("#txtOtherComplaintData").val() != "") {
selectedCompalintArr.push($("#txtOtherComplaintData").val());
}
FeedBackModel.ComplaintList = selectedCompalintArr;
console.log(selectedSuggestionArr, selectedCompalintArr);
if ($("#ddCallStatus").val() == "Other") {
FeedBackModel.CallStatus = $("#txtOtherCallStatusData").val();
} else {
FeedBackModel.CallStatus = $("#ddCallStatus").val();
}
FeedBackModel.ReasonMoreThan24Hrs = "";
$.ajax({
type: "POST",
url: "/Ticket/TicketAdministration_CreateFeedback/",
contentType: 'application/json',
data: JSON.stringify({ model: FeedBackModel }),
success: function (data) {
//console.log(data);
if (data.success == true) {
//jAlert('Feedback Details saved successfully !!', 'Message', function () {
jAlert(FEEDBACK_MESSAGES.savedFeedbackSuccess, 'Message', function () {
if (($("#ddCallStatus").val()).toLowerCase().trim() == "feedback collected") {
$("#" + data.ticketId + " > td.reasonFeedback > span.feedback").css('background', 'green');
} else {
$("#" + data.ticketId + " > td.reasonFeedback > span.feedback").css('background', 'red');
}
if (divId) { closeWindow(divId); }
showFeedback();
});
}
},
error: function (data) {
console.log(data);
}
});
} else {
//jAlert("Please select Call Status !!", 'Message');
jAlert(FEEDBACK_MESSAGES.requiredCallStatus, 'Message');
return false;
}
}
}
/**
* Function call to submit reason data
* @method addReasonDetails
* @for TicketFeedback
*/
function addReasonDetails() {
if ($("#ddReasonMoreThan24Hrs").val() == "" || $("#ddReasonMoreThan24Hrs").val() == null) {
//jAlert("Please select reason !!", 'Message');
jAlert(FEEDBACK_MESSAGES.requiredReason, 'Message');
return false;
} else {
if ($("#txtOtherReason").hasClass('requiredField') == true) {
//jAlert("Please fill required data to submit reason !!", 'Message');
jAlert(FEEDBACK_MESSAGES.requiredFieldsSubmitReason, 'Message');
return false;
} else {
//create feedback model object
var FeedBackModel = {};
FeedBackModel.TicketId = $("#ticketId").val();
FeedBackModel.FeedBackEaseOfGettingCall = "";
FeedBackModel.FeedBackResponseOfCallCenter = "";
FeedBackModel.FeedBackTimelyUpdationByDealer = "";
FeedBackModel.FeedBackTotalRepairTime = "";
FeedBackModel.FeedBackEosCharges = "";
FeedBackModel.FeedBackOverAllExperience = "";
FeedBackModel.CreationTime = $("#creationTime").val();
FeedBackModel.SuggestionComplaint = "";
FeedBackModel.Complaint = "";
// check 24 hours reason
if ($("#ddReasonMoreThan24Hrs").val() == 'Other') {
FeedBackModel.ReasonMoreThan24Hrs = $("#txtOtherReason").val();
} else {
FeedBackModel.ReasonMoreThan24Hrs = $("#ddReasonMoreThan24Hrs").val();
}
$.ajax({
type: "POST",
url: "/Ticket/TicketAdministration_SubmitReason/",
data: FeedBackModel,
success: function (data) {
//console.log(data);
if (data.success == true) {
//jAlert('Reason saved successfully !!', 'Message', function () {
jAlert(FEEDBACK_MESSAGES.reasonSavedSuccessfully, 'Message', function () {
$("#" + data.ticketId + " > td.reasonFeedback > span.Hours").css('background', 'green');
showFeedback();
});
}
},
error: function (data) {
console.log(data);
}
});
}
}
}
/**
* Function call on selection change of drop down data list
* @method onChangeDD
* @for TicketFeedback
*/
function onChangeDD($this) {
var ddId = $this;
var ddValue = $("#" + ddId).find('option:selected').text();
if (ddValue == "Other") {
if (ddId == "ddCallStatus") {
$("#txtOtherCallStatusData").addClass("requiredField");
$("#txtOtherCallStatusData").attr('disabled', false);
$("#txtOtherCallStatusData").val('');
} else if (ddId == "ddReasonMoreThan24Hrs") {
//console.log(ddId);
$("#txtOtherReason").addClass("requiredField");
$("#txtOtherReason").attr('disabled', false);
$("#txtOtherReason").val('');
}
} else {
if (ddId == "ddCallStatus") {
$("#txtOtherCallStatusData").removeClass("requiredField");
$("#txtOtherCallStatusData").attr('disabled', true);
$("#txtOtherCallStatusData").val('');
} else if (ddId == "ddReasonMoreThan24Hrs") {
//console.log(ddId);
$("#txtOtherReason").removeClass("requiredField");
$("#txtOtherReason").attr('disabled', true);
$("#txtOtherReason").val('');
}
}
}
/**
* Function call on selection change of multiple suggestions drop down data list
* @method onChangeSuggestion
* @for TicketFeedback
*/
function onChangeSuggestion() {
if ($("#SuggestionComplaintList").val() == null) {
$("#txtOtherSuggestionData").removeClass("requiredField");
$("#txtOtherSuggestionData").attr('disabled', true);
$("#txtOtherSuggestionData").val('');
} else if (($("#SuggestionComplaintList").val().indexOf("Other") != -1) == true) {
$("#txtOtherSuggestionData").addClass("requiredField");
$("#txtOtherSuggestionData").attr('disabled', false);
$("#txtOtherSuggestionData").val('');
} else {
$("#txtOtherSuggestionData").removeClass("requiredField");
$("#txtOtherSuggestionData").attr('disabled', true);
$("#txtOtherSuggestionData").val('');
}
}
/**
* Function call on selection change of multiple complaints drop down data list
* @method onChangeComplaint
* @for TicketFeedback
*/
function onChangeComplaint() {
if ($("#ComplaintList").val() == null) {
$("#txtOtherComplaintData").removeClass("requiredField");
$("#txtOtherComplaintData").attr('disabled', true);
$("#txtOtherComplaintData").val('');
} else if (($("#ComplaintList").val().indexOf("Other") != -1) == true) {
$("#txtOtherComplaintData").addClass("requiredField");
$("#txtOtherComplaintData").attr('disabled', false);
$("#txtOtherComplaintData").val('');
} else {
$("#txtOtherComplaintData").removeClass("requiredField");
$("#txtOtherComplaintData").attr('disabled', true);
$("#txtOtherComplaintData").val('');
}
}
/**
* Function call on close of multiple suggestions drop down data list
* @method onCloseSuggestion
* @for TicketFeedback
*/
function onCloseSuggestion() {
suggestionArr = $("#SuggestionComplaintList").val();
}
/**
* Function call on close of multiple complaints drop down data list
* @method onCloseComplaint
* @for TicketFeedback
*/
function onCloseComplaint() {
complaintArr = $("#ComplaintList").val();
}
/**
* Function call on select item of multiple suggestions drop down data list
* @method onSelectSuggestion
* @for TicketFeedback
*/
function onSelectSuggestion(e) {
var dataItem = this.dataSource.view()[e.item.index()];
}
/**
* Function call on select item of multiple Complaints drop down data list
* @method onSelectComplaint
* @for TicketFeedback
*/
function onSelectComplaint(e) {
var dataItem = this.dataSource.view()[e.item.index()];
}
/**
* Function call on blur of HTML input type tag
* @method onBlurTextBox
* @for TicketFeedback
*/
function onBlurTextBox($this) {
var inputId = $this;
if ($("#" + inputId).val() != "") {
$("#" + inputId).removeClass("requiredField");
} else {
$("#" + inputId).addClass("requiredField");
}
}
var onSliderSlide = function (slideEvt) {
console.log("slider slid to " + slideEvt.value);
$('#ddCallStatus').val('FeedBack Collected');
$("#ddCallStatus").prop("disabled", true);
};
/**
* Function to add slider
* @method addSlider
* @param {String} sliderId HTML element id where slider is loaded.
* @param {String} spanId HTML element id where slider text is loaded.
* @for TicketFeedback
*/
function addSlider(sliderId, spanId) {
$(sliderId).kendoSlider({
increaseButtonTitle: "Right",
decreaseButtonTitle: "Left",
change: function (e) {
var sliderId = e.sender.element[0].id;
var spanCount = sliderId.split("_").pop();
var spanId = "#spanRate_" + spanCount;
$(spanId).text(e.value);
},
slide: onSliderSlide,
min: 1,
max: 5,
smallStep: 1,
largeStep: 1
}).data("kendoSlider");
}
/**
* Function call to edit feedback details
* @method editFeedback
* @for TicketFeedback
*/
function editFeedback() {
createAjaxRequestForFeedback("Ticket", "TicketAdministration_EditFeedback", "#divUpdateFeedback");
}
/**
* Function to create ajax request
* @method createAjaxRequestForFeedback
* @param {string} controller Name of controller
* @param {string} actionName Name of action on controller
* @param {string} divId HTML id of div
* @for TicketFeedback
*/
function createAjaxRequestForFeedback(controller, actionName, divId) {
var ticketId, creationTime, isMoreThan24Hrs;
ticketId = $("#ticketId").val();
creationTime = $("#creationTime").val();
isMoreThan24Hrs = parseFloat($("#isMoreThan24Hrs").val(), 10);
// Ajax request
if (activeRequest && activeRequest.readystate != 4) {
activeRequest.abort();
}
activeRequest = $.ajax({
type: "GET",
url: "/" + controller + "/" + actionName + "/",
data: { selectTicketId: ticketId, ticketCreationTime: creationTime, isMoreThan24Hrs: isMoreThan24Hrs },
success: function (data) {
$(divId).html("");
$(divId).html(data);
//open form in new dialog box
$(divId).data("kendoWindow").open();
openKendoWindowInCenter(divId);
},
error: function (data) {
console.log(data);
}
});
}
/**
* Function to close kendo window
* @method closeWindow
* @param {String} divId The id of div
* @for TicketFeedback
*/
function closeWindow(divId) {
$(divId).data("kendoWindow").close();
$(divId).html("");
}