52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
const _ = require('lodash/fp')
|
|
|
|
function getBackwardsCompatibleTriggers(triggers) {
|
|
const filtered = _.filter(
|
|
_.matches({ triggerType: 'txVolume', direction: 'both', thresholdDays: 1 }),
|
|
)(triggers)
|
|
const grouped = _.groupBy(_.prop('requirement'))(filtered)
|
|
return _.mapValues(_.compose(_.get('threshold'), _.minBy('threshold')))(
|
|
grouped,
|
|
)
|
|
}
|
|
|
|
function hasSanctions(triggers) {
|
|
return _.some(_.matches({ requirement: 'sanctions' }))(triggers)
|
|
}
|
|
|
|
function maxDaysThreshold(triggers) {
|
|
return _.max(_.map('thresholdDays')(triggers))
|
|
}
|
|
|
|
function getCashLimit(triggers) {
|
|
const withFiat = _.filter(({ triggerType }) =>
|
|
_.includes(triggerType, ['txVolume', 'txAmount']),
|
|
)
|
|
const blocking = _.filter(({ requirement }) =>
|
|
_.includes(requirement, ['block', 'suspend']),
|
|
)
|
|
return _.compose(_.minBy('threshold'), blocking, withFiat)(triggers)
|
|
}
|
|
|
|
const hasRequirement = requirement =>
|
|
_.compose(_.negate(_.isEmpty), _.find(_.matches({ requirement })))
|
|
|
|
const hasPhone = hasRequirement('sms')
|
|
const hasFacephoto = hasRequirement('facephoto')
|
|
const hasIdScan = hasRequirement('idCardData')
|
|
|
|
const AUTH_METHODS = {
|
|
SMS: 'SMS',
|
|
EMAIL: 'EMAIL',
|
|
}
|
|
|
|
module.exports = {
|
|
getBackwardsCompatibleTriggers,
|
|
hasSanctions,
|
|
maxDaysThreshold,
|
|
getCashLimit,
|
|
hasPhone,
|
|
hasFacephoto,
|
|
hasIdScan,
|
|
AUTH_METHODS,
|
|
}
|