UIKit/lib/utils/cart/loyaltyDiscount.ts

38 lines
1.1 KiB
TypeScript

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;
}