63 lines
1.5 KiB
JavaScript
63 lines
1.5 KiB
JavaScript
const _ = require('lodash/fp')
|
|
const pgp = require('pg-promise')()
|
|
|
|
module.exports = { logDispense, logActionById, logAction, logError }
|
|
|
|
function logDispense(t, tx) {
|
|
const baseRec = { error: tx.error, error_code: tx.errorCode }
|
|
const rec = _.merge(mapDispense(tx), baseRec)
|
|
const action = _.isEmpty(tx.error) ? 'dispense' : 'dispenseError'
|
|
return logAction(t, action, rec, tx)
|
|
}
|
|
|
|
function logActionById(t, action, _rec, txId) {
|
|
const rec = _.assign(_rec, { action, tx_id: txId, redeem: false })
|
|
const sql = pgp.helpers.insert(rec, null, 'cash_out_actions')
|
|
|
|
return t.none(sql)
|
|
}
|
|
|
|
function logAction(t, action, _rec, tx) {
|
|
const rec = _.assign(_rec, {
|
|
action,
|
|
tx_id: tx.id,
|
|
redeem: !!tx.redeem,
|
|
device_id: tx.deviceId,
|
|
})
|
|
const sql = pgp.helpers.insert(rec, null, 'cash_out_actions')
|
|
|
|
return t.none(sql).then(_.constant(tx))
|
|
}
|
|
|
|
function logError(t, action, err, tx) {
|
|
return logAction(
|
|
t,
|
|
action,
|
|
{
|
|
error: err.message,
|
|
error_code: err.name,
|
|
},
|
|
tx,
|
|
)
|
|
}
|
|
|
|
function mapDispense(tx) {
|
|
const bills = tx.bills
|
|
|
|
if (_.isEmpty(bills)) return {}
|
|
|
|
const res = {}
|
|
|
|
_.forEach(
|
|
it => {
|
|
const suffix = _.snakeCase(bills[it].name.replace(/cassette/gi, ''))
|
|
res[`provisioned_${suffix}`] = bills[it].provisioned
|
|
res[`denomination_${suffix}`] = bills[it].denomination
|
|
res[`dispensed_${suffix}`] = bills[it].dispensed
|
|
res[`rejected_${suffix}`] = bills[it].rejected
|
|
},
|
|
_.times(_.identity(), _.size(bills)),
|
|
)
|
|
|
|
return res
|
|
}
|