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