UNPKG

@coursebuilder/core

Version:

Core package for Course Builder

1 lines 1.8 kB
{"version":3,"sources":["../../../src/lib/utils/validate-coupon.ts"],"sourcesContent":["import { isBefore } from 'date-fns'\n\nimport { Coupon } from '../../schemas'\n\nexport const validateCoupon = (\n\tcoupon: Coupon | null,\n\tproductIds: string[] = [],\n) => {\n\tif (!coupon) {\n\t\treturn {\n\t\t\tisValid: false,\n\t\t\tisRedeemable: false,\n\t\t\terror: 'coupon-not-found',\n\t\t}\n\t}\n\n\tconst isUsedUp =\n\t\tcoupon.maxUses > 0 ? coupon.usedCount >= coupon.maxUses : false\n\n\tconst isExpired = coupon.expires\n\t\t? isBefore(new Date(coupon.expires), new Date())\n\t\t: false\n\n\tif (\n\t\tcoupon.restrictedToProductId &&\n\t\t!productIds.includes(coupon.restrictedToProductId)\n\t) {\n\t\treturn {\n\t\t\tisValid: false,\n\t\t\tisRedeemable: false,\n\t\t\terror: 'coupon-not-valid-for-product',\n\t\t}\n\t}\n\n\tconst isValid = !isUsedUp && !isExpired\n\n\treturn {\n\t\tisExpired,\n\t\tisUsedUp,\n\t\tisRedeemable: isValid && coupon.percentageDiscount >= 1 && !coupon.default,\n\t\tisValid,\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;sBAAyB;AAIlB,IAAMA,iBAAiB,wBAC7BC,QACAC,aAAuB,CAAA,MAAE;AAEzB,MAAI,CAACD,QAAQ;AACZ,WAAO;MACNE,SAAS;MACTC,cAAc;MACdC,OAAO;IACR;EACD;AAEA,QAAMC,WACLL,OAAOM,UAAU,IAAIN,OAAOO,aAAaP,OAAOM,UAAU;AAE3D,QAAME,YAAYR,OAAOS,cACtBC,0BAAS,IAAIC,KAAKX,OAAOS,OAAO,GAAG,oBAAIE,KAAAA,CAAAA,IACvC;AAEH,MACCX,OAAOY,yBACP,CAACX,WAAWY,SAASb,OAAOY,qBAAqB,GAChD;AACD,WAAO;MACNV,SAAS;MACTC,cAAc;MACdC,OAAO;IACR;EACD;AAEA,QAAMF,UAAU,CAACG,YAAY,CAACG;AAE9B,SAAO;IACNA;IACAH;IACAF,cAAcD,WAAWF,OAAOc,sBAAsB,KAAK,CAACd,OAAOe;IACnEb;EACD;AACD,GAtC8B;","names":["validateCoupon","coupon","productIds","isValid","isRedeemable","error","isUsedUp","maxUses","usedCount","isExpired","expires","isBefore","Date","restrictedToProductId","includes","percentageDiscount","default"]}