mirror of
https://github.com/Expand-sys/ccashfrontend
synced 2025-12-16 14:52:13 +11:00
marketplace almost done - need to make way to clear old sales
This commit is contained in:
parent
57ea6e6934
commit
3e29f04254
6 changed files with 235 additions and 40 deletions
|
|
@ -4,3 +4,10 @@ $(document).ready(function(){
|
|||
$(this).tab('show');
|
||||
});
|
||||
});
|
||||
|
||||
$(document).ready(function(){
|
||||
$("#market a").click(function(e){
|
||||
e.preventDefault();
|
||||
$(this).tab('show');
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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
72
schemas/inventory.js
Normal 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);
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
63
views/marketdash.pug
Normal 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}
|
||||
|
||||
Loading…
Reference in a new issue