diff --git a/lib/machine-loader.js b/lib/machine-loader.js
index 68748f5b..ac6853e2 100644
--- a/lib/machine-loader.js
+++ b/lib/machine-loader.js
@@ -43,6 +43,16 @@ function getMachines () {
.then(rr => rr.map(toMachineObject))
}
+function getUnpairedMachines () {
+ return db.any('SELECT * FROM unpaired_devices')
+ .then(_.map(r =>
+ _.flow(
+ _.set('deviceId', _.get('device_id', r)),
+ _.unset('device_id')
+ )(r)
+ ))
+}
+
function getConfig (defaultConfig) {
if (defaultConfig) return Promise.resolve(defaultConfig)
@@ -257,6 +267,7 @@ function getNetworkHeartbeatByDevice (deviceId) {
module.exports = {
getMachineName,
getMachines,
+ getUnpairedMachines,
getMachine,
getMachineNames,
setMachine,
diff --git a/lib/new-admin/graphql/resolvers/machine.resolver.js b/lib/new-admin/graphql/resolvers/machine.resolver.js
index 85521311..8c0cbe43 100644
--- a/lib/new-admin/graphql/resolvers/machine.resolver.js
+++ b/lib/new-admin/graphql/resolvers/machine.resolver.js
@@ -15,7 +15,8 @@ const resolvers = {
},
Query: {
machines: () => machineLoader.getMachineNames(),
- machine: (...[, { deviceId }]) => machineLoader.getMachine(deviceId)
+ machine: (...[, { deviceId }]) => machineLoader.getMachine(deviceId),
+ unpairedMachines: () => machineLoader.getUnpairedMachines()
},
Mutation: {
machineAction: (...[, { deviceId, action, cashbox, cassette1, cassette2, cassette3, cassette4, newName }, context]) =>
diff --git a/lib/new-admin/graphql/types/machine.type.js b/lib/new-admin/graphql/types/machine.type.js
index a51a33e4..da409d7b 100644
--- a/lib/new-admin/graphql/types/machine.type.js
+++ b/lib/new-admin/graphql/types/machine.type.js
@@ -27,6 +27,15 @@ const typeDef = gql`
packetLoss: String
}
+ type UnpairedMachine {
+ id: ID!
+ deviceId: ID!
+ name: String
+ model: String
+ paired: Date!
+ unpaired: Date!
+ }
+
type MachineEvent {
id: ID
deviceId: String
@@ -51,6 +60,7 @@ const typeDef = gql`
type Query {
machines: [Machine] @auth
machine(deviceId: ID!): Machine @auth
+ unpairedMachines: [UnpairedMachine!]! @auth
}
type Mutation {
diff --git a/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js b/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js
index f8a01e4d..4770792b 100644
--- a/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js
+++ b/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js
@@ -98,6 +98,10 @@ const GET_MACHINES_AND_CONFIG = gql`
cassette4
numberOfCassettes
}
+ unpairedMachines {
+ id: deviceId
+ name
+ }
config
bills(filters: $billFilters) {
id
@@ -160,6 +164,7 @@ const CashCassettes = () => {
const [machineId, setMachineId] = useState('')
const machines = R.path(['machines'])(data) ?? []
+ const unpairedMachines = R.path(['unpairedMachines'])(data) ?? []
const config = R.path(['config'])(data) ?? {}
const fillingPercentageSettings = fromNamespace('notifications', config)
const [setCassetteBills, { error }] = useMutation(SET_CASSETTE_BILLS, {
@@ -356,7 +361,10 @@ const CashCassettes = () => {
>
)}
{showHistory && (
-
+
)}
{
header: 'Machine',
width: 200,
textAlign: 'left',
- view: it => {
- return R.find(R.propEq('id', it.deviceId))(machines).name
- }
+ view: R.pipe(
+ R.prop('deviceId'),
+ id => R.find(R.propEq('id', id), machines),
+ R.defaultTo({ name: Unpaired device }),
+ R.prop('name')
+ )
},
{
name: 'billCount',