mirror of
https://github.com/jambonz/jambonz-api-server.git
synced 2025-12-19 05:47:46 +00:00
support filter phone numbers (#447)
This commit is contained in:
@@ -26,6 +26,28 @@ class PhoneNumber extends Model {
|
||||
return rows;
|
||||
}
|
||||
|
||||
static async retrieveAllByCriteria({
|
||||
service_provider_sid, account_sid, filter
|
||||
}) {
|
||||
let sql = 'SELECT * FROM phone_numbers WHERE 1=1';
|
||||
const params = [];
|
||||
if (service_provider_sid) {
|
||||
sql += ' AND account_sid IN (SELECT account_sid FROM accounts WHERE service_provider_sid = ?)';
|
||||
params.push(service_provider_sid);
|
||||
}
|
||||
if (account_sid) {
|
||||
sql += ' AND account_sid = ?';
|
||||
params.push(account_sid);
|
||||
}
|
||||
if (filter) {
|
||||
sql += ' AND number LIKE ?';
|
||||
params.push(`%${filter}%`);
|
||||
}
|
||||
sql += ' ORDER BY number';
|
||||
const [rows] = await promisePool.query(sql, params);
|
||||
return rows;
|
||||
}
|
||||
|
||||
/**
|
||||
* retrieve a phone number
|
||||
*/
|
||||
|
||||
@@ -97,10 +97,27 @@ decorate(router, PhoneNumber, ['add', 'update', 'delete'], preconditions);
|
||||
/* list */
|
||||
router.get('/', async(req, res) => {
|
||||
const logger = req.app.locals.logger;
|
||||
const {account_sid, filter} = req.query;
|
||||
try {
|
||||
const results = req.user.hasServiceProviderAuth ?
|
||||
await PhoneNumber.retrieveAllForSP(req.user.service_provider_sid) :
|
||||
await PhoneNumber.retrieveAll(req.user.hasAccountAuth ? req.user.account_sid : null);
|
||||
let results = [];
|
||||
if (req.user.hasAccountAuth) {
|
||||
results = await PhoneNumber.retrieveAllByCriteria({
|
||||
account_sid: req.user.account_sid,
|
||||
filter
|
||||
});
|
||||
} else if (req.user.hasServiceProviderAuth) {
|
||||
results = await PhoneNumber.retrieveAllByCriteria({
|
||||
service_provider_sid: req.user.service_provider_sid,
|
||||
account_sid,
|
||||
filter
|
||||
});
|
||||
} else if (req.user.hasAdminAuth) {
|
||||
results = await PhoneNumber.retrieveAllByCriteria({
|
||||
account_sid,
|
||||
filter
|
||||
});
|
||||
}
|
||||
|
||||
res.status(200).json(results);
|
||||
} catch (err) {
|
||||
sysError(logger, res, err);
|
||||
|
||||
Reference in New Issue
Block a user