feat: add refillUnit route flow

This commit is contained in:
Sérgio Salgado 2023-05-04 18:49:15 +01:00
parent 45f722e724
commit 460a8cf1fd
2 changed files with 44 additions and 3 deletions

View file

@ -238,8 +238,49 @@ function emptyMachineUnits ({ deviceId, newUnits, fiatCode }) {
})
}
function refillMachineUnits ({deviceId, newUnits}) {
return Promise.resolve()
function refillMachineUnits ({ deviceId, newUnits }) {
return getMachine(deviceId)
.then(machine => {
const movedBills = _.reduce(
(acc, value) => ({
...acc,
[value]: {
operationName: `cash-${_.replace(/(stacker)/g, '$1-')(value)}-refill`,
delta: newUnits[value] - machine.cashUnits[value]
}
}),
{},
_.keys(newUnits)
)
const operationNames = _.mapValues(it => it.operationName)(_.filter(it => Math.abs(it.delta) > 0)(_.omit(['cassette1', 'cassette2', 'cassette3', 'cassette4'], movedBills)))
const operationsToCreate = _.map(it => ({
id: uuid.v4(),
device_id: deviceId,
operation_type: it
}))(operationNames)
return db.tx(t => {
const q1Cols = ['id', 'device_id', 'operation_type']
const q1= t.none(pgp.helpers.insert(operationsToCreate, q1Cols, 'cash_unit_operation'))
const q2 = t.none(`UPDATE devices SET cashbox=$1, cassette1=$2, cassette2=$3, cassette3=$4, cassette4=$5, stacker1f=$6, stacker1r=$7, stacker2f=$8, stacker2r=$9, stacker3f=$10, stacker3r=$11 WHERE device_id=$12`, [
_.defaultTo(machine.cashUnits.cashbox, newUnits.cashbox),
_.defaultTo(machine.cashUnits.cassette1, newUnits.cassette1),
_.defaultTo(machine.cashUnits.cassette2, newUnits.cassette2),
_.defaultTo(machine.cashUnits.cassette3, newUnits.cassette3),
_.defaultTo(machine.cashUnits.cassette4, newUnits.cassette4),
_.defaultTo(machine.cashUnits.stacker1f, newUnits.stacker1f),
_.defaultTo(machine.cashUnits.stacker1r, newUnits.stacker1r),
_.defaultTo(machine.cashUnits.stacker2f, newUnits.stacker2f),
_.defaultTo(machine.cashUnits.stacker2r, newUnits.stacker2r),
_.defaultTo(machine.cashUnits.stacker3f, newUnits.stacker3f),
_.defaultTo(machine.cashUnits.stacker3r, newUnits.stacker3r),
deviceId
])
return t.batch([q1, q2])
})
})
}
function unpair (rec) {

View file

@ -13,7 +13,7 @@ const emptyUnitUpdateCounts = (req, res, next) => {
const refillUnitUpdateCounts = (req, res, next) => {
const deviceId = req.deviceId
const newUnits = req.body.newUnits
const { units: newUnits } = req.body
return refillMachineUnits({ deviceId, newUnits: newUnits })
.then(() => res.status(200).send({ status: 'OK' }))