Cleaned up a bit
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user