99 lines
2.4 KiB
JavaScript
99 lines
2.4 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
|