const express = require("express") const router = express.Router() const { requireAuth } = require("./../../middleware/authmiddleware") const bodyParser = require("body-parser") const User = require("./../../model/user.js") const catalog = require("./../../model/item.js") const games = require("./../../model/games.js") router.use(bodyParser.json()) router.post("/", requireAuth, async (req, res) => { let { itemid, AdId, type } = req.body if (typeof itemid == "undefined") { return res.json({ status: "error", error: "ItemId not sent!" }) } if (typeof AdId == "undefined") { return res.json({ status: "error", error: "Ad ID not sent!" }) } if (typeof type == "undefined") { return res.json({ status: "error", error: "Type not sent!" }) } if (type != "game" && type != "item") { return res.json({ status: "error", error: "Invalid Type!" }) } if (req.userdocument.coins < 10) { return res.json({ status: "error", error: "You don't have enough Rocks!", }) } const Addoc = await catalog.findOne({ ItemId: AdId }) if (!Addoc || Addoc?.Type != "User Ad") { return res.json({ status: "error", error: "Not found" }) } if (Addoc.Creator != req.userdocument.userid) { return res.json({ status: "error", error: "Not Authorized" }) // tried to use someone elses ad } if (Addoc.ActiveAd === true) { // ad is already running return res.json({ status: "error", error: "You are already running this ad!", }) } if (Addoc.Hidden) { return res.json({ status: "error", error: "Ad is moderated!" }) } if (Addoc.approved === false) { return res.json({ status: "error", error: "Ad is pending approval!" }) } let itemdoc if (type === "game") { itemdoc = await games.findOne({ idofgame: itemid }).lean() } if (!itemdoc) { return res.json({ status: "error", error: "Not found" }) } if (type === "game") { if (itemdoc.useridofowner != req.userdocument.userid) { // make sure we only let game owners advertise there game return res.json({ status: "error", error: "Not Authorized" }) } } if (type === "item") { if (itemdoc.Creator != req.userdocument.userid) { // make sure we only let item owners advertise there item return res.json({ status: "error", error: "Not Authorized" }) } } req.userdocument.coins -= 10 req.userdocument.markModified("coins") await req.userdocument.save() Addoc.adtype = type Addoc.adredirectid = itemid Addoc.ActiveAd = true Addoc.adstartedtime = Date.now() Addoc.markModified("adtype") Addoc.markModified("adredirectid") Addoc.markModified("ActiveAd") Addoc.markModified("adstartedtime") await Addoc.save() return res.json({ status: "success", message: "Done!" }) }) module.exports = router