Linting and more clear function names.
This commit is contained in:
123
api/message.js
123
api/message.js
@@ -2,34 +2,50 @@ const https = require("https");
|
|||||||
const path = require("path");
|
const path = require("path");
|
||||||
const config = require(path.join(__dirname + "/../config/defaults/lottery"));
|
const config = require(path.join(__dirname + "/../config/defaults/lottery"));
|
||||||
|
|
||||||
const dateString = (date) => {
|
const dateString = date => {
|
||||||
if (typeof(date) == "string") {
|
if (typeof date == "string") {
|
||||||
date = new Date(date);
|
date = new Date(date);
|
||||||
}
|
}
|
||||||
const ye = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(date)
|
const ye = new Intl.DateTimeFormat("en", { year: "numeric" }).format(date);
|
||||||
const mo = new Intl.DateTimeFormat('en', { month: '2-digit' }).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 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) {
|
async function sendPrizeSelectionLink(winner) {
|
||||||
winnerObject.timestamp_sent = new Date().getTime();
|
winner.timestamp_sent = new Date().getTime();
|
||||||
winnerObject.timestamp_limit = new Date().getTime() * 600000;
|
winner.timestamp_limit = new Date().getTime() + 1000 * 600;
|
||||||
await winnerObject.save();
|
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(
|
return sendMessageToNumber(phoneNumber, message);
|
||||||
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.)`
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function sendWineConfirmation(winnerObject, wineObject, date) {
|
async function sendWineConfirmation(winnerObject, wineObject, date) {
|
||||||
date = dateString(date);
|
date = dateString(date);
|
||||||
return sendMessageToUser(winnerObject.phoneNumber,
|
return sendMessageToNumber(
|
||||||
`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!`)
|
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) {
|
async function sendLastWinnerMessage(winnerObject, wineObject) {
|
||||||
@@ -38,84 +54,69 @@ async function sendLastWinnerMessage(winnerObject, wineObject) {
|
|||||||
winnerObject.timestamp_limit = new Date().getTime();
|
winnerObject.timestamp_limit = new Date().getTime();
|
||||||
await winnerObject.save();
|
await winnerObject.save();
|
||||||
|
|
||||||
return sendMessageToUser(
|
return sendMessageToNumber(
|
||||||
winnerObject.phoneNumber,
|
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) {
|
async function sendWineSelectMessageTooLate(winnerObject) {
|
||||||
return sendMessageToUser(
|
return sendMessageToNumber(
|
||||||
winnerObject.phoneNumber,
|
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) {
|
async function sendMessageToNumber(phoneNumber, message) {
|
||||||
console.log(`Attempting to send message to ${ phoneNumber }.`)
|
console.log(`Attempting to send message to ${phoneNumber}.`);
|
||||||
|
|
||||||
const body = {
|
const body = {
|
||||||
sender: "Vinlottis",
|
sender: "Vinlottis",
|
||||||
message: message,
|
message: message,
|
||||||
recipients: [{ msisdn: `47${ phoneNumber }`}]
|
recipients: [{ msisdn: `47${phoneNumber}` }]
|
||||||
};
|
};
|
||||||
|
|
||||||
return gatewayRequest(body);
|
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) {
|
async function gatewayRequest(body) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const options = {
|
const options = {
|
||||||
hostname: "gatewayapi.com",
|
hostname: "gatewayapi.com",
|
||||||
post: 443,
|
post: 443,
|
||||||
path: `/rest/mtsms?token=${ config.gatewayToken }`,
|
path: `/rest/mtsms?token=${config.gatewayToken}`,
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/json"
|
"Content-Type": "application/json"
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
const req = https.request(options, (res) => {
|
const req = https.request(options, res => {
|
||||||
console.log(`statusCode: ${ res.statusCode }`);
|
console.log(`statusCode: ${res.statusCode}`);
|
||||||
console.log(`statusMessage: ${ res.statusMessage }`);
|
console.log(`statusMessage: ${res.statusMessage}`);
|
||||||
|
|
||||||
res.setEncoding('utf8');
|
res.setEncoding("utf8");
|
||||||
|
|
||||||
if (res.statusCode == 200) {
|
if (res.statusCode == 200) {
|
||||||
res.on("data", (data) => {
|
res.on("data", data => {
|
||||||
console.log("Response from message gateway:", data)
|
console.log("Response from message gateway:", data);
|
||||||
|
|
||||||
resolve(JSON.parse(data))
|
resolve(JSON.parse(data));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
res.on("data", (data) => {
|
res.on("data", data => {
|
||||||
data = JSON.parse(data);
|
data = JSON.parse(data);
|
||||||
return reject('Gateway error: ' + data['message'] || data)
|
return reject("Gateway error: " + data["message"] || data);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
req.on("error", (error) => {
|
req.on("error", error => {
|
||||||
console.error(`Error from sms service: ${ error }`);
|
console.error(`Error from sms service: ${error}`);
|
||||||
reject(`Error from sms service: ${ error }`);
|
reject(`Error from sms service: ${error}`);
|
||||||
})
|
});
|
||||||
|
|
||||||
req.write(JSON.stringify(body));
|
req.write(JSON.stringify(body));
|
||||||
req.end();
|
req.end();
|
||||||
@@ -123,9 +124,9 @@ async function gatewayRequest(body) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
sendWineSelectMessage,
|
sendInitialMessageToWinners,
|
||||||
|
sendPrizeSelectionLink,
|
||||||
sendWineConfirmation,
|
sendWineConfirmation,
|
||||||
sendLastWinnerMessage,
|
sendLastWinnerMessage,
|
||||||
sendWineSelectMessageTooLate,
|
sendWineSelectMessageTooLate
|
||||||
sendInitialMessageToWinners
|
};
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user