marketplace almost done - need to make way to clear old sales

This commit is contained in:
Expand-sys 2021-04-28 10:59:56 +10:00
parent 57ea6e6934
commit 3e29f04254
6 changed files with 235 additions and 40 deletions

View file

@ -4,3 +4,10 @@ $(document).ready(function(){
$(this).tab('show');
});
});
$(document).ready(function(){
$("#market a").click(function(e){
e.preventDefault();
$(this).tab('show');
});
});

View file

@ -10,7 +10,8 @@ const {ensureAuthenticated} = require("../config/auth.js")
mongoose.connect(process.env.MONGO,{
useNewUrlParser: true,
useUnifiedTopology: true
useUnifiedTopology: true,
useFindAndModify: true,
});
let db = mongoose.connection;
@ -27,7 +28,7 @@ db.on('error', function(err){
let Item = require('../schemas/item')
let Listing = require('../schemas/listing')
let Inventory = require('../schemas/inventory')
router.all('*', function(req, res, next) {
console.log(req.method, req.url);
@ -47,13 +48,22 @@ router.get('/', function(req, res) {
admin: req.session.admin,
});
}
})
});
router.get('/listings', ensureAuthenticated, function(req,res){
res.render('listings')
router.get('/marketdash', ensureAuthenticated, function(req,res){
Inventory.findOne({user:req.session.user}, function(err, inventory){
res.render('marketdash',{
user:req.session.user,
admin:req.session.admin,
inventory:inventory,
})
})
})
router.get('/:id',function(req, res){
Item.findById(req.params.id, function(err, item){
Listing.find({foreignid: req.params.id}, function(err, listings){
@ -72,34 +82,32 @@ router.get('/:id',function(req, res){
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,
});
})
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)
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,
});
})
res.render('itembuy', {
listings:listings,
user:req.session.user,
admin:req.session.admin,
});
});
})
router.post('/:id/list',ensureAuthenticated, function(req,res){
router.post('/:id/list',ensureAuthenticated, async function(req,res){
let body = req.body
let item = JSON.parse(req.body.item)
console.log(item)
@ -119,18 +127,63 @@ router.post('/:id/list',ensureAuthenticated, function(req,res){
console.log("added "+ listing.name+" from "+listing.seller)
}
})
res.redirect('/marketplace/listings')
let inventory = await Inventory.findOne({user:req.session.user}).exec()
if( inventory == null){
let newinv = new Inventory;
newinv.user = req.session.user
newinv.listings = listing;
newinv.save(function(err){
if(err){
console.log(err);
return;
} else{
console.log("created new inventory for "+req.session.user)
}
})
} else {
inventory.listings.push(listing)
inventory.save(function(err){
if(err){
console.log(err);
return;
} else{
console.log("pushed new listing")
}
})
}
res.redirect('/marketplace/marketdash')
})
router.post('/:id',function(req, res){
Listing.find({_id: req.params.id}, function(err, listings){
console.log(listings)
router.post('/:id/buy',async function(req, res){
Listing.findOne({_id: req.params.id}, async function(err, listing){
console.log(await Inventory.findOne({user:req.session.user}).exec())
let inventory = await Inventory.findOne({user:req.session.user}).exec()
if(inventory == null){
let newinv = new Inventory;
newinv.user = req.session.user
newinv.purchases = listing;
newinv.save(function(err){
if(err){
console.log(err);
return;
} else{
console.log("created new inventory for "+req.session.user)
}
})
} else {
inventory.purchases.push(listing)
inventory.save(function(err){
if(err){
console.log(err);
return;
} else{
console.log("pushed new purchase")
}
})
}
Listing.findOneAndRemove({_id:req.params.id}).exec()
res.render('item', {
listings: listings,
user:req.session.user,
admin:req.session.admin,
});
res.redirect("/marketplace/marketdash")
})
})

72
schemas/inventory.js Normal file
View file

@ -0,0 +1,72 @@
const mongoose = require('mongoose');
const Listing = require("./listing.js")
const InventorySchema = mongoose.Schema({
user:{
type: String,
required: true,
},
listings:[{
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,
}
}],
purchases:[{
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 Inventory = module.exports = mongoose.model('Inventory', InventorySchema);

View file

@ -6,15 +6,15 @@ block content
.row
.col
.card
img(src="/blockimages/items/"+item.itemId+"-"+item.meta+".png")
img(src="/blockimages/items/"+listings[0].itemId+"-"+listings[0].meta+".png")
.col
.row
.col-sm-2
p Item:
p ID:
.col-sm-4
p #{item.name}
p #{item.itemId}-#{item.meta}
p #{listings[0].name}
p #{listings[0].itemId}-#{listings[0].meta}
.col
h4 Buy
.row

View file

@ -13,7 +13,7 @@ block content
.col-sm-2
p Item:
p ID:
.col-sm-4
.col-sm-2
p #{item.name}
p #{item.itemId}-#{item.meta}
.col

63
views/marketdash.pug Normal file
View file

@ -0,0 +1,63 @@
extends layout
block content
.container
h2 Welcome to the marketplace dashboard #{inventory.user}
.card
ul#market.nav.nav-tabs.card-header-tabs(role='tablist')
li.nav-item
a.nav-link.active.text-black(href='#purchases', role='tab', aria-controls='purchases', aria-selected='true') Purchases
li.nav-item
a.nav-link.text-black(href='#selling', role='tab', aria-controls='selling', aria-selected='false') Selling
.tab-content.mt-3
#purchases.tab-pane.active(role='tabpanel' aria-labelledby='purchases-tab')
.row
.col
p itemID
.col
p Item Name
.col
p Price
.col
p Amount
.col
p Seller
for i in inventory.purchases
.row
.col
p #{i.itemId}-#{i.meta}
.col
p #{i.name}
.col
p #{i.price}
.col
p #{i.amount}
.col
p #{i.seller}
#selling.tab-pane(role='tabpanel', aria-labelledby='selling-tab')
.row
.col
p itemID
.col
p Item Name
.col
p Price
.col
p Amount
.col
p Seller
for i in inventory.listings
.row
.col
p #{i.itemId}-#{i.meta}
.col
p #{i.name}
.col
p #{i.price}
.col
p #{i.amount}
.col
p #{i.seller}