add cart privilege applied discounts field

change allAppliedDiscounts cart field type to Set
This commit is contained in:
nflnkr 2024-03-27 17:29:32 +03:00
parent 761a2d7cea
commit 79adf3ca86
3 changed files with 16 additions and 11 deletions

@ -7,6 +7,7 @@ export type PrivilegeCartData = {
description: string;
price: number;
amount: number;
appliedDiscounts: Set<Discount>;
};
export type TariffCartData = {
@ -27,5 +28,5 @@ export type CartData = {
services: ServiceCartData[];
priceBeforeDiscounts: number;
priceAfterDiscounts: number;
allAppliedDiscounts: Discount[];
allAppliedDiscounts: Set<Discount>;
};

@ -9,11 +9,10 @@ export function calcCart(tariffs: Tariff[], discounts: Discount[], purchasesAmou
services: [],
priceBeforeDiscounts: 0,
priceAfterDiscounts: 0,
allAppliedDiscounts: [],
allAppliedDiscounts: new Set(),
};
const privilegeAmountById = new Map<string, number>();
const servicePriceByKey = new Map<string, number>();
const allAppliedDiscounts = new Set<Discount>();
tariffs.forEach(tariff => {
if (tariff.privileges === undefined) return;
@ -54,6 +53,7 @@ export function calcCart(tariffs: Tariff[], discounts: Discount[], purchasesAmou
description: privilege.description,
price: privilegePrice,
amount: privilege.amount,
appliedDiscounts: new Set(),
};
privilegeAmountById.set(
@ -76,11 +76,13 @@ export function calcCart(tariffs: Tariff[], discounts: Discount[], purchasesAmou
const nkoDiscount = findNkoDiscount(discounts);
if (isUserNko && nkoDiscount) {
cartData.allAppliedDiscounts = [nkoDiscount];
cartData.allAppliedDiscounts.add(nkoDiscount);
cartData.services.forEach(service => {
service.tariffs.forEach(tariff => {
tariff.privileges.forEach(privilege => {
privilege.appliedDiscounts.add(nkoDiscount);
const discountAmount = privilege.price * (1 - findDiscountFactor(nkoDiscount));
privilege.price -= discountAmount;
@ -102,7 +104,8 @@ export function calcCart(tariffs: Tariff[], discounts: Discount[], purchasesAmou
const discount = findPrivilegeDiscount(privilege.privilegeId, privilegeTotalAmount, discounts, userId);
if (!discount) return;
allAppliedDiscounts.add(discount);
cartData.allAppliedDiscounts.add(discount);
privilege.appliedDiscounts.add(discount);
const discountAmount = privilege.price * (1 - findDiscountFactor(discount));
@ -128,7 +131,8 @@ export function calcCart(tariffs: Tariff[], discounts: Discount[], purchasesAmou
const discount = findServiceDiscount(privilege.serviceKey, serviceTotalPrice, discounts, userId);
if (!discount) return;
allAppliedDiscounts.add(discount);
cartData.allAppliedDiscounts.add(discount);
privilege.appliedDiscounts.add(discount);
const discountAmount = privilege.price * (1 - findDiscountFactor(discount));
@ -149,7 +153,8 @@ export function calcCart(tariffs: Tariff[], discounts: Discount[], purchasesAmou
service.tariffs.forEach(tariff => {
tariff.privileges.forEach(privilege => {
allAppliedDiscounts.add(cartDiscount);
cartData.allAppliedDiscounts.add(cartDiscount);
privilege.appliedDiscounts.add(cartDiscount);
const discountAmount = privilege.price * (1 - findDiscountFactor(cartDiscount));
@ -169,7 +174,8 @@ export function calcCart(tariffs: Tariff[], discounts: Discount[], purchasesAmou
service.tariffs.forEach(tariff => {
tariff.privileges.forEach(privilege => {
allAppliedDiscounts.add(loyalDiscount);
cartData.allAppliedDiscounts.add(loyalDiscount);
privilege.appliedDiscounts.add(loyalDiscount);
const discountAmount = privilege.price * (1 - findDiscountFactor(loyalDiscount));
@ -182,7 +188,5 @@ export function calcCart(tariffs: Tariff[], discounts: Discount[], purchasesAmou
});
}
cartData.allAppliedDiscounts = Array.from(allAppliedDiscounts);
return cartData;
}

@ -1,6 +1,6 @@
{
"name": "@frontend/kitui",
"version": "1.0.76",
"version": "1.0.77",
"description": "test",
"main": "./dist/index.js",
"module": "./dist/index.js",