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:
Matilda Landström
2025-09-19 07:20:17 +00:00
parent c791fef2c6
commit 0e30a2d218
34 changed files with 613 additions and 19 deletions

View File

@@ -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,
}),
})