Began implementation for getting promotion history

This commit is contained in:
2025-12-16 22:28:32 -05:00
parent f9e5dacda8
commit 278690e094
8 changed files with 462 additions and 275 deletions

View File

@@ -1,6 +1,7 @@
import { MemberState } from "@app/shared/types/member";
import { requireLogin, requireMemberState, requireRole } from "../middleware/auth";
import { getAllRanks, insertMemberRank } from "../services/rankService";
import { batchInsertMemberRank, getAllRanks, getPromotionHistorySummary, getPromotionsOnDay, insertMemberRank } from "../services/rankService";
import { BatchPromotion, BatchPromotionMember } from '@app/shared/schemas/promotionSchema'
import express = require('express');
const r = express.Router();
@@ -11,11 +12,13 @@ r.use(requireLogin)
ur.use(requireLogin)
//insert a new latest rank for a user
ur.post('/', [requireRole(["17th Command", "17th Administrator", "17th HQ"]), requireMemberState(MemberState.Member)], async (req, res) => {
3
ur.post('/', [requireRole(["17th Command", "17th Administrator", "17th HQ"]), requireMemberState(MemberState.Member)], async (req: express.Request, res: express.Response) => {
try {
const change = req.body?.change;
await insertMemberRank(change.member_id, change.rank_id, change.date);
const change = req.body.promotions as BatchPromotionMember[];
const author = req.user.id;
if (!change) res.sendStatus(400);
await batchInsertMemberRank(change, author);
res.sendStatus(201);
} catch (err) {
@@ -24,6 +27,31 @@ ur.post('/', [requireRole(["17th Command", "17th Administrator", "17th HQ"]), re
}
});
ur.get('/', async (req: express.Request, res: express.Response) => {
try {
const promos = await getPromotionHistorySummary();
console.log(promos);
res.status(200).json(promos);
} catch (err) {
console.error(err);
res.status(500).json({ error: 'Internal server error' });
}
});
ur.get('/:day', async (req: express.Request, res: express.Response) => {
try {
if (!req.params.day) res.sendStatus(400);
let day = new Date(req.params.day)
const promos = await getPromotionsOnDay(day);
console.log(promos);
res.status(200).json(promos);
} catch (err) {
console.error(err);
res.status(500).json({ error: 'Internal server error' });
}
})
//get all ranks
r.get('/', async (req, res) => {
try {