pnpm install @chatwoot/business-hours
npm install @chatwoot/business-hours
yarn add @chatwoot/business-hours
You need to initialize the scheduler using the following options, the hours defines the schedule for each day of the week, and the holidays is an array of Date
objects.
import { Scheduler } from '@chatwoot/business-hours'
const scheduler = new Scheduler({
hours: {
0: null,
1: [
{ start: "09:00", end: "12:00" },
{ start: "13:00", end: "18:00" },
],
2: [
{ start: "09:00", end: "12:00" },
{ start: "13:00", end: "18:00" },
],
3: [{ start: "09:00", end: "12:00" }],
4: [{ start: "09:00", end: "18:00" }],
5: [{ start: "09:00", end: "18:00" }],
6: null,
},
holidays: [
new Date("2024-03-08"),
new Date("2024-03-09"),
new Date("2024-03-10"),
],
});
This method takes a date and returns the next working time. If the date is a holiday, it will return the next working day. If the date is a working day, it will return the next working time.
scheduler.nextWorkingTime(new Date("2024-03-08"));
This method takes a date and returns the next working day. If the date is a holiday, it will return the next working day. If the date is a working day, it will return the same day.
scheduler.nextWorkingDay(new Date("2024-03-08"));
This method takes a date and returns a boolean. If the date is a holiday, it will return false. If the date is a working day, it will return true.
scheduler.isWorkingDay(new Date("2024-03-08"));
This method takes a date and returns a boolean. If the date is a holiday, it will return false. If the date is a working day, it will return true.
scheduler.isWorkingTime(new Date("2024-03-08"));
This method takes a date and returns a boolean. If the date is a holiday, it will return true. If the date is a working day, it will return false.
scheduler.isHoliday(new Date("2024-03-08"));
This method takes a datetime, along with the time to add in seconds and returns the new date. If the date is outside working hours, it will add it to the working hours, suppose the working hours is between 8AM to 5PM, and I pass it 7:30 PM and ask it to add 10 mins, it will return 8:10 AM.
scheduler.addTime(new Date("2024-03-08"), 3600);