UIKit/lib/utils/cart/privilegeDiscount.ts

36 lines
1.0 KiB
TypeScript
Raw Normal View History

2024-03-19 15:30:11 +00:00
import { Discount } from "../../model";
2023-07-13 13:45:38 +00:00
export function findPrivilegeDiscount(
privilegeId: string,
privilegePrice: number,
discounts: Discount[],
2024-03-19 15:30:11 +00:00
userId: string,
2023-08-12 16:17:29 +00:00
): Discount | null {
2023-07-13 13:45:38 +00:00
const applicableDiscounts = discounts.filter(discount => {
2024-03-19 15:30:11 +00:00
if (discount.Condition.User !== "" && discount.Condition.User === userId) return true;
2023-07-13 13:45:38 +00:00
return (
discount.Layer === 1 &&
privilegeId === discount.Condition.Product &&
privilegePrice >= Number(discount.Condition.Term)
2023-07-13 13:45:38 +00:00
);
});
2023-08-12 16:17:29 +00:00
if (!applicableDiscounts.length) return null;
2023-07-13 13:45:38 +00:00
2024-03-19 15:30:11 +00:00
let maxValueDiscount: Discount = applicableDiscounts[0];
for (const discount of applicableDiscounts) {
if (discount.Condition.User !== "" && discount.Condition.User === userId) {
maxValueDiscount = discount;
break;
}
if (Number(discount.Condition.Term) > Number(maxValueDiscount.Condition.Term)) {
maxValueDiscount = discount;
}
}
2023-07-13 13:45:38 +00:00
2023-08-12 16:17:29 +00:00
return maxValueDiscount;
2023-07-13 13:45:38 +00:00
}