83 lines
2.7 KiB
JavaScript
83 lines
2.7 KiB
JavaScript
const express = require("express")
|
|
const router = express.Router()
|
|
const { requireAuth } = require('./../../middleware/authmiddleware')
|
|
const bodyParser = require('body-parser')
|
|
var numbtest = /^\d+\.?\d*$/;
|
|
const items = require('./../../model/item.js')
|
|
const User = require('./../../model/user.js')
|
|
router.use(bodyParser.json())
|
|
|
|
router.post("/", requireAuth,async (req, res) => {
|
|
if (!req.userdocument.discordid) {
|
|
return res.json({status: "error", error: "Discord link required for purchasing. Link your discord in the settings panel."})
|
|
}
|
|
const {itemid} = req.body
|
|
if (typeof itemid == "undefined"){
|
|
return res.json({status: "error", error: "You need sum itemids bozo"})
|
|
}
|
|
if (numbtest.test(itemid) == false){
|
|
return res.json({status: "error", error: "You need sum itemids bozo"})
|
|
}
|
|
|
|
|
|
const itemdoc = await items.findOne({ItemId: itemid})//.lean()
|
|
if (typeof req.userdocument.inventory !== "undefined"){
|
|
// check if user already owns item
|
|
for (var v of req.userdocument.inventory){
|
|
if (v.ItemId === itemdoc.ItemId){
|
|
// they already own it
|
|
return res.json({status: 'error', error: "You already own this!"})
|
|
}
|
|
}
|
|
}
|
|
if (itemdoc.Type === "Mesh" || itemdoc.Type === "Audio" || itemdoc.Type === "Mesh"){
|
|
return res.json({status: 'error', error: "You can't buy assets."})
|
|
}
|
|
|
|
if (itemdoc.Hidden){
|
|
return res.json({status: 'error', error: "You can't buy this."})
|
|
}
|
|
|
|
|
|
if (req.userdocument.coins >= itemdoc.Price){
|
|
// has enough money to purcahse item
|
|
try{
|
|
User.updateOne({userid: req.userdocument.userid}, {
|
|
$set: {
|
|
coins: req.userdocument.coins - itemdoc.Price
|
|
},
|
|
$push: {
|
|
inventory: {Type: itemdoc.Type,ItemId: itemdoc.ItemId, Equipped: false}
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
// give owner cash
|
|
User.updateOne({userid: itemdoc.Creator}, {
|
|
$inc: {
|
|
coins: itemdoc.Price
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
|
|
itemdoc.Sales += 1
|
|
if (!itemdoc.Sales){
|
|
itemdoc.Sales = 1
|
|
}
|
|
//console.log(itemdoc.Sales)
|
|
itemdoc.markModified('Sales')
|
|
await itemdoc.save()
|
|
}catch{
|
|
|
|
}
|
|
return res.json({status: 'success', message: 'Purchase successful'})
|
|
}
|
|
// too poor
|
|
return res.json({status: 'error', error: "You don't have enough rocks"})
|
|
|
|
})
|
|
|
|
module.exports = router |