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