101 lines
2.7 KiB
JavaScript
101 lines
2.7 KiB
JavaScript
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
|