feat(SW-353): dynamic rewards

This commit is contained in:
Christel Westerberg
2024-09-25 15:59:16 +02:00
parent 6a85cfd19c
commit 56cd02f90b
78 changed files with 1568 additions and 4587 deletions

View File

@@ -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]
}