Skip to content

rimiti/property-occupancy

Repository files navigation

property-occupancy

Build License PRs Welcome

Description

This module provides a property occupancy (Airbnb, Booking, Real Estate..) calculator.

Install

$ yarn add @rimiti/property-occupancy

Features

  • getOccupancyRateByDay: Get occupancy rate by day.
  • getOccupancyRateByMonth: Get occupancy rate by month.

Usage

GetOccupancyRateByDay

import {getOccupancyRateByDay} from '@rimiti/property-occupancy';

const params: TOccupancyRateParams = {
    reservations: [
        {
            checkInAt: new Date('2023-05-01T00:00:00Z'),
            checkOutAt: new Date('2023-05-03T00:00:00Z'),
        },
        {
            checkInAt: new Date('2023-05-04T00:00:00Z'),
            checkOutAt: new Date('2023-05-06T00:00:00Z'),
        },
    ],
    startDate: new Date('2023-05-01T00:00:00Z'),
    endDate: new Date('2023-05-06T00:00:00Z'),
    numberOfProperties: 10,
};

const result = getOccupancyRateByDay(params);
 [
     {
         "date": "2023-05-01",
         "occupancyRate": 10
     },
     {
         "date": "2023-05-02",
         "occupancyRate": 10
     },
     {
         "date": "2023-05-03",
         "occupancyRate": 0
     },
     {
         "date": "2023-05-04",
         "occupancyRate": 10
     },
     {
         "date": "2023-05-05",
         "occupancyRate": 10
     },
     {
         "date": "2023-05-06",
         "occupancyRate": 0
     }
 ]

GetOccupancyRateByMonth

import {getOccupancyRateByMonth} from '@rimiti/property-occupancy';

const params = {
    reservations: [
        { checkInAt: new Date('2022-01-01'), checkOutAt: new Date('2022-01-03') },
        { checkInAt: new Date('2022-01-02'), checkOutAt: new Date('2022-01-04') },
        { checkInAt: new Date('2022-02-01'), checkOutAt: new Date('2022-02-03') },
        { checkInAt: new Date('2022-02-02'), checkOutAt: new Date('2022-02-04') },
    ],
    startDate: new Date('2022-01-01'),
    endDate: new Date('2022-02-28'),
    numberOfProperties: 2,
};

const occupancyRates = getOccupancyRateByMonth(params);
 [
     {
         "date": "2022-01",
         "occupancyRate": 6.45,
     },
     {
         "date": "2022-02",
         "occupancyRate": 7.14
     }
 ]

Scripts

Run using yarn run <script> command.

clean       - Remove temporarily folders.
build       - Compile source files.
build:watch - Interactive watch mode, compile sources on change.
lint        - Lint source files.
lint:fix    - Fix lint source files.
test        - Runs all tests with coverage.
test:watch  - Interactive watch mode, runs tests on change.

License

MIT © Dimitri DO BAIRRO