v12.0.0 - initial commit
This commit is contained in:
commit
e2c49ea43c
1145 changed files with 97211 additions and 0 deletions
78
packages/server/lib/loyalty.js
Normal file
78
packages/server/lib/loyalty.js
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
const db = require('./db')
|
||||
const uuid = require('uuid')
|
||||
const _ = require('lodash/fp')
|
||||
|
||||
function getAvailablePromoCodes() {
|
||||
const sql = `SELECT * FROM coupons WHERE soft_deleted=false`
|
||||
return db.any(sql)
|
||||
}
|
||||
|
||||
function getPromoCode(code) {
|
||||
const sql = `SELECT * FROM coupons WHERE code=$1 AND soft_deleted=false`
|
||||
return db.oneOrNone(sql, [code])
|
||||
}
|
||||
|
||||
function createPromoCode(code, discount) {
|
||||
const sql = `INSERT INTO coupons (id, code, discount) VALUES ($1, $2, $3) RETURNING *`
|
||||
return db.one(sql, [uuid.v4(), code, discount])
|
||||
}
|
||||
|
||||
function deletePromoCode(id) {
|
||||
const sql = `UPDATE coupons SET soft_deleted=true WHERE id=$1`
|
||||
return db.none(sql, [id])
|
||||
}
|
||||
|
||||
function getNumberOfAvailablePromoCodes() {
|
||||
const sql = `SELECT COUNT(id) FROM coupons WHERE soft_deleted=false`
|
||||
return db.one(sql).then(res => res.count)
|
||||
}
|
||||
|
||||
function getAvailableIndividualDiscounts() {
|
||||
const sql = `SELECT * FROM individual_discounts WHERE soft_deleted=false`
|
||||
return db.any(sql).then(res =>
|
||||
_.map(
|
||||
it => ({
|
||||
id: it.id,
|
||||
customerId: it.customer_id,
|
||||
discount: it.discount,
|
||||
}),
|
||||
res,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
function getCustomerActiveIndividualDiscount(customerId) {
|
||||
const sql = `SELECT * FROM individual_discounts WHERE customer_id=$1 AND soft_deleted=false LIMIT 1`
|
||||
return db.oneOrNone(sql, [customerId]).then(res => {
|
||||
if (!_.isNil(res)) {
|
||||
return {
|
||||
id: res.id,
|
||||
customerId: res.customer_id,
|
||||
discount: res.discount,
|
||||
}
|
||||
}
|
||||
return res
|
||||
})
|
||||
}
|
||||
|
||||
function createIndividualDiscount(customerId, discount) {
|
||||
const sql = `INSERT INTO individual_discounts (id, customer_id, discount) VALUES ($1, $2, $3)`
|
||||
return db.none(sql, [uuid.v4(), customerId, discount])
|
||||
}
|
||||
|
||||
function deleteIndividualDiscount(id) {
|
||||
const sql = `UPDATE individual_discounts SET soft_deleted=true WHERE id=$1`
|
||||
return db.none(sql, [id])
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getAvailablePromoCodes,
|
||||
getPromoCode,
|
||||
createPromoCode,
|
||||
deletePromoCode,
|
||||
getNumberOfAvailablePromoCodes,
|
||||
getAvailableIndividualDiscounts,
|
||||
getCustomerActiveIndividualDiscount,
|
||||
createIndividualDiscount,
|
||||
deleteIndividualDiscount,
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue