import { type MembershipLevel, MembershipLevelEnum, } from "@scandic-hotels/common/constants/membershipLevels" import { scandicMembershipTypes } from "@scandic-hotels/trpc/routers/user/helpers" import type { EurobonusMembership, Membership, User, UserLoyalty, } from "@scandic-hotels/trpc/types/user" function isEurobonusMembership( membership: Membership ): membership is EurobonusMembership { return membership.type === scandicMembershipTypes.SAS_EB } export function getEurobonusMembership(loyalty: UserLoyalty) { return loyalty.memberships?.find(isEurobonusMembership) } export function getMembershipCards(userLoyalty: UserLoyalty) { return userLoyalty.memberships .filter( (membership) => membership.type !== scandicMembershipTypes.SCANDIC_NATIVE ) .map((membership) => ({ currentPoints: 0, // We only have points for Friends so we can't set this for now expirationDate: membership.tierExpires, membershipNumber: membership.membershipNumber, membershipType: membership.type, memberSince: membership.memberSince, })) } export function isHighestMembership( membershipLevel: MembershipLevel | undefined ) { return membershipLevel == MembershipLevelEnum.L7 } export function getInitials( firstName: User["firstName"], lastName: User["lastName"] ) { if (!firstName || !lastName) return null const firstInitial = firstName.charAt(0).toUpperCase() 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] }