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