refactor: move sms receipt content to server
This commit is contained in:
parent
1d2f526c1d
commit
9506b98b47
2 changed files with 53 additions and 5 deletions
|
|
@ -119,10 +119,12 @@ function updateTxCustomerPhoto (req, res, next) {
|
||||||
|
|
||||||
function sendSmsReceipt (req, res, next) {
|
function sendSmsReceipt (req, res, next) {
|
||||||
const receiptOptions = _.omit(['active', 'sms'], configManager.getReceipt(req.settings.config))
|
const receiptOptions = _.omit(['active', 'sms'], configManager.getReceipt(req.settings.config))
|
||||||
const smsRequest = sms.formatSmsRequest(req.body.data, receiptOptions)
|
sms.buildSms(req.body.data, receiptOptions)
|
||||||
sms.sendMessage(req.settings, smsRequest)
|
.then(smsRequest => {
|
||||||
.then(() => respond(req, res, {}))
|
sms.sendMessage(req.settings, smsRequest)
|
||||||
.catch(next)
|
.then(() => respond(req, res, {}))
|
||||||
|
.catch(next)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
router.patch('/:id', updateCustomer)
|
router.patch('/:id', updateCustomer)
|
||||||
|
|
|
||||||
48
lib/sms.js
48
lib/sms.js
|
|
@ -1,5 +1,11 @@
|
||||||
|
const { BigNumber } = require('bignumber.js')
|
||||||
const ph = require('./plugin-helper')
|
const ph = require('./plugin-helper')
|
||||||
const argv = require('minimist')(process.argv.slice(2))
|
const argv = require('minimist')(process.argv.slice(2))
|
||||||
|
const { getTx } = require('./new-admin/services/transactions.js')
|
||||||
|
const { getCustomerById } = require('./customers')
|
||||||
|
const configManager = require('./new-config-manager')
|
||||||
|
const machineLoader = require('./machine-loader')
|
||||||
|
const { utils: coinUtils } = require('lamassu-coins')
|
||||||
|
|
||||||
function getPlugin (settings) {
|
function getPlugin (settings) {
|
||||||
const pluginCode = argv.mockSms ? 'mock-sms' : 'twilio'
|
const pluginCode = argv.mockSms ? 'mock-sms' : 'twilio'
|
||||||
|
|
@ -24,6 +30,46 @@ function getLookup (settings, number) {
|
||||||
return plugin.getLookup(account, number)
|
return plugin.getLookup(account, number)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const toCryptoUnits = (cryptoAtoms, cryptoCode) => {
|
||||||
|
const unitScale = coinUtils.getCryptoCurrency(cryptoCode).unitScale
|
||||||
|
return cryptoAtoms.shift(-unitScale)
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildSms (data, receiptOptions) {
|
||||||
|
return getTx(data.session, data.txClass)
|
||||||
|
.then(tx => {
|
||||||
|
Promise.all([getCustomerById(tx.customer_id), machineLoader.getConfig(), machineLoader.getMachine()])
|
||||||
|
.then(([customer, config, deviceConfig]) => {
|
||||||
|
const localeConfig = configManager.getLocale(tx.device_id, config)
|
||||||
|
const timezone = localeConfig.timezone.split(':')
|
||||||
|
const dstOffset = timezone[1]
|
||||||
|
|
||||||
|
const cashInCommission = BigNumber(1).add(BigNumber(tx.commissionPercentage))
|
||||||
|
|
||||||
|
const rate = BigNumber(tx.rawTickerPrice).mul(cashInCommission).round(2)
|
||||||
|
const date = new Date()
|
||||||
|
date.setMinutes(date.getMinutes() + parseInt(dstOffset))
|
||||||
|
const dateString = `${date.toISOString().replace('T', ' ').slice(0, 19)}`
|
||||||
|
|
||||||
|
const data = {
|
||||||
|
operatorInfo: configManager.getOperatorInfo(config),
|
||||||
|
location: deviceConfig.machineLocation,
|
||||||
|
customerName: customer.name,
|
||||||
|
customerPhone: customer.phone,
|
||||||
|
session: tx.id,
|
||||||
|
time: dateString,
|
||||||
|
direction: tx.direction === 'cashIn' ? 'Cash-in' : 'Cash-out',
|
||||||
|
fiat: `${tx.fiat.toString()} ${tx.fiatCode}`,
|
||||||
|
crypto: `${toCryptoUnits(tx.cryptoAtoms, tx.cryptoCode)} ${tx.cryptoCode}`,
|
||||||
|
rate: `1 ${tx.cryptoCode} = ${rate} ${tx.fiatCode}`,
|
||||||
|
address: tx.toAddress,
|
||||||
|
txId: tx.txHash
|
||||||
|
}
|
||||||
|
|
||||||
|
return formatSmsReceipt(data, receiptOptions)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
function formatSmsReceipt (data, options) {
|
function formatSmsReceipt (data, options) {
|
||||||
var message = `RECEIPT\n`
|
var message = `RECEIPT\n`
|
||||||
|
|
@ -86,4 +132,4 @@ function formatSmsReceipt (data, options) {
|
||||||
return request
|
return request
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = { sendMessage, formatSmsReceipt, getLookup }
|
module.exports = { sendMessage, formatSmsReceipt, getLookup, buildSms }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue