module.exports = class { constructor(listing) { this.listingId = listing.idInv; this.description = listing.strDesc; this.condition = listing.codeNew === 'U' ? 'USED' : 'NEW'; this.complete = listing.codeComplete; this.quantity = listing.n4Qty; this.colorDesc = listing.strColor; this.colorId = listing.idColor; this.minBuy = parseMinBuy(listing.mMinBuy); this.sellerUsername = listing.strSellerUsername; this.sellerStoreName = listing.strStorename; this.instantCheckout = listing.instantCheckout; this.prices = [ { quantity: 1, value: parseDollars(listing.mDisplaySalePrice) } ] if(listing.nTier1Qty) { //add bulk pricing tier this.prices.push({ quantity: listing.nTier1Qty, value: parseDollars(listing.nTier1DisplayPrice) }) } if(listing.nTier2Qty) { //add bulk pricing tier this.prices.push({ quantity: listing.nTier2Qty, value: parseDollars(listing.nTier2DisplayPrice) }) } if(listing.nTier3Qty) { //add bulk pricing tier this.prices.push({ quantity: listing.nTier3Qty, value: parseDollars(listing.nTier3DisplayPrice) }) } } getPrice(quantity) { for(var i = this.prices.length - 1;i >= 0;i--){ const price = this.prices[i]; console.log(price, quantity, i) if(quantity >= price.quantity){ return price.value * quantity } } return null; } } const priceRegex = /US \$(?\d+\.\d+)/; function parseMinBuy(value){ if(value === 'None') return 0; return parseDollars(value); } function parseDollars(val) { const regexed = priceRegex.exec(val); const stringPrice = regexed?.groups?.price; if(!stringPrice){ return 999999999; } else { return parseFloat(stringPrice); } }