feat(SW-353): dynamic rewards
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
import { z } from "zod"
|
||||
|
||||
import { MembershipLevelEnum } from "@/constants/membershipLevels"
|
||||
import {
|
||||
MembershipLevel,
|
||||
MembershipLevelEnum,
|
||||
} from "@/constants/membershipLevels"
|
||||
import { getMembershipCardsSchema } from "@/server/routers/user/output"
|
||||
|
||||
import type { Memberships, User } from "@/types/user"
|
||||
import type { Membership, Memberships, User } from "@/types/user"
|
||||
|
||||
enum scandicMemberships {
|
||||
guestpr = "guestpr",
|
||||
@@ -14,9 +17,16 @@ export function getMembership(memberships: Memberships) {
|
||||
return memberships?.find(
|
||||
(membership) =>
|
||||
membership.membershipType.toLowerCase() === scandicMemberships.guestpr
|
||||
)
|
||||
) as FriendsMembership | undefined
|
||||
}
|
||||
|
||||
export type FriendsMembership = Omit<
|
||||
NonNullable<Membership>,
|
||||
"membershipLevel" | "nextLevel"
|
||||
> & {
|
||||
membershipLevel: MembershipLevel
|
||||
nextLevel: MembershipLevel
|
||||
}
|
||||
export type MembershipLevel = ReturnType<typeof getMembership>
|
||||
|
||||
export function getMembershipCards(
|
||||
memberships: z.infer<typeof getMembershipCardsSchema>
|
||||
@@ -31,7 +41,7 @@ export function getMembershipCards(
|
||||
}
|
||||
|
||||
export function isHighestMembership(
|
||||
membershipLevel: MembershipLevelEnum | undefined
|
||||
membershipLevel: MembershipLevel | undefined
|
||||
) {
|
||||
return membershipLevel == MembershipLevelEnum.L7
|
||||
}
|
||||
@@ -45,3 +55,15 @@ export function getInitials(
|
||||
const lastInitial = lastName.charAt(0).toUpperCase()
|
||||
return `${firstInitial}${lastInitial}`
|
||||
}
|
||||
|
||||
export function getSteppedUpLevel(
|
||||
currentValue: MembershipLevel,
|
||||
stepsUp: number
|
||||
): MembershipLevel {
|
||||
const values = Object.values(MembershipLevelEnum)
|
||||
const currentIndex = values.indexOf(currentValue as MembershipLevelEnum)
|
||||
if (currentIndex === -1 || currentIndex === values.length - 1) {
|
||||
return currentValue
|
||||
}
|
||||
return values[currentIndex + stepsUp]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user