Hello Omar,
Please find the below server side code.
var moment = require('moment');
var momentbusinesstime = require('moment-business-time');
var base64 = require('base-64');
exports = {
calledFunctionFromFrontEnd: function (dataFromAPP) {
getSelectedBusinessHours(dataFromAPP);
}
}
function getSelectedBusinessHours(dataFromAPP) {
console.log("in getSelectedBusinessHours function");
var freshserviceURL = dataFromAPP.obj.iparamsData.url;
var apiKey = dataFromAPP.iparams.api;
var selectedBusinessHourID = dataFromAPP.obj.iparamsData.selectedBusinessHour;
var url = `https://${freshserviceURL}/api/v2/business_hours/${selectedBusinessHourID}`;
var headers = {
"Authorization": "Basic " + base64.encode(apiKey),
"Content-Type": "application/json"
};
var options = {
headers: headers
};
$request.get(url, options).then(function (data) {
try {
var weekDaysObj = {};
var result = JSON.parse(data.response).business_hours.service_desk_hours;
var listOfHolidays = JSON.parse(data.response).business_hours.list_of_holidays;
var finalHolidayList = [];
var currentYear = (new Date).getFullYear();
for (let i = 0; i < listOfHolidays.length; i++) {
var splitDate = listOfHolidays[i].holiday_date.split("-");
var finalDate = currentYear + "-" + splitDate[2] + "-" + splitDate[3];
finalHolidayList.push(finalDate);
}
var weekDays = ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"];
for (let j = 0; j < weekDays.length; j++) {
if (weekDays[j] in result) {
weekDaysObj[`${j}`] = [`${result[weekDays[j]].beginning_of_workday}`, `${result[weekDays[j]].end_of_workday}`];
} else {
weekDaysObj[`${j}`] = null;
}
}
findBusinessDays(dataFromAPP, weekDaysObj, finalHolidayList);
} catch (error) {
console.log(error);
}
}, function (error) {
console.log(error);
})
}
function findBusinessDays(dataFromAPP, weekDaysObj, finalHolidayList) {
console.log("In findBusinessDays function");
var mainObj = {};
var flag;
var timeStampFieldValPresent = dataFromAPP.obj.timeStampFieldValuePresent;
if (timeStampFieldValPresent === null || timeStampFieldValPresent === undefined) {
var ticketCreatedDate = dataFromAPP.obj.ticketCreatedAt;
} else {
flag = "previous updated date";
let splittimeStampFieldValPresent = timeStampFieldValPresent.split(",");
let requiredTextFieldValue = splittimeStampFieldValPresent[splittimeStampFieldValPresent.length - 2];
var previousUpdatedDate = ((requiredTextFieldValue.split(":updated on:")[1]).split(":time used:"))[0];
var ticketCreatedDate = previousUpdatedDate.split(" Time: ")[0] + "T" + previousUpdatedDate.split(" Time: ")[1];
console.log("ticketCreatedDate == >> ", ticketCreatedDate);
}
var ticketUpdatedDate = dataFromAPP.obj.ticketUpdatedAt;
console.log("ticketUpdatedDate .. ", ticketUpdatedDate);
moment.updateLocale('en', {
workinghours: weekDaysObj
});
if (finalHolidayList.length > 0) {
moment.updateLocale('en', {
holidays: finalHolidayList
});
}
var days = ["0", "1", "2", "3", "4", "5", "6"];
for (let i = 0; i < days.length; i++) {
if (days[i] in weekDaysObj && weekDaysObj[days[i]] !== null) {
var a = weekDaysObj[days[i]][1].split(":")[1] - weekDaysObj[days[i]][0].split(":")[1];
var b = weekDaysObj[days[i]][1].split(":")[0] - weekDaysObj[days[i]][0].split(":")[0];
if (a >= 30) {
b = b + 1;
} else {
b = b;
}
var businessHoursSet = b;
break;
}
}
var splitDate = ticketUpdatedDate.split("T");
var splitYear = splitDate[1].split("+");
var modifiedticketUpdatedDate = `${splitDate[0]} ${splitYear[0]}`;
if (flag === "previous updated date") {
let modifiedPreviousTicketUpdatedDate = (ticketCreatedDate.split("T"));
let modifiedPreviousTicketUpdatedTime = modifiedPreviousTicketUpdatedDate[1].split("+");
var from_time = `${modifiedPreviousTicketUpdatedDate[0]} ${modifiedPreviousTicketUpdatedTime[0]}`;
} else {
var from_time = moment(ticketCreatedDate).format('YYYY-MM-DD HH:mm:ss', true);
}
var to_time = modifiedticketUpdatedDate;
console.log("from_time == >> ", from_time);
console.log("to_time == >> ", to_time);
var hoursDifference = moment(to_time).workingDiff(moment(from_time), 'hours', true);
var daysDifference = moment(to_time).workingDiff(moment(from_time), 'days', true);
var minuteDifference = moment(to_time).workingDiff(moment(from_time), 'minute', true);
var monthsDifference = moment(to_time).workingDiff(moment(from_time), 'months', true);
mainObj["Hrs"] = hoursDifference;
mainObj["Days"] = daysDifference;
mainObj["Mins"] = minuteDifference;
mainObj["Mons"] = monthsDifference;
mainObj["businessHoursSet"] = businessHoursSet;
mainObj["dataFromAPP"] = dataFromAPP;
console.log("mainObj == >> ", mainObj);
**renderData(null, mainObj);**
}
Please let me know if I am doing something wrong here
Regards,
Akhil S Kulkarni