mirror of
https://github.com/Expand-sys/ccashfrontend
synced 2025-12-16 23:02:13 +11:00
more marketplace changes
This commit is contained in:
parent
574ea55287
commit
57ea6e6934
9 changed files with 222 additions and 14 deletions
2
index.js
2
index.js
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
35
schemas/listing.js
Normal 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);
|
||||
|
|
@ -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
41
views/itembuy.pug
Normal 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
32
views/itemlist.pug
Normal 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')
|
||||
|
|
@ -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
4
views/listings.pug
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
extends marketlayout
|
||||
|
||||
block content
|
||||
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue