feat(SW-312): fix "2-for-1-breakfast" only unlocked for level 5

This commit is contained in:
Matilda Landström
2024-08-29 14:36:26 +02:00
parent f178f7fde0
commit 8da332dcc3
15 changed files with 97 additions and 93 deletions

View File

@@ -6,7 +6,7 @@ import BenefitValue from "../BenefitValue"
import styles from "./benefitCard.module.css"
import { BenefitCardProps } from "@/types/components/loyalty/blocks"
import type { BenefitCardProps } from "@/types/components/loyalty/blocks"
export default function BenefitCard({
comparedValues,

View File

@@ -1,32 +1,31 @@
import { getHighestLevel } from "@/utils/loyaltyTable"
import { findBenefit, getUnlockedBenefits } from "@/utils/loyaltyTable"
import BenefitCard from "../BenefitCard"
import styles from "./benefitList.module.css"
import { BenefitListProps } from "@/types/components/loyalty/blocks"
import type { BenefitListProps } from "@/types/components/loyalty/blocks"
export default function BenefitList({ levels }: BenefitListProps) {
const highestLevel = getHighestLevel(levels)
return highestLevel?.benefits
.filter((benefit) => benefit.unlocked)
.map((benefit, idx) => {
const levelBenefits = levels.map((level) => level.benefits[idx])
return (
<div key={benefit.name} className={styles.benefitCardWrapper}>
<BenefitCard
title={benefit.name}
description={benefit.description}
comparedValues={levelBenefits.map((benefit, idx) => {
return {
key: `${benefit.name}-${idx}`,
value: benefit.value,
unlocked: benefit.unlocked,
valueDetails: benefit.valueDetails,
}
})}
/>
</div>
)
return getUnlockedBenefits(levels).map((benefit) => {
const levelBenefits = levels.map((level) => {
return findBenefit(benefit, level)
})
return (
<div key={benefit.name} className={styles.benefitCardWrapper}>
<BenefitCard
title={benefit.name}
description={benefit.description}
comparedValues={levelBenefits.map((benefit, idx) => {
return {
key: `${benefit.name}-${idx}`,
value: benefit.value,
unlocked: benefit.unlocked,
valueDetails: benefit.valueDetails,
}
})}
/>
</div>
)
})
}

View File

@@ -4,7 +4,7 @@ import CheckCircle from "@/components/Icons/CheckCircle"
import styles from "./benefitValue.module.css"
import { BenefitValueProps } from "@/types/components/loyalty/blocks"
import type { BenefitValueProps } from "@/types/components/loyalty/blocks"
export default function BenefitValue({ benefit }: BenefitValueProps) {
if (!benefit.unlocked) {

View File

@@ -5,7 +5,7 @@ import YourLevel from "../../YourLevelScript"
import styles from "./desktopHeader.module.css"
import {
import type {
DesktopSelectColumns,
LargeTableProps,
} from "@/types/components/loyalty/blocks"

View File

@@ -1,14 +1,14 @@
import { ChevronDown } from "react-feather"
import Title from "@/components/TempDesignSystem/Text/Title"
import { getHighestLevel } from "@/utils/loyaltyTable"
import { findBenefit, getUnlockedBenefits } from "@/utils/loyaltyTable"
import BenefitValue from "../BenefitValue"
import DesktopHeader from "./DesktopHeader"
import styles from "./largeTable.module.css"
import {
import type {
BenefitTableHeaderProps,
LargeTableProps,
} from "@/types/components/loyalty/blocks"
@@ -18,7 +18,6 @@ export default function LargeTable({
activeLevel,
Select,
}: LargeTableProps) {
const highestLevel = getHighestLevel(levels)
return (
<table className={styles.table}>
<DesktopHeader
@@ -27,27 +26,25 @@ export default function LargeTable({
Select={Select}
/>
<tbody className={styles.tbody}>
{highestLevel?.benefits
.filter((benefit) => benefit.unlocked)
.map((benefit, index) => {
return (
<tr key={benefit.name} className={styles.tr}>
<th scope={"row"} className={styles.benefitTh}>
<BenefitTableHeader
name={benefit.name}
description={benefit.description}
/>
</th>
{levels.map((level, idx) => {
return (
<td key={"icon" + level.level + idx} className={styles.td}>
<BenefitValue benefit={level.benefits[index]} />
</td>
)
})}
</tr>
)
})}
{getUnlockedBenefits(levels).map((benefit) => {
return (
<tr key={benefit.name} className={styles.tr}>
<th scope={"row"} className={styles.benefitTh}>
<BenefitTableHeader
name={benefit.name}
description={benefit.description}
/>
</th>
{levels.map((level, idx) => {
return (
<td key={"icon" + level.level + idx} className={styles.td}>
<BenefitValue benefit={findBenefit(benefit, level)} />
</td>
)
})}
</tr>
)
})}
</tbody>
</table>
)

View File

@@ -1,6 +1,6 @@
import styles from "./levelSummary.module.css"
import { LevelSummaryProps } from "@/types/components/loyalty/blocks"
import type { LevelSummaryProps } from "@/types/components/loyalty/blocks"
export default function LevelSummary({
level,

View File

@@ -433,7 +433,7 @@
{
"name": "2-for-1 morgenmad",
"description": "Uanset om du overnatter hos os eller ej, kan du invitere en ven på morgenmad, for I kan spise for to personer og kun betale for én! Men husk, at tjekke detaljerne først, så alt er klar til et hyggeligt morgenmøde.",
"unlocked": true
"unlocked": false
},
{
"name": "48-timers værelsesgaranti",
@@ -510,7 +510,7 @@
{
"name": "2-for-1 morgenmad",
"description": "Uanset om du overnatter hos os eller ej, kan du invitere en ven på morgenmad, for I kan spise for to personer og kun betale for én! Men husk, at tjekke detaljerne først, så alt er klar til et hyggeligt morgenmøde.",
"unlocked": true
"unlocked": false
},
{
"name": "48-timers værelsesgaranti",

View File

@@ -433,7 +433,7 @@
{
"name": "Frühstück für zwei zum Preis von einem",
"description": "Wenn das kein delikater Deal ist: Egal, ob Sie bei uns übernachten oder nicht, schnappen Sie sich einen Frühstückspartner, denn jetzt können Sie zu zweit zum Preis von einem bei uns essen! Informieren Sie sich einfach vorher über alle Details und genießen Sie ein gemütliches Frühstück zu zweit.",
"unlocked": true
"unlocked": false
},
{
"name": "48-Stunden-Zimmergarantie",
@@ -510,7 +510,7 @@
{
"name": "Frühstück für zwei zum Preis von einem",
"description": "Wenn das kein delikater Deal ist: Egal, ob Sie bei uns übernachten oder nicht, schnappen Sie sich einen Frühstückspartner, denn jetzt können Sie zu zweit zum Preis von einem bei uns essen! Informieren Sie sich einfach vorher über alle Details und genießen Sie ein gemütliches Frühstück zu zweit.",
"unlocked": true
"unlocked": false
},
{
"name": "48-Stunden-Zimmergarantie",

View File

@@ -35,7 +35,7 @@
},
{
"name": "Friendship point boost",
"description": "Now heres something pretty sweet: every time you get a boost of friendship points, you get 25% or 50% extra a boost on the boost! So you know, start racking up those points on stays, meals and more and youll get a free night in no time.",
"description": "Now heres something pretty sweet: every time you get a boost of friendship points, you get 25% or 50% extra a boost! So you know, start racking up those points on stays, meals and more and youll get a free night in no time.",
"unlocked": false
},
{
@@ -110,7 +110,7 @@
},
{
"name": "Friendship point boost",
"description": "Now heres something pretty sweet: every time you get a boost of friendship points, you get 25% or 50% extra a boost on the boost! So you know, start racking up those points on stays, meals and more and youll get a free night in no time.",
"description": "Now heres something pretty sweet: every time you get a boost of friendship points, you get 25% or 50% extra a boost! So you know, start racking up those points on stays, meals and more and youll get a free night in no time.",
"unlocked": false
},
{
@@ -186,7 +186,7 @@
},
{
"name": "Friendship point boost",
"description": "Now heres something pretty sweet: every time you get a boost of friendship points, you get 25% or 50% extra a boost on the boost! So you know, start racking up those points on stays, meals and more and youll get a free night in no time.",
"description": "Now heres something pretty sweet: every time you get a boost of friendship points, you get 25% or 50% extra a boost! So you know, start racking up those points on stays, meals and more and youll get a free night in no time.",
"unlocked": false
},
{
@@ -262,7 +262,7 @@
},
{
"name": "Friendship point boost",
"description": "Now heres something pretty sweet: every time you get a boost of friendship points, you get 25% or 50% extra a boost on the boost! So you know, start racking up those points on stays, meals and more and youll get a free night in no time.",
"description": "Now heres something pretty sweet: every time you get a boost of friendship points, you get 25% or 50% extra a boost! So you know, start racking up those points on stays, meals and more and youll get a free night in no time.",
"unlocked": true,
"value": "+25%"
},
@@ -339,7 +339,7 @@
},
{
"name": "Friendship point boost",
"description": "Now heres something pretty sweet: every time you get a boost of friendship points, you get 25% or 50% extra a boost on the boost! So you know, start racking up those points on stays, meals and more and youll get a free night in no time.",
"description": "Now heres something pretty sweet: every time you get a boost of friendship points, you get 25% or 50% extra a boost! So you know, start racking up those points on stays, meals and more and youll get a free night in no time.",
"unlocked": true,
"value": "+25%"
},
@@ -416,7 +416,7 @@
},
{
"name": "Friendship point boost",
"description": "Now heres something pretty sweet: every time you get a boost of friendship points, you get 25% or 50% extra a boost on the boost! So you know, start racking up those points on stays, meals and more and youll get a free night in no time.",
"description": "Now heres something pretty sweet: every time you get a boost of friendship points, you get 25% or 50% extra a boost! So you know, start racking up those points on stays, meals and more and youll get a free night in no time.",
"unlocked": true,
"value": "+50%"
},
@@ -433,7 +433,7 @@
{
"name": "2-for-1 breakfast",
"description": "Now, this is a delicious deal: regardless if youre staying with us or not, go grab a breakfast buddy because you're eating two for the price of one! Just make sure to check the details first so everything is in place for your yummy get-together.",
"unlocked": true
"unlocked": false
},
{
"name": "48hr room guarantee",
@@ -493,7 +493,7 @@
},
{
"name": "Friendship point boost",
"description": "Now heres something pretty sweet: every time you get a boost of friendship points, you get 25% or 50% extra a boost on the boost! So you know, start racking up those points on stays, meals and more and youll get a free night in no time.",
"description": "Now heres something pretty sweet: every time you get a boost of friendship points, you get 25% or 50% extra a boost! So you know, start racking up those points on stays, meals and more and youll get a free night in no time.",
"unlocked": true,
"value": "+50%"
},
@@ -510,7 +510,7 @@
{
"name": "2-for-1 breakfast",
"description": "Now, this is a delicious deal: regardless if youre staying with us or not, go grab a breakfast buddy because you're eating two for the price of one! Just make sure to check the details first so everything is in place for your yummy get-together.",
"unlocked": true
"unlocked": false
},
{
"name": "48hr room guarantee",

View File

@@ -433,7 +433,7 @@
{
"name": "Aamiainen kaksi yhden hinnalla",
"description": "Saat kaksi aamiaista yhden hinnalla, majoitut meillä tai et.",
"unlocked": true
"unlocked": false
},
{
"name": "48tunnin huonetakuu",
@@ -510,7 +510,7 @@
{
"name": "Aamiainen kaksi yhden hinnalla",
"description": "Saat kaksi aamiaista yhden hinnalla, majoitut meillä tai et.",
"unlocked": true
"unlocked": false
},
{
"name": "48tunnin huonetakuu",

View File

@@ -433,7 +433,7 @@
{
"name": "2-for-1 frokost",
"description": "Dette er virkelig et deilig tilbud: Uavhengig om du bor hos oss eller ikke, finn deg en frokostkompis, og dere kan spise for prisen av én! Bare sørg for å sjekke detaljene først, slik at alt er på plass for deres smakfulle sammenkomst.",
"unlocked": true
"unlocked": false
},
{
"name": "Romgaranti i 48timer",
@@ -510,7 +510,7 @@
{
"name": "2-for-1 frokost",
"description": "Dette er virkelig et deilig tilbud: Uavhengig om du bor hos oss eller ikke, finn deg en frokostkompis, og dere kan spise for prisen av én! Bare sørg for å sjekke detaljene først, slik at alt er på plass for deres smakfulle sammenkomst.",
"unlocked": true
"unlocked": false
},
{
"name": "Romgaranti i 48timer",

View File

@@ -433,7 +433,7 @@
{
"name": "Frukost 2 för 1",
"description": "Okej, nu snackar vi. Oavsett om du bor hos oss eller inte, ta med en frukostkompis eftersom du äter två frukostar till priset av en! Kom bara ihåg att dubbelkolla detaljerna först så att allt är i sin ordning för en maxad frukost.",
"unlocked": true
"unlocked": false
},
{
"name": "48timmars rumsgaranti",
@@ -510,7 +510,7 @@
{
"name": "Frukost 2 för 1",
"description": "Okej, nu snackar vi. Oavsett om du bor hos oss eller inte, ta med en frukostkompis eftersom du äter två frukostar till priset av en! Kom bara ihåg att dubbelkolla detaljerna först så att allt är i sin ordning för en maxad frukost.",
"unlocked": true
"unlocked": false
},
{
"name": "48timmars rumsgaranti",

View File

@@ -29,9 +29,9 @@ import type { Key } from "react-aria-components"
import {
ComparisonLevel,
DesktopSelectColumns,
MobileColumnHeaderProps,
type MobileColumnHeaderProps,
overviewTableActionsEnum,
OverviewTableProps,
type OverviewTableProps,
OverviewTableReducerAction,
} from "@/types/components/loyalty/blocks"
import type { User } from "@/types/user"