Add camelize & populate in Customer

This commit is contained in:
goga-m 2017-09-25 16:15:17 +03:00 committed by Josh Harvey
parent 3623e41302
commit e8f41c1427
3 changed files with 64 additions and 27 deletions

View file

@ -184,7 +184,7 @@ app.get('/api/customer/:id', (req, res, next) => {
}) })
/** /**
* Endpoint for patching customer's authorized_override status * Endpoint for patching customer's authorizedOverride status
* *
* Possible values: blocked, verified, automatic * Possible values: blocked, verified, automatic
* *
@ -194,10 +194,10 @@ app.get('/api/customer/:id', (req, res, next) => {
* @param {function} next Callback * @param {function} next Callback
*/ */
app.patch('/api/customer/:id', (req, res, next) => { app.patch('/api/customer/:id', (req, res, next) => {
if (!req.query.authorized_override) return res.status(400).send({Error: 'Requires authorized'}) if (!req.query.authorizedOverride) return res.status(400).send({Error: 'Requires authorized'})
return customers.patch(req.params.id, { return customers.patch(req.params.id, {
authorized_override: req.query.authorized_override authorized_override: req.query.authorizedOverride
}) })
.then(r => res.send(r)) .then(r => res.send(r))
.catch(() => res.status(404).send({Error: 'Not found'})) .catch(() => res.status(404).send({Error: 'Not found'}))

View file

@ -4,6 +4,7 @@ const _ = require('lodash/fp')
const BN = require('./bn') const BN = require('./bn')
const anonymous = require('../lib/constants').anonymousCustomer const anonymous = require('../lib/constants').anonymousCustomer
const NUM_RESULTS = 20 const NUM_RESULTS = 20
const camelize = require('camelize')
function add (customer) { function add (customer) {
const sql = 'insert into customers (id, phone, phone_at) values ($1, $2, now()) returning *' const sql = 'insert into customers (id, phone, phone_at) values ($1, $2, now()) returning *'
@ -37,6 +38,9 @@ function patch (id, values) {
function getById (id) { function getById (id) {
const sql = 'select * from customers where id=$1' const sql = 'select * from customers where id=$1'
return db.oneOrNone(sql, [id]) return db.oneOrNone(sql, [id])
.then(customer => {
return (customer) ? format(customer) : null
})
} }
function getDailyVolume (id) { function getDailyVolume (id) {
@ -52,6 +56,38 @@ function getDailyVolume (id) {
}) })
} }
/**
* Format and populate fields
* for customer record
*
* @function format
*
* @param {object} customer Customer object
* @returns {object} Customer camelized & populated with computed fields
*/
function format (customer) {
/**
* Populate with status field
*
*/
const status = _.maxBy('value', [{
label: 'Phone',
value: customer.phone_at
}, {
label: 'ID card',
value: customer.id_card_at
}, {
label: 'Front facing camera',
value: customer.front_facing_cam_at
}, {
label: 'ID card image',
value: customer.id_card_image_at
}])
customer.status = status.label
return camelize(customer)
}
/** /**
* Query all customers * Query all customers
* *
@ -62,20 +98,13 @@ function getDailyVolume (id) {
* @returns {array} Array of customers populated with status field * @returns {array} Array of customers populated with status field
*/ */
function batch () { function batch () {
const sql = `select const sql = `select * from customers
CASE GREATEST(
phone_at,
id_card_at,
front_facing_cam_at,
id_card_image_at
)
WHEN phone_at THEN 'Phone'
WHEN id_card_at THEN 'ID card'
WHEN front_facing_cam_at THEN 'Front facing camera'
WHEN id_card_image_at THEN 'ID card image'
END AS status, * from customers
where id != $1 where id != $1
order by created desc limit $2` order by created desc limit $2`
return db.any(sql, [ anonymous.uuid, NUM_RESULTS ]) return db.any(sql, [ anonymous.uuid, NUM_RESULTS ])
.then(customers => {
return _.map(customer => format(customer), customers)
})
} }
module.exports = { add, get, batch, getById, patch} module.exports = { add, get, batch, getById, patch}

File diff suppressed because one or more lines are too long