When selecting prize, add winner to wine.
Changed the way we register a prize for winner. Now we have a new prize_selected boolean field on a winner. This is used to filter on when finding what winners have not selected a prize yet. This also replaces the previous method of removing virtualWinners after they selected a prize. PrelotteryWine also get's a winner reference. This is used to filter on when finding what prizes are left, and also makes it easier to archive/register a lottery when the wine has a winner attached.
This commit is contained in:
@@ -4,7 +4,11 @@ const PreLotteryWine = require(path.join(__dirname, "/schemas/PreLotteryWine"));
|
||||
const { WineNotFound } = require(path.join(__dirname, "/vinlottisErrors"));
|
||||
|
||||
const allWines = () => {
|
||||
return PreLotteryWine.find();
|
||||
return PreLotteryWine.find().populate("winner");
|
||||
};
|
||||
|
||||
const allWinesWithoutWinner = () => {
|
||||
return PreLotteryWine.find({ winner: { $exists: false } });
|
||||
};
|
||||
|
||||
const addWines = wines => {
|
||||
@@ -56,6 +60,12 @@ const updateWineById = (id, updateModel) => {
|
||||
});
|
||||
};
|
||||
|
||||
const addWinnerToWine = (wine, winner) => {
|
||||
wine.winner = winner;
|
||||
winner.prize_selected = true;
|
||||
return Promise.all(wine.save(), winner.save());
|
||||
};
|
||||
|
||||
const deleteWineById = id => {
|
||||
return PreLotteryWine.findOne({ _id: id }).then(wine => {
|
||||
if (wine == null) {
|
||||
@@ -82,8 +92,10 @@ const wineSchema = () => {
|
||||
|
||||
module.exports = {
|
||||
allWines,
|
||||
allWinesWithoutWinner,
|
||||
addWines,
|
||||
wineById,
|
||||
addWinnerToWine,
|
||||
updateWineById,
|
||||
deleteWineById,
|
||||
deleteWines,
|
||||
|
||||
Reference in New Issue
Block a user