diff --git a/lib/notifier/notificationCenter.js b/lib/notifier/notificationCenter.js index 9dbc63d9..08007852 100644 --- a/lib/notifier/notificationCenter.js +++ b/lib/notifier/notificationCenter.js @@ -71,7 +71,9 @@ const fiatBalancesNotify = (fiatWarnings) => { const { cassette, deviceId } = o.detail return cassette === balance.cassette && deviceId === balance.deviceId }, notInvalidated)) return - const message = `Cash-out cassette ${balance.cassette} low or empty!` + const message = balance.code === 'LOW_CASH_OUT' ? + `Cash-out cassette ${balance.cassette} low or empty!` : + `Cash box full or almost full!` const detailB = utils.buildDetail({ deviceId: balance.deviceId, cassette: balance.cassette }) return queries.addNotification(FIAT_BALANCE, message, detailB) }) @@ -111,11 +113,18 @@ const cryptoBalancesNotify = (cryptoWarnings) => { } const balancesNotify = (balances) => { - const cryptoFilter = o => o.code === 'HIGH_CRYPTO_BALANCE' || o.code === 'LOW_CRYPTO_BALANCE' - const fiatFilter = o => o.code === 'LOW_CASH_OUT' - const cryptoWarnings = _.filter(cryptoFilter, balances) - const fiatWarnings = _.filter(fiatFilter, balances) - return Promise.all([cryptoBalancesNotify(cryptoWarnings), fiatBalancesNotify(fiatWarnings)]) + const isCryptoCode = c => _.includes(c, ['HIGH_CRYPTO_BALANCE', 'LOW_CRYPTO_BALANCE']) + const isFiatCode = c => _.includes(c, ['LOW_CASH_OUT', 'CASH_BOX_FULL']) + const by = o => + isCryptoCode(o) ? 'crypto' : + isFiatCode(o) ? 'fiat' : + undefined + const warnings = _.flow( + _.groupBy(_.flow(_.get(['code']), by)), + _.update('crypto', _.defaultTo([])), + _.update('fiat', _.defaultTo([])), + )(balances) + return Promise.all([cryptoBalancesNotify(warnings.crypto), fiatBalancesNotify(warnings.fiat)]) } const clearOldErrorNotifications = alerts => { diff --git a/new-lamassu-admin/src/pages/Machines/Machines.js b/new-lamassu-admin/src/pages/Machines/Machines.js index 955d40f4..ab899697 100644 --- a/new-lamassu-admin/src/pages/Machines/Machines.js +++ b/new-lamassu-admin/src/pages/Machines/Machines.js @@ -74,11 +74,11 @@ const MachineRoute = () => { setLoading(false) }, variables: { - deviceId: id - }, - billFilters: { deviceId: id, - batch: 'none' + billFilters: { + deviceId: id, + batch: 'none' + } } }) diff --git a/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js b/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js index f17c08f2..52b94777 100644 --- a/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js +++ b/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js @@ -17,8 +17,11 @@ import styles from './FiatBalanceAlerts.styles.js' const useStyles = makeStyles(styles) -const NAME = 'fiatBalanceAlerts' +const CASH_IN_KEY = 'fiatBalanceAlertsCashIn' +const CASH_OUT_KEY = 'fiatBalanceAlertsCashOut' const DEFAULT_NUMBER_OF_CASSETTES = 2 +const notesMin = 0 +const notesMax = 9999999 const FiatBalance = ({ section, min = 0, max = 100, fieldWidth = 80 }) => { const { @@ -36,9 +39,13 @@ const FiatBalance = ({ section, min = 0, max = 100, fieldWidth = 80 }) => { DEFAULT_NUMBER_OF_CASSETTES ) - const editing = isEditing(NAME) - const schema = Yup.object().shape({ + cashInAlertThreshold: Yup.number() + .transform(transformNumber) + .integer() + .min(notesMin) + .max(notesMax) + .nullable(), fillingPercentageCassette1: Yup.number() .transform(transformNumber) .integer() @@ -71,6 +78,7 @@ const FiatBalance = ({ section, min = 0, max = 100, fieldWidth = 80 }) => { validateOnChange={false} enableReinitialize initialValues={{ + cashInAlertThreshold: data?.cashInAlertThreshold ?? '', fillingPercentageCassette1: data?.fillingPercentageCassette1 ?? '', fillingPercentageCassette2: data?.fillingPercentageCassette2 ?? '', fillingPercentageCassette3: data?.fillingPercentageCassette3 ?? '', @@ -79,52 +87,80 @@ const FiatBalance = ({ section, min = 0, max = 100, fieldWidth = 80 }) => { validationSchema={schema} onSubmit={it => save(section, schema.cast(it))} onReset={() => { - setEditing(NAME, false) + setEditing(CASH_IN_KEY, false) + setEditing(CASH_OUT_KEY, false) }}> {({ values }) => ( -