This commit is contained in:
rgrgogu
2026-05-23 14:03:38 +08:00
parent b39e7a2939
commit bf48c95467
5 changed files with 175 additions and 87 deletions
+25 -6
View File
@@ -21,7 +21,7 @@ const { paginate } = require('../../utils/paginate.util');
const { enrichPersonalInfo } = require('../../utils/personalInfo.util');
const { getFieldValues } = require("../../utils/fieldValues.util");
const { excludeAttributes: usersExclude, jsonbSchemas: usersSchemas } = require('../../models/users/users.attributes');
const { excludeAttributes: usersExclude, jsonbSchemas: usersSchemas, computedAttributes: userComputed } = require('../../models/users/users.attributes');
const EXCLUDED = ['password', 'otp_code', 'otp_expires_at', 'must_change_password', 'password_expires_at'];
const auditByFields = ['createdBy', 'updatedBy', 'deletedBy'];
@@ -34,8 +34,18 @@ exports.getUsers = async (req, res) => {
excludeAttributes: usersExclude,
jsonbSchemas: usersSchemas,
jsonbColumn: 'personal_info',
computedAttributes: userComputed,
context: "list",
auditOptions: { mdl_Users, parentAlias: 'User' },
findOptions: {
include: [{
model: mdl_UserGroups,
as: 'groups',
through: { attributes: [] }, // hide junction columns
attributes: ['group_id', 'name', 'group_code'],
required: false, // LEFT JOIN — users with no group still appear
}],
},
});
return R.success(res, 'Users retrieved.', result);
@@ -312,17 +322,26 @@ exports.getUserFieldValues = getFieldValues(mdl_Users, "USER", {
// ─── ARCHIVED ─────────────────────────────────────────────────────────────────
// ─── GET ARCHIVED USERS ───────────────────────────────────────────────────────
exports.getArchivedUsers = async (req, res) => {
try {
const result = await paginate(mdl_Users, req, {
excludeAttributes: usersExclude,
jsonbSchemas: usersSchemas,
jsonbColumn: 'personal_info',
context: "archived",
auditOptions: { mdl_Users, parentAlias: 'User' },
jsonbSchemas: usersSchemas,
jsonbColumn: 'personal_info',
computedAttributes: userComputed,
context: 'archived',
auditOptions: { mdl_Users, parentAlias: 'User' },
findOptions: {
paranoid: false,
where: { deletedAt: { [Op.ne]: null }, is_active: false },
where: { deletedAt: { [Op.ne]: null }, is_active: false },
include: [{
model: mdl_UserGroups,
as: 'groups',
through: { attributes: [] },
attributes: ['group_id', 'name', 'group_code'],
required: false,
}],
},
});