more marketplace changes

This commit is contained in:
Expand-sys 2021-04-28 07:28:32 +10:00
parent 574ea55287
commit 57ea6e6934
9 changed files with 222 additions and 14 deletions

View file

@ -153,7 +153,7 @@ app.get('/BankF', ensureAuthenticated, async function(req, res){
console.log(logrec.timings)
console.log("query finished "+Date.now())
logsent = logsent.body.value
if(logsent == 1 || logsent == -1 || logrec == null){
if(logsent == 1 || logsent == -1 || logsent == null){
logsent = undefined
}else{
logsent = logsent.filter(({ from }) => from === req.session.user)

View file

@ -5,6 +5,7 @@ const session = require('express-session');
const mongoose = require('mongoose')
const dotenv = require('dotenv');
const got = require('got');
const {ensureAuthenticated} = require("../config/auth.js")
mongoose.connect(process.env.MONGO,{
@ -25,6 +26,8 @@ db.on('error', function(err){
});
let Item = require('../schemas/item')
let Listing = require('../schemas/listing')
router.all('*', function(req, res, next) {
console.log(req.method, req.url);
@ -48,21 +51,88 @@ router.get('/', function(req, res) {
})
});
router.get('/:id',function(req, res, next){
router.get('/listings', ensureAuthenticated, function(req,res){
res.render('listings')
})
router.get('/:id',function(req, res){
Item.findById(req.params.id, function(err, item){
res.render('item', {
user:req.session.user,
admin:req.session.admin,
item:item,
});
Listing.find({foreignid: req.params.id}, function(err, listings){
console.log(listings)
res.render('item', {
listings: listings,
user:req.session.user,
admin:req.session.admin,
item:item,
});
})
});
})
router.get('/:id/list',ensureAuthenticated, function(req,res){
Item.findById(req.params.id, function(err, item){
Listing.find({foreignid: req.params.id}, function(err, listing){
console.log(listing)
res.render('itemlist', {
user:req.session.user,
admin:req.session.admin,
item:item,
});
})
});
})
router.get('/:id/buy',ensureAuthenticated, function(req,res){
Item.findById(req.params.id, function(err, item){
Listing.find({foreignid: req.params.id}, function(err, listings){
console.log(listings)
res.render('itembuy', {
listings:listings,
user:req.session.user,
admin:req.session.admin,
item:item,
});
})
});
})
router.post('/:id/list',ensureAuthenticated, function(req,res){
let body = req.body
let item = JSON.parse(req.body.item)
console.log(item)
let listing = new Listing();
listing.itemId = item.itemId
listing.meta = item.meta
listing.name = item.name
listing.foreignid = item._id
listing.price = body.price
listing.amount = body.amount
listing.seller = req.session.user
listing.save(function(err){
if(err){
console.log(err);
return;
} else{
console.log("added "+ listing.name+" from "+listing.seller)
}
})
res.redirect('/marketplace/listings')
})
router.post('/:id',function(req, res){
Listing.find({_id: req.params.id}, function(err, listings){
console.log(listings)
res.render('item', {
listings: listings,
user:req.session.user,
admin:req.session.admin,
});
})
})
// this thingy here populates the database with minecraft items only use once otherwise you are gonna flood your database
/*router.get('/populatedb', async function(req,res){

35
schemas/listing.js Normal file
View file

@ -0,0 +1,35 @@
const mongoose = require('mongoose');
const ListingSchema = mongoose.Schema({
itemId:{
type: Number,
required: true,
},
meta:{
type: Number,
required: false
},
name:{
type: String,
required: true
},
foreignid:{
type: String,
required: true,
},
price:{
type:Number,
required: true
},
amount:{
type: Number,
required:true
},
seller:{
type:String,
required:true,
}
})
const Listing = module.exports = mongoose.model('Listing', ListingSchema);

View file

@ -1,5 +1,31 @@
extends marketlayout
block content
p #{item}
.container
.card
.row
.col
.card
img(src="/blockimages/items/"+item.itemId+"-"+item.meta+".png")
.col
.row
.col-sm-2
p Item:
p ID:
.col-sm-4
p #{item.name}
p #{item.itemId}-#{item.meta}
.col
h4 Buy
.col
h4 Sell
.row
.col-sm-2
.col-sm-4
.col
a.btn.btn-primary(href="/marketplace/"+item._id+"/buy") Buy
.col
a.btn.btn-primary(href="/marketplace/"+item._id+"/list") List

41
views/itembuy.pug Normal file
View file

@ -0,0 +1,41 @@
extends marketlayout
block content
.container
.card
.row
.col
.card
img(src="/blockimages/items/"+item.itemId+"-"+item.meta+".png")
.col
.row
.col-sm-2
p Item:
p ID:
.col-sm-4
p #{item.name}
p #{item.itemId}-#{item.meta}
.col
h4 Buy
.row
.col
p Seller
.col
p Price
.col
p Amount
.col
p Link
for i in listings
.row
.col
p #{i.seller}
.col
p #{i.price}
.col
p #{i.amount}
.col
form(method='POST', action='/marketplace/'+i._id+"/buy")
input(type="hidden" value=i name="listing")
input.btn.btn-primary.btn-sm(type='submit', value='Buy')

32
views/itemlist.pug Normal file
View file

@ -0,0 +1,32 @@
extends marketlayout
block content
.container
.card
.row
.col
.card
img(src="/blockimages/items/"+item.itemId+"-"+item.meta+".png")
.col
.row
.col-sm-2
p Item:
p ID:
.col-sm-4
p #{item.name}
p #{item.itemId}-#{item.meta}
.col
h4 Sell
form(method='POST', action='/marketplace/'+item._id+'/list')
label Selling Price:
br
input.form-control-lg.shadow(type="number" min="0" name="price")
br
br
label Amount:
input.form-control-lg.shadow(type="number" min="0" name="amount")
br
br
input(type="hidden" value=item name="item")
input.btn.btn-primary(type='submit', value='Submit')

View file

@ -11,7 +11,7 @@ html
nav.navbar.navbar-expand-lg.navbar-light.navbarrr.shadow-lg
.container
a.navbar-brand(href='/')
img(src="../CCashLogo3.png" style="width:75px; height:74px")
img(src="/CCashLogo3.png" style="width:75px; height:74px")
button.navbar-toggler(type='button', data-toggle='collapse', data-target='#navbars', aria-controls='navbars', aria-expanded='false', aria-label='Toggle navigation')
span.navbar-toggler-icon
#navbars.collapse.navbar-collapse

4
views/listings.pug Normal file
View file

@ -0,0 +1,4 @@
extends marketlayout
block content

View file

@ -11,7 +11,7 @@ html
nav.navbar.navbar-expand-lg.navbar-light.navbarrr.shadow-lg
.container
a.navbar-brand(href='/')
img(src="../CCashLogo3.png" style="width:75px; height:74px")
img(src="/CCashLogo3.png" style="width:75px; height:74px")
button.navbar-toggler(type='button', data-toggle='collapse', data-target='#navbars', aria-controls='navbars', aria-expanded='false', aria-label='Toggle navigation')
span.navbar-toggler-icon
#navbars.collapse.navbar-collapse