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