Merged in feat/LOY-361-add-promo-campaign-page-type (pull request #2826)
Feat/LOY-361 add promo campaign page type * feat(LOY-361): add Pomo Campaign page type * chore(SW-361): remove campaign page flag * fix(LOY-361): cleanup * fix(LOY-361): add promo code Approved-by: Erik Tiekstra Approved-by: Chuma Mcphoy (We Ahead)
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
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,
|
||||
}),
|
||||
})
|
||||
Reference in New Issue
Block a user