Integrated new member state into manage members page
Implemented suspend/unsuspend
This commit is contained in:
@@ -74,6 +74,7 @@ export async function getFilteredMembers(
|
||||
status: row.status,
|
||||
status_date: row.status_date,
|
||||
loa_until: row.loa_until ? new Date(row.loa_until) : undefined,
|
||||
member_state: row.member_state
|
||||
}));
|
||||
|
||||
return {
|
||||
@@ -99,26 +100,28 @@ export async function getUserData(userID: number): Promise<Member> {
|
||||
return res[0] ?? null;
|
||||
}
|
||||
|
||||
export async function setUserState(userID: number, state: MemberState, reason: string, creatorID: number, externalCon?: mariadb.PoolConnection) {
|
||||
export async function setUserState(userID: number, state: MemberState, reason: string, creatorID: number, externalCon?: mariadb.PoolConnection, endPrevious: boolean = true, createHistory: boolean = true) {
|
||||
const isInternalConn = !externalCon;
|
||||
if(isInternalConn)
|
||||
if (isInternalConn)
|
||||
var con = await pool.getConnection();
|
||||
else
|
||||
else
|
||||
var con = externalCon;
|
||||
// const con = (externalCon || await pool.getConnection()) as mariadb.PoolConnection;
|
||||
|
||||
try {
|
||||
if (isInternalConn) await con.beginTransaction();
|
||||
|
||||
await endLatestMemberState(userID, con);
|
||||
if (endPrevious)
|
||||
await endLatestMemberState(userID, con);
|
||||
|
||||
const sql = `UPDATE members SET state = ? WHERE id = ?;`;
|
||||
await con.query(sql, [state, userID]);
|
||||
|
||||
const insertHistorySql = `INSERT INTO member_state_history
|
||||
if (createHistory) {
|
||||
const insertHistorySql = `INSERT INTO member_state_history
|
||||
(member_id, state_id, reason, created_by_id, start_date, end_date)
|
||||
VALUES (?, ?, ?, ?, NOW(), NULL);`;
|
||||
await con.query(insertHistorySql, [userID, state, reason, creatorID]);
|
||||
await con.query(insertHistorySql, [userID, state, reason, creatorID]);
|
||||
}
|
||||
|
||||
if (isInternalConn) await con.commit();
|
||||
} catch (error) {
|
||||
@@ -259,4 +262,23 @@ export async function endLatestMemberState(memberID: number, con: mariadb.Pool |
|
||||
}
|
||||
// let res = await pool.query(sql, [memberID]);
|
||||
// console.log(res);
|
||||
}
|
||||
|
||||
export async function getLastNonSuspendedState(memberID: number): Promise<MemberState> {
|
||||
try {
|
||||
const sql = `SELECT state_id
|
||||
FROM member_state_history
|
||||
WHERE member_id = ?
|
||||
AND state_id != ?
|
||||
ORDER BY start_date DESC, id DESC
|
||||
LIMIT 1;`
|
||||
const res = await pool.query(sql, [memberID, MemberState.Suspended]);
|
||||
console.log(res as MemberState[])
|
||||
if (res.length)
|
||||
return res[0].state_id as MemberState;
|
||||
} catch (error) {
|
||||
logger.error('app', 'Error ending latest member state', {
|
||||
error: error instanceof Error ? error.message : String(error),
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user