42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
/**
|
|
* 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,
|
|
};
|