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

2102 lines
88 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*================================================================================================================\
+.lat
+ Project : GoData-Eicher
+ Filename : TicketAdministrationReassign.js
+ Module Name : Ticket
+ Purpose : For ticket reassignalert
+ Coded By : Parul Guptas
+
+================================================================================================================*/
/**
* For ticketing
* @module Ticket
*/
/**
* This class contains functionality of Ticket Reassign for CCE.
* @class TicketReassign
* @constructor
*/
//Global variables
var xhr_addNewTicket;
var breakdownLocLatLng;
var breakdownMarker;
var _ccplMap = null;
var _geoCoder;
var _defaultLat = 26.912285124827,
_defaultLng = 75.7873203125
//initialize markers
var _availableVansMarkers = '../../Content/css/images/avil-van.png'; //marker for available vans
var _unavailableVansMarkers = '../../Content/css/images/unavl-van.png'; //marker for unavailable vans
var _dealerMarker = '../../Content/css/images/dealer-icon.png'; //marker for dealers
var breakdownLat, breakdownLng, breakdownState, ticketId, defaultSlatime, vRegistrationNo;
//Google Distance MAtrix Service API
var _service = new google.maps.DistanceMatrixService();
var _detailsListOfVanDealer = []; //array of objects of details of nearest vans and dealers
var _vanDealerLatLngArr = []; //array of nearest vans and dealers lat lng
var _copyResulEls = [];
/**
* Load google map on page.
* @method initMap
* @param {String} id HTML element id where map is loaded.
* @for TicketReassign
*/
function _initMap(id) {
var _mapOptions = {
center: new google.maps.LatLng(_defaultLat, _defaultLng),
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
//initialize map
_ccplMap = new google.maps.Map(document.getElementById(id), _mapOptions);
}
/**
* Function to reassign ticket
* @method reassignTicket
* @for TicketReassign
*/
function reassignTicket() {
$('#dvlocationchange').hide();
breakdownLat = $("#breakdownLattitude").val();
breakdownLng = $("#breakdownLongitude").val();
breakdownState = $("#breakdownState").val();
ticketId = $("#ticketid").val();
defaultSlatime = $("#defaultSlaTime").val();
vRegistrationNo = $("#vRegistrationNo").val();
// ADDED BY PRIYA ON 29.03.2023 FOR LOCATIION REASSIGN
if (islocationchange == "false") {
$('#prevstate').val(breakdownState);
}
if (islocationchange == "false") {
breakdownLat = $("#breakdownLattitude").val();
breakdownLng = $("#breakdownLongitude").val();
// stateName = $("#breakdownState").val();
// alert(stateName)
// setTimeout(function () { /* get all nearest vans and dealers */ getAllNearestVansDealers(breakdownState); }, 1500);
}
else {
breakdownLng = breakdownLocationLatLngLocation.lng();
breakdownLat = breakdownLocationLatLngLocation.lat();
//stateName1 = state1;
//stateName2 = state2;
//setTimeout(function () { /* get all nearest vans and dealers */ getAllNearestVansDealerslocation(); }, 1500);
}
//return false;
breakdownLocLatLng = new google.maps.LatLng(breakdownLat, breakdownLng);
$.ajax({
type: "GET",
url: "/Ticket/TicketAdministration_ReassignTicket/",
success: function (data) {
$("#divReassignTicket").html('');
$("#divReassignTicket").html(data);
//open form in new dialog box
$("#divReassignTicket").data("kendoWindow").open();
openKendoWindowInCenter("#divReassignTicket");
},
complete: function () {
setTimeout(function () { /* get all nearest vans and dealers */ getAllNearestVansDealers(breakdownState); }, 1500);
setTimeout(function () {
//hideLoadingMessage();
}, 5000);
},
error: function (data) {
}
});
}
/**
* Function to close kendo window
* @method closeWindow
* @param {String} divId HTML element id where window is loaded
* @for TicketReassign
*/
function closeWindow(divId) {
$(divId).data("kendoWindow").close();
// $('#divVanDealerList').hide();
}
/**
* Function to empty van dealer array
* @method emptyVanDealerArray
* @for TicketReassign
*/
function emptyVanDealerArray() {
if (nearestVansDealersMarks.length > 0) {
for (var counter = 0; counter < nearestVansDealersMarks.length; counter++) {
nearestVansDealersMarks[counter].setMap(null);
//set address text field empty here
nearestVansDealersMarks[counter] = "";
}
nearestVansDealersMarks = [];
}
}
/**
* Function to remove markers if any
* @method removeMarker
* @for TicketReassign
*/
function removeMarker() {
//Remove previous marker if present
if (breakdownMarker) {
breakdownMarker.setMap(null);
//set address text field empty here
breakdownMarker = "";
}
}
//Global variables to get more than 25 vans/dealers
var _arrOf25VanDealerLatLng = [];
var _arrOf25VanDealerDetails = [];
var _LIMIT = 100;
/**
* Function to get all nearest vans and dealers for reassign ticket
* @method getAllNearestVansDealers
* @param {String} state The name of selected state
* @for TicketReassign
*/
var stid = "";
function getAllNearestVansDealers(state) {
// $("#tableVansDealers_reassign").html('');
// alert('a1');
_copyResulEls = [];
var stateName, stateId, vanDealerLatlng, type, VDId, vanDealerLat, vanDealerLng, vanDealerCity,
vanDealerName, vanDealerState, deviceAlias, vanRemainingTime, deviceStatus, noOfAssignedTickets, description, DealerSCode, DealerOrVanContactNo;
stateName = state;
// showLoadingMessage();
// alert($("#breakdownState").val());
//empty array to get next 25 vans/dealers details.
_copyResulEls = [];
//alert(prdvariant);
// removeMarker();
// emptyVanDealerArray();
var ajaxurl = "";
if (islocationchange == "false") {
breakdownLat = $("#breakdownLattitude").val();
breakdownLng = $("#breakdownLongitude").val();
stateName = $("#breakdownState").val();
stateName1 = stateName;
stateName2 = "";
// alert(stateName)
// setTimeout(function () { /* get all nearest vans and dealers */ getAllNearestVansDealers(breakdownState); }, 1500);
}
else {
breakdownLng = breakdownLocationLatLngLocation.lng();
breakdownLat = breakdownLocationLatLngLocation.lat();
stateName1 = state1;
stateName2 = state2;
//setTimeout(function () { /* get all nearest vans and dealers */ getAllNearestVansDealerslocation(); }, 1500);
}
limitval = $('#hdnVehicleModelNo').val() + ',' + prdvariant + ',' + 'eps';
var typeajax = "GET";
ajaxurl = "/Ticket/GetVansDealersbyStates/";
if (islocationchange == "false") {
ajaxurl = "/Ticket/GetAllNearestVansDealers/";
// jsondata = "StateName:" + stateName + ", limit:" + _LIMIT + "";
}
else {
// ajaxurl = "/Ticket/GetAllNearestVansDealers /"
ajaxurl = "/Ticket/GetVansDealersbyStates/";
// jsondata="StateName:"+ stateName1+", limit:"+ _LIMIT+", StateName2:"+ stateName2 +"";
}
//alert(prdvariant);
if (prdvariant.toLowerCase() == 'electric') {
// alert('if');
stateName2 = "";
}
stid = stateName1;
var trimStr = $.trim(locationtextarea).toLowerCase();
if ((locationtextarea == "Re-Assign To Van - Same Dealer") && (islocationchange == "false")) {
// if (trimStr == "re-assign to van - same dealer") {
dealer1scode = $('#DealerID').val();
$("#dvlocationchange").hide();
getNearestVansDealersforvanReassignForDealer(dealer1scode);
}
else {
$("#tableVansDealers_reassign").html('');
// alert(limitval);
$("#dvlocationchange").hide();
$.ajax({
type: "GET",
data: { StateName: stateName1, limit: limitval, StateName2: stateName2 },
url: ajaxurl,
success: function (data) {
if (data.NearestVansDealers.length > 0) {
// showLoadingMessage();
_vanDealerLatLngArr.length = 0;
for (var counter = 0; counter < data.NearestVansDealers.length; counter++) {
var title, markerIcon, backgroundColor;
var updatedDeviceStatus = "";
var vanDealerObj = {};
vanDealerLat = data.NearestVansDealers[counter].DealerVanLattitude.trim();
vanDealerLng = data.NearestVansDealers[counter].DealerVanLongitude.trim();
type = data.NearestVansDealers[counter].Type;
VDId = data.NearestVansDealers[counter].DealerVanId;
// vanDealerLat = data.NearestVansDealers[counter].DealerVanLattitude;
// vanDealerLng = data.NearestVansDealers[counter].DealerVanLongitude;
vanDealerCity = data.NearestVansDealers[counter].DealerVanCity;
noOfAssignedTickets = data.NearestVansDealers[counter].NoOfAssignedTicket;
// alert(data.NearestVansDealers[counter].Fuel_type);
vanDealerName = data.NearestVansDealers[counter].DealerVanName;
vanDealerState = data.NearestVansDealers[counter].DealerVanState;
deviceAlias = data.NearestVansDealers[counter].DeviceAlias;
vanRemainingTime = data.NearestVansDealers[counter].RemainingTime;
deviceStatus = data.NearestVansDealers[counter].DeviceStatus;
DealerSCode = data.NearestVansDealers[counter].DealerSCode;
var splitDistance = data.NearestVansDealers[counter].DealerOrVanContactNo.split("||");
Fuel_type = splitDistance[1];
// alert(Fuel_type);
DealerOrVanContactNo = splitDistance[0];
DealerSCode = data.NearestVansDealers[counter].DealerSCode;
// DealerOrVanContactNo = data.NearestVansDealers[counter].DealerOrVanContactNo;
if (vanRemainingTime == null || vanRemainingTime == "") {
vanRemainingTime = "0";
}
else {
if (vanRemainingTime.indexOf('-') === -1) {
vanRemainingTime = vanRemainingTime;
} else {
vanRemainingTime = "0";
}
}
//check if device is connected or not
if ((deviceStatus == "True") && (type == "van")) {
updatedDeviceStatus = "green-circle";
}
else if ((deviceStatus == "False") && (type == "van")) {
updatedDeviceStatus = "red-circle";
} else {
updatedDeviceStatus = "";
}
if (vanRemainingTime == "0") {
backgroundColor = "green";
}
else {
backgroundColor = "red";
}
if (vanDealerLat.trim() != null && vanDealerLat.trim() != "" && vanDealerLng.trim() != null && vanDealerLng.trim() != "") {
var url = "https://router.hereapi.com/v8/routes?transportMode=car&routingMode=short&avoid[features]=ferry&"
url += "origin=" + vanDealerLat + "," + vanDealerLng + "&destination=" + breakdownLocLatLng.lat() + "," + breakdownLocLatLng.lng() + "&return=polyline,summary&apikey=DW3-YCFFZtJzlAQpTfVPoXADcZpEeZe3t8h6ganVsqo";
//console.log(url);
var request = GetDataHerefromAPI("get", url);
if (request) {
request.onload = function (data) {
var res = JSON.parse(data.target.response);
var response = (res.routes[0].sections[0]);
var summary = response.summary;
var durationHours = summary.duration;// Convert seconds to minutes
var vanDealerObj = {};
distanceval = (summary.length / 1000);
durationval = (summary.duration / 60);
//durationval = Math.round(summary.duration / 60);
// console.log(distanceval);
if (distanceval < 100) {
distanceval = (summary.length / 1000).toFixed(2);
distanceval = (Math.round(distanceval * 10) / 10).toFixed(1);
// distanceval = Math.round(distanceval);
}
else {
distanceval = (summary.length / 1000);
distanceval = Math.round(distanceval);
}
if (durationval < 60) {
durationHours = Math.round(durationval) + " min";
}
else {
var hours = Math.floor(durationHours / 3600); // Convert to hours
var minutes = Math.floor((durationHours % 3600) / 60); // Get remaining minutes
durationHours = hours + ":" + (minutes < 10 ? "0" : "") + minutes + " h";
//var hours = Math.floor(durationval / 3600); // Get full hours
//var minutes = Math.floor((durationval % 3600) / 60);
//durationHours = hours + ":" + minutes;
}
vanDealerObj.distance = distanceval;// calculatedistance(resdistance,ressummary);
vanDealerObj.duration = durationHours;//(response.trafficTime, res.response.route[0].summary.text);
var hereUrl = "https://revgeocode.search.hereapi.com/v1/revgeocode?at=" + vanDealerLat + "," + vanDealerLng + "&lang=en-US&apiKey=DW3-YCFFZtJzlAQpTfVPoXADcZpEeZe3t8h6ganVsqo";
$.ajax({
type: "Get",
url: hereUrl,
success: function (data) {
vanDealerObj.vanDealerAddress = data.items[0].address.label;
}
});
// vanDealerObj.vanDealerAddress = vanAddress;
vanDealerObj.type = type;
vanDealerObj.vanDealerID = VDId;
vanDealerObj.lat = vanDealerLat;
vanDealerObj.lng = vanDealerLng;
vanDealerObj.city = vanDealerCity;
vanDealerObj.assignedTicketsToVanDealer = noOfAssignedTickets;
vanDealerObj.name = vanDealerName;
vanDealerObj.state = vanDealerState;
vanDealerObj.alias = deviceAlias;
vanDealerObj.remainingTime = vanRemainingTime;
vanDealerObj.deviceStatus = updatedDeviceStatus;
vanDealerObj.backgroundColor = backgroundColor;
vanDealerObj.DealerSCode = DealerSCode;
vanDealerObj.DealerOrVanContactNo = DealerOrVanContactNo;
vanDealerObj.Fuel_type = Fuel_type;
// alert(vanDealerObj.Fuel_type);
vanDealerObj.status = "OK"
_copyResulEls.push(vanDealerObj);
}
request.send();
}
}
}
var forLoopLength, multiplier = 100, waitIndex = 0, setTimeOutSeconds = 0;
// var vanDealerLatLngArrLength = vanDealerLatLngArr.length;
//check if breakdown location is marked or not
setTimeout(function () {
_createVanDealerSortedList();
}, 1000);
}
},
complete: function () {
// $('#div_loading').hide();
$('#_divVanDealerList').show();
},
error: function (data) {
}
});
}
}
/**
* setTimeOut function to create sorted van dealer list
* @method _createVanDealerList
* @for TicketReassign
*/
function _createVanDealerList() {
setTimeout(function () {
_createVanDealerSortedList();
}, 1000);
}
/**
* Function to reassign ticket to a van / dealer
* @method reAssignVan
* @param {String} index The index no. of selected van / dealer
* @for TicketReassign
*/
function reAssignVan(index) {
$("#displayVansDealersTable_reassign").find('tr').removeClass('showMarked');
$("#displayVansDealersTable_reassign").find('tr:nth-child(' + (index + 2) + ')').addClass('showMarked');
//create object of ticket model
var TicketModel = {};
TicketModel.TicketId = ticketId;
TicketModel.Description = "";
TicketModel.listDescription = {};
// TicketModel.AssignedTo = assto;// $('#displayVansDealersTable_reassign tr:eq(' + (index + 1) + ') > td:eq(1)').text();
TicketModel.ReportedVia = "";
if (isreassigntovan == 't') {
TicketModel.AssignedTo = 'van';
}
else {
TicketModel.AssignedTo = 'dealer';//$('#displayVansDealersTable tr:eq(' + (index + 1) + ') > td:eq(1)').text();
}
if (TicketModel.AssignedTo == "van") {
TicketModel.TicketStatus = 1;
TicketModel.OtherRemarks = null;
}
else {
TicketModel.TicketStatus = 2;
TicketModel.OtherRemarks = delaerTicketReason;
}
TicketModel.Priority = 0;
TicketModel.CustomerScore = "";
TicketModel.CreatedBy = "";
TicketModel.CreationTime = "";
TicketModel.LastModifiedBy = "";
TicketModel.LastModifiedTime = "";
TicketModel.BreakdownLocation = "";
TicketModel.BreakdownLongitude = "";
TicketModel.BreakdownLattitude = "";
TicketModel.AssignedToUserLattitude = dealerlat;//copyResulEls[index].lat;
TicketModel.AssignedToUserLongitude = dealerlong;//copyResulEls[index].lng;
TicketModel.Isdeclined = false;
TicketModel.EstimatedTimeForJobCompletion = "";
TicketModel.TotalTicketLifecycleTimeSla = "";
TicketModel.EstimatedTimeForJobCompletionSubmitTime = "";
TicketModel.VehicleRegisterNumber = vRegistrationNo;
TicketModel.BreakdownLocationLandmark = "";
TicketModel.RouteId = "";
TicketModel.CustomerContactNo = "";
TicketModel.TicketStatusAlias = "";
TicketModel.Token = "";
TicketModel.Status = "";
TicketModel.Message = "";
TicketModel.UtcMinute = 0;
TicketModel.RepairCost = "";
TicketModel.DefaultSlaTime = defaultSlatime;
TicketModel.SlaMissedReason = "";
TicketModel.SuggestionComment = "";
TicketModel.JobCompleteResponseTime = "";
TicketModel.DefaultCol2 = "";
TicketModel.DefaultCol3 = "";
//distance
var distanceInKm = dealerdistance;
if (asstodealer == 'yes') {
TicketModel.AssignedToUserId = $('#displayVansDealersTable_reassign tr:eq(' + (index + 1) + ') > td:eq(2)').text();
distanceInKm = $('#displayVansDealersTable_reassign tr:eq(' + (index + 1) + ') > td:eq(5)').text();
}
else {
TicketModel.AssignedToUserId = dealerusrid;//$('#displayVansDealersTable_reassign tr:eq(' + (index + 1) + ') > td:eq(2)').text();
distanceInKm = dealerdistance;
}///$('#displayVansDealersTable_reassign tr:eq(' + (index + 1) + ') > td:eq(5)').text();
var distance;
if (distanceInKm != "" && distanceInKm != null) {
distance = dealerdistance;
} else { distance = "0"; }
TicketModel.EstimateDistance = distance;
var regex = /.*1S.*/
var matchesRegex = regex.test(TicketModel.AssignedToUserId);
if (matchesRegex) {
TicketModel.AssignedTo = "dealer";
TicketModel.TicketStatus = 2;
TicketModel.OtherRemarks = delaerTicketReason;
}
else {
TicketModel.AssignedTo = "van";
TicketModel.TicketStatus = 1;
TicketModel.OtherRemarks = null;
}
//var distanceInKm = dealerdistance //$('#displayVansDealersTable_reassign tr:eq(' + (index + 1) + ') > td:eq(5)').text();
//var lastIndex = distanceInKm.lastIndexOf(" km");
//var distance = distanceInKm.substring(0, lastIndex);
//TicketModel.EstimateDistance = (distance == null || distance == "") ? "0" : distance;
//Send POST request with the ticket data
if (xhr_addNewTicket && xhr_addNewTicket.readystate != 4) {
xhr_addNewTicket.abort();
}
xhr_addNewTicket = $.ajax({
type: "POST",
url: "/Ticket/TicketAdministration_UpdateTicketOpenClose/",
data: TicketModel,
success: function (data) {
if (data.success == true) {
var vehmodel = $("#hdnVehicleModelNo").val();
//alert(vehmodel);
if (vehmodel.toLowerCase().indexOf("titan") !== -1) {
var tid = $('#hdnTicketID').val();
//alert(tid);
var apiUrl = url + "Api/TitanDealer?updateallocatedstatus=yes";
$.ajax({
url: apiUrl,
type: 'POST',
dataType: 'json',
data: { ticketid_alias: tid, token: securityToken, "Status": "false" },
success: function (data) {
}
});
}
/* $.ajax({
type: "POST",
url: "/Ticket/TicketAdministration_GetTicketHistory/",
data: { registrationNo: vRegistrationNo, mobileNo: "", complaintNo: "" },
success: function (data) {
if (data.fillFieldMesseage) {
jAlert(data.fillFieldMesseage, 'Message');
}
else {
$("#divCheckHistory").html(data);
//PRIYA 0N 29.03.2023
// alert(islocationchange);
if (islocationchange == 'true') {
updateIsLocation(ticketId);
}
else {
updatedealerchangereason(ticketId);
}
if (document.getElementById('tableTicketHistory')) {
$("#tableTicketHistory > tbody > tr[id='" + (ticketId).toUpperCase() + "']").trigger("click");
}
}
},
error: function (data) {
}
});*/
getCloseCount();
var iseps = false;
if (EPSType.toLowerCase() == 'eps') {
iseps = true;
}
var apiUrl = url + "Api/TicketDetails?ticketCount=s&ticketStatus=tt&openList=yes&isopen=yes";
$.ajax({
url: apiUrl,
type: 'POST',
data: { VehicleRegisterNumber: '', Token: securityToken, CustomerContactNo: mobileNo, TicketId: ticketId, chassis_number: '', isEPS: iseps, Engine_number: engineNoSearch },
//data: { TicketNo: TicketNo, ProductVariant: vertical, VehicleEchkdrivermissionNorms: emmissionnorms, VehicleSalesDate: VehicleSalesDate, CustomerName: CustomerName, VehicleFuelType: VehicleFuelType, VehicleModelNumber: vehicle_model, CustomerType: CustomerType, VehicleNumberPlate: chassis_number_vals},
success: function (data) {
openCount = data.length;
if (data.length > 0) {
$("#VRegistrationNo").val(VRegistrationNosearch);
isticketexist = 't';
tdopen = "<div ><h4>Open Ticket</h4></div><table id=\"tableTicketHistory\" class=\"OpenTicketTbl\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><thead><tr><th width=\"84px\">Id</th><th>Status</th><th>Resolution SLA (in min)</th><th>Response SLA (in min)</th></tr></thead><tbody>";
for (keyVar in data) {
if (data.hasOwnProperty(keyVar)) {
// alert(data[keyVar].TicketIdAlias);
tdopen += "<tr onclick=\"getticketDetailbyId('" + data[keyVar].TicketId + "');\" id=" + data[keyVar].TicketId + " data-ticketstatus=\"open\" data-ticketcreationtime=" + data[keyVar].CreationTime + " class=\"trData\"><td width=\"84px\" class=\"\">" + data[keyVar].TicketIdAlias + "</td><td class=\"\">" + data[keyVar].TicketStatusAlias + "</td><td class=\"\">" + data[keyVar].DefaultSlaTime + "</td><td class=\"\">" + data[keyVar].TotalTicketLifecycleTimeSla + "</td></tr>";
}
}
tdopen += "</tbody ></table >";
}
},
complete: function () {
var apiUrlClose = url + "Api/TicketDetails?ticketCount=10&ticketStatus=tt&closeList=yes";
$("#divOpenCloseTickets").html(tdopen);
$.ajax({
url: apiUrlClose,
type: 'POST',
data: { VehicleRegisterNumber: '', Token: securityToken, CustomerContactNo: mobileNo, TicketId: ticketId, chassis_number: '' },
//data: { TicketNo: TicketNo, ProductVariant: vertical, VehicleEchkdrivermissionNorms: emmissionnorms, VehicleSalesDate: VehicleSalesDate, CustomerName: CustomerName, VehicleFuelType: VehicleFuelType, VehicleModelNumber: vehicle_model, CustomerType: CustomerType, VehicleNumberPlate: chassis_number_vals},
success: function (data) {
// closeCount = data.length;
if (data.length > 0) {
if (closeCount > 10) {
tdclose = "<div id=\"dvOpen\"></div><div id=\"dvclosecount\" title=\"Please Click to view all close tickets\" style =\"height: 3em;width: 10em;cursor: pointer;background: yellow;\"><h4><a onclick=\"getAllCloseticket();\">Close Ticket(" + closeCount + ")</a></h4></div ><table id=\"tableCloseTicketHistory\" class=\"OpenTicketTbl\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><thead><tr><th width=\"84px\">Id</th><th>Status</th><th>Resolution SLA (in min)</th><th>Response SLA (in min)</th> <th>Closure within 24 Hrs and Feedback</th></tr></thead><tbody>";
}
else {
tdclose = "<div id=\"dvOpen\"></div><div ><h4><a >Close Ticket(" + closeCount + ")</a></h4></div ><table id=\"tableCloseTicketHistory\" class=\"OpenTicketTbl\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><thead><tr><th width=\"84px\">Id</th><th>Status</th><th>Resolution SLA (in min)</th><th>Response SLA (in min)</th> <th>Closure within 24 Hrs and Feedback</th></tr></thead><tbody>";
}
isticketexist = 't';
for (keyVar in data) {
if (data.hasOwnProperty(keyVar)) {
tdclose += "<tr onclick=\"getCloseTicketDetailsbyId('" + data[keyVar].TicketId + "');\" id=" + data[keyVar].TicketId + " data-ticketstatus=\"close\" data-ticketcreationtime='" + data[keyVar].CreationTime + "' data-reason24Hrs=" + data[keyVar].TotalTicketCloseHours + " data-isFeedback=" + data[keyVar].FeedBackAgenName + " class=\"trData\"><td width=\"84px\" class=\"\">" + data[keyVar].TicketIdAlias + "</td><td class=\"\">" + data[keyVar].TicketStatusAlias + "</td><td class=\"\">" + data[keyVar].DefaultSlaTime + "</td><td class=\"\">" + data[keyVar].TotalTicketLifecycleTimeSla + "</td>";
var callStatus = "";
if (data[keyVar].CallStatus == null) { callStatus = ""; } else { callStatus = data[keyVar].CallStatus; }
if (parseFloat(data[keyVar].TotalTicketCloseHours) >= parseFloat(24) && (callStatus.toLowerCase().trim() == "feedback collected") && (data[keyVar].ReasonBeyond24Hrs != "" && data[keyVar].ReasonBeyond24Hrs != null)) {
tdclose += "<td class=\"reasonFeedback\" align=\"\">&nbsp;<span id=\"span24Hrs\" class=\"Hours\" style=\"background: #00a54f;\">24</span>&nbsp;&nbsp;&nbsp;&nbsp;<span id=\"spanFeedback\" class=\"feedback\" style=\"background: #00a54f;\">F</span> </td>";
}
else if ((parseFloat(data[keyVar].TotalTicketCloseHours) >= parseFloat(24)) && ((callStatus.toLowerCase().trim() != "feedback collected" || data[keyVar].CallStatus == "" || data[keyVar].CallStatus == null)) && ((data[keyVar].ReasonBeyond24Hrs != "" && data[keyVar].ReasonBeyond24Hrs != null))) {
tdclose += "<td class=\"reasonFeedback\" align=\"\">&nbsp;<span id=\"span24Hrs\" class=\"Hours\" style=\"background: #00a54f;\">24</span>&nbsp;&nbsp;&nbsp;&nbsp;<span id=\"spanFeedback\" class=\"feedback\" style=\"background: #ee1d23;\">F</span>&nbsp;</td>";
}
else if ((parseFloat(data[keyVar].TotalTicketCloseHours) >= parseFloat(24)) && (callStatus.toLowerCase().trim() != "feedback collected" || data[keyVar].CallStatus == "" || data[keyVar].CallStatus == null) && ((data[keyVar].ReasonBeyond24Hrs == "" || (data[keyVar].ReasonBeyond24Hrs == null)))) {
tdclose += "<td class=\"reasonFeedback\" align=\"\">&nbsp;<span id=\"span24Hrs\" class=\"Hours\" style=\"background: #ee1d23;\">24</span>&nbsp;&nbsp;&nbsp;&nbsp;<span id=\"spanFeedback\" class=\"feedback\" style=\"background: #ee1d23;\">F</span>&nbsp;</td>";
}
else if ((parseFloat(data[keyVar].TotalTicketCloseHours) >= parseFloat(24)) && (callStatus.toLowerCase().trim() == "feedback collected") && ((data[keyVar].ReasonBeyond24Hrs == "" || (data[keyVar].ReasonBeyond24Hrs == null)))) {
tdclose += "<td class=\"reasonFeedback\" align=\"\">&nbsp;<span id=\"span24Hrs\" class=\"Hours\" style=\"background: #ee1d23;\">24</span>&nbsp;&nbsp;&nbsp;&nbsp;<span id=\"spanFeedback\" class=\"feedback\" style=\"background: #00a54f;\">F</span>&nbsp;</td>";
}
else if (parseFloat(data[keyVar].TotalTicketCloseHours) < parseFloat(24) && (callStatus.toLowerCase().trim()) != "feedback collected" || data[keyVar].CallStatus == "" || data[keyVar].CallStatus == null) {
tdclose += "<td class=\"reasonFeedback\" align=\"\">&nbsp;<span id=\"spanFeedback\" class=\"feedback\" style=\"background: #ee1d23;\">F</span>&nbsp;</td>";
}
else if (parseFloat(data[keyVar].TotalTicketCloseHours) < parseFloat(24) && (callStatus.toLowerCase().trim() == "feedback collected")) {
tdclose += "<td class=\"reasonFeedback\" align=\"\">&nbsp;<span id=\"spanFeedback\" class=\"feedback\" style=\"background: #00a54f;\">F</span>&nbsp;</td>";
}
tdclose += "</tr>";
}
}
tdclose += "</tbody ></table >";
}
else {
}
},
complete: function () {
if (islocationchange == 'true') {
updateIsLocation(ticketId);
}
else {
updatedealerchangereason(ticketId);
}
getTicketDetailsopen(ticketId);
},
error: function (data) {
}
});
},
error: function (data) {
console.log(data);
}
});
}
},
complete: function () {
closeWindow("#divReassignTicket");
// $('#divVanDealerList').hide();
},
error: function (data) {
}
});
}
/**
* Function to calculate route distance
* @method _calcRouteDistance
* @param {String} origin The location of origin(van / dealer)
* @param {String} destinationArr The location of destination(vehicle's breakdown)
* @for TicketReassign
*/
function _calcRouteDistance(origin, destinationArr, vanDealerDetailsArr) {
_service.getDistanceMatrix({
origins: [origin],
destinations: destinationArr,
travelMode: google.maps.TravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.METRIC,
avoidHighways: false,
avoidTolls: false
}, _distanceMatrixCallback);
//Callback for Distance Matrix API
function _distanceMatrixCallback(response, status) {
//If Status was an error, throw alert
if (status != google.maps.DistanceMatrixStatus.OK) {
alert('Error was: ' + status);
} else {
//Result ELements response from Distance Matrinx
var _resultEls = response.rows[0].elements;
//Add vanId and vanAddress to the response
for (var i = 0; i < _resultEls.length; i++) {
if (_resultEls[i].status == "OK") {
_resultEls[i].vanDealerAddress = response.destinationAddresses[i];
_resultEls[i].vanDealerID = vanDealerDetailsArr[i].id;
_resultEls[i].type = vanDealerDetailsArr[i].type;
_resultEls[i].lat = vanDealerDetailsArr[i].lat;
_resultEls[i].lng = vanDealerDetailsArr[i].lng;
_resultEls[i].city = vanDealerDetailsArr[i].city;
_resultEls[i].assignedTicketsToVanDealer = vanDealerDetailsArr[i].assignedTickets;
_resultEls[i].name = vanDealerDetailsArr[i].name;
_resultEls[i].state = vanDealerDetailsArr[i].state;
_resultEls[i].alias = vanDealerDetailsArr[i].alias;
_resultEls[i].remainingTime = vanDealerDetailsArr[i].remainingTime;
_resultEls[i].deviceStatus = vanDealerDetailsArr[i].deviceStatus;
_resultEls[i].backgroundColor = vanDealerDetailsArr[i].backGroundColor;
_resultEls[i].backgroundColor = vanDealerDetailsArr[i].backGroundColor;
_resultEls[i].DealerSCode = vanDealerDetailsArr[i].DealerSCode;
_resultEls[i].DealerOrVanContactNo = vanDealerDetailsArr[i].DealerOrVanContactNo;
}
}
for (var counter = 0; counter < _resultEls.length; counter++) {
if (_resultEls[counter].status == "OK") {
_copyResulEls.push(_resultEls[counter]);
}
}
}
}
}
/**
* This fn create sorted van dealer list
* @method _createVanDealerSortedList
* @for TicketReassign
*/
function _createVanDealerSortedList() {
_copyResulEls.sort(function (a, b) {
return a.distance - b.distance; // Sorts from shortest to longest distance
});
$("#tableVansDealers_reassign").html('');
//var to hold table String to show in dialog-form
var _trString = "";
//Loop through length of result vans array values of resultEl
for (var i = 0; i < _copyResulEls.length; i++) {
//if i===0, add html for table.
if (_copyResulEls[i].status == "OK") {
var _markerIcon;
if (i === 0) {
_trString += '<table id="displayVansDealersTable_reassign" class="modalTable"><thead><tr><th>S. No.</th><th>Van/Dealer</th><th style="display:none;">Van/Dealer Id</th><th>Van/Dealer Name</th><th style="width:25%;">Van/Dealer Location</th><th>Distance</th><th>Duration</th><th>No. of Open Tickets</th><th>Fuel Type</th><th>Remaining Time(in mins)</th><th>Is Connected</th><th>Dealer Scode</th><th>Contact No.</th><th ></th></tr></thead><tbody>';
//'<table id="displayVansDealersTable_reassign" class="modalTable"><thead><tr><th>S. No.</th><th>Van/Dealer</th><th style="display:none;">Van/Dealer Id</th><th>Van/Dealer Name</th><th style="width:25%;">Van/Dealer Location</th><th>Distance</th><th>Duration</th>><th>No. of Open Tickets</th><th>Fuel Type</th><th>Remaining Time(in mins)</th><th>Is Connected</th><th>Dealer Scode</th><th>Contact No.</th><th ></th></tr></thead><tbody>';
}
var svanrerassign = "";
var bcolorreassign = "";
var reassignbtn = "";
var dis = _copyResulEls[i].distance + ' KM';
var str = $('#hdnVehicleModelNo').val();
if (str.toLowerCase().indexOf("titan") !== -1 || str.toLowerCase().indexOf("axles") !== -1 || str.toLowerCase().indexOf("genset") !== -1 || str.toLowerCase().indexOf("industrial") !== -1 || str.toLowerCase().indexOf("ne") !== -1) {
svanrerassign = '<td>' + _copyResulEls[i].name + '</td>';
reassignbtn = '<td><button class="button_blue" id="btnvan' + _copyResulEls[i].vanDealerID + '" value="Re-Assign" style="width:auto;width:77px;" onclick="checkIfAssignToDealer(' + i + ', this);">Re-Assign</button></td>';
}
else {
if (_copyResulEls[i].type == 'van') {
bcolorreassign = 'background:#e59d00;';
// alert('aa' + _copyResulEls[i].fu)
svanrerassign = '<td>' + _copyResulEls[i].name + '</td>';
reassignbtn = '<td><button class="button_blue" value="Re-Assign" id="btnrevan' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].vanDealerID + '" style="width:auto;" onclick="ReassignVantovan(this);" >Re-Assign</button></td>';
}
else {
svanrerassign = '<td>' + _copyResulEls[i].name + '<button class="button_blue" id="btnvan' + _copyResulEls[i].vanDealerID + '" value=' + _copyResulEls[i].vanDealerID + ',' + i + ' style="width:auto;" onclick="showvanreassign(this);">+</button></td>';
reassignbtn = '<td><button class="button_blue" id="btnvan' + _copyResulEls[i].vanDealerID + '" value="Re-Assign" style="width:auto;width:77px;" onclick="checkIfAssignToDealer(' + i + ', this);">Re-Assign</button></td>';
}
}
//add each row
//_trString += '<tr id="' + _copyResulEls[i].vanDealerID + '"><td style="box-shadow: 4px 0px 0px ' + _copyResulEls[i].backgroundColor + ' inset;" >' + (i + 1) + '</td><td >' + _copyResulEls[i].type + '</td><td style="display:none;">' + _copyResulEls[i].vanDealerID + '</td><td>' + _copyResulEls[i].name + '</td><td>' + _copyResulEls[i].vanDealerAddress + '</td><td>' + _copyResulEls[i].distance.text + '</td><td>' + _copyResulEls[i].duration.text + '</td><td>' + _copyResulEls[i].assignedTicketsToVanDealer + '</td><td>' + _copyResulEls[i].remainingTime + '</td><td><span class="' + _copyResulEls[i].deviceStatus + '"</span></td><td>' + _copyResulEls[i].DealerSCode + '</td><td><span>' + _copyResulEls[i].DealerOrVanContactNo + '</span></td><td><button value="Re-Assign" class="button_blue" style="width:77px;" onclick="checkIfAssignToDealer(' + i + ', this);">Re-Assign</button></td></tr>';
_trString += '<tr id="' + _copyResulEls[i].vanDealerID + '" style="' + bcolorreassign + '" ><td style="box-shadow: 4px 0px 0px ' + _copyResulEls[i].backgroundColor + ' inset;" >' + (i + 1) + '</td><td >' + _copyResulEls[i].type + '</td><td style="display:none;">' + _copyResulEls[i].vanDealerID + '</td><input type="hidden" id="hdnrelat' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].lat + '">' + svanrerassign + '<input type="hidden" id="hdnretype' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].type + '"><input type="hidden" id="hdnrelong' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].lng + '"><input type="hidden" id="hdnreauid' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].vanDealerID + '"><input type="hidden" id="hdnredistanceid' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].distance + '"><td>' + _copyResulEls[i].vanDealerAddress + '</td><td>' + dis + '</td><td>' + _copyResulEls[i].duration + '</td><td>' + _copyResulEls[i].assignedTicketsToVanDealer + '</td><td>' + _copyResulEls[i].Fuel_type + '</td><td>' + _copyResulEls[i].remainingTime + '</td><td><span class=' + _copyResulEls[i].deviceStatus + '</span></td><td>' + _copyResulEls[i].DealerSCode + '</td><td><span>' + _copyResulEls[i].DealerOrVanContactNo + '</span></td>' + reassignbtn + '</tr>';
//if i===2, end table tag.
if (i === _copyResulEls.length) {
$("#tableVansDealers_reassign").append('</tbody></table>');
}
//add content to info window
var description = '<div id="divInfoWindow">' +
'<div class="">' +
' <div class="">' +
'<h2 class="EngName_heading"><span id="spanVanDealerName">' + _copyResulEls[i].name + '</span></h2>' +
'<table width="100%" cellpadding="0" cellspacing="0" class="InfoWindowTbl">' +
'<tbody>' +
'<tr>' +
'<td class=""><span>Van/Dealer Location</span></td><td colspan="5"><span id="spanVanDealerLocation">' + _copyResulEls[i].vanDealerAddress + '</span>' +
'</td></tr><tr><td><span>Distance</span></td> <td> <span id="spanVanDealerDistance">' + _copyResulEls[i].distance + '</span></td><td><span>Duration</span> </td><td><span id="spanVanDealerDuration">' + _copyResulEls[i].duration + '</span>' +
'</td><td class=""> <span>No. of Open Tickets</span> </td> <td> <span id="spanNoOfAssignedTickets">' + _copyResulEls[i].assignedTicketsToVanDealer + '</span></td><td><span>' + _copyResulEls[i].DealerSCode + '</span></td><td>' + _copyResulEls[i].DealerOrVanContactNo + '</td></tr></tbody></table></div></div></div>';
}
}
$("#tableVansDealers_reassign").append(_trString);
setTimeout(function () {
if (EPSType.toLowerCase() == 'eps') {
$("tr[id*='van' i]").hide();
}
}, 2000);
//On click of row of Vans / dealers table
$("#displayVansDealersTable_reassign > tbody > tr").click(function (e) {
var rowId = e.currentTarget.id;
if (infowindow) {
infowindow.close();
}
$("#displayVansDealersTable_reassign").find('tr').removeClass('showMarked');
$("#displayVansDealersTable_reassign").find('tr[id=' + rowId + ']').addClass('showMarked');
var _selectedVanDealerLat, _selectedVanDealerLng, _vehicleLatLng, _selectedVanDealerLatLng, _selectedVanDealerType;
var _selectedVanDealerId = e.currentTarget.id;
for (var count = 0; count < _copyResulEls.length; count++) {
if (_copyResulEls[count].vanDealerID == _selectedVanDealerId) {
_selectedVanDealerLat = _copyResulEls[count].lat;
_selectedVanDealerLng = _copyResulEls[count].lng;
_selectedVanDealerType = _copyResulEls[count].type;
}
}
vehicleLatLng = breakdownLocLatLng;
_selectedVanDealerLatLng = new google.maps.LatLng(_selectedVanDealerLat, _selectedVanDealerLng);
calcRoute(vehicleLatLng, _selectedVanDealerLatLng, _selectedVanDealerType, _ccplMap);
});
}
// //start marker bounce
// function getMarkerBounce(vanDealerMarker) {
// if (vanDealerMarker.getAnimation() != null) {
// vanDealerMarker.setAnimation(null);
// } else {
// vanDealerMarker.setAnimation(google.maps.Animation.BOUNCE);
// }
// }
// //stop marker bounce
// function stopMarkerBounce() {
// for (var count = 0; count < nearestVansDealersMarks.length; count++) {
// if (nearestVansDealersMarks[count].getAnimation() != null) {
// nearestVansDealersMarks[count].setAnimation(null);
// }
// }
// }
//}
//=========================================================Getting Address from Here API ====================================
function ShowCurrentTime(lat, lng) {
vanAddress = "";
var hereUrl = "https://revgeocode.search.hereapi.com/v1/revgeocode?at=" + lat + "," + lng + "&lang=en-US&apiKey=DW3-YCFFZtJzlAQpTfVPoXADcZpEeZe3t8h6ganVsqo";
$.ajax({
type: "Get",
url: hereUrl,
success: function (data) {
vanAddress = data.items[0].address.label;
}
});
}
//===========================================================Calculate Distance ============================================
function calculatedistance(distance, str) {
return distance = { text: str.slice(str.indexOf("length") + 8, str.indexOf("</span>")), value: distance };
}
//======================================================Calculate Time =========================================================
function calculatetime(time, str) {
//if (time == 0) {
return duration = { text: str.slice(str.indexOf("time") + 6, str.indexOf("</span>.")), value: time }
//}
//else {
// d = Number(time);
// var h = Math.floor(d / 3600);
// var m = Math.floor(d % 3600 / 60);
// var hDisplay = h > 0 ? h + (h == 1 ? " hour, " : " hours, ") : "";
// var mDisplay = m > 0 ? m + (m == 1 ? " min " : " mins ") : "";
// return duration = { text: hDisplay + mDisplay, value: time }
//}
}
//=================================================Calling Method of Here API
function GetDataHerefromAPI(method, url) {
var xhr = new XMLHttpRequest();
xhr.withCredentials = false;
if ("withCredentials" in xhr) {
xhr.open(method, url, false);
} else if (typeof XDomainRequest != "undefined") {
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
xhr = null;
}
return xhr;
}
//====================== ADDED ON 29.03.2023 FOR LOCATION REASSIGN (START)=============================
function getStateListlocation() {
var eoslsthtml = $("#eos_state_reassign").html();
if (eoslsthtml != "") {
}
else {
$.ajax({
type: "GET",
url: "/Ticket/GetAllStateList/",
success: function (data) {
// empty City dropdown
if ($("#eos_state_reassign").data("kendoMultiSelect") != undefined) {
var multiselect = $("#eos_state_reassign").data("kendoMultiSelect");
multiselect.destroy();
}
// add data to dropdown.
if (data.list) {
$("#eos_state_reassign").append($('<option></option>').val("").html("-Select-"));
for (var counter = 0; counter < data.list.length; counter++) {
$("#eos_state_reassign").append(
$('<option></option>').val(data.list[counter].Value).html(data.list[counter].Text));
}
}
},
complete: function () {
var optional = $("#eos_state_reassign").kendoMultiSelect({
// autoClose: false,
maxSelectedItems: 2
}).data("kendoMultiSelect");
optional.value([]);
},
error: function (data) {
}
});
}
}
var validateLocationCall = "";
var landmarkvallocation = "";
function locationReassignTicket() {
// $("#tableVansDealers_reassign").html('');
// _copyResulEls =[];
locationtextarea = "";
var stateMultiselectval = $("#eos_state_reassign").data("kendoMultiSelect").dataItems();
//$('#spnlocationstateerror').hide();
//$('#spnlocationstateerror').html('');
//$('#spnbreakdownlocationError').hide();
//$('#spnbreakdownlocationError').html('');
var lval = $('#searchLocationToolLocation').val();
$('#eos_exact_location_change').val(lval);
var cityval = $('#eos_city_location').val();
var Routeval = $('#ddlRoutesLocation').val();
var landmarkval = $('#breakdown_landmark_location').val();
landmarkvallocation = landmarkval;
$('#hdnCityLocation').val(cityval);
$('#hdnRouteLocation').val(Routeval);
$('#hdnLandmarkLocation').val(landmarkval);
var iserrror = "";
var locationtextarea = $('#eos_exact_location_change').val();
if (stateMultiselectval == "") {
iserrror = "yes";
}
if (locationtextarea == "") {
iserrror = "yes";
}
if (cityval == "") {
iserrror = "yes";
}
if (Routeval == "") {
iserrror = "yes";
}
if (iserrror == "yes") {
return;
}
else {
//updateIsLocation('TICKETID-275204');
// $('#divLoadingElement').show();
_copyResulEls = [];
islocationchange = 'true';
breakdownLng = breakdownLocationLatLngLocation.lng();
breakdownLat = breakdownLocationLatLngLocation.lat();
$('#dvlocationchange').hide();
var str = $('#hdnVehicleModelNo').val();
if (str.toLowerCase().indexOf("pro x 3.5t ev") !== -1) {
$('#hdnVehicleModelNo').val('TITAN 3.5T');
}
else if (str.toLowerCase().indexOf("pro x 3.5") !== -1) {
$('#hdnVehicleModelNo').val('TITAN 3.5');
}
reassignTicket();
}
}
function setlocation() {
var stateMultiselect = $("#eos_state_reassign").data("kendoMultiSelect").dataItems();
if (stateMultiselect != "" && stateMultiselect != null && stateMultiselect.length > 0) {
state1 = stateMultiselect[0].text;
state2 = stateMultiselect.length > 1 ? stateMultiselect[1].text : "";
LoadCityListOnStateChangelocation();
}
var sname = "";
// alert(state1)
if (state2 == "" || state2 == null) {
sname = state1;
}
else {
sname = state1 + ',' + state2;
}
statesearch = sname;
}
function updateIsLocation(ticketid) {
///var LocationModel = {};
//LocationModel.ti=cketid = ticketId;
//alert(changeBreakDownLocation + 'breakdownLng' + breakdownLocationLatLngLocation.lat());
var CityLocationVal = $('#hdnCityLocation').val();
var RouteLocationVal = $('#hdnRouteLocation').val();
var LandmarkLocationVal = $('#hdnLandmarkLocation').val();
//alert(CityLocationVal + "CityLocationVal" + RouteLocationVal + "RouteLocationVal" + LandmarkLocationVal);
// return;
var apiUrl = url + "Api/Location?islocationchange=true&ticketId=" + ticketid + "&BreakdownLocation=" + changeBreakDownLocation + "&breakdownLongitude=" + breakdownLocationLatLngLocation.lng() + "&breakdownLattitude=" + breakdownLocationLatLngLocation.lat() + "&state=" + state1 + "&City=" + CityLocationVal + "&Route=" + RouteLocationVal + "&Landmark=" + landmarkvallocation;
$.ajax({
url: apiUrl,
type: 'POST',
data: { islocationchange: 'true', ticketId: ticketid },
success: function (data) {
},
complete: function () {
},
error: function (data) {
}
});
}
function updatedealerchangereason(ticketid) {
var reason = dealerchangereason;
var OtherReason = dealerchangereasonremarks;
reason = $("#hdnDealercChangeReason").val();
OtherReason = $("#hdnDealercChangeReasonRemarks").val();
var apiUrl = url + "Api/Location?isdealearchange=true&ticketId=" + ticketid + "&reason=" + reason + "&OtherReason=" + OtherReason;
$.ajax({
url: apiUrl,
type: 'POST',
data: { islocationchange: 'true', ticketId: ticketid },
success: function (data) {
},
complete: function () {
$("#hdnDealercChangeReason").val('');
$("#hdnDealercChangeReasonRemarks").val('');
},
error: function (data) {
}
});
} var prdvariant = "cng";
function reassignTicketDefault() {
islocationchange = "false";
var ticketid = $("#hdnTicketID").val();
// alert(hdnTicketID);
if (ticketid.length > 13) {
//alert('if');
substr = ticketid.substring(ticketid.length - 7, ticketid.length);
}
else {
//alert('else');
substr = ticketid.substring(ticketid.length - 6, ticketid.length);
}
var tid = "TICKETID-" + substr;
var tstatus = $('#' + tid).attr('data-ticketstatus');
apiUrl = url + "Api/TicketDetails?ownerinfo=yes&ticketid=" + tid + "&Token=teramatrix&openclose=" + tstatus + "";
$.ajax({
type: "POST",
url: apiUrl,
success: function (data) {
//console.log('aa');
$('#hdnVehicleModelNo').val(data.VehicleModelNumber);
console.log(data.VehicleModelNumber);
if (data.VehicleModelNumber == "Pro X 3T EV") {
console.log('aa1');
$('#hdnVehicleModelNo').val("TITAN 3T");
}
else if (data.VehicleModelNumber == "Pro X 3.5T EV") {
console.log('aa2');
$('#hdnVehicleModelNo').val("TITAN 3.5T");
}
console.log($('#hdnVehicleModelNo').val());
if (data.ProductVariant == null) {
}
else {
prdvariant = data.ProductVariant;
}
}
});
reassignTicketdefault();
}
function reassignTicketdefault() {
$.ajax({
type: "GET",
url: "/Ticket/TicketAdministration_ReassignTicket/",
success: function (data) {
$("#divReassignTicket").html('');
$("#divReassignTicket").html(data);
//open form in new dialog box
$("#divReassignTicket").data("kendoWindow").open();
openKendoWindowInCenter("#divReassignTicket");
},
complete: function () {
},
error: function (data) {
}
});
}
function LoadCityListOnStateChangelocation() {
// reset city list
if ($("#eos_city_location").data("kendoComboBox") != undefined) {
var multiselect = $("#eos_city_location").data("kendoComboBox");
multiselect.destroy();
}
$("#eos_city_location").kendoComboBox({
dataTextField: "CityName",
dataValueField: "CityName",
filter: "contains",
dataSource: []
});
var stateMultiselect = $("#eos_state_reassign").data("kendoMultiSelect").dataItems();
// alert(stateMultiselect);
if (stateMultiselect != "" && stateMultiselect != null && stateMultiselect.length > 0) {
var combobox = $("#eos_city_location").data("kendoComboBox");
for (var counter = 0; counter < stateMultiselect.length; counter++) {
$.ajax({
type: "GET",
url: "/DropDownData/showCityStateWise/",
data: { stateVal: stateMultiselect[counter].value },
success: function (data) {
for (var count = 0; count < data.list.length; count++) {
combobox.dataSource.add({ CityName: data.list[count].CityName, CityName: data.list[count].CityName });
}
},
error: function (data) {
}
});
}
}
}
function showvanreassign($this) {
var dealerscode = $this.value;
var nameArr = dealerscode.split(',');
state1 = statesearch;
getNearestVansDealersforvanReassign(nameArr[0], nameArr[1])
}
function getNearestVansDealersforvanReassign(dealercode, trindex) {
$("#dvlocationchange").hide();
//empty array to get next 25 vans/dealers details.
_copyResulEls = [];
//empty array
nearestVansDealersMarks = [];
var aurl = url + "Api/CogentAPI?getvans=ss";
var stateName1, stateName1, stateId, vanDealerLatlng, type, VDId, vanDealerLat, vanDealerLng, vanDealerCity, vanDealerName, vanDealerState,
deviceAlias, vanRemainingTime, deviceStatus, noOfAssignedTickets, description, DealerSCode, DealerOrVanContactNo;
if (xhr_getAllVans && xhr_getAllVans.readystate != 4) {
xhr_getAllVans.abort();
}
if (islocationchange == 'false') {
state1 = breakdownState;
}
xhr_getAllVans = $.ajax({
type: "POST",
url: url + "Api/CogentAPI?getvans=ss",
// data: { StateName: state1, limit: prdvariant, StateName2: state2, DealerSCode: dealercode, Token: securityToken, UserId: userId },
data: { StateName: state1, limit: _LIMIT, StateName2: state2, DealerSCode: dealercode, Fuel_type: prdvariant, Token: securityToken, UserId: userId },
success: function (data) {
if (data.length > 0) {
// $("#div_loading").show();
for (keyVar in data) {
if (data.hasOwnProperty(keyVar)) {
var title, markerIcon, backgroundColor;
var updatedDeviceStatus = "";
var vanDealerObj = {};
vanDealerLat = data[keyVar].DealerVanLattitude.trim();
vanDealerLng = data[keyVar].DealerVanLongitude.trim();
type = data[keyVar].Type;
VDId = data[keyVar].DealerVanId;
vanDealerCity = data[keyVar].DealerVanCity;
noOfAssignedTickets = data[keyVar].NoOfAssignedTicket;
vanDealerName = data[keyVar].DealerVanName;
vanDealerState = data[keyVar].DealerVanState;
deviceAlias = data[keyVar].DeviceAlias;
vanRemainingTime = data[keyVar].RemainingTime;
deviceStatus = data[keyVar].DeviceStatus;
DealerSCode = data[keyVar].DealerSCode;
DealerOrVanContactNo = data[keyVar].DealerOrVanContactNo;
DealerSCode = data[keyVar].DealerSCode;
DealerOrVanContactNo = data[keyVar].DealerOrVanContactNo;
// alert(data[keyVar].Fuel_type);
Fuel_type = data[keyVar].Fuel_type;
if (vanRemainingTime == null || vanRemainingTime == "") {
vanRemainingTime = "0";
}
else {
if (vanRemainingTime.indexOf('-') === -1) {
vanRemainingTime = vanRemainingTime;
} else {
vanRemainingTime = "0";
}
}
//check if device is connected or not
if ((deviceStatus == "True") && (type == "van")) {
updatedDeviceStatus = "green-circle";
}
else if ((deviceStatus == "False") && (type == "van")) {
updatedDeviceStatus = "red-circle";
} else {
updatedDeviceStatus = "";
}
if (vanRemainingTime == "0") {
backgroundColor = "green";
}
else {
backgroundColor = "red";
}
if (vanDealerLat.trim() != null && vanDealerLat.trim() != "" && vanDealerLng.trim() != null && vanDealerLng.trim() != "") {
var brkloc = "";
var brklan = "";
if (islocationchange == 'false') {
state1 = breakdownState;
brkloc = breakdownLat;
brklan = breakdownLng;
}
else {
brkloc = breakdownLocationLatLngLocation.lat();
brklan = breakdownLocationLatLngLocation.lng();
}
var url = "https://router.hereapi.com/v8/routes?transportMode=car&routingMode=short&avoid[features]=ferry&"
url += "origin=" + vanDealerLat + "," + vanDealerLng + "&destination=" + brkloc + "," + brklan + "&return=polyline,summary&apikey=DW3-YCFFZtJzlAQpTfVPoXADcZpEeZe3t8h6ganVsqo";
// console.log(url);
var request = GetDataHerefromAPI("get", url);
if (request) {
request.onload = function (data) {
var res = JSON.parse(data.target.response);
var response = (res.routes[0].sections[0]);
var summary = response.summary;
var durationHours = summary.duration;// Convert seconds to minutes
var vanDealerObj = {};
distanceval = (summary.length / 1000);
durationval = (summary.duration / 60);
//durationval = Math.round(summary.duration / 60);
// console.log(distanceval);
if (distanceval < 100) {
distanceval = (summary.length / 1000).toFixed(2);
distanceval = (Math.round(distanceval * 10) / 10).toFixed(1);
// distanceval = Math.round(distanceval);
}
else {
distanceval = (summary.length / 1000);
distanceval = Math.round(distanceval);
}
if (durationval < 60) {
durationHours = Math.round(durationval) + " min";
}
else {
var hours = Math.floor(durationHours / 3600); // Convert to hours
var minutes = Math.floor((durationHours % 3600) / 60); // Get remaining minutes
durationHours = hours + ":" + (minutes < 10 ? "0" : "") + minutes + " h";
//var hours = Math.floor(durationval / 3600); // Get full hours
//var minutes = Math.floor((durationval % 3600) / 60);
//durationHours = hours + ":" + minutes;
}
vanDealerObj.distance = distanceval;// calculatedistance(resdistance,ressummary);
vanDealerObj.duration = durationHours;//(response.trafficTime, res.response.route[0].summary.text);
var hereUrl = "https://revgeocode.search.hereapi.com/v1/revgeocode?at=" + vanDealerLat + "," + vanDealerLng + "&lang=en-US&apiKey=DW3-YCFFZtJzlAQpTfVPoXADcZpEeZe3t8h6ganVsqo";
$.ajax({
type: "Get",
url: hereUrl,
success: function (data) {
vanDealerObj.vanDealerAddress = data.items[0].address.label;
}
});
vanDealerObj.type = type;
vanDealerObj.vanDealerID = VDId;
vanDealerObj.lat = vanDealerLat;
vanDealerObj.lng = vanDealerLng;
vanDealerObj.city = vanDealerCity;
vanDealerObj.assignedTicketsToVanDealer = noOfAssignedTickets;
vanDealerObj.name = vanDealerName;
vanDealerObj.state = vanDealerState;
vanDealerObj.alias = deviceAlias;
vanDealerObj.remainingTime = vanRemainingTime;
vanDealerObj.deviceStatus = updatedDeviceStatus;
vanDealerObj.backgroundColor = backgroundColor;
vanDealerObj.DealerSCode = DealerSCode;
vanDealerObj.DealerOrVanContactNo = DealerOrVanContactNo;
vanDealerObj.Fuel_type = Fuel_type
vanDealerObj.status = "OK"
_copyResulEls.push(vanDealerObj);
}
request.send();
}
}
}
var forLoopLength, multiplier = 100, waitIndex = 0, setTimeOutSeconds = 0;
// var vanDealerLatLngArrLength = vanDealerLatLngArr.length;
}
}
else {
alert("No Active Van");
}
setTimeout(function () {
_createVanDealerSortedListForVan(dealercode);
}, 1000);
},
complete: function () {
// $("#div_loading").hide();
var btnid = "#btnvan" + dealercode;
$("#dvlocationchange").hide();
$(btnid).attr("disabled", "disabled");
},
error: function (data) {
}
});
}
function _createVanDealerSortedListForVan(trindex) {
_copyResulEls.sort(function (a, b) {
return a.distance - b.distance; // Sorts from shortest to longest distance
});
var bcolor = 'background:#e59d00;';
//var to hold table String to show in dialog-form
var trString = '';
//Loop through of array length of copyResulEls
for (var i = 0; i < _copyResulEls.length; i++) {
//if i===0, add html for table.
if (_copyResulEls[i].status == "OK") {
var markerIcon;
var trid = "#" + trindex;
var dis = _copyResulEls[i].distance + ' KM';
//add each row
trString += '<tr id="' + _copyResulEls[i].vanDealerID + '" style="' + bcolor + '"><td style="box-shadow: 4px 0px 0px ' + _copyResulEls[i].backgroundColor + ' inset;" >*</td><td >' + _copyResulEls[i].type + '</td><td style="display:none;">' + _copyResulEls[i].vanDealerID + '</td><input type="hidden" id="hdnrelat' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].lat + '"><input type="hidden" id="hdnretype' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].type + '"><input type="hidden" id="hdnrelong' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].lng + '"><input type="hidden" id="hdnreauid' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].vanDealerID + '"><input type="hidden" id="hdnredistanceid' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].distance + '"><td>' + _copyResulEls[i].name + '</td><td>' + _copyResulEls[i].vanDealerAddress + '</td><td>' + dis + '</td><td>' + _copyResulEls[i].duration + '</td><td>' + _copyResulEls[i].assignedTicketsToVanDealer + '</td><td>' + _copyResulEls[i].Fuel_type + '</td><td>' + _copyResulEls[i].remainingTime + '</td><td><span class="' + _copyResulEls[i].deviceStatus + '"></span></td><td >' + _copyResulEls[i].DealerSCode + '</td><td >' + _copyResulEls[i].DealerOrVanContactNo + '</td><td><button class="button_blue" value="Assign" id="btnrevan' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].vanDealerID + '" style="width:auto;" onclick="ReassignVantovan(this);" >Re-Assign</button></td></tr>';
//add content to info win//dow
var description = '<div id="divInfoWindow">' +
'<div class="">' +
' <div class="">' +
'<h2 class="EngName_heading"><span id="spanVanDealerName">' + _copyResulEls[i].name + '</span></h2>' +
'<table width="100%" cellpadding="0" cellspacing="0" class="InfoWindowTbl">' +
'<tbody>' +
'<tr>' +
'<td class=""><span>Van/Dealer Location</span></td><td colspan="5"><span id="spanVanDealerLocation">' + _copyResulEls[i].vanDealerAddress + '</span>' +
'</td></tr><tr><td><span>Distance</span></td> <td> <span id="spanVanDealerDistance">' + _copyResulEls[i].distance + '</span></td><td><span>Duration</span> </td><td><span id="spanVanDealerDuration">' + _copyResulEls[i].duration + '</span>' +
'</td><td class=""> <span>No. of Open Tickets</span> </td> <td> <span id="spanNoOfAssignedTickets">' + _copyResulEls[i].assignedTicketsToVanDealer + '</span></td></tr></tbody></table></div></div></div>';
var vanDealerLatlng = new google.maps.LatLng(_copyResulEls[i].lat, _copyResulEls[i].lng);
}
if (i == _copyResulEls.length - 1) { hideLoadingMessage(); }
}
//var _bounds = new google.maps.LatLngBounds();
//for (var count = 0; count < nearestVansDealersMarks.length; count++) {
// _bounds.extend(nearestVansDealersMarks[count].position);
//}
//ccplMap.fitBounds(_bounds);
//Append the trString created in the dialog-form
//$("#tableVansDealers").append(trString);
// $("#tableVansDealers_reassign").html('');
// _copyResulEls =[];
$('#displayVansDealersTable').html('');
setTimeout(function () {
$(trid).after(trString);
}, 300);
$("#_divVanDealerList").css('display', 'inline-block');
$("#dvlocationchange").hide();
$("#displayVansDealersTable > tbody > tr").click(function (e) {
var rowId = e.currentTarget.id;
if (infowindow) {
infowindow.close();
}
var selectedVanDealerLat, selectedVanDealerLng, vehicleLatLng, selectedVanDealerLatLng, selectedVanDealerType;
var selectedVanDealerId = e.currentTarget.id;
for (var count = 0; count < copyResulEls.length; count++) {
if (copyResulEls[count].vanDealerID == selectedVanDealerId) {
selectedVanDealerLat = copyResulEls[count].lat;
selectedVanDealerLng = copyResulEls[count].lng;
selectedVanDealerType = copyResulEls[count].type;
}
}
vehicleLatLng = breakdownLocationLatLngLocation;
});
}
var isreassigntovan = 'f';
//====================== ADDED ON 29.03.2023 FOR LOCATION REASSIGN (END)=============================
function ReassignVantovan($this) {
var dealerscode = $this.value;
var vid = $this.id;
isreassigntovan = 't';
//var nameArr = dealerscode.split(',');
var myString = vid.replace("btnrevan", '');
reAssignVanNew(myString);
// assignVanNew(dealerscode);
}
function reAssignVanNew(index) {
$("#displayVansDealersTable_reassign").find('tr').removeClass('showMarked');
// $("#displayVansDealersTable_reassign").find('tr:nth-child(' + (index + 2) + ')').addClass('showMarked');
//create object of ticket model
$("#dvlocationchange").hide();
var TicketModel = {};
TicketModel.TicketId = ticketId;
TicketModel.Description = "";
TicketModel.listDescription = {};
if (isreassigntovan == 't') {
TicketModel.AssignedTo = 'van';
}
else {
TicketModel.AssignedTo = 'dealer';//$('#displayVansDealersTable tr:eq(' + (index + 1) + ') > td:eq(1)').text();
}
TicketModel.ReportedVia = "";
if (TicketModel.AssignedTo == "van") {
TicketModel.TicketStatus = 1;
TicketModel.OtherRemarks = null;
}
else {
TicketModel.TicketStatus = 2;
TicketModel.OtherRemarks = delaerTicketReason;
}
TicketModel.Priority = 0;
TicketModel.CustomerScore = "";
TicketModel.CreatedBy = "";
TicketModel.CreationTime = "";
TicketModel.LastModifiedBy = "";
TicketModel.LastModifiedTime = "";
TicketModel.BreakdownLocation = "";
TicketModel.BreakdownLongitude = "";
TicketModel.BreakdownLattitude = "";
//TicketModel.AssignedToUserId = $('#displayVansDealersTable_reassign tr:eq(' + (index + 1) + ') > td:eq(2)').text();
//TicketModel.AssignedToUserLattitude = _copyResulEls[index].lat;
//TicketModel.AssignedToUserLongitude = _copyResulEls[index].lng;
var trlatid = "#hdnrelat" + index;
var trlongid = "#hdnrelong" + index;
var trauid = "#hdnreauid" + index;
var trdistanceid = "#hdnredistanceid" + index;
TicketModel.AssignedToUserLattitude = $(trlatid).val();
TicketModel.AssignedToUserLongitude = $(trlongid).val();
TicketModel.AssignedToUserId = $(trauid).val();
TicketModel.Isdeclined = false;
TicketModel.EstimatedTimeForJobCompletion = "";
TicketModel.TotalTicketLifecycleTimeSla = "";
TicketModel.EstimatedTimeForJobCompletionSubmitTime = "";
TicketModel.VehicleRegisterNumber = vRegistrationNo;
TicketModel.BreakdownLocationLandmark = "";
TicketModel.RouteId = "";
TicketModel.CustomerContactNo = "";
TicketModel.TicketStatusAlias = "";
TicketModel.Token = "";
TicketModel.Status = "";
TicketModel.Message = "";
TicketModel.UtcMinute = 0;
TicketModel.RepairCost = "";
TicketModel.DefaultSlaTime = defaultSlatime;
TicketModel.SlaMissedReason = "";
TicketModel.SuggestionComment = "";
TicketModel.JobCompleteResponseTime = "";
TicketModel.DefaultCol2 = "";
TicketModel.DefaultCol3 = "";
//distance
var distanceInKm = $(trdistanceid).val();//$('#displayVansDealersTable tr:eq(' + (index + 1) + ') > td:eq(5)').text();
var distance;
if (distanceInKm != "" && distanceInKm != null) {
distance = distanceInKm
} else { distance = "0"; }
TicketModel.EstimateDistance = distance;
var regex = /.*1S.*/
var matchesRegex = regex.test(TicketModel.AssignedToUserId);
if (matchesRegex) {
TicketModel.AssignedTo = "dealer";
TicketModel.TicketStatus = 2;
TicketModel.OtherRemarks = delaerTicketReason;
}
else {
TicketModel.AssignedTo = "van";
TicketModel.TicketStatus = 1;
TicketModel.OtherRemarks = null;
}
//Send POST request with the ticket data
if (xhr_addNewTicket && xhr_addNewTicket.readystate != 4) {
xhr_addNewTicket.abort();
}
xhr_addNewTicket = $.ajax({
type: "POST",
url: "/Ticket/TicketAdministration_UpdateTicketOpenClose/",
data: TicketModel,
success: function (data) {
if (data.success == true) {
var vehmodel = $("#hdnVehicleModelNo").val();
//alert(vehmodel);
if (vehmodel.toLowerCase().indexOf("titan") !== -1) {
var tid = $('#hdnTicketID').val();
//alert(tid);
var apiUrl = url + "Api/TitanDealer?updateallocatedstatus=yes";
$.ajax({
url: apiUrl,
type: 'POST',
dataType: 'json',
data: { ticketid_alias: tid, token: securityToken, "Status": "true" },
success: function (data) {
}
});
}
getCloseCount();
var iseps = false;
if (EPSType.toLowerCase() == 'eps') {
iseps = true;
}
var apiUrl = url + "Api/TicketDetails?ticketCount=s&ticketStatus=tt&openList=yes&isopen=yes";
$.ajax({
url: apiUrl,
type: 'POST',
data: { VehicleRegisterNumber: '', Token: securityToken, CustomerContactNo: mobileNo, TicketId: ticketId, chassis_number: '', isEPS: iseps, Engine_number: engineNoSearch },
//data: { TicketNo: TicketNo, ProductVariant: vertical, VehicleEchkdrivermissionNorms: emmissionnorms, VehicleSalesDate: VehicleSalesDate, CustomerName: CustomerName, VehicleFuelType: VehicleFuelType, VehicleModelNumber: vehicle_model, CustomerType: CustomerType, VehicleNumberPlate: chassis_number_vals},
success: function (data) {
openCount = data.length;
if (data.length > 0) {
$("#VRegistrationNo").val(VRegistrationNosearch);
isticketexist = 't';
tdopen = "<div ><h4>Open Ticket</h4></div><table id=\"tableTicketHistory\" class=\"OpenTicketTbl\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><thead><tr><th width=\"84px\">Id</th><th>Status</th><th>Resolution SLA (in min)</th><th>Response SLA (in min)</th></tr></thead><tbody>";
for (keyVar in data) {
if (data.hasOwnProperty(keyVar)) {
// alert(data[keyVar].TicketIdAlias);
tdopen += "<tr onclick=\"getticketDetailbyId('" + data[keyVar].TicketId + "');\" id=" + data[keyVar].TicketId + " data-ticketstatus=\"open\" data-ticketcreationtime=" + data[keyVar].CreationTime + " class=\"trData\"><td width=\"84px\" class=\"\">" + data[keyVar].TicketIdAlias + "</td><td class=\"\">" + data[keyVar].TicketStatusAlias + "</td><td class=\"\">" + data[keyVar].DefaultSlaTime + "</td><td class=\"\">" + data[keyVar].TotalTicketLifecycleTimeSla + "</td></tr>";
}
}
tdopen += "</tbody ></table >";
}
},
complete: function () {
var apiUrlClose = url + "Api/TicketDetails?ticketCount=10&ticketStatus=tt&closeList=yes";
$("#divOpenCloseTickets").html(tdopen);
$.ajax({
url: apiUrlClose,
type: 'POST',
data: { VehicleRegisterNumber: '', Token: securityToken, CustomerContactNo: mobileNo, TicketId: ticketId, chassis_number: '' },
//data: { TicketNo: TicketNo, ProductVariant: vertical, VehicleEchkdrivermissionNorms: emmissionnorms, VehicleSalesDate: VehicleSalesDate, CustomerName: CustomerName, VehicleFuelType: VehicleFuelType, VehicleModelNumber: vehicle_model, CustomerType: CustomerType, VehicleNumberPlate: chassis_number_vals},
success: function (data) {
// closeCount = data.length;
if (data.length > 0) {
if (closeCount > 10) {
tdclose = "<div id=\"dvOpen\"></div><div id=\"dvclosecount\" title=\"Please Click to view all close tickets\" style =\"height: 3em;width: 10em;cursor: pointer;background: yellow;\"><h4><a onclick=\"getAllCloseticket();\">Close Ticket(" + closeCount + ")</a></h4></div ><table id=\"tableCloseTicketHistory\" class=\"OpenTicketTbl\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><thead><tr><th width=\"84px\">Id</th><th>Status</th><th>Resolution SLA (in min)</th><th>Response SLA (in min)</th> <th>Closure within 24 Hrs and Feedback</th></tr></thead><tbody>";
}
else {
tdclose = "<div id=\"dvOpen\"></div><div ><h4><a >Close Ticket(" + closeCount + ")</a></h4></div ><table id=\"tableCloseTicketHistory\" class=\"OpenTicketTbl\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><thead><tr><th width=\"84px\">Id</th><th>Status</th><th>Resolution SLA (in min)</th><th>Response SLA (in min)</th> <th>Closure within 24 Hrs and Feedback</th></tr></thead><tbody>";
}
isticketexist = 't';
for (keyVar in data) {
if (data.hasOwnProperty(keyVar)) {
tdclose += "<tr onclick=\"getCloseTicketDetailsbyId('" + data[keyVar].TicketId + "');\" id=" + data[keyVar].TicketId + " data-ticketstatus=\"close\" data-ticketcreationtime='" + data[keyVar].CreationTime + "' data-reason24Hrs=" + data[keyVar].TotalTicketCloseHours + " data-isFeedback=" + data[keyVar].FeedBackAgenName + " class=\"trData\"><td width=\"84px\" class=\"\">" + data[keyVar].TicketIdAlias + "</td><td class=\"\">" + data[keyVar].TicketStatusAlias + "</td><td class=\"\">" + data[keyVar].DefaultSlaTime + "</td><td class=\"\">" + data[keyVar].TotalTicketLifecycleTimeSla + "</td>";
var callStatus = "";
if (data[keyVar].CallStatus == null) { callStatus = ""; } else { callStatus = data[keyVar].CallStatus; }
if (parseFloat(data[keyVar].TotalTicketCloseHours) >= parseFloat(24) && (callStatus.toLowerCase().trim() == "feedback collected") && (data[keyVar].ReasonBeyond24Hrs != "" && data[keyVar].ReasonBeyond24Hrs != null)) {
tdclose += "<td class=\"reasonFeedback\" align=\"\">&nbsp;<span id=\"span24Hrs\" class=\"Hours\" style=\"background: #00a54f;\">24</span>&nbsp;&nbsp;&nbsp;&nbsp;<span id=\"spanFeedback\" class=\"feedback\" style=\"background: #00a54f;\">F</span> </td>";
}
else if ((parseFloat(data[keyVar].TotalTicketCloseHours) >= parseFloat(24)) && ((callStatus.toLowerCase().trim() != "feedback collected" || data[keyVar].CallStatus == "" || data[keyVar].CallStatus == null)) && ((data[keyVar].ReasonBeyond24Hrs != "" && data[keyVar].ReasonBeyond24Hrs != null))) {
tdclose += "<td class=\"reasonFeedback\" align=\"\">&nbsp;<span id=\"span24Hrs\" class=\"Hours\" style=\"background: #00a54f;\">24</span>&nbsp;&nbsp;&nbsp;&nbsp;<span id=\"spanFeedback\" class=\"feedback\" style=\"background: #ee1d23;\">F</span>&nbsp;</td>";
}
else if ((parseFloat(data[keyVar].TotalTicketCloseHours) >= parseFloat(24)) && (callStatus.toLowerCase().trim() != "feedback collected" || data[keyVar].CallStatus == "" || data[keyVar].CallStatus == null) && ((data[keyVar].ReasonBeyond24Hrs == "" || (data[keyVar].ReasonBeyond24Hrs == null)))) {
tdclose += "<td class=\"reasonFeedback\" align=\"\">&nbsp;<span id=\"span24Hrs\" class=\"Hours\" style=\"background: #ee1d23;\">24</span>&nbsp;&nbsp;&nbsp;&nbsp;<span id=\"spanFeedback\" class=\"feedback\" style=\"background: #ee1d23;\">F</span>&nbsp;</td>";
}
else if ((parseFloat(data[keyVar].TotalTicketCloseHours) >= parseFloat(24)) && (callStatus.toLowerCase().trim() == "feedback collected") && ((data[keyVar].ReasonBeyond24Hrs == "" || (data[keyVar].ReasonBeyond24Hrs == null)))) {
tdclose += "<td class=\"reasonFeedback\" align=\"\">&nbsp;<span id=\"span24Hrs\" class=\"Hours\" style=\"background: #ee1d23;\">24</span>&nbsp;&nbsp;&nbsp;&nbsp;<span id=\"spanFeedback\" class=\"feedback\" style=\"background: #00a54f;\">F</span>&nbsp;</td>";
}
else if (parseFloat(data[keyVar].TotalTicketCloseHours) < parseFloat(24) && (callStatus.toLowerCase().trim()) != "feedback collected" || data[keyVar].CallStatus == "" || data[keyVar].CallStatus == null) {
tdclose += "<td class=\"reasonFeedback\" align=\"\">&nbsp;<span id=\"spanFeedback\" class=\"feedback\" style=\"background: #ee1d23;\">F</span>&nbsp;</td>";
}
else if (parseFloat(data[keyVar].TotalTicketCloseHours) < parseFloat(24) && (callStatus.toLowerCase().trim() == "feedback collected")) {
tdclose += "<td class=\"reasonFeedback\" align=\"\">&nbsp;<span id=\"spanFeedback\" class=\"feedback\" style=\"background: #00a54f;\">F</span>&nbsp;</td>";
}
tdclose += "</tr>";
}
}
tdclose += "</tbody ></table >";
}
else {
}
},
complete: function () {
if (islocationchange == 'true') {
updateIsLocation(ticketId);
}
else {
updatedealerchangereason(ticketId);
}
getTicketDetailsopen(ticketId);
},
error: function (data) {
}
});
},
error: function (data) {
console.log(data);
}
});
}
},
complete: function () {
closeWindow("#divReassignTicket");
// $('#divVanDealerList').hide();
},
error: function (data) {
}
});
}
function _createVanDealerSortedListForVanDealerWise(trindex) {
_copyResulEls.sort(function (a, b) {
return a.distance - b.distance; // Sorts from shortest to longest distance
});
var bcolor = 'background:#e59d00;';
$("#tableVansDealers_reassign").html('');
//var to hold table String to show in dialog-form
var trString = '';
//Loop through of array length of copyResulEls
for (var i = 0; i < _copyResulEls.length; i++) {
//if i===0, add html for table.
if (_copyResulEls[i].status == "OK") {
var markerIcon;
var trid = "#" + trindex;
var dis = _copyResulEls[i].distance + ' KM';
if (i === 0) {
trString += '<table id="displayVansDealersTable_reassign" class="modalTable"><thead><tr><th>S. No.</th><th>Van/Dealer</th><th style="display:none;">Van/Dealer Id</th><th>Van/Dealer Name</th><th style="width:25%;">Van/Dealer Location</th><th>Distance</th><th>Duration</th><th>No. of Open Tickets</th><th>Fuel Type</th><th>Remaining Time(in mins)</th><th>Is Connected</th><th>Dealer Scode</th><th>Contact No.</th><th ></th></tr></thead><tbody>';
}
//add each row
trString += '<tr id="' + _copyResulEls[i].vanDealerID + '" style="' + bcolor + '"><td style="box-shadow: 4px 0px 0px ' + _copyResulEls[i].backgroundColor + ' inset;" >*</td><td >' + _copyResulEls[i].type + '</td><td style="display:none;">' + _copyResulEls[i].vanDealerID + '</td><input type="hidden" id="hdnrelat' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].lat + '"><input type="hidden" id="hdnrelong' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].lng + '"><input type="hidden" id="hdnretype' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].type + '"><input type="hidden" id="hdnreauid' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].vanDealerID + '"><input type="hidden" id="hdnredistanceid' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].distance + '"><td>' + _copyResulEls[i].name + '</td><td>' + _copyResulEls[i].vanDealerAddress + '</td><td>' + dis + '</td><td>' + _copyResulEls[i].duration + '</td><td>' + _copyResulEls[i].assignedTicketsToVanDealer + '</td><td>' + _copyResulEls[i].Fuel_type + '</td><td>' + _copyResulEls[i].remainingTime + '</td><td><span class="' + _copyResulEls[i].deviceStatus + '"></span></td><td >' + _copyResulEls[i].DealerSCode + '</td><td >' + _copyResulEls[i].DealerOrVanContactNo + '</td><td><button class="button_blue" value="Assign" id="btnrevan' + _copyResulEls[i].vanDealerID + '" value="' + _copyResulEls[i].vanDealerID + '" style="width:auto;" onclick="ReassignVantovan(this);" >Re-Assign</button></td></tr>';
//add content to info win//dow
var description = '<div id="divInfoWindow">' +
'<div class="">' +
' <div class="">' +
'<h2 class="EngName_heading"><span id="spanVanDealerName">' + _copyResulEls[i].name + '</span></h2>' +
'<table width="100%" cellpadding="0" cellspacing="0" class="InfoWindowTbl">' +
'<tbody>' +
'<tr>' +
'<td class=""><span>Van/Dealer Location</span></td><td colspan="5"><span id="spanVanDealerLocation">' + _copyResulEls[i].vanDealerAddress + '</span>' +
'</td></tr><tr><td><span>Distance</span></td> <td> <span id="spanVanDealerDistance">' + _copyResulEls[i].distance + '</span></td><td><span>Duration</span> </td><td><span id="spanVanDealerDuration">' + _copyResulEls[i].duration + '</span>' +
'</td><td class=""> <span>No. of Open Tickets</span> </td> <td> <span id="spanNoOfAssignedTickets">' + _copyResulEls[i].assignedTicketsToVanDealer + '</span></td></tr></tbody></table></div></div></div>';
var vanDealerLatlng = new google.maps.LatLng(_copyResulEls[i].lat, _copyResulEls[i].lng);
}
if (i == _copyResulEls.length - 1) { }//hideLoadingMessage(); }
}
//var _bounds = new google.maps.LatLngBounds();
//for (var count = 0; count < nearestVansDealersMarks.length; count++) {
// _bounds.extend(nearestVansDealersMarks[count].position);
//}
//ccplMap.fitBounds(_bounds);
//Append the trString created in the dialog-form
//$("#tableVansDealers").append(trString);
// $(trid).after(trString);
// $("#tableVansDealers_reassign").html('');
$("#tableVansDealers_reassign").append(trString);
$("#_divVanDealerList").css('display', 'inline-block');
$("#dvlocationchange").hide();
$("#displayVansDealersTable > tbody > tr").click(function (e) {
var rowId = e.currentTarget.id;
if (infowindow) {
infowindow.close();
}
var selectedVanDealerLat, selectedVanDealerLng, vehicleLatLng, selectedVanDealerLatLng, selectedVanDealerType;
var selectedVanDealerId = e.currentTarget.id;
for (var count = 0; count < _copyResulEls.length; count++) {
if (copyResulEls[count].vanDealerID == selectedVanDealerId) {
selectedVanDealerLat = _copyResulEls[count].lat;
selectedVanDealerLng = _copyResulEls[count].lng;
selectedVanDealerType = _copyResulEls[count].type;
}
}
vehicleLatLng = breakdownLocationLatLngLocation;
});
}
function getNearestVansDealersforvanReassignForDealer(dealercode) {
//empty array to get next 25 vans/dealers details.
_copyResulEls = [];
//empty array
nearestVansDealersMarks = [];
var stateName1, stateName1, stateId, vanDealerLatlng, type, VDId, vanDealerLat, vanDealerLng, vanDealerCity, vanDealerName, vanDealerState,
deviceAlias, vanRemainingTime, deviceStatus, noOfAssignedTickets, description, DealerSCode, DealerOrVanContactNo;
breakdownLat = $("#breakdownLattitude").val();
breakdownLng = $("#breakdownLongitude").val();
if (state1 == '' || state1 == null) {
state1 = stid;
}
else {
}
if (xhr_getAllVans && xhr_getAllVans.readystate != 4) {
xhr_getAllVans.abort();
}
xhr_getAllVans = $.ajax({
type: "POST",
url: url + "Api/CogentAPI?getvans=ss&dealerCode=" + dealercode,
data: { StateName: state1, limit: _LIMIT, StateName2: state2, DealerSCode: dealercode, Fuel_type: prdvariant, Token: securityToken, UserId: userId },
success: function (data) {
if (data.length > 0) {
// $("#div_loading").show();
for (keyVar in data) {
if (data.hasOwnProperty(keyVar)) {
var title, markerIcon, backgroundColor;
var updatedDeviceStatus = "";
var vanDealerObj = {};
vanDealerLat = data[keyVar].DealerVanLattitude.trim();
vanDealerLng = data[keyVar].DealerVanLongitude.trim();
type = data[keyVar].Type;
VDId = data[keyVar].DealerVanId;
Fuel_type = data[keyVar].Fuel_type;
vanDealerCity = data[keyVar].DealerVanCity;
noOfAssignedTickets = data[keyVar].NoOfAssignedTicket;
vanDealerName = data[keyVar].DealerVanName;
vanDealerState = data[keyVar].DealerVanState;
deviceAlias = data[keyVar].DeviceAlias;
vanRemainingTime = data[keyVar].RemainingTime;
deviceStatus = data[keyVar].DeviceStatus;
DealerSCode = data[keyVar].DealerSCode;
DealerOrVanContactNo = data[keyVar].DealerOrVanContactNo;
DealerSCode = data[keyVar].DealerSCode;
DealerOrVanContactNo = data[keyVar].DealerOrVanContactNo;
if (vanRemainingTime == null || vanRemainingTime == "") {
vanRemainingTime = "0";
}
else {
if (vanRemainingTime.indexOf('-') === -1) {
vanRemainingTime = vanRemainingTime;
} else {
vanRemainingTime = "0";
}
}
//check if device is connected or not
if ((deviceStatus == "True") && (type == "van")) {
updatedDeviceStatus = "green-circle";
}
else if ((deviceStatus == "False") && (type == "van")) {
updatedDeviceStatus = "red-circle";
} else {
updatedDeviceStatus = "";
}
if (vanRemainingTime == "0") {
backgroundColor = "green";
}
else {
backgroundColor = "red";
}
if (vanDealerLat.trim() != null && vanDealerLat.trim() != "" && vanDealerLng.trim() != null && vanDealerLng.trim() != "") {
var url = "https://router.hereapi.com/v8/routes?transportMode=car&routingMode=short&avoid[features]=ferry&"
url += "origin=" + vanDealerLat + "," + vanDealerLng + "&destination=" + breakdownLat + "," + breakdownLng + "&return=polyline,summary&apikey=DW3-YCFFZtJzlAQpTfVPoXADcZpEeZe3t8h6ganVsqo";
// console.log(url);
var request = GetDataHerefromAPI("get", url);
if (request) {
request.onload = function (data) {
var res = JSON.parse(data.target.response);
var response = (res.routes[0].sections[0]);
var summary = response.summary;
var durationHours = summary.duration;// Convert seconds to minutes
var vanDealerObj = {};
distanceval = (summary.length / 1000);
durationval = (summary.duration / 60);
// console.log(distanceval);
if (distanceval < 100) {
distanceval = (summary.length / 1000).toFixed(2);
distanceval = (Math.round(distanceval * 10) / 10).toFixed(1);
}
else {
distanceval = (summary.length / 1000);
distanceval = Math.round(distanceval);
}
if (durationval < 60) {
durationHours = Math.round(durationval) + " min";
}
else {
var hours = Math.floor(durationHours / 3600); // Convert to hours
var minutes = Math.floor((durationHours % 3600) / 60); // Get remaining minutes
durationHours = hours + ":" + (minutes < 10 ? "0" : "") + minutes + " h";
}
vanDealerObj.distance = distanceval;// calculatedistance(resdistance,ressummary);
vanDealerObj.duration = durationHours;//(response.trafficTime, res.response.route[0].summary.text);
var hereUrl = "https://revgeocode.search.hereapi.com/v1/revgeocode?at=" + vanDealerLat + "," + vanDealerLng + "&lang=en-US&apiKey=DW3-YCFFZtJzlAQpTfVPoXADcZpEeZe3t8h6ganVsqo";
$.ajax({
type: "Get",
url: hereUrl,
success: function (data) {
vanDealerObj.vanDealerAddress = data.items[0].address.label;
}
});
vanDealerObj.type = type;
vanDealerObj.vanDealerID = VDId;
vanDealerObj.lat = vanDealerLat;
vanDealerObj.lng = vanDealerLng;
vanDealerObj.city = vanDealerCity;
vanDealerObj.assignedTicketsToVanDealer = noOfAssignedTickets;
vanDealerObj.name = vanDealerName;
vanDealerObj.state = vanDealerState;
vanDealerObj.alias = deviceAlias;
vanDealerObj.remainingTime = vanRemainingTime;
vanDealerObj.deviceStatus = updatedDeviceStatus;
vanDealerObj.backgroundColor = backgroundColor;
vanDealerObj.DealerSCode = DealerSCode;
vanDealerObj.DealerOrVanContactNo = DealerOrVanContactNo;
vanDealerObj.Fuel_type = Fuel_type;
vanDealerObj.status = "OK"
_copyResulEls.push(vanDealerObj);
}
request.send();
}
}
}
var forLoopLength, multiplier = 100, waitIndex = 0, setTimeOutSeconds = 0;
// var vanDealerLatLngArrLength = vanDealerLatLngArr.length;
}
}
else {
alert("No Active Van");
}
setTimeout(function () {
_createVanDealerSortedListForVanDealerWise(dealercode);
}, 1000);
},
complete: function () {
// $("#div_loading").hide();
var btnid = "#btnvan" + dealercode;
$(btnid).attr("disabled", "disabled");
},
error: function (data) {
}
});
}