UNPKG

5.01 kBJavaScriptView Raw
1import { CONTACT_SALES } from '../pricing';
2var Package = /** @class */ (function () {
3 function Package() {
4 }
5 Package.fromApi = function (data) {
6 var newPackage = new Package();
7 if (!data.pricing && data.selling_price) {
8 data.pricing = {
9 currency: data.currency,
10 prices: [{
11 price: data.selling_price * 100,
12 frequency: data.billingFrequency
13 }]
14 };
15 }
16 Object.assign(newPackage, data);
17 if (!newPackage.name) {
18 newPackage.name = 'Untitled';
19 }
20 if (data.created) {
21 newPackage.createdDate = new Date(data.created);
22 }
23 if (data.updated) {
24 newPackage.updatedDate = new Date(data.updated);
25 }
26 return newPackage;
27 };
28 Object.defineProperty(Package.prototype, "isPackageFree", {
29 get: function () {
30 return this.pricing && this.pricing.prices ?
31 this.pricing.prices.some(function (p) { return p.price === 0 || p.price === undefined; }) : false;
32 },
33 enumerable: true,
34 configurable: true
35 });
36 Object.defineProperty(Package.prototype, "shouldContactSales", {
37 get: function () {
38 return this.pricing && this.pricing.prices ?
39 this.pricing.prices.some(function (p) { return p.price === null || p.price === CONTACT_SALES; }) ||
40 this.pricing.prices.length === 0 : true;
41 },
42 enumerable: true,
43 configurable: true
44 });
45 Object.defineProperty(Package.prototype, "formattedPricingList", {
46 get: function () {
47 if (this.pricing && this.pricing.prices && this.pricing.prices.length) {
48 var hasCurrencyAndIsNotUSD = this.pricing.currency && this.pricing.currency !== 'USD';
49 var currencyStr_1 = hasCurrencyAndIsNotUSD ? this.pricing.currency : '';
50 var currencySymbol_1 = Package.getCurrencySymbol(this.pricing.currency);
51 return this.pricing.prices.map(function (price) {
52 var frequencyStr = price.frequency ? '/ ' + Package.getCapitalizeFirstLetter(price.frequency) : '';
53 var roundedPrice = (price.price / 100.0).toFixed(2);
54 var priceStr = "" + currencySymbol_1 + roundedPrice + " " + currencyStr_1 + " " + frequencyStr;
55 return (priceStr.trim().replace(/\s+/g, ' '));
56 });
57 }
58 else {
59 return ['Contact Sales'];
60 }
61 },
62 enumerable: true,
63 configurable: true
64 });
65 Object.defineProperty(Package.prototype, "priceStrings", {
66 get: function () {
67 if (this.shouldContactSales) {
68 return ['Contact Sales'];
69 }
70 if (this.isPackageFree) {
71 return ['Free'];
72 }
73 return this.formattedPricingList;
74 },
75 enumerable: true,
76 configurable: true
77 });
78 Object.defineProperty(Package.prototype, "formattedWholesalePrice", {
79 get: function () {
80 return this.priceStrings.join(' + ');
81 },
82 enumerable: true,
83 configurable: true
84 });
85 Package.getCapitalizeFirstLetter = function (inputString) {
86 return inputString ? inputString.charAt(0).toUpperCase() + inputString.slice(1) : null;
87 };
88 Package.getCurrencySymbol = function (currency) {
89 var currencySymbol = '$';
90 switch (currency) {
91 case 'EUR':
92 currencySymbol = '\u20AC';
93 break;
94 case 'GBP':
95 currencySymbol = '\u00A3';
96 break;
97 case 'CHF':
98 currencySymbol = 'Fr';
99 break;
100 case 'CNY':
101 currencySymbol = '\u00A5';
102 break;
103 case 'JPY':
104 currencySymbol = '\u00A5';
105 break;
106 case 'CZK':
107 currencySymbol = 'K\u010d';
108 break;
109 case 'INR':
110 currencySymbol = '\u20B9';
111 break;
112 case 'KHR':
113 currencySymbol = '\u17DB';
114 break;
115 case 'KRW':
116 currencySymbol = '\u20A9';
117 break;
118 case 'NOK':
119 currencySymbol = 'kr';
120 break;
121 case 'SEK':
122 currencySymbol = 'kr';
123 break;
124 case 'RUB':
125 currencySymbol = '\u20BD';
126 break;
127 case 'TRY':
128 currencySymbol = '\u20BA';
129 break;
130 case 'ZAR':
131 currencySymbol = 'R';
132 break;
133 default:
134 currencySymbol = '$';
135 break;
136 }
137 return currencySymbol;
138 };
139 return Package;
140}());
141export { Package };