import { z } from "zod" import { nullableStringValidator } from "@scandic-hotels/common/utils/zod/stringValidator" import { systemSchema } from "../schemas/system" export const CAMPAIGN_TYPES = { TIER: "TIER", POINT: "POINT", } as const export const promoCampaignPageSchema = z .object({ promo_campaign_page: z.object({ title: z.string(), heading: z.string(), subheading: z.string().nullish(), page_settings: z .object({ booking_code: z.string().nullish(), }) .nullish(), campaign_type: z.nativeEnum(CAMPAIGN_TYPES), promo_code: z.string(), startdate: nullableStringValidator, enddate: nullableStringValidator, system: systemSchema.merge( z.object({ created_at: z.string(), updated_at: z.string(), }) ), }), trackingProps: z.object({ url: z.string(), }), }) .transform(({ promo_campaign_page, ...data }) => { const { page_settings, ...promoCampaignPageData } = promo_campaign_page const bookingCode = page_settings?.booking_code || null return { ...data, promo_campaign_page: { bookingCode, ...promoCampaignPageData, }, } }) /** REFS */ export const promoCampaignPageRefsSchema = z.object({ promo_campaign_page: z.object({ system: systemSchema, }), })