feat: receive numberOfCassettes from machine
feat: save numberOfCassettes on devices table feat: make CashCassettes dynamic with the number of cassettes
This commit is contained in:
parent
0a3b78f75e
commit
6d6c8adabd
6 changed files with 41 additions and 83 deletions
|
|
@ -25,6 +25,7 @@ function getMachines () {
|
|||
cassette2: r.cassette2,
|
||||
cassette3: r.cassette3,
|
||||
cassette4: r.cassette4,
|
||||
numberOfCassettes: r.number_of_cassettes,
|
||||
version: r.version,
|
||||
model: r.model,
|
||||
pairedAt: new Date(r.created),
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@ const typeDefs = gql`
|
|||
cassette2: Int
|
||||
cassette3: Int
|
||||
cassette4: Int
|
||||
numberOfCassettes: Int
|
||||
statuses: [MachineStatus]
|
||||
latestEvent: MachineEvent
|
||||
downloadSpeed: String
|
||||
|
|
|
|||
|
|
@ -20,16 +20,16 @@ function unpair (deviceId) {
|
|||
return Promise.all([db.none(sql, [deviceId]), db.none(deleteMachinePings, [deviceId])])
|
||||
}
|
||||
|
||||
function pair (token, deviceId, machineModel) {
|
||||
function pair (token, deviceId, machineModel, numOfCassettes) {
|
||||
return pullToken(token)
|
||||
.then(r => {
|
||||
if (r.expired) return false
|
||||
|
||||
const insertSql = `insert into devices (device_id, name) values ($1, $2)
|
||||
const insertSql = `insert into devices (device_id, name, number_of_cassettes) values ($1, $2, $3)
|
||||
on conflict (device_id)
|
||||
do update set paired=TRUE, display=TRUE`
|
||||
|
||||
return db.none(insertSql, [deviceId, r.name])
|
||||
return db.none(insertSql, [deviceId, r.name, numOfCassettes])
|
||||
.then(() => true)
|
||||
})
|
||||
.catch(err => {
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ function checkHasLightning (settings) {
|
|||
function poll (req, res, next) {
|
||||
const machineVersion = req.query.version
|
||||
const machineModel = req.query.model
|
||||
const numOfCassettes = req.query.numOfCassettes
|
||||
const deviceId = req.deviceId
|
||||
const deviceTime = req.deviceTime
|
||||
const serialNumber = req.query.sn
|
||||
|
|
@ -417,8 +418,9 @@ function pair (req, res, next) {
|
|||
const token = req.query.token
|
||||
const deviceId = req.deviceId
|
||||
const model = req.query.model
|
||||
const numOfCassettes = req.query.numOfCassettes
|
||||
|
||||
return pairing.pair(token, deviceId, model)
|
||||
return pairing.pair(token, deviceId, model, numOfCassettes)
|
||||
.then(valid => {
|
||||
if (valid) {
|
||||
return res.json({ status: 'paired' })
|
||||
|
|
|
|||
|
|
@ -10,7 +10,8 @@ exports.up = function (next) {
|
|||
'ALTER TABLE cash_out_txs ADD COLUMN provisioned_3 INTEGER',
|
||||
'ALTER TABLE cash_out_txs ADD COLUMN provisioned_4 INTEGER',
|
||||
'ALTER TABLE cash_out_txs ADD COLUMN denomination_3 INTEGER',
|
||||
'ALTER TABLE cash_out_txs ADD COLUMN denomination_4 INTEGER'
|
||||
'ALTER TABLE cash_out_txs ADD COLUMN denomination_4 INTEGER',
|
||||
'ALTER TABLE devices ADD COLUMN number_of_cassettes INTEGER NOT NULL DEFAULT 2'
|
||||
]
|
||||
|
||||
return Promise.all([loadLatest(), getMachines()])
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@ const GET_MACHINES_AND_CONFIG = gql`
|
|||
cassette2
|
||||
cassette3
|
||||
cassette4
|
||||
numberOfCassettes
|
||||
}
|
||||
config
|
||||
}
|
||||
|
|
@ -160,87 +161,39 @@ const CashCassettes = () => {
|
|||
inputProps: {
|
||||
decimalPlaces: 0
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'cassette1',
|
||||
header: 'Cassette 1',
|
||||
width: 265,
|
||||
stripe: true,
|
||||
view: (value, { id }) => (
|
||||
<CashOut
|
||||
className={classes.cashbox}
|
||||
denomination={getCashoutSettings(id)?.cassette1}
|
||||
currency={{ code: fiatCurrency }}
|
||||
notes={value}
|
||||
/>
|
||||
),
|
||||
input: CashCassetteInput,
|
||||
inputProps: {
|
||||
decimalPlaces: 0
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'cassette2',
|
||||
header: 'Cassette 2',
|
||||
width: 265,
|
||||
stripe: true,
|
||||
view: (value, { id }) => {
|
||||
return (
|
||||
<CashOut
|
||||
className={classes.cashbox}
|
||||
denomination={getCashoutSettings(id)?.cassette2}
|
||||
currency={{ code: fiatCurrency }}
|
||||
notes={value}
|
||||
/>
|
||||
)
|
||||
},
|
||||
input: CashCassetteInput,
|
||||
inputProps: {
|
||||
decimalPlaces: 0
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'cassette3',
|
||||
header: 'Cassette 3',
|
||||
width: 265,
|
||||
stripe: true,
|
||||
view: (value, { id }) => {
|
||||
return (
|
||||
<CashOut
|
||||
className={classes.cashbox}
|
||||
denomination={getCashoutSettings(id)?.cassette3}
|
||||
currency={{ code: fiatCurrency }}
|
||||
notes={value}
|
||||
/>
|
||||
)
|
||||
},
|
||||
input: CashCassetteInput,
|
||||
inputProps: {
|
||||
decimalPlaces: 0
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'cassette4',
|
||||
header: 'Cassette 4',
|
||||
width: 265,
|
||||
stripe: true,
|
||||
view: (value, { id }) => {
|
||||
return (
|
||||
<CashOut
|
||||
className={classes.cashbox}
|
||||
denomination={getCashoutSettings(id)?.cassette4}
|
||||
currency={{ code: fiatCurrency }}
|
||||
notes={value}
|
||||
/>
|
||||
)
|
||||
},
|
||||
input: CashCassetteInput,
|
||||
inputProps: {
|
||||
decimalPlaces: 0
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
R.until(
|
||||
R.gt(R.__, Math.max(...R.map(it => it.numberOfCassettes, machines))),
|
||||
it => {
|
||||
elements.push({
|
||||
name: `cassette${it}`,
|
||||
header: `Cassette ${it}`,
|
||||
width: 265,
|
||||
stripe: true,
|
||||
view: (value, { id, numberOfCassettes }) => {
|
||||
return it > numberOfCassettes ? (
|
||||
<></>
|
||||
) : (
|
||||
<CashOut
|
||||
className={classes.cashbox}
|
||||
denomination={getCashoutSettings(id)?.[`cassette${it}`]}
|
||||
currency={{ code: fiatCurrency }}
|
||||
notes={value}
|
||||
/>
|
||||
)
|
||||
},
|
||||
input: CashCassetteInput,
|
||||
inputProps: {
|
||||
decimalPlaces: 0
|
||||
}
|
||||
})
|
||||
return R.add(1, it)
|
||||
},
|
||||
1
|
||||
)
|
||||
|
||||
return (
|
||||
<>
|
||||
<TitleSection title="Cash Cassettes" />
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue