Fix/BOOK-662 handle overlapping dates timezone * fix(BOOK-662): handle overlapping dates alerts * fix(BOOK-662): handle overlapping dates alerts * fix(BOOK-662): add test same dates Approved-by: Anton Gunnarsson
45 lines
1.0 KiB
TypeScript
45 lines
1.0 KiB
TypeScript
import { dt } from "../dt"
|
|
|
|
import type { Dayjs } from "../dt"
|
|
|
|
export function hasOverlappingDates(
|
|
dateRangeItem: {
|
|
startDate: Date | Dayjs | string | undefined | null
|
|
endDate: Date | Dayjs | string | undefined | null
|
|
},
|
|
fromDate: Date | Dayjs,
|
|
toDate: Date | Dayjs
|
|
) {
|
|
const startDate = dt.utc(fromDate)
|
|
const endDate = dt.utc(toDate)
|
|
|
|
if (dateRangeItem.endDate && dateRangeItem.startDate) {
|
|
const itemStartDate = dt(dateRangeItem.startDate)
|
|
const itemEndDate = dt(dateRangeItem.endDate)
|
|
|
|
const fromDateIsBetweenItemDates = startDate.isBetween(
|
|
itemStartDate,
|
|
itemEndDate,
|
|
"date",
|
|
"[]"
|
|
)
|
|
const toDateIsBetweenItemDates = endDate.isBetween(
|
|
itemStartDate,
|
|
itemEndDate,
|
|
"date",
|
|
"[]"
|
|
)
|
|
|
|
const itemFullyContained =
|
|
startDate.isSameOrBefore(itemStartDate, "date") &&
|
|
endDate.isSameOrAfter(itemEndDate, "date")
|
|
|
|
return (
|
|
fromDateIsBetweenItemDates ||
|
|
toDateIsBetweenItemDates ||
|
|
itemFullyContained
|
|
)
|
|
}
|
|
return true
|
|
}
|