import { Discount } from "../../model/discount"; import { Tariff } from "../../model/tariff"; import { calcCart } from "./calcCart"; export function calcTariffPrice( targetTariff: Tariff, discounts: Discount[], purchasesAmount: number, currentTariffs: Tariff[], isUserNko: boolean, userId: string, ): { priceBeforeDiscounts: number; priceAfterDiscounts: number; } { const priceBeforeDiscounts = targetTariff.price || targetTariff.privileges.reduce( (sum, privilege) => sum + privilege.amount * privilege.price, 0 ); const cart = calcCart([...currentTariffs, targetTariff], discounts, purchasesAmount, userId, isUserNko); const tariffCartData = cart.services.flatMap(service => service.tariffs).find(tariff => tariff.id === targetTariff._id); if (!tariffCartData) throw new Error(`Target tariff ${targetTariff._id} not found in cart`); return { priceBeforeDiscounts, priceAfterDiscounts: tariffCartData.price, }; }