import { CartData, Discount } from "../../model"; import { findDiscountFactor } from "./findDiscountFactor"; export function applyLoyaltyDiscount( cartData: CartData, discounts: Discount[], purchasesAmount: number, ) { const loyalDiscount = findLoyaltyDiscount(purchasesAmount, discounts); if (!loyalDiscount) return; cartData.priceAfterDiscounts *= findDiscountFactor(loyalDiscount); cartData.allAppliedDiscounts.push(loyalDiscount); cartData.appliedLoyaltyDiscount = loyalDiscount; } export function findLoyaltyDiscount( purchasesAmount: number, discounts: Discount[], ): Discount | null { const applicableDiscounts = discounts.filter(discount => { return ( discount.Layer === 4 && discount.Condition.UserType !== "nko" && purchasesAmount >= discount.Condition.PurchasesAmount ); }); if (!applicableDiscounts.length) return null; const maxValueDiscount = applicableDiscounts.reduce((prev, current) => { return current.Condition.PurchasesAmount > prev.Condition.PurchasesAmount ? current : prev; }); return maxValueDiscount; }