- Tweaks
This commit is contained in:
76
models/auction.js
Normal file
76
models/auction.js
Normal file
@@ -0,0 +1,76 @@
|
||||
const mongoose = require('mongoose');
|
||||
const timestamps = require('mongoose-timestamp');
|
||||
|
||||
const ItemAuctionStatusSchema = new mongoose.Schema(
|
||||
{
|
||||
bidCount: Number,
|
||||
bidders: [ mongoose.Schema.Types.ObjectId ],
|
||||
currentBid: Number,
|
||||
currentMax: Number,
|
||||
winners: [ mongoose.Schema.Types.ObjectId ],
|
||||
},
|
||||
{ minimize: false },
|
||||
);
|
||||
|
||||
const AuctionSchema = new mongoose.Schema(
|
||||
{
|
||||
eventId: {
|
||||
type: String,
|
||||
required: true,
|
||||
trim: true,
|
||||
},
|
||||
scoreboard: [ ItemAuctionStatusSchema ],
|
||||
},
|
||||
{ minimize: false },
|
||||
);
|
||||
|
||||
AuctionSchema.plugin(timestamps);
|
||||
|
||||
AuctionSchema.statics.getAuctionStatus = function(eventId, bidderId, callback = () => {}) {
|
||||
this.findOne({ _id: eventId }, (err, event) => {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
const statusObject = [];
|
||||
|
||||
if (event) {
|
||||
statusObject.push(event.scoreboard.map((item) => ({
|
||||
id: item._id,
|
||||
bidCount: item.bidCount,
|
||||
currentPrice: item.currentBid,
|
||||
isBidding: item.bidders.indexOf(bidderId) > -1,
|
||||
isWinning: item.winners.indexOf(bidderId) > -1,
|
||||
})));
|
||||
}
|
||||
|
||||
return callback(null, statusObject);
|
||||
});
|
||||
};
|
||||
|
||||
AuctionSchema.statics.getAuctionItemStatus = function(eventId, itemId, bidderId, callback = () => {}) {
|
||||
this.findOne({ _id: eventId }, (err, event) => {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
const itemStatus = {};
|
||||
|
||||
if (event) {
|
||||
const item = event.scoreboard.id(itemId);
|
||||
if (item) {
|
||||
itemStatus._id = item._id;
|
||||
itemStatus.bidCount = item.bidCount;
|
||||
itemStatus.currentPrice = item.currentBid;
|
||||
itemStatus.isBidding = item.bidders.indexOf(bidderId) > -1;
|
||||
itemStatus.isWinning = item.winners.indexOf(bidderId) > -1;
|
||||
}
|
||||
}
|
||||
|
||||
return callback(null, itemStatus);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
const Auction = mongoose.model('Auction', AuctionSchema);
|
||||
module.exports = Auction;
|
||||
Reference in New Issue
Block a user