added support for integrated rank changes
All checks were successful
Pull Request CI / Merge Check (pull_request) Successful in 3m27s
All checks were successful
Pull Request CI / Merge Check (pull_request) Successful in 3m27s
This commit is contained in:
@@ -11,6 +11,7 @@ import { Unit } from '@app/shared/types/units';
|
||||
import { MemberState } from '@app/shared/types/member';
|
||||
import { assignNewUnit } from '../services/db/unitService';
|
||||
import { audit } from '../services/logging/auditLog';
|
||||
import { forceInsertMemberRank, insertMemberRank } from '../services/db/rankService';
|
||||
|
||||
unitsRouter.use(requireLogin);
|
||||
|
||||
@@ -35,6 +36,7 @@ unitsRouter.get('/', async (req, res) => {
|
||||
memberUnitsRouter.post('/admin', [requireMemberState(MemberState.Member), requireRole("17th Administrator")], async (req: Request, res: Response) => {
|
||||
const memberId = Number(req.query.memberId);
|
||||
const unitId = Number(req.query.unitId);
|
||||
const rankId = Number(req.query.rankId);
|
||||
const reason = req.query.reason as string;
|
||||
|
||||
try {
|
||||
@@ -44,12 +46,14 @@ memberUnitsRouter.post('/admin', [requireMemberState(MemberState.Member), requir
|
||||
}
|
||||
|
||||
await assignNewUnit(memberId, unitId, req.user.id, req.user.id, reason);
|
||||
await forceInsertMemberRank(memberId, rankId, req.user.id, req.user.id, reason);
|
||||
logger.info('app', 'Member force assigned unit', {
|
||||
member: memberId,
|
||||
unit: unitId,
|
||||
rank: rankId,
|
||||
caller: req.user.id,
|
||||
});
|
||||
audit.member('update_unit', { actorId: req.user.id, targetId: memberId }, { unit: unitId, reason: reason });
|
||||
audit.member('update_unit', { actorId: req.user.id, targetId: memberId }, { unit: unitId, rank: rankId, reason: reason });
|
||||
|
||||
res.sendStatus(200);
|
||||
} catch (error) {
|
||||
|
||||
@@ -36,6 +36,16 @@ export async function insertMemberRank(member_id: number, rank_id: number, date?
|
||||
await pool.query(sql, params);
|
||||
}
|
||||
|
||||
export async function forceInsertMemberRank(member_id: number, rank_id: number, authorized: number, creator: number, reason: string) {
|
||||
const sql = `CALL sp_update_member_rank(?, ?, ?, ?, ?, NOW())`;
|
||||
|
||||
const result = await pool.query(sql, [member_id, rank_id, authorized, creator, reason]);
|
||||
|
||||
if (!result || result.affectedRows === 0) {
|
||||
throw new Error("Failed to update member rank");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export async function batchInsertMemberRank(promos: BatchPromotionMember[], author: number, approver: number) {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user