in dialogflow-prebuilt-agents/client_side_messenger/airline_support/airline_support.js [197:270]
cost_usd: getRandomInt(200, 1500), // Placeholder cost
date_offset: 0, // Initialize date offset to 0
travel_date: travelDate
};
route.duration += stopCount * getRandomInt(30, 180);
// Calculate arrival time considering time offsets
route.arrival_time = calculateArrivalTime(
route.departure_time, route.duration, timezoneDifferenceMinutes);
// Calculate date offset
const [departureHours, departureMinutes] =
route.departure_time.split(':').map(Number);
// Calculate total minutes elapsed since midnight at origin departure time
const departureTotalMinutes = departureHours * 60 + departureMinutes;
// Calculate total absolute duration
const totalDurationMinutes = route.duration + timezoneDifferenceMinutes;
// Calculate total minutes
const totalMinutes = departureTotalMinutes + totalDurationMinutes;
// Determine date offset
route.date_offset = totalMinutes >= 1440 ? 1 : 0;
return route;
}
/**
* Returns a random integer between the given min and max values.
* @param {number} min The minimum value.
* @param {number} max The maximum value.
* @return {number} The random integer.
*/
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
/**
* Returns a random departure time from the given list of departure times.
* @return {string} The random departure time in "HH:mm" format.
*/
function getRandomDepartureTime() {
const randomIndex = getRandomInt(0, info.departureTimes.length - 1);
return info.departureTimes[randomIndex];
}
/**
* Calculates the arrival time based on departure time, duration, and timezone
* difference.
* @param {string} departureTime The departure time in "HH:mm" format.
* @param {number} duration The flight duration in minutes.
* @param {number} timezoneDifferenceMinutes The timezone difference in minutes.
* @return {string} The arrival time in "HH:mm" format.
*/
function calculateArrivalTime(
departureTime, duration, timezoneDifferenceMinutes) {
const [hours, minutes] = departureTime.split(':').map(Number);
// Convert duration to hours and minutes
const durationHours = Math.floor(duration / 60);
const durationMinutes = duration % 60;
// Calculate initial arrival time in origin time
let arrivalHours = hours + durationHours;
let arrivalMinutes = minutes + durationMinutes;
// Adjust arrival time based on time offsets
arrivalMinutes += timezoneDifferenceMinutes;
// Handle minutes exceeding 60 or going below 0
while (arrivalMinutes >= 60) {