/**
 * Utility functions for computing rental status on-the-fly.
 * The "active" status is computed based on timestamps rather than stored in the database.
 * A rental is considered "active" when it has status "confirmed" and startDateTime has passed.
 */

/**
 * Returns the effective/display status of a rental.
 * If the rental is "confirmed" and the start time has passed, returns "active".
 * Otherwise returns the stored status.
 * @param {Object} rental - The rental object with status and startDateTime
 * @returns {string} The effective status
 */
function getEffectiveStatus(rental) {
  const now = new Date();
  if (
    rental.status === "confirmed" &&
    new Date(rental.startDateTime) <= now
  ) {
    return "active";
  }
  return rental.status;
}

/**
 * Checks if a rental is currently active.
 * A rental is active when it's confirmed and the start time has passed.
 * @param {Object} rental - The rental object with status and startDateTime
 * @returns {boolean} True if the rental is currently active
 */
function isActive(rental) {
  const now = new Date();
  return (
    rental.status === "confirmed" && new Date(rental.startDateTime) <= now
  );
}

module.exports = {
  getEffectiveStatus,
  isActive,
};
