import { CartData, Discount } from "../../model"; import { findDiscountFactor } from "./findDiscountFactor"; export function applyCartDiscount( cartData: CartData, discounts: Discount[], ) { const cartDiscount = findCartDiscount(cartData.priceAfterDiscounts, discounts); if (!cartDiscount) return; cartData.priceAfterDiscounts *= findDiscountFactor(cartDiscount); cartData.allAppliedDiscounts.push(cartDiscount); cartData.appliedCartPurchasesDiscount = cartDiscount; } export function findCartDiscount( cartPurchasesAmount: number, discounts: Discount[], ): Discount | null { const applicableDiscounts = discounts.filter(discount => { return ( discount.Layer === 3 && cartPurchasesAmount >= discount.Condition.CartPurchasesAmount ); }); if (!applicableDiscounts.length) return null; const maxValueDiscount = applicableDiscounts.reduce((prev, current) => { return current.Condition.CartPurchasesAmount > prev.Condition.CartPurchasesAmount ? current : prev; }); return maxValueDiscount; }