@gameroom/cli
Version:
A command line tool for Gameroom
426 lines (421 loc) • 22.4 kB
JavaScript
const nearestDime = require('./nearestDime')
module.exports = (product, pc_product) => {
// get prices
const gamestop_price = pc_product['gamestop-price'],
retail_cib_sell = pc_product['retail-cib-sell'],
retail_loose_sell = pc_product['retail-loose-sell']
// get ratio
if (!product.properties.price_ratio) product.properties.price_ratio = '1.00'
const ratio = parseFloat(product.properties.price_ratio)
const { properties } = product
let baseline, game_plus_amount, game_only_amount, buy_in_game_plus_amount, buy_in_game_only_amount
//------------------------------------------------------------------------------------------------------------------------------ PS4 + Xbox One
if (product.tags.includes('PS4') || product.tags.includes('Xbox One')) {
const price_floor = 300
baseline = gamestop_price
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount * 0.80)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 500 ? game_plus_amount * 0.1 :
game_plus_amount < 1200 ? game_plus_amount * 0.15 :
game_plus_amount < 2000 ? game_plus_amount * 0.20 :
game_plus_amount < 3000 ? game_plus_amount * 0.25 :
game_plus_amount < 4600 ? game_plus_amount * 0.33 :
game_plus_amount < 6000 ? game_plus_amount * 0.50 :
game_plus_amount * 0.30)
buy_in_game_only_amount = -nearestDime(game_plus_amount < 2000 ? game_only_amount * 0.10 :
game_plus_amount < 4000 ? game_only_amount * 0.15 :
game_plus_amount < 6000 ? game_only_amount * 0.20 :
game_plus_amount * 0.15)
}
//------------------------------------------------------------------------------------------------------------------------------ Switch
else if (product.tags.includes('Switch')) {
const price_floor = 1000
baseline = properties.gamestop_price
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount * 0.95)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 1200 ? game_plus_amount * 0.15 :
game_plus_amount < 2000 ? game_plus_amount * 0.20 :
game_plus_amount < 3000 ? game_plus_amount * 0.25 :
game_plus_amount < 4600 ? game_plus_amount * 0.33 :
game_plus_amount < 6000 ? game_plus_amount * 0.50 :
game_plus_amount * 0.40)
buy_in_game_only_amount = buy_in_game_plus_amount
}
//------------------------------------------------------------------------------------------------------------------------------ PS3
else if (product.tags.includes('PS3')) {
const price_floor = 300
baseline = retail_cib_sell
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount < 3000 ? game_plus_amount * 0.55 : game_plus_amount * 0.7)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 400 ? game_plus_amount * 0.05 :
game_plus_amount < 600 ? game_plus_amount * 0.10 :
game_plus_amount < 2000 ? game_plus_amount * 0.20 :
game_plus_amount * 0.30)
buy_in_game_only_amount = -nearestDime(game_only_amount < 1000 ? game_only_amount * 0.10 :
game_only_amount < 3000 ? game_only_amount * 0.15 :
game_only_amount * 0.20)
}
//------------------------------------------------------------------------------------------------------------------------------ Xbox 360
else if (product.tags.includes('Xbox 360')) {
const price_floor = 300
baseline = retail_cib_sell
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount < 3000 ? game_plus_amount * 0.55 : game_plus_amount * 0.7)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 400 ? game_plus_amount * 0.05 :
game_plus_amount < 600 ? game_plus_amount * 0.10 :
game_plus_amount < 800 ? game_plus_amount * 0.15 :
game_plus_amount < 2000 ? game_plus_amount * 0.20 :
game_plus_amount < 3000 ? game_plus_amount * 0.25 :
game_plus_amount < 6000 ? game_plus_amount * 0.30 :
game_plus_amount * 0.40)
buy_in_game_only_amount = -nearestDime(game_only_amount < 1000 ? game_only_amount * 0.10 :
game_only_amount < 3000 ? game_only_amount * 0.15 :
game_only_amount * 0.20)
}
//------------------------------------------------------------------------------------------------------------------------------ Wii
else if (product.tags.includes('Wii')) {
const price_floor = 500
baseline = retail_cib_sell
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount < 2000 ? game_plus_amount * 0.55 : game_plus_amount * 0.7)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 800 ? game_plus_amount * 0.15 :
game_plus_amount < 2000 ? game_plus_amount * 0.20 :
game_plus_amount < 3000 ? game_plus_amount * 0.25 :
game_plus_amount < 6000 ? game_plus_amount * 0.30 :
game_plus_amount * 0.40)
buy_in_game_only_amount = -nearestDime(game_only_amount < 2000 ? game_only_amount * 0.15 : game_only_amount * 0.20)
}
//------------------------------------------------------------------------------------------------------------------------------ Wii U
else if (product.tags.includes('Wii U')) {
const price_floor = 500
baseline = retail_cib_sell
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount < 2000 ? game_plus_amount * 0.55 : game_plus_amount * 0.7)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 600 ? game_plus_amount * 0.10 :
game_plus_amount < 800 ? game_plus_amount * 0.20 :
game_plus_amount < 2000 ? game_plus_amount * 0.25 :
game_plus_amount < 6000 ? game_plus_amount * 0.30 :
game_plus_amount * 0.35)
buy_in_game_only_amount = -nearestDime(game_only_amount < 2000 ? game_only_amount * 0.15 : game_only_amount * 0.20)
}
//------------------------------------------------------------------------------------------------------------------------------ PS2 + Xbox
else if (product.tags.includes('PS2') || product.tags.includes('Xbox')) {
const price_floor = 300
baseline = retail_cib_sell
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount < 3000 ? game_plus_amount * 0.55 : game_plus_amount * 0.7)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 600 ? game_plus_amount * 0.05 :
game_plus_amount < 800 ? game_plus_amount * 0.15 :
game_plus_amount < 2000 ? game_plus_amount * 0.18 :
game_plus_amount < 4000 ? game_plus_amount * 0.25 :
game_plus_amount < 8000 ? game_plus_amount * 0.30 :
game_plus_amount * 0.40)
buy_in_game_only_amount = -nearestDime(game_only_amount < 600 ? game_only_amount * 0.05 :
game_only_amount < 3000 ? game_only_amount * 0.15 :
game_only_amount * 0.20)
}
//------------------------------------------------------------------------------------------------------------------------------ Gamecube
else if (product.tags.includes('Gamecube')) {
const price_floor = 500
baseline = retail_cib_sell
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount < 2000 ? game_plus_amount * 0.55 : game_plus_amount * 0.7)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 600 ? game_plus_amount * 0.10 :
game_plus_amount < 800 ? game_plus_amount * 0.15 :
game_plus_amount < 2000 ? game_plus_amount * 0.25 :
game_plus_amount < 4000 ? game_plus_amount * 0.30 :
game_plus_amount < 8000 ? game_plus_amount * 0.40 :
game_plus_amount * 0.55)
buy_in_game_only_amount = -nearestDime(game_only_amount < 2000 ? game_only_amount * 0.15 : game_only_amount * 0.20)
}
//------------------------------------------------------------------------------------------------------------------------------ PS1
else if (product.tags.includes('PS1')) {
const price_floor = 300
baseline = retail_cib_sell
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount < 2000 ? game_plus_amount * 0.55 : game_plus_amount * 0.7)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 600 ? game_plus_amount * 0.05 :
game_plus_amount < 800 ? game_plus_amount * 0.10 :
game_plus_amount < 2000 ? game_plus_amount * 0.20 :
game_plus_amount < 4000 ? game_plus_amount * 0.25 :
game_plus_amount < 8000 ? game_plus_amount * 0.30 :
game_plus_amount * 0.35)
buy_in_game_only_amount = -nearestDime(game_only_amount < 600 ? game_only_amount * 0.05 :
game_only_amount < 1000 ? game_only_amount * 0.10 :
game_only_amount < 4000 ? game_only_amount * 0.15 :
game_only_amount * 0.20)
}
//------------------------------------------------------------------------------------------------------------------------------ Dreamcast
else if (product.tags.includes('Dreamcast')) {
const price_floor = 300
baseline = retail_cib_sell
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount < 2000 ? game_plus_amount * 0.55 : game_plus_amount * 0.7)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 800 ? game_plus_amount * 0.05 :
game_plus_amount < 2000 ? game_plus_amount * 0.10 :
game_plus_amount < 4000 ? game_plus_amount * 0.25 :
game_plus_amount < 8000 ? game_plus_amount * 0.30 :
game_plus_amount * 0.40)
buy_in_game_only_amount = -nearestDime(game_only_amount < 1000 ? game_only_amount * 0.05 :
game_only_amount < 2000 ? game_only_amount * 0.10 :
game_only_amount < 4000 ? game_only_amount * 0.15 :
game_only_amount * 0.20)
}
//------------------------------------------------------------------------------------------------------------------------------ Saturn
else if (product.tags.includes('Saturn')) {
const price_floor = 300
baseline = retail_cib_sell
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount < 2000 ? game_plus_amount * 0.55 : game_plus_amount * 0.7)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 600 ? game_plus_amount * 0.05 :
game_plus_amount < 800 ? game_plus_amount * 0.10 :
game_plus_amount < 2000 ? game_plus_amount * 0.20 :
game_plus_amount < 4000 ? game_plus_amount * 0.25 :
game_plus_amount < 8000 ? game_plus_amount * 0.30 :
game_plus_amount * 0.35)
buy_in_game_only_amount = -nearestDime(game_only_amount < 600 ? game_only_amount * 0.05 :
game_only_amount < 1000 ? game_only_amount * 0.10 :
game_only_amount < 2000 ? game_only_amount * 0.15 :
game_only_amount * 0.20)
}
//------------------------------------------------------------------------------------------------------------------------------ Sega CD
else if (product.tags.includes('Sega CD')) {
const price_floor = 300
baseline = retail_cib_sell
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount < 2000 ? game_plus_amount * 0.55 : game_plus_amount * 0.7)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 600 ? game_plus_amount * 0.05 :
game_plus_amount < 800 ? game_plus_amount * 0.10 :
game_plus_amount < 2000 ? game_plus_amount * 0.15 :
game_plus_amount < 4000 ? game_plus_amount * 0.20 :
game_plus_amount < 8000 ? game_plus_amount * 0.25 :
game_plus_amount * 0.35)
buy_in_game_only_amount = -nearestDime(game_only_amount < 600 ? game_only_amount * 0.05 :
game_only_amount < 1000 ? game_only_amount * 0.10 :
game_only_amount < 2000 ? game_only_amount * 0.15 :
game_only_amount * 0.20)
}
//------------------------------------------------------------------------------------------------------------------------------ CDi + 3DO
else if (product.tags.includes('CD-i') || product.tags.includes('3DO')) {
const price_floor = 300
baseline = retail_cib_sell
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount < 2000 ? game_plus_amount * 0.55 : game_plus_amount * 0.7)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 600 ? game_plus_amount * 0.05 :
game_plus_amount < 2000 ? game_plus_amount * 0.10 :
game_plus_amount < 8000 ? game_plus_amount * 0.15 :
game_plus_amount * 0.20)
buy_in_game_only_amount = -nearestDime(game_only_amount < 600 ? game_only_amount * 0.05 :
game_only_amount < 1000 ? game_only_amount * 0.10 :
game_only_amount * 0.15)
}
//------------------------------------------------------------------------------------------------------------------------------ NES + SNES
else if (product.tags.includes('NES') || product.tags.includes('SNES')) {
const price_floor = 300
baseline = retail_loose_sell
//sell
game_plus_amount = 0
game_only_amount = nearestDime(baseline * ratio)
if (game_only_amount < price_floor) game_only_amount = price_floor
//buy
buy_in_game_only_amount = -nearestDime(game_only_amount < 600 ? game_only_amount * 0.05 :
game_only_amount < 800 ? game_only_amount * 0.10 :
game_only_amount < 2000 ? game_only_amount * 0.15 :
game_only_amount < 4000 ? game_only_amount * 0.30 :
game_only_amount < 8000 ? game_only_amount * 0.40 :
game_only_amount * 0.50)
buy_in_game_plus_amount = 0
}
//------------------------------------------------------------------------------------------------------------------------------ N64
else if (product.tags.includes('N64')) {
const price_floor = 300
baseline = retail_loose_sell
//sell
game_plus_amount = 0
game_only_amount = nearestDime(baseline * ratio)
if (game_only_amount < price_floor) game_only_amount = price_floor
//buy
buy_in_game_only_amount = -nearestDime(game_only_amount < 600 ? game_only_amount * 0.05 :
game_only_amount < 800 ? game_only_amount * 0.10 :
game_only_amount < 2000 ? game_only_amount * 0.20 :
game_only_amount < 4000 ? game_only_amount * 0.30 :
game_only_amount < 8000 ? game_only_amount * 0.40 :
game_only_amount * 0.50)
buy_in_game_plus_amount = 0
}
//------------------------------------------------------------------------------------------------------------------------------ Genesis + 32X + Master System
else if (product.tags.includes('Genesis') || product.tags.includes('32X') || products.tags.includes('Master System')) {
const price_floor = 300
baseline = retail_loose_sell
//sell
game_plus_amount = 0
game_only_amount = nearestDime(baseline * ratio)
if (game_only_amount < price_floor) game_only_amount = price_floor
//buy
buy_in_game_plus_amount = -nearestDime(game_only_amount < 600 ? game_only_amount * 0.15 :
game_only_amount < 800 ? game_only_amount * 0.20 :
game_only_amount < 2000 ? game_only_amount * 0.25 :
game_only_amount < 4000 ? game_only_amount * 0.30 :
game_only_amount < 8000 ? game_only_amount * 0.35 :
game_only_amount * 0.45)
buy_in_game_only_amount = -nearestDime(game_only_amount < 600 ? game_only_amount * 0.05 :
game_only_amount < 800 ? game_only_amount * 0.10 :
game_only_amount < 2000 ? game_only_amount * 0.15 :
game_only_amount < 4000 ? game_only_amount * 0.20 :
game_only_amount < 8000 ? game_only_amount * 0.25 :
game_only_amount * 0.35)
}
//------------------------------------------------------------------------------------------------------------------------------ Atari + Vision(s)
else if (product.tags.includes('Atari') || product.tags.includes('Intellivision') || product.tags.includes('Colecovision')) {
const price_floor = 300
baseline = retail_loose_sell
//sell
game_plus_amount = 0
game_only_amount = nearestDime(baseline * ratio)
if (game_only_amount < price_floor) game_only_amount = price_floor
//buy
buy_in_game_only_amount = -nearestDime(game_only_amount < 800 ? game_only_amount * 0.05 :
game_only_amount < 4000 ? game_only_amount * 0.10 :
game_only_amount < 8000 ? game_only_amount * 0.15 :
game_only_amount * 0.20)
buy_in_game_plus_amount = 0
}
//------------------------------------------------------------------------------------------------------------------------------ GB + GBC
else if (product.tags.includes('Gameboy') || product.tags.includes('Gameboy Color')) {
const price_floor = 300
baseline = retail_loose_sell
//sell
game_plus_amount = 0
game_only_amount = nearestDime(baseline * ratio)
if (game_only_amount < price_floor) game_only_amount = price_floor
//buy
buy_in_game_only_amount = -nearestDime(game_only_amount < 600 ? game_only_amount * 0.05 :
game_only_amount < 2000 ? game_only_amount * 0.10 :
game_only_amount < 4000 ? game_only_amount * 0.20 :
game_only_amount < 8000 ? game_only_amount * 0.25 :
game_only_amount * 0.30)
buy_in_game_plus_amount = 0
}
//------------------------------------------------------------------------------------------------------------------------------ GBA
else if (product.tags.includes('Gameboy Advance')) {
const price_floor = 300
baseline = retail_loose_sell
//sell
game_plus_amount = 0
game_only_amount = nearestDime(baseline * ratio)
if (game_only_amount < price_floor) game_only_amount = price_floor
//buy
buy_in_game_only_amount = -nearestDime(game_only_amount < 600 ? game_only_amount * 0.05 :
game_only_amount < 800 ? game_only_amount * 0.10 :
game_only_amount < 2000 ? game_only_amount * 0.20 :
game_only_amount < 8000 ? game_only_amount * 0.25 :
game_only_amount * 0.35)
buy_in_game_plus_amount = 0
}
//------------------------------------------------------------------------------------------------------------------------------ 3DS + DS
else if (product.tags.includes('3DS') || products.tags.includes('DS')) {
const price_floor = 300
baseline = retail_cib_sell
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount * 0.90)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 600 ? game_plus_amount * 0.05 :
game_plus_amount < 800 ? game_plus_amount * 0.10 :
game_plus_amount < 2000 ? game_plus_amount * 0.15 :
game_plus_amount < 4000 ? game_plus_amount * 0.20 :
game_plus_amount < 8000 ? game_plus_amount * 0.25 :
game_plus_amount * 0.30)
buy_in_game_only_amount = nearestDime(buy_in_game_plus_amount * 0.90)
}
//------------------------------------------------------------------------------------------------------------------------------ PSP
else if (product.tags.includes('PSP')) {
const price_floor = 300
baseline = retail_cib_sell
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount * 0.90)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 600 ? game_plus_amount * 0.05 :
game_plus_amount < 800 ? game_plus_amount * 0.10 :
game_plus_amount < 2000 ? game_plus_amount * 0.15 :
game_plus_amount < 4000 ? game_plus_amount * 0.20 :
game_plus_amount * 0.25)
buy_in_game_only_amount = nearestDime(buy_in_game_plus_amount * 0.90)
}
//------------------------------------------------------------------------------------------------------------------------------ Vita
else if (product.tags.includes('Vita')) {
const price_floor = 300
baseline = retail_cib_sell
//sell
game_plus_amount = nearestDime(baseline * ratio)
if (game_plus_amount < price_floor) game_plus_amount = price_floor
game_only_amount = nearestDime(game_plus_amount * 0.90)
//buy
buy_in_game_plus_amount = -nearestDime(game_plus_amount < 600 ? game_plus_amount * 0.05 :
game_plus_amount < 800 ? game_plus_amount * 0.10 :
game_plus_amount < 2000 ? game_plus_amount * 0.20 :
game_plus_amount < 8000 ? game_plus_amount * 0.25 :
game_plus_amount * 0.30)
buy_in_game_only_amount = nearestDime(buy_in_game_plus_amount * 0.90)
}
//------------------------------------------------------------------------------------------------------------------------------ Game Gear
else if (product.tags.includes('Game Gear')) {
const price_floor = 300
baseline = retail_loose_sell
//sell
game_plus_amount = 0
game_only_amount = nearestDime(baseline * ratio)
if (game_only_amount < price_floor) game_only_amount = price_floor
//buy
buy_in_game_only_amount = -nearestDime(game_only_amount < 600 ? game_only_amount * 0.05 :
game_only_amount < 2000 ? game_only_amount * 0.10 :
game_only_amount < 4000 ? game_only_amount * 0.15 :
game_only_amount * 0.20)
buy_in_game_plus_amount = 0
}
// set baseline
product.properties.price_baseline = baseline
return { game_plus_amount, game_only_amount, buy_in_game_plus_amount, buy_in_game_only_amount }
}