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 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 | ||||
| }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user