Cleaned up a bit

This commit is contained in:
Kasper Rynning-Tønnesen
2020-04-06 09:26:05 +02:00
parent 062b01f784
commit e6582983f2
2 changed files with 88 additions and 13 deletions

View File

@@ -3,7 +3,6 @@ const path = require("path");
const config = require(path.join(__dirname + "/../config/defaults/lottery"));
async function sendMessage(winnerObject) {
console.log("sent message to ", winnerObject);
winnerObject.timestamp_sent = new Date().getTime();
winnerObject.timestamp_limit = new Date().getTime() * 600000;
await winnerObject.save();
@@ -16,6 +15,22 @@ async function sendMessage(winnerObject) {
return true;
}
async function sendWonWineMessage(winnerObject, wineObject) {
console.log(
`User ${winnerObject.id} is only one left, chosing wine for him/her.`
);
winnerObject.timestamp_sent = new Date().getTime();
winnerObject.timestamp_limit = new Date().getTime();
await winnerObject.save();
await sendMessageToUser(
winnerObject.phoneNumber,
`Gratulerer som heldig vinner av vinlotteriet ${winnerObject.name}! Du har vunnet vinen ${wineObject.name}, og vil få nærmere info om hvordan/hvor du kan hente vinen snarest. Ha en ellers fin helg!`
);
return true;
}
async function sendMessageTooLate(winnerObject) {
await sendMessageToUser(
winnerObject.phoneNumber,
@@ -24,9 +39,6 @@ async function sendMessageTooLate(winnerObject) {
}
async function sendMessageToUser(phoneNumber, message) {
console.log("num", phoneNumber);
console.log("message", message);
request.post(
{
url: `https://gatewayapi.com/rest/mtsms?token=${config.token}`,
@@ -68,3 +80,4 @@ async function sendUpdate(winners) {
module.exports.sendUpdate = sendUpdate;
module.exports.sendMessage = sendMessage;
module.exports.sendMessageTooLate = sendMessageTooLate;
module.exports.sendWonWineMessage = sendWonWineMessage;

View File

@@ -8,7 +8,6 @@ mongoose.connect("mongodb://localhost:27017/vinlottis", {
});
const Message = require(path.join(__dirname + "/../api/message"));
const config = require(path.join(__dirname + "/../config/defaults/push"));
const VirtualWinner = require(path.join(
__dirname + "/../schemas/VirtualWinner"
));
@@ -17,9 +16,6 @@ const Wine = require(path.join(__dirname + "/../schemas/Wine"));
const PreLotteryWine = require(path.join(
__dirname + "/../schemas/PreLotteryWine"
));
const lotteryConfig = require(path.join(
__dirname + "/../config/defaults/lottery"
));
router.use((req, res, next) => {
next();
@@ -31,7 +27,6 @@ router.route("/winner/:id").get((req, res) => {
router.route("/:id").get(async (req, res) => {
let id = req.params.id;
let foundWinner = await VirtualWinner.findOne({ id: id });
if (!foundWinner) {
@@ -80,6 +75,7 @@ router.route("/:id").post(async (req, res) => {
return;
}
let date = new Date();
date.setHours(5, 0, 0, 0);
let prelotteryWine = await PreLotteryWine.findOne({ name: wineName });
@@ -140,33 +136,99 @@ router.route("/:id").post(async (req, res) => {
await foundWinner.delete();
let prelotteryWine = await PreLotteryWine.find();
let nextWinner = await VirtualWinner.find().sort({ timestamp_drawn: 1 });
if (nextWinner.length > 0) {
if (nextWinner.length > 1 && prelotteryWine.length > 1) {
Message.sendMessage(nextWinner[0]);
startTimeout(id);
} else if (nextWinner.length == 1 && prelotteryWine.length == 1) {
chooseForUser(nextWinner[0], prelotteryWine[0]);
}
startTimeout(id);
res.json({
success: true
});
return;
});
async function chooseForUser(winner, prelotteryWine) {
let date = new Date();
date.setHours(5, 0, 0, 0);
let wonWine = await Wine.findOne({ name: prelotteryWine.name });
if (wonWine == undefined) {
let newWonWine = new Wine({
name: prelotteryWine.name,
vivinoLink: prelotteryWine.vivinoLink,
rating: prelotteryWine.rating,
occurences: 1,
image: prelotteryWine.image,
id: prelotteryWine.id
});
await newWonWine.save();
wonWine = newWonWine;
} else {
wonWine.occurences += 1;
wonWine.image = prelotteryWine.image;
wonWine.id = prelotteryWine.id;
await wonWine.save();
}
const person = await Highscore.findOne({
name: winner.name
});
if (person == undefined) {
let newPerson = new Highscore({
name: winner.name,
wins: [
{
color: winner.color,
date: date,
wine: wonWine
}
]
});
await newPerson.save();
} else {
person.wins.push({
color: winner.color,
date: date,
wine: wonWine
});
person.markModified("wins");
await person.save();
}
await prelotteryWine.delete();
Message.sendWonWineMessage(winner, prelotteryWine);
}
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;
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]);
}
}, 600000);
}