Feat: implement per operator settings cache
Fix: fix linter-found issues Chore: move findOperatorId to own middleware file Chore: delete old routes.js file and rename new-routes.js to routes.js Fix: PR fixes
This commit is contained in:
parent
85235eaa13
commit
558317e9f3
30 changed files with 232 additions and 860 deletions
49
lib/routes/verifyPromoCodeRoutes.js
Normal file
49
lib/routes/verifyPromoCodeRoutes.js
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
const express = require('express')
|
||||
const router = express.Router()
|
||||
const _ = require('lodash/fp')
|
||||
|
||||
const BN = require('../bn')
|
||||
const commissionMath = require('../commission-math')
|
||||
const configManager = require('../new-config-manager')
|
||||
const notifier = require('../notifier')
|
||||
const promoCodes = require('../promo-codes')
|
||||
|
||||
function respond (req, res, _body, _status) {
|
||||
const status = _status || 200
|
||||
const body = _body || {}
|
||||
const customer = _.getOr({ sanctions: true }, ['customer'], body)
|
||||
// sanctions can be null for new customers so we can't use falsy checks
|
||||
if (customer.sanctions === false) {
|
||||
notifier.notifyIfActive('compliance', 'sanctionsNotify', customer, req.body.phone)
|
||||
}
|
||||
return res.status(status).json(body)
|
||||
}
|
||||
|
||||
function verifyPromoCode (req, res, next) {
|
||||
promoCodes.getPromoCode(req.body.codeInput)
|
||||
.then(promoCode => {
|
||||
if (!promoCode) return next()
|
||||
|
||||
const transaction = req.body.tx
|
||||
const commissions = configManager.getCommissions(transaction.cryptoCode, req.deviceId, req.settings.config)
|
||||
const tickerRate = BN(transaction.rawTickerPrice)
|
||||
const discount = commissionMath.getDiscountRate(promoCode.discount, commissions[transaction.direction])
|
||||
const rates = {
|
||||
[transaction.cryptoCode]: {
|
||||
[transaction.direction]: (transaction.direction === 'cashIn')
|
||||
? tickerRate.mul(discount).round(5)
|
||||
: tickerRate.div(discount).round(5)
|
||||
}
|
||||
}
|
||||
|
||||
respond(req, res, {
|
||||
promoCode: promoCode,
|
||||
newRates: rates
|
||||
})
|
||||
})
|
||||
.catch(next)
|
||||
}
|
||||
|
||||
router.post('/', verifyPromoCode)
|
||||
|
||||
module.exports = router
|
||||
Loading…
Add table
Add a link
Reference in a new issue