fix: honor table search q param on users and related lists

Dashboard sends q, but users/classes/payments ignored it; accept q/search and normalize Persian digits.
This commit is contained in:
2026-08-15 02:57:19 +03:30
parent 4603b45208
commit 7394829d49
5 changed files with 66 additions and 15 deletions
+9 -6
View File
@@ -6,7 +6,7 @@ const Role = require('../roles/roleModel');
const Class = require('../classes/classModel');
const bcrypt = require('bcryptjs');
const AppError = require('../../utils/AppError');
const { calculateMeta } = require('../../utils/pagination');
const { calculateMeta, escapeRegex, getSearchTerm } = require('../../utils/pagination');
const { generateUsername, generateSimplePassword } = require('../../utils/credentials');
const { sendAccountCreatedSms } = require('../../utils/senders/smsMessages');
const logger = require('../../utils/logger');
@@ -122,12 +122,15 @@ const getAllUsers = async (query) => {
const skip = (page - 1) * limit;
const filter = {};
if (query.search) {
const searchTerm = getSearchTerm(query);
if (searchTerm) {
const searchRegex = new RegExp(escapeRegex(searchTerm), 'i');
filter.$or = [
{ name: new RegExp(query.search, 'i') },
{ username: new RegExp(query.search, 'i') },
{ nationalIdCode: new RegExp(query.search, 'i') },
{ phoneNumber: new RegExp(query.search, 'i') }
{ name: searchRegex },
{ username: searchRegex },
{ nationalIdCode: searchRegex },
{ phoneNumber: searchRegex },
{ email: searchRegex }
];
}
if (query.isActive !== undefined) filter.isActive = query.isActive === 'true';