/** * 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, };