Merged in feat/membership-schema-update (pull request #1459)
Update membership schema to adapt for API changes Approved-by: Michael Zetterberg
This commit is contained in:
@@ -89,8 +89,8 @@
|
||||
"Booking code": "Bookingkode",
|
||||
"Booking confirmation": "Booking bekræftelse",
|
||||
"Booking number": "Bookingnummer",
|
||||
"Booking number {value}": "Booking number {value}",
|
||||
"Booking number is required": "Bookingnummer er påkrævet",
|
||||
"Booking number {value}": "Booking number {value}",
|
||||
"Booking policy": "Booking politik",
|
||||
"Booking summary": "Opsummering",
|
||||
"Breakfast": "Morgenmad",
|
||||
@@ -477,8 +477,8 @@
|
||||
"Password": "Adgangskode",
|
||||
"Pay later": "Betal senere",
|
||||
"Pay now": "Betal nu",
|
||||
"Pay with Card": "Pay with Card",
|
||||
"Pay the member price of {amount} for Room {roomNr}": "Betal medlemsprisen på {amount} til værelse {roomNr}",
|
||||
"Pay with Card": "Pay with Card",
|
||||
"Pay with card": "Betal med kort",
|
||||
"Pay with points": "Betal med point",
|
||||
"Payment": "Betaling",
|
||||
|
||||
@@ -90,8 +90,8 @@
|
||||
"Booking code": "Buchungscode",
|
||||
"Booking confirmation": "Buchungsbestätigung",
|
||||
"Booking number": "Buchungsnummer",
|
||||
"Booking number {value}": "Booking number {value}",
|
||||
"Booking number is required": "Buchungsnummer ist erforderlich",
|
||||
"Booking number {value}": "Booking number {value}",
|
||||
"Booking policy": "Buchungsbedingungen",
|
||||
"Booking summary": "Zusammenfassung",
|
||||
"Breakfast": "Frühstück",
|
||||
|
||||
@@ -88,8 +88,8 @@
|
||||
"Booking code": "Booking code",
|
||||
"Booking confirmation": "Booking confirmation",
|
||||
"Booking number": "Booking number",
|
||||
"Booking number {value}": "Booking number {value}",
|
||||
"Booking number is required": "Booking number is required",
|
||||
"Booking number {value}": "Booking number {value}",
|
||||
"Booking policy": "Booking policy",
|
||||
"Booking summary": "Booking summary",
|
||||
"Breakfast": "Breakfast",
|
||||
|
||||
@@ -88,8 +88,8 @@
|
||||
"Booking code": "Varauskoodi",
|
||||
"Booking confirmation": "Varausvahvistus",
|
||||
"Booking number": "Varausnumero",
|
||||
"Booking number {value}": "Booking number {value}",
|
||||
"Booking number is required": "Varausnumero vaaditaan",
|
||||
"Booking number {value}": "Booking number {value}",
|
||||
"Booking policy": "Varauskäytäntö",
|
||||
"Booking summary": "Yhteenveto",
|
||||
"Breakfast": "Aamiainen",
|
||||
|
||||
@@ -88,8 +88,8 @@
|
||||
"Booking code": "Bestillingskode",
|
||||
"Booking confirmation": "Bestillingsbekreftelse",
|
||||
"Booking number": "Bestillingsnummer",
|
||||
"Booking number {value}": "Booking number {value}",
|
||||
"Booking number is required": "Bookingnummer er påkrevd",
|
||||
"Booking number {value}": "Booking number {value}",
|
||||
"Booking policy": "Bestillingsbetingelser",
|
||||
"Booking summary": "Sammendrag",
|
||||
"Breakfast": "Frokost",
|
||||
@@ -475,9 +475,9 @@
|
||||
"Password": "Passord",
|
||||
"Pay later": "Betal senere",
|
||||
"Pay now": "Betal nå",
|
||||
"Pay the member price of {amount} for Room {roomNr}": "Betal medlemsprisen på {amount} for rom {roomNr}",
|
||||
"Pay with Card": "Pay with Card",
|
||||
"Pay with points": "Pay with points",
|
||||
"Pay the member price of {amount} for Room {roomNr}": "Betal medlemsprisen på {amount} for rom {roomNr}",
|
||||
"Payment": "Betaling",
|
||||
"Payment Guarantee": "Garantera betalning",
|
||||
"Payment details": "Payment details",
|
||||
|
||||
@@ -88,8 +88,8 @@
|
||||
"Booking code": "Bokningskod",
|
||||
"Booking confirmation": "Bokningsbekräftelse",
|
||||
"Booking number": "Bokningsnummer",
|
||||
"Booking number {value}": "Booking number {value}",
|
||||
"Booking number is required": "Bokningsnummer krävs",
|
||||
"Booking number {value}": "Booking number {value}",
|
||||
"Booking policy": "Bokningsvillkor",
|
||||
"Booking summary": "Sammanfattning",
|
||||
"Breakfast": "Frukost",
|
||||
@@ -475,9 +475,9 @@
|
||||
"Password": "Lösenord",
|
||||
"Pay later": "Betala senare",
|
||||
"Pay now": "Betala nu",
|
||||
"Pay the member price of {amount} for Room {roomNr}": "Betala medlemspriset på {amount} för rum {roomNr}",
|
||||
"Pay with Card": "Pay with Card",
|
||||
"Pay with points": "Pay with points",
|
||||
"Pay the member price of {amount} for Room {roomNr}": "Betala medlemspriset på {amount} för rum {roomNr}",
|
||||
"Payment": "Betalning",
|
||||
"Payment Guarantee": "Garantera betalning",
|
||||
"Payment details": "Payment details",
|
||||
|
||||
@@ -2,17 +2,14 @@ import { z } from "zod"
|
||||
|
||||
import { countriesMap } from "@/constants/countries"
|
||||
|
||||
import { getMembership } from "@/utils/user"
|
||||
import { getMembership, scandicMemberships } from "@/utils/user"
|
||||
|
||||
import { imageSchema } from "../hotels/schemas/image"
|
||||
|
||||
export const membershipSchema = z.object({
|
||||
currentPoints: z.number(),
|
||||
expirationDate: z.string(),
|
||||
membershipNumber: z.string(),
|
||||
const commonMembershipSchema = z.object({
|
||||
currentPoints: z.number().optional(),
|
||||
expirationDate: z.string().optional(),
|
||||
membershipLevel: z.string().optional(),
|
||||
memberSince: z.string(),
|
||||
membershipType: z.string(),
|
||||
nextLevel: z.string().optional(),
|
||||
nightsToTopTier: z.number().optional(),
|
||||
pointsExpiryDate: z.string().optional(),
|
||||
@@ -21,6 +18,34 @@ export const membershipSchema = z.object({
|
||||
tierExpirationDate: z.string().optional(),
|
||||
})
|
||||
|
||||
const membershipType = (membershipType: scandicMemberships) =>
|
||||
z
|
||||
.string()
|
||||
// The memberships enum is in lower case so this makes sure it will match regardless of casing in the API response.
|
||||
.transform((s) => s.toLowerCase())
|
||||
.pipe(z.literal(membershipType))
|
||||
|
||||
const friendsMembershipSchema = z
|
||||
.object({
|
||||
membershipType: membershipType(scandicMemberships.guestpr),
|
||||
membershipNumber: z.string(),
|
||||
memberSince: z.string(),
|
||||
})
|
||||
.merge(commonMembershipSchema)
|
||||
|
||||
const otherMembershipSchema = z
|
||||
.object({
|
||||
membershipType: z.string(),
|
||||
membershipNumber: z.string().optional(),
|
||||
memberSince: z.string().optional(),
|
||||
})
|
||||
.merge(commonMembershipSchema)
|
||||
|
||||
export const membershipSchema = z.union([
|
||||
friendsMembershipSchema,
|
||||
otherMembershipSchema,
|
||||
])
|
||||
|
||||
export const getUserSchema = z
|
||||
.object({
|
||||
data: z.object({
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
import { z } from "zod"
|
||||
import type { z } from "zod"
|
||||
|
||||
import {
|
||||
import type { RouterOutput } from "@/lib/trpc/client"
|
||||
import type {
|
||||
creditCardSchema,
|
||||
getUserSchema,
|
||||
membershipSchema,
|
||||
} from "@/server/routers/user/output"
|
||||
|
||||
import type { RouterOutput } from "@/lib/trpc/client"
|
||||
|
||||
/**
|
||||
* All extended field needs to be added by API team to response or
|
||||
* we have to get the values from elsewhere
|
||||
@@ -18,6 +17,6 @@ export type SafeUser = RouterOutput["user"]["getSafely"]
|
||||
|
||||
export type CreditCard = z.output<typeof creditCardSchema>
|
||||
|
||||
export interface Membership extends z.output<typeof membershipSchema> {}
|
||||
export type Membership = z.output<typeof membershipSchema>
|
||||
|
||||
export type Memberships = Membership[]
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
import { z } from "zod"
|
||||
|
||||
import {
|
||||
MembershipLevel,
|
||||
type MembershipLevel,
|
||||
MembershipLevelEnum,
|
||||
} from "@/constants/membershipLevels"
|
||||
import { getMembershipCardsSchema } from "@/server/routers/user/output"
|
||||
|
||||
import type { z } from "zod"
|
||||
|
||||
import type { Membership, Memberships, User } from "@/types/user"
|
||||
import type { getMembershipCardsSchema } from "@/server/routers/user/output"
|
||||
|
||||
enum scandicMemberships {
|
||||
export enum scandicMemberships {
|
||||
guestpr = "guestpr",
|
||||
scandicfriends = "scandicfriend's",
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user