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,
|
cassette2: r.cassette2,
|
||||||
cassette3: r.cassette3,
|
cassette3: r.cassette3,
|
||||||
cassette4: r.cassette4,
|
cassette4: r.cassette4,
|
||||||
|
numberOfCassettes: r.number_of_cassettes,
|
||||||
version: r.version,
|
version: r.version,
|
||||||
model: r.model,
|
model: r.model,
|
||||||
pairedAt: new Date(r.created),
|
pairedAt: new Date(r.created),
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,7 @@ const typeDefs = gql`
|
||||||
cassette2: Int
|
cassette2: Int
|
||||||
cassette3: Int
|
cassette3: Int
|
||||||
cassette4: Int
|
cassette4: Int
|
||||||
|
numberOfCassettes: Int
|
||||||
statuses: [MachineStatus]
|
statuses: [MachineStatus]
|
||||||
latestEvent: MachineEvent
|
latestEvent: MachineEvent
|
||||||
downloadSpeed: String
|
downloadSpeed: String
|
||||||
|
|
|
||||||
|
|
@ -20,16 +20,16 @@ function unpair (deviceId) {
|
||||||
return Promise.all([db.none(sql, [deviceId]), db.none(deleteMachinePings, [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)
|
return pullToken(token)
|
||||||
.then(r => {
|
.then(r => {
|
||||||
if (r.expired) return false
|
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)
|
on conflict (device_id)
|
||||||
do update set paired=TRUE, display=TRUE`
|
do update set paired=TRUE, display=TRUE`
|
||||||
|
|
||||||
return db.none(insertSql, [deviceId, r.name])
|
return db.none(insertSql, [deviceId, r.name, numOfCassettes])
|
||||||
.then(() => true)
|
.then(() => true)
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,7 @@ function checkHasLightning (settings) {
|
||||||
function poll (req, res, next) {
|
function poll (req, res, next) {
|
||||||
const machineVersion = req.query.version
|
const machineVersion = req.query.version
|
||||||
const machineModel = req.query.model
|
const machineModel = req.query.model
|
||||||
|
const numOfCassettes = req.query.numOfCassettes
|
||||||
const deviceId = req.deviceId
|
const deviceId = req.deviceId
|
||||||
const deviceTime = req.deviceTime
|
const deviceTime = req.deviceTime
|
||||||
const serialNumber = req.query.sn
|
const serialNumber = req.query.sn
|
||||||
|
|
@ -417,8 +418,9 @@ function pair (req, res, next) {
|
||||||
const token = req.query.token
|
const token = req.query.token
|
||||||
const deviceId = req.deviceId
|
const deviceId = req.deviceId
|
||||||
const model = req.query.model
|
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 => {
|
.then(valid => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
return res.json({ status: 'paired' })
|
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_3 INTEGER',
|
||||||
'ALTER TABLE cash_out_txs ADD COLUMN provisioned_4 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_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()])
|
return Promise.all([loadLatest(), getMachines()])
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,7 @@ const GET_MACHINES_AND_CONFIG = gql`
|
||||||
cassette2
|
cassette2
|
||||||
cassette3
|
cassette3
|
||||||
cassette4
|
cassette4
|
||||||
|
numberOfCassettes
|
||||||
}
|
}
|
||||||
config
|
config
|
||||||
}
|
}
|
||||||
|
|
@ -160,87 +161,39 @@ const CashCassettes = () => {
|
||||||
inputProps: {
|
inputProps: {
|
||||||
decimalPlaces: 0
|
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 (
|
return (
|
||||||
<>
|
<>
|
||||||
<TitleSection title="Cash Cassettes" />
|
<TitleSection title="Cash Cassettes" />
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue