added detailed reason to member discharge
This commit is contained in:
53
api/migrations/20260212052346-state-reason-detailed.js
Normal file
53
api/migrations/20260212052346-state-reason-detailed.js
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var dbm;
|
||||||
|
var type;
|
||||||
|
var seed;
|
||||||
|
var fs = require('fs');
|
||||||
|
var path = require('path');
|
||||||
|
var Promise;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We receive the dbmigrate dependency from dbmigrate initially.
|
||||||
|
* This enables us to not have to rely on NODE_PATH.
|
||||||
|
*/
|
||||||
|
exports.setup = function(options, seedLink) {
|
||||||
|
dbm = options.dbmigrate;
|
||||||
|
type = dbm.dataType;
|
||||||
|
seed = seedLink;
|
||||||
|
Promise = options.Promise;
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.up = function(db) {
|
||||||
|
var filePath = path.join(__dirname, 'sqls', '20260212052346-state-reason-detailed-up.sql');
|
||||||
|
return new Promise( function( resolve, reject ) {
|
||||||
|
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
||||||
|
if (err) return reject(err);
|
||||||
|
console.log('received data: ' + data);
|
||||||
|
|
||||||
|
resolve(data);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.then(function(data) {
|
||||||
|
return db.runSql(data);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.down = function(db) {
|
||||||
|
var filePath = path.join(__dirname, 'sqls', '20260212052346-state-reason-detailed-down.sql');
|
||||||
|
return new Promise( function( resolve, reject ) {
|
||||||
|
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
||||||
|
if (err) return reject(err);
|
||||||
|
console.log('received data: ' + data);
|
||||||
|
|
||||||
|
resolve(data);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.then(function(data) {
|
||||||
|
return db.runSql(data);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
exports._meta = {
|
||||||
|
"version": 1
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/* Replace with your SQL commands */
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
/* Replace with your SQL commands */
|
||||||
|
|
||||||
|
ALTER TABLE member_state_history ADD reason_detailed TEXT;
|
||||||
@@ -245,7 +245,7 @@ router.post('/discharge', [requireLogin, requireMemberState(MemberState.Member),
|
|||||||
con.beginTransaction();
|
con.beginTransaction();
|
||||||
|
|
||||||
var data: Discharge = req.body;
|
var data: Discharge = req.body;
|
||||||
setUserState(data.userID, MemberState.Discharged, "Member Discharged", author, con);
|
setUserState(data.userID, MemberState.Discharged, "Member Discharged", author, con, data.reason);
|
||||||
cancelLatestRank(data.userID, con);
|
cancelLatestRank(data.userID, con);
|
||||||
cancelLatestUnit(data.userID, con);
|
cancelLatestUnit(data.userID, con);
|
||||||
con.commit();
|
con.commit();
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ export async function getUserData(userID: number): Promise<Member> {
|
|||||||
return res[0] ?? null;
|
return res[0] ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function setUserState(userID: number, state: MemberState, reason: string, creatorID: number, externalCon?: mariadb.PoolConnection, endPrevious: boolean = true, createHistory: boolean = true) {
|
export async function setUserState(userID: number, state: MemberState, reason: string, creatorID: number, externalCon?: mariadb.PoolConnection, details: string = "", endPrevious: boolean = true, createHistory: boolean = true) {
|
||||||
const isInternalConn = !externalCon;
|
const isInternalConn = !externalCon;
|
||||||
if (isInternalConn)
|
if (isInternalConn)
|
||||||
var con = await pool.getConnection();
|
var con = await pool.getConnection();
|
||||||
@@ -118,9 +118,9 @@ export async function setUserState(userID: number, state: MemberState, reason: s
|
|||||||
|
|
||||||
if (createHistory) {
|
if (createHistory) {
|
||||||
const insertHistorySql = `INSERT INTO member_state_history
|
const insertHistorySql = `INSERT INTO member_state_history
|
||||||
(member_id, state_id, reason, created_by_id, start_date, end_date)
|
(member_id, state_id, reason, created_by_id, start_date, end_date, reason_detailed)
|
||||||
VALUES (?, ?, ?, ?, NOW(), NULL);`;
|
VALUES (?, ?, ?, ?, NOW(), NULL, ?);`;
|
||||||
await con.query(insertHistorySql, [userID, state, reason, creatorID]);
|
await con.query(insertHistorySql, [userID, state, reason, creatorID, details]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isInternalConn) await con.commit();
|
if (isInternalConn) await con.commit();
|
||||||
|
|||||||
Reference in New Issue
Block a user