import { dt } from "@scandic-hotels/common/dt" import type { Dayjs } from "dayjs" /** * Get valid dates from stringFromDate and stringToDate making sure that they are not in the past and chronologically correct * @example const { fromDate, toDate} = getValidDates("2021-01-01", "2021-01-02") */ export function getValidDates( stringFromDate: string | undefined, stringToDate: string | undefined ): { fromDate: Dayjs; toDate: Dayjs } { const fromDate = getValidFromDate(stringFromDate) const toDate = getValidToDate(stringToDate, fromDate) return { fromDate, toDate } } /** * Get valid fromDate from stringFromDate making sure that it is not in the past */ export function getValidFromDate(stringFromDate: string | undefined): Dayjs { const now = dt().utc() if (!stringFromDate) { return now } const toDate = dt(stringFromDate) const yesterday = now.subtract(1, "day") if (!toDate.isAfter(yesterday)) { return now } return toDate } /** * Get valid toDate from stringToDate making sure that it is after fromDate */ export function getValidToDate( stringToDate: string | undefined, fromDate: Dayjs | Date ): Dayjs { const tomorrow = dt().utc().add(1, "day") if (!stringToDate) { return tomorrow } const toDate = dt(stringToDate) if (toDate.isAfter(fromDate)) { return toDate } return tomorrow }