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