Fetch time till hardLimit clears (#265)
* Fetch time till hardLimit clears * Default to zero in case of negative numbers
This commit is contained in:
parent
d2f36b8019
commit
8593918f3f
1 changed files with 24 additions and 6 deletions
|
|
@ -6,6 +6,8 @@ const makeDir = require('make-dir')
|
|||
const path = require('path')
|
||||
const fs = require('fs')
|
||||
const util = require('util')
|
||||
const moment = require('moment')
|
||||
|
||||
|
||||
const db = require('./db')
|
||||
const BN = require('./bn')
|
||||
|
|
@ -115,17 +117,32 @@ function getById (id, userToken) {
|
|||
*/
|
||||
function getDailyVolume (id) {
|
||||
return Promise.all([
|
||||
db.one(`select coalesce(sum(fiat), 0) as total from cash_in_txs
|
||||
db.one(`select coalesce(sum(fiat), 0) as total, max(created) as maxdate from cash_in_txs
|
||||
where customer_id=$1
|
||||
and created > now() - interval '1 day'`, [id]),
|
||||
db.one(`select coalesce(sum(fiat), 0) as total from cash_out_txs
|
||||
db.one(`select coalesce(sum(fiat), 0) as total, max(created) as maxdate from cash_out_txs
|
||||
where customer_id=$1
|
||||
and created > now() - interval '1 day'`, [id])
|
||||
]).then(([cashInTotal, cashOutTotal]) => {
|
||||
return BN(cashInTotal.total).add(cashOutTotal.total)
|
||||
]).then(([cashIn, cashOut]) => {
|
||||
const dailyVolume = BN(cashIn.total).add(cashOut.total)
|
||||
const hoursTillLimitClear = getHoursTillLimitClear(cashIn.maxdate, cashOut.maxdate)
|
||||
return { dailyVolume, hoursTillLimitClear }
|
||||
})
|
||||
}
|
||||
|
||||
function getHoursTillLimitClear (cashInDate, cashOutDate) {
|
||||
let startDate = moment()
|
||||
startDate = startDate.subtract(1, 'days')
|
||||
|
||||
const cashInMoment = moment(cashInDate || startDate)
|
||||
const cashOutMoment = moment(cashOutDate || startDate)
|
||||
|
||||
const cashInDuration = moment.duration(cashInMoment.diff(startDate)).asHours()
|
||||
const cashOutDuration = moment.duration(cashOutMoment.diff(startDate)).asHours()
|
||||
|
||||
return _.ceil(_.max([cashInDuration, cashOutDuration, 0]))
|
||||
}
|
||||
|
||||
/**
|
||||
* Camelize customer fields
|
||||
* Note: return null if customer is undefined
|
||||
|
|
@ -152,8 +169,9 @@ function camelize (customer) {
|
|||
*/
|
||||
function populateDailyVolume (customer) {
|
||||
if (!customer) return
|
||||
return getDailyVolume(customer.id).then(dailyVolume => {
|
||||
return _.set('daily_volume', dailyVolume, customer)
|
||||
return getDailyVolume(customer.id).then(({ dailyVolume, hoursTillLimitClear }) => {
|
||||
let withHours = _.set('hours_till_limit_clear', hoursTillLimitClear, customer)
|
||||
return _.set('daily_volume', dailyVolume, withHours)
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue