Meteor-back/routes/api/advertise.js

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