support filter phone numbers (#447)

This commit is contained in:
Hoan Luu Huu
2025-05-14 18:54:48 +07:00
committed by GitHub
parent 35b10d55d5
commit 431cc9e4f4
2 changed files with 42 additions and 3 deletions

View File

@@ -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
*/

View File

@@ -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);