import { strict as assert } from 'assert' import { Friday, Monday, Saturday, Sunday } from 'libs/utils/date.constant' import { HourNumbers, IANAZone, WeekdayNumbers } from 'luxon' import { parseDateTimeFilter } from '../DateTimeFilter' import { Timezone } from '../TimezoneSchema' export function hoursDaysDateTimeFilter(fromHour: HourNumbers, toHour: HourNumbers, fromDay: WeekdayNumbers, toDay: WeekdayNumbers, timezone: Timezone) { assert(IANAZone.isValidZone(timezone)) return parseDateTimeFilter({ weekday: { from: fromDay, to: toDay, fromInclusive: true, toInclusive: true }, hour: { from: fromHour, to: toHour, fromInclusive: true, toInclusive: false }, timezone, }) } export function workHoursDateTimeFilter(fromHour: HourNumbers, toHour: HourNumbers, timezone: Timezone) { return hoursDaysDateTimeFilter(fromHour, toHour, Monday, Friday, timezone) } export function workdayDateTimeFilter(timezone: Timezone) { return hoursDaysDateTimeFilter(9, 18, Monday, Friday, timezone) } export function weekendDateTimeFilter(timezone: Timezone) { return hoursDaysDateTimeFilter(1, 23, Saturday, Sunday, timezone) }