good morning

Signed-off-by: Kenneth Obsequio <k80308392@gmail.com>
This commit is contained in:
2026-08-06 08:11:05 +08:00
parent 141b7ab592
commit dcae93eb35
15 changed files with 81 additions and 204 deletions
+31 -1
View File
@@ -65,4 +65,34 @@ async function reconcileDefaultGroup(user_ids, { createdBy = null } = {}) {
);
}
module.exports = { NOGRP_CODE, getDefaultGroupId, enrollDefaultGroup, dropDefaultGroupMembership, reconcileDefaultGroup };
/**
* Invite-link login: if user_id is currently sitting in NOGRP, move them into
* the group identified by group_code. Never reassigns someone already parked
* in a real (non-NOGRP) group — an invite link used post-login only fills in
* an ungrouped user's group, it doesn't override an existing one. No-op if
* group_code doesn't resolve to an active group.
*/
async function switchFromNogrpByCode(user_id, group_code, { updatedBy = null } = {}) {
if (!group_code) return null;
const group = await mdl_UserGroups.findOne({
where: { group_code: group_code.toUpperCase().trim(), is_active: true },
});
if (!group) return null;
const membership = await mdl_UserGroupMembers.findOne({
where: { user_id },
include: [{ model: mdl_UserGroups, attributes: ['group_code'] }],
});
if (membership) {
if (membership.UserGroup?.group_code !== NOGRP_CODE) return null; // already in a real group — leave it alone
if (Number(membership.group_id) === Number(group.group_id)) return group; // already in this exact group
}
await mdl_UserGroupMembers.create({ group_id: group.group_id, user_id, createdBy: updatedBy });
await dropDefaultGroupMembership([user_id], group.group_id, { updatedBy });
return group;
}
module.exports = { NOGRP_CODE, getDefaultGroupId, enrollDefaultGroup, dropDefaultGroupMembership, reconcileDefaultGroup, switchFromNogrpByCode };