Timeouts are nice
This commit is contained in:
@@ -16,6 +16,10 @@ const Attendee = require(path.join(__dirname + "/../schemas/Attendee"));
|
|||||||
const VirtualWinner = require(path.join(
|
const VirtualWinner = require(path.join(
|
||||||
__dirname + "/../schemas/VirtualWinner"
|
__dirname + "/../schemas/VirtualWinner"
|
||||||
));
|
));
|
||||||
|
const PreLotteryWine = require(path.join(
|
||||||
|
__dirname + "/../schemas/PreLotteryWine"
|
||||||
|
));
|
||||||
|
|
||||||
const Message = require(path.join(__dirname + "/../api/message"));
|
const Message = require(path.join(__dirname + "/../api/message"));
|
||||||
|
|
||||||
router.use((req, res, next) => {
|
router.use((req, res, next) => {
|
||||||
@@ -196,6 +200,7 @@ router.route("/finish").get(mustBeAuthenticated, async (req, res) => {
|
|||||||
firstWinner.timestamp_limit = new Date().getTime() + 600000;
|
firstWinner.timestamp_limit = new Date().getTime() + 600000;
|
||||||
|
|
||||||
await firstWinner.save();
|
await firstWinner.save();
|
||||||
|
startTimeout(firstWinner.id);
|
||||||
res.json(true);
|
res.json(true);
|
||||||
return;
|
return;
|
||||||
});
|
});
|
||||||
@@ -264,6 +269,42 @@ function shuffle(array) {
|
|||||||
return array;
|
return array;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function startTimeout(id) {
|
||||||
|
console.log(`Starting timeout for user ${id}.`);
|
||||||
|
setTimeout(async () => {
|
||||||
|
let virtualWinner = await VirtualWinner.findOne({ id: id });
|
||||||
|
if (!virtualWinner) {
|
||||||
|
console.log(
|
||||||
|
`Timeout done for user ${id}, but user has already sent data.`
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log(`Timeout done for user ${id}, sending update to user.`);
|
||||||
|
|
||||||
|
Message.sendMessageTooLate(virtualWinner);
|
||||||
|
|
||||||
|
virtualWinner.timestamp_drawn = new Date().getTime();
|
||||||
|
virtualWinner.timestamp_limit = null;
|
||||||
|
virtualWinner.timestamp_sent = null;
|
||||||
|
|
||||||
|
await virtualWinner.save();
|
||||||
|
|
||||||
|
let prelotteryWine = await PreLotteryWine.find();
|
||||||
|
let nextWinner = await VirtualWinner.find().sort({ timestamp_drawn: 1 });
|
||||||
|
if (nextWinner.length == 1 && prelotteryWine.length == 1) {
|
||||||
|
chooseForUser(nextWinner[0], prelotteryWine[0]);
|
||||||
|
} else {
|
||||||
|
nextWinner[0].timestamp_sent = new Date().getTime();
|
||||||
|
nextWinner[0].timestamp_limit = new Date().getTime() + 600000;
|
||||||
|
await nextWinner[0].save();
|
||||||
|
Message.sendMessage(nextWinner[0]);
|
||||||
|
startTimeout(nextWinner[0].id);
|
||||||
|
}
|
||||||
|
|
||||||
|
}, 600000);
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = function(_io) {
|
module.exports = function(_io) {
|
||||||
io = _io;
|
io = _io;
|
||||||
return router;
|
return router;
|
||||||
|
|||||||
@@ -12,6 +12,6 @@ try {
|
|||||||
date: 5,
|
date: 5,
|
||||||
hours: 15,
|
hours: 15,
|
||||||
apiUrl: "http://localhost:30030",
|
apiUrl: "http://localhost:30030",
|
||||||
gatewayToken: undefined
|
gatewayToken: "asd"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user