Refactor/route separation #21

Merged
KevinMidboe merged 26 commits from refactor/routeSeparation into master 2020-09-06 14:00:12 +00:00
Showing only changes of commit 4f054a0437 - Show all commits

View File

@@ -1,92 +1,109 @@
const request = require("request"); 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"));
async function sendMessage(winnerObject) { async function sendWineSelectMessage(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();
let url = new URL(`/#/winner/${winnerObject.id}`, "https://lottis.vin"); let url = new URL(`/#/winner/${winnerObject.id}`, "https://lottis.vin");
await sendMessageToUser( return sendMessageToUser(
winnerObject.phoneNumber, 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.)` `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 true;
} }
async function sendWonWineMessage(winnerObject, wineObject) { async function sendLastWinnerMessage(winnerObject, wineObject) {
console.log( console.log(`User ${winnerObject.id} is only one left, chosing wine for him/her.`);
`User ${winnerObject.id} is only one left, chosing wine for him/her.`
);
winnerObject.timestamp_sent = new Date().getTime(); winnerObject.timestamp_sent = new Date().getTime();
winnerObject.timestamp_limit = new Date().getTime(); winnerObject.timestamp_limit = new Date().getTime();
await winnerObject.save(); await winnerObject.save();
await sendMessageToUser( return sendMessageToUser(
winnerObject.phoneNumber, 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!` `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 sendWineSelectMessageTooLate(winnerObject) {
await sendMessageToUser( return sendMessageToUser(
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 sendMessageToUser(phoneNumber, message) {
try { console.log(`Attempting to send message to ${ phoneNumber }.`)
request.post(
{ const body = {
url: `https://gatewayapi.com/rest/mtsms?token=${config.gatewayToken}`, sender: "Vinlottis",
json: true, message: message,
body: { recipients: [{ msisdn: `47${ phoneNumber }`}]
sender: "Vinlottis", };
message: message,
recipients: [{ msisdn: `47${phoneNumber}` }] return gatewayRequest(body);
}
},
function(err, r, body) {
console.log(err ? err : body);
if(err) {
console.log(phoneNumber, message);
}
}
);
} catch(e) {
console.log(phoneNumber, message);
}
} }
async function sendUpdate(winners) {
async function sendInitialMessageToWinners(winners) {
let numbers = []; let numbers = [];
for (let i = 0; i < winners.length; i++) { for (let i = 0; i < winners.length; i++) {
numbers.push({ msisdn: `47${winners[i].phoneNumber}` }); numbers.push({ msisdn: `47${winners[i].phoneNumber}` });
} }
request.post(
{ const body = {
url: `https://gatewayapi.com/rest/mtsms?token=${config.gatewayToken}`, sender: "Vinlottis",
json: true, message:
body: { "Gratulerer som vinner av vinlottisen! Du vil snart få en SMS med oppdatering om hvordan gangen går!",
sender: "Vinlottis", recipients: numbers
message: }
"Gratulerer som vinner av vinlottisen! Du vil snart få en SMS med oppdatering om hvordan gangen går!",
recipients: numbers return gatewayRequest(body);
}
},
function(err, r, body) {
console.log(err ? err : body);
}
);
} }
module.exports.sendUpdate = sendUpdate; async function gatewayRequest(body) {
module.exports.sendMessage = sendMessage; return new Promise((resolve, reject) => {
module.exports.sendMessageTooLate = sendMessageTooLate; const options = {
module.exports.sendWonWineMessage = sendWonWineMessage; hostname: "gatewayapi.com",
post: 443,
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 }`);
res.setEncoding('utf8');
if (res.statusCode == 200) {
res.on("data", (d) => resolve(JSON.parse(d)));
} else {
res.on("data", (data) => {
data = JSON.parse(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.write(JSON.stringify(body));
req.end();
});
}
module.exports = {
sendWineSelectMessage,
sendLastWinnerMessage,
sendWineSelectMessageTooLate,
sendInitialMessageToWinners
}