From e7960c217cea42ab0fef675561f829e06f889504 Mon Sep 17 00:00:00 2001 From: Josh Harvey Date: Fri, 6 May 2016 14:37:28 +0300 Subject: [PATCH] WIP --- lib/plugins.js | 4 +++- lib/postgresql_interface.js | 17 ++++++++++++++++- lib/routes.js | 4 ++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/lib/plugins.js b/lib/plugins.js index 1d242a57..f5dccecb 100644 --- a/lib/plugins.js +++ b/lib/plugins.js @@ -759,4 +759,6 @@ exports.fetchTx = function fetchTx (session, status) { }) } -exports.fetchTx = function fetchTx (session, status) { +exports.requestDispense = function requestDispense (session, tx) { + return db.addDispenseRequest(session.fingerprint, tx) +} diff --git a/lib/postgresql_interface.js b/lib/postgresql_interface.js index 27f0298f..8c80d205 100644 --- a/lib/postgresql_interface.js +++ b/lib/postgresql_interface.js @@ -530,6 +530,22 @@ exports.fetchTx = function fetchTx (session, cb) { }) } +exports.addDispenseRequest = function addDispenseRequest (session, tx, cb) { + connect(function (cerr, client, done) { + if (cerr) return + + const originalSession = {id: tx.sessionId, fingerprint: session.fingerprint} + async.waterfall([ + async.apply(updateDispense, client, true), + async.apply(insertIncoming, client, originalSession, tx, 0, tx.fiat, + 'dispense', 'pending') + ], function (err) { + done() + if (err) logger.error(err) + }) + }) +} + function updateDispense (client, session, dispensed, cb) { var sql = 'UPDATE transactions SET dispense=$1 ' + 'WHERE stage=$2 AND authority=$3 AND device_fingerprint=$4 AND session_id=$5' @@ -557,7 +573,6 @@ exports.addDispense = function addDispense (session, tx, cartridges) { if (cerr) return async.waterfall([ - async.apply(updateDispense, client, true), async.apply(insertIncoming, client, session, tx, 0, tx.fiat, 'dispense', 'authorized'), async.apply(insertDispense, client, session, tx, cartridges) diff --git a/lib/routes.js b/lib/routes.js index 377cfa6a..5033218e 100644 --- a/lib/routes.js +++ b/lib/routes.js @@ -256,8 +256,8 @@ function waitForDispense (req, res) { } function dispense (req, res) { - const originalSessionId = req.query['original-session-id'] - return plugins.addDispense(session(req).fingerprint, originalSessionId) + const tx = req.body.tx + return plugins.requestDispense(session(req), tx) .then(() => res.send(200)) .catch(err => { logger.error(err)