import { Feature } from "../models/featureModels/featureModels.js"; import { Decimal } from "decimal.js"; export const getFeatureName = ({ feature, plural, capitalize = false, }: { feature?: Feature; plural: boolean; capitalize?: boolean; }) => { if (!feature) { return ""; } let featureName = feature.name || ""; if (feature.display) { if (plural) { featureName = feature.display.plural || featureName; } else { featureName = feature.display.singular || featureName; } } if (capitalize) { featureName = featureName.charAt(0).toUpperCase() + featureName.slice(1); } return featureName; }; export const getFeatureNameWithCapital = ({ feature, }: { feature: Feature; }) => { if (feature.name && feature.name.length > 0) { return `${feature.name.charAt(0).toUpperCase()}${feature.name.slice(1)}`; } return feature.name; }; export const getSingularAndPlural = ({ feature, capitalize = false, }: { feature: Feature; capitalize?: boolean; }) => { return { singular: getFeatureName({ feature, plural: false, capitalize }), plural: getFeatureName({ feature, plural: true, capitalize }), }; }; export const numberWithCommas = (x: number) => { return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); }; export const usageToFeatureName = ({ usage, feature, }: { usage: number; feature: Feature; }) => { const { singular, plural } = getSingularAndPlural({ feature }); if (usage == 1) { return singular; } return plural; }; export const getFeatureInvoiceDescription = ({ feature, usage, billingUnits = 1, prodName, isPrepaid = false, }: { feature: Feature; usage: number; billingUnits?: number | null; prodName?: string; isPrepaid?: boolean; }) => { const { singular, plural } = getSingularAndPlural({ feature }); const usageStr = numberWithCommas(Math.ceil(usage)); let result = ""; if (isPrepaid && billingUnits && billingUnits > 1) { result = `${usageStr} x ${billingUnits} ${plural}`; // eg. 4 x 100 credits } else { if (usage == 1) { result = `${usageStr} ${singular}`; // eg. 1 credit } else { result = `${usageStr} ${plural}`; // eg. 4 credits } } if (prodName) { result = `${prodName} - ${result}`; } return result; };