departure_time: getRandomDepartureTime()

in dialogflow-prebuilt-agents/client_side_messenger/airline_support/airline_support.js [193:270]


      departure_time: getRandomDepartureTime(),
      arrival_time: null,  // Calculated later
      duration: durationMinutes,
      stop_count: stopCount,
      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) {