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"));
|
const config = require(path.join(__dirname + "/../config/defaults/lottery"));
|
||||||
|
|
||||||
async function sendMessage(winnerObject) {
|
async function sendMessage(winnerObject) {
|
||||||
console.log("sent message to ", winnerObject);
|
|
||||||
winnerObject.timestamp_sent = new Date().getTime();
|
winnerObject.timestamp_sent = new Date().getTime();
|
||||||
winnerObject.timestamp_limit = new Date().getTime() * 600000;
|
winnerObject.timestamp_limit = new Date().getTime() * 600000;
|
||||||
await winnerObject.save();
|
await winnerObject.save();
|
||||||
@@ -16,6 +15,22 @@ async function sendMessage(winnerObject) {
|
|||||||
return true;
|
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) {
|
async function sendMessageTooLate(winnerObject) {
|
||||||
await sendMessageToUser(
|
await sendMessageToUser(
|
||||||
winnerObject.phoneNumber,
|
winnerObject.phoneNumber,
|
||||||
@@ -24,9 +39,6 @@ async function sendMessageTooLate(winnerObject) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function sendMessageToUser(phoneNumber, message) {
|
async function sendMessageToUser(phoneNumber, message) {
|
||||||
console.log("num", phoneNumber);
|
|
||||||
console.log("message", message);
|
|
||||||
|
|
||||||
request.post(
|
request.post(
|
||||||
{
|
{
|
||||||
url: `https://gatewayapi.com/rest/mtsms?token=${config.token}`,
|
url: `https://gatewayapi.com/rest/mtsms?token=${config.token}`,
|
||||||
@@ -68,3 +80,4 @@ async function sendUpdate(winners) {
|
|||||||
module.exports.sendUpdate = sendUpdate;
|
module.exports.sendUpdate = sendUpdate;
|
||||||
module.exports.sendMessage = sendMessage;
|
module.exports.sendMessage = sendMessage;
|
||||||
module.exports.sendMessageTooLate = sendMessageTooLate;
|
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 Message = require(path.join(__dirname + "/../api/message"));
|
||||||
const config = require(path.join(__dirname + "/../config/defaults/push"));
|
|
||||||
const VirtualWinner = require(path.join(
|
const VirtualWinner = require(path.join(
|
||||||
__dirname + "/../schemas/VirtualWinner"
|
__dirname + "/../schemas/VirtualWinner"
|
||||||
));
|
));
|
||||||
@@ -17,9 +16,6 @@ const Wine = require(path.join(__dirname + "/../schemas/Wine"));
|
|||||||
const PreLotteryWine = require(path.join(
|
const PreLotteryWine = require(path.join(
|
||||||
__dirname + "/../schemas/PreLotteryWine"
|
__dirname + "/../schemas/PreLotteryWine"
|
||||||
));
|
));
|
||||||
const lotteryConfig = require(path.join(
|
|
||||||
__dirname + "/../config/defaults/lottery"
|
|
||||||
));
|
|
||||||
|
|
||||||
router.use((req, res, next) => {
|
router.use((req, res, next) => {
|
||||||
next();
|
next();
|
||||||
@@ -31,7 +27,6 @@ router.route("/winner/:id").get((req, res) => {
|
|||||||
|
|
||||||
router.route("/:id").get(async (req, res) => {
|
router.route("/:id").get(async (req, res) => {
|
||||||
let id = req.params.id;
|
let id = req.params.id;
|
||||||
|
|
||||||
let foundWinner = await VirtualWinner.findOne({ id: id });
|
let foundWinner = await VirtualWinner.findOne({ id: id });
|
||||||
|
|
||||||
if (!foundWinner) {
|
if (!foundWinner) {
|
||||||
@@ -80,6 +75,7 @@ router.route("/:id").post(async (req, res) => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let date = new Date();
|
let date = new Date();
|
||||||
|
date.setHours(5, 0, 0, 0);
|
||||||
|
|
||||||
let prelotteryWine = await PreLotteryWine.findOne({ name: wineName });
|
let prelotteryWine = await PreLotteryWine.findOne({ name: wineName });
|
||||||
|
|
||||||
@@ -140,33 +136,99 @@ router.route("/:id").post(async (req, res) => {
|
|||||||
|
|
||||||
await foundWinner.delete();
|
await foundWinner.delete();
|
||||||
|
|
||||||
|
let prelotteryWine = await PreLotteryWine.find();
|
||||||
let nextWinner = await VirtualWinner.find().sort({ timestamp_drawn: 1 });
|
let nextWinner = await VirtualWinner.find().sort({ timestamp_drawn: 1 });
|
||||||
if (nextWinner.length > 0) {
|
if (nextWinner.length > 1 && prelotteryWine.length > 1) {
|
||||||
Message.sendMessage(nextWinner[0]);
|
Message.sendMessage(nextWinner[0]);
|
||||||
|
startTimeout(id);
|
||||||
|
} else if (nextWinner.length == 1 && prelotteryWine.length == 1) {
|
||||||
|
chooseForUser(nextWinner[0], prelotteryWine[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
startTimeout(id);
|
|
||||||
|
|
||||||
res.json({
|
res.json({
|
||||||
success: true
|
success: true
|
||||||
});
|
});
|
||||||
return;
|
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) {
|
function startTimeout(id) {
|
||||||
|
console.log(`Starting timeout for user ${id}.`);
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
let virtualWinner = await VirtualWinner.findOne({ id: id });
|
let virtualWinner = await VirtualWinner.findOne({ id: id });
|
||||||
if (!virtualWinner) {
|
if (!virtualWinner) {
|
||||||
|
console.log(
|
||||||
|
`Timeout done for user ${id}, but user has already sent data.`
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
console.log(`Timeout done for user ${id}, sending update to user.`);
|
||||||
|
|
||||||
Message.sendMessageTooLate(virtualWinner);
|
Message.sendMessageTooLate(virtualWinner);
|
||||||
|
|
||||||
virtualWinner.timestamp_drawn;
|
virtualWinner.timestamp_drawn = new Date().getTime();
|
||||||
virtualWinner.timestamp_limit = null;
|
virtualWinner.timestamp_limit = null;
|
||||||
virtualWinner.timestamp_sent = null;
|
virtualWinner.timestamp_sent = null;
|
||||||
|
|
||||||
await virtualWinner.save();
|
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);
|
}, 600000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user