feat: customer matching on individual discounts panel
This commit is contained in:
parent
eda6decae0
commit
03fd19e0cf
5 changed files with 101 additions and 8 deletions
|
|
@ -1,6 +1,7 @@
|
|||
const db = require('./db')
|
||||
const uuid = require('uuid')
|
||||
const _ = require('lodash/fp')
|
||||
const pgp = require('pg-promise')()
|
||||
|
||||
function getAvailablePromoCodes () {
|
||||
const sql = `SELECT * FROM coupons WHERE soft_deleted=false`
|
||||
|
|
@ -52,6 +53,38 @@ function deleteIndividualDiscount (id) {
|
|||
return db.none(sql, [id])
|
||||
}
|
||||
|
||||
function getCustomersWithDiscounts (discounts) {
|
||||
let phoneNumbers = []
|
||||
let idCardNumbers = []
|
||||
|
||||
_.each(it => {
|
||||
switch (it.idType) {
|
||||
case 'phone':
|
||||
phoneNumbers.push(it.value)
|
||||
break
|
||||
case 'idNumber':
|
||||
idCardNumbers.push(it.value)
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
}, discounts)
|
||||
|
||||
if (_.isEmpty(phoneNumbers) && _.isEmpty(idCardNumbers)) {
|
||||
return Promise.resolve([])
|
||||
}
|
||||
|
||||
const phoneNumbersSql = _.map(pgp.as.text, phoneNumbers).join(',')
|
||||
const idCardNumbersSql = _.map(pgp.as.text, idCardNumbers).join(',')
|
||||
|
||||
const hasPhoneNumbers = !_.isEmpty(phoneNumbers)
|
||||
const hasIDNumbers = !_.isEmpty(phoneNumbers)
|
||||
|
||||
const sql = `SELECT * FROM customers WHERE ${hasPhoneNumbers && `phone IN ($1^)`} ${hasPhoneNumbers && hasIDNumbers && `OR`} ${hasIDNumbers && `id_card_data_number IN ($2^)`}`
|
||||
return db.any(sql, [phoneNumbersSql, idCardNumbersSql])
|
||||
.then(res => _.map(it => it ? _.mapKeys(_.camelCase, it) : null, res))
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getAvailablePromoCodes,
|
||||
getPromoCode,
|
||||
|
|
@ -60,5 +93,6 @@ module.exports = {
|
|||
getNumberOfAvailablePromoCodes,
|
||||
getAvailableIndividualDiscounts,
|
||||
createIndividualDiscount,
|
||||
deleteIndividualDiscount
|
||||
deleteIndividualDiscount,
|
||||
getCustomersWithDiscounts
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue