import React from 'react'
import { FormattedMessage } from '@cultureamp/i18n-react-intl'
import { isDisabledDate, isInvalidDate, type DisabledDays } from '~components/Calendar'
import { type ValidationResponse } from '../types'
export type ValidateDateArgs = {
date: Date | undefined
inputValue: string | undefined
disabledDays?: DisabledDays
}
export type ValidateDateResponse = {
validationResponse: ValidationResponse
newDate: Date | undefined
}
export const validateDate = ({
date,
inputValue,
disabledDays,
}: ValidateDateArgs): ValidateDateResponse => {
const baseResponse = {
date,
inputValue,
status: undefined,
validationMessage: undefined,
isInvalid: false,
isDisabled: false,
isEmpty: false,
isValidDate: false,
}
if (date === undefined) {
return {
validationResponse: {
...baseResponse,
isEmpty: true,
},
newDate: undefined,
}
}
if (isInvalidDate(date)) {
return {
validationResponse: {
...baseResponse,
status: 'error',
validationMessage: inputValue ? (
) : (
),
isInvalid: true,
},
newDate: undefined,
}
}
if (isDisabledDate(date, disabledDays)) {
return {
validationResponse: {
...baseResponse,
status: 'error',
validationMessage: (
),
isDisabled: true,
},
newDate: undefined,
}
}
return {
validationResponse: {
...baseResponse,
isValidDate: true,
},
newDate: date,
}
}