import { z } from "zod" import { dt } from "@scandic-hotels/common/dt" import { nullableStringValidator } from "@scandic-hotels/common/utils/zod/stringValidator" import { AlertTypeEnum } from "../../../../types/alertType" const specialAlertSchema = z.object({ description: nullableStringValidator, displayInBookingFlow: z.boolean().default(false), endDate: nullableStringValidator, startDate: nullableStringValidator, title: nullableStringValidator, type: nullableStringValidator, }) export const specialAlertsSchema = z .array(specialAlertSchema) .nullish() .transform((arr) => (arr ? arr.filter(Boolean) : [])) .transform((data) => { const now = dt().utc().format("YYYY-MM-DD") const filteredAlerts = data.filter((alert) => { const hasText = alert.description || alert.title const hasDates = alert.startDate && alert.endDate if (!hasDates) { return hasText } const shouldShowNow = alert.startDate <= now && alert.endDate >= now return shouldShowNow && hasText }) return filteredAlerts.map((alert, idx) => ({ heading: alert.title || null, id: `alert-${alert.type}-${idx}`, name: alert.type, text: alert.description || null, type: AlertTypeEnum.Info, displayInBookingFlow: alert.displayInBookingFlow, endDate: alert.endDate, startDate: alert.startDate, })) })