From 1b1a99ccc385e5f8cbe1f0e1515d9cac3c0d1cab Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Tue, 26 Jan 2021 22:43:18 +0100 Subject: [PATCH] Linting and more clear function names. --- api/message.js | 123 +++++++++++++++++++++++++------------------------ 1 file changed, 62 insertions(+), 61 deletions(-) diff --git a/api/message.js b/api/message.js index e4faf26..15d42da 100644 --- a/api/message.js +++ b/api/message.js @@ -2,34 +2,50 @@ const https = require("https"); const path = require("path"); const config = require(path.join(__dirname + "/../config/defaults/lottery")); -const dateString = (date) => { - if (typeof(date) == "string") { +const dateString = date => { + if (typeof date == "string") { date = new Date(date); } - const ye = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(date) - const mo = new Intl.DateTimeFormat('en', { month: '2-digit' }).format(date) - const da = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(date) + const ye = new Intl.DateTimeFormat("en", { year: "numeric" }).format(date); + const mo = new Intl.DateTimeFormat("en", { month: "2-digit" }).format(date); + const da = new Intl.DateTimeFormat("en", { day: "2-digit" }).format(date); - return `${da}-${mo}-${ye}` + return `${da}-${mo}-${ye}`; +}; + +async function sendInitialMessageToWinners(winners) { + const numbers = winners.map(winner => ({ msisdn: `47${winner.phoneNumber}` })); + + const body = { + sender: "Vinlottis", + message: "Gratulerer som vinner av vinlottisen! Du vil snart få en SMS med oppdatering om hvordan gangen går!", + recipients: numbers + }; + + return gatewayRequest(body); } -async function sendWineSelectMessage(winnerObject) { - winnerObject.timestamp_sent = new Date().getTime(); - winnerObject.timestamp_limit = new Date().getTime() * 600000; - await winnerObject.save(); +async function sendPrizeSelectionLink(winner) { + winner.timestamp_sent = new Date().getTime(); + winner.timestamp_limit = new Date().getTime() + 1000 * 600; + await winner.save(); - let url = new URL(`/#/winner/${winnerObject.id}`, "https://lottis.vin"); + const { id, name, phoneNumber } = winner; + const url = new URL(`/#/winner/${id}`, "https://lottis.vin"); + const message = `Gratulerer som heldig vinner av vinlotteriet ${name}! Her er linken for \ +å velge hva slags vin du vil ha, du har 10 minutter på å velge ut noe før du blir lagt bakerst \ +i køen. ${url.href}. (Hvis den siden kommer opp som tom må du prøve å refreshe siden noen ganger.`; - return sendMessageToUser( - winnerObject.phoneNumber, - `Gratulerer som heldig vinner av vinlotteriet ${winnerObject.name}! Her er linken for å velge hva slags vin du vil ha, du har 10 minutter på å velge ut noe før du blir lagt bakerst i køen. ${url.href}. (Hvis den siden kommer opp som tom må du prøve å refreshe siden noen ganger.)` - ) + return sendMessageToNumber(phoneNumber, message); } async function sendWineConfirmation(winnerObject, wineObject, date) { date = dateString(date); - return sendMessageToUser(winnerObject.phoneNumber, - `Bekreftelse på din vin ${ winnerObject.name }.\nDato vunnet: ${ date }.\nVin valgt: ${ wineObject.name }.\nDu vil bli kontaktet av ${ config.name } ang henting. Ha en ellers fin helg!`) + return sendMessageToNumber( + winnerObject.phoneNumber, + `Bekreftelse på din vin ${winnerObject.name}.\nDato vunnet: ${date}.\nVin valgt: ${wineObject.name}.\ +\nDu vil bli kontaktet av ${config.name} ang henting. Ha en ellers fin helg!` + ); } async function sendLastWinnerMessage(winnerObject, wineObject) { @@ -38,84 +54,69 @@ async function sendLastWinnerMessage(winnerObject, wineObject) { winnerObject.timestamp_limit = new Date().getTime(); await winnerObject.save(); - return sendMessageToUser( + return sendMessageToNumber( winnerObject.phoneNumber, - `Gratulerer som heldig vinner av vinlotteriet ${winnerObject.name}! Du har vunnet vinen ${wineObject.name}, du vil bli kontaktet av ${ config.name } ang henting. Ha en ellers fin helg!` + `Gratulerer som heldig vinner av vinlotteriet ${winnerObject.name}! Du har vunnet vinen ${wineObject.name}, \ +du vil bli kontaktet av ${config.name} ang henting. Ha en ellers fin helg!` ); } async function sendWineSelectMessageTooLate(winnerObject) { - return sendMessageToUser( + return sendMessageToNumber( winnerObject.phoneNumber, - `Hei ${winnerObject.name}, du har dessverre brukt mer enn 10 minutter på å velge premie og blir derfor puttet bakerst i køen. Du vil få en ny SMS når det er din tur igjen.` + `Hei ${winnerObject.name}, du har dessverre brukt mer enn 10 minutter på å velge premie og blir derfor \ +puttet bakerst i køen. Du vil få en ny SMS når det er din tur igjen.` ); } -async function sendMessageToUser(phoneNumber, message) { - console.log(`Attempting to send message to ${ phoneNumber }.`) +async function sendMessageToNumber(phoneNumber, message) { + console.log(`Attempting to send message to ${phoneNumber}.`); const body = { sender: "Vinlottis", message: message, - recipients: [{ msisdn: `47${ phoneNumber }`}] + recipients: [{ msisdn: `47${phoneNumber}` }] }; return gatewayRequest(body); } - -async function sendInitialMessageToWinners(winners) { - let numbers = []; - for (let i = 0; i < winners.length; i++) { - numbers.push({ msisdn: `47${winners[i].phoneNumber}` }); - } - - const body = { - sender: "Vinlottis", - message: - "Gratulerer som vinner av vinlottisen! Du vil snart få en SMS med oppdatering om hvordan gangen går!", - recipients: numbers - } - - return gatewayRequest(body); -} - async function gatewayRequest(body) { return new Promise((resolve, reject) => { const options = { hostname: "gatewayapi.com", post: 443, - path: `/rest/mtsms?token=${ config.gatewayToken }`, + path: `/rest/mtsms?token=${config.gatewayToken}`, method: "POST", headers: { "Content-Type": "application/json" } - } + }; - const req = https.request(options, (res) => { - console.log(`statusCode: ${ res.statusCode }`); - console.log(`statusMessage: ${ res.statusMessage }`); + const req = https.request(options, res => { + console.log(`statusCode: ${res.statusCode}`); + console.log(`statusMessage: ${res.statusMessage}`); - res.setEncoding('utf8'); + res.setEncoding("utf8"); if (res.statusCode == 200) { - res.on("data", (data) => { - console.log("Response from message gateway:", data) + res.on("data", data => { + console.log("Response from message gateway:", data); - resolve(JSON.parse(data)) + resolve(JSON.parse(data)); }); } else { - res.on("data", (data) => { + res.on("data", data => { data = JSON.parse(data); - return reject('Gateway error: ' + data['message'] || data) + return reject("Gateway error: " + data["message"] || data); }); } - }) + }); - req.on("error", (error) => { - console.error(`Error from sms service: ${ error }`); - reject(`Error from sms service: ${ error }`); - }) + req.on("error", error => { + console.error(`Error from sms service: ${error}`); + reject(`Error from sms service: ${error}`); + }); req.write(JSON.stringify(body)); req.end(); @@ -123,9 +124,9 @@ async function gatewayRequest(body) { } module.exports = { - sendWineSelectMessage, + sendInitialMessageToWinners, + sendPrizeSelectionLink, sendWineConfirmation, sendLastWinnerMessage, - sendWineSelectMessageTooLate, - sendInitialMessageToWinners -} + sendWineSelectMessageTooLate +};