Implemented self extension
This commit is contained in:
@@ -189,7 +189,50 @@ router.post('/adminCancel/:id', [requireRole(['17th Administrator', '17th HQ', '
|
||||
})
|
||||
|
||||
// extend LOA
|
||||
router.post('/extend/:id', [requireRole(['17th Administrator', '17th HQ', '17th Command'])], async (req: Request, res: Response) => {
|
||||
router.post('/extend/:id', async (req: Request, res: Response) => {
|
||||
const to: Date = req.body.to;
|
||||
|
||||
const member = req.user.id;
|
||||
|
||||
let LOA = await getLOAbyID(Number(req.params.id));
|
||||
if (!LOA) {
|
||||
return res.status(404).send("LOA not found");
|
||||
}
|
||||
|
||||
if (LOA.member_id !== member) {
|
||||
return res.status(403).send("You do not have permission to extend this LOA");
|
||||
}
|
||||
|
||||
if (LOA.extended_till !== null) {
|
||||
return res.status(409).send("You must contact the administration team to extend your LOA again");
|
||||
}
|
||||
|
||||
if (!to) {
|
||||
return res.status(400).send("Extension length is required");
|
||||
}
|
||||
|
||||
try {
|
||||
await setLOAExtension(Number(req.params.id), to);
|
||||
|
||||
audit.leaveOfAbsence('extended', { actorId: req.user.id, targetId: Number(req.params.id) });
|
||||
logger.info('app', 'LOA Extended', { extended_by: req.user.id, LOA: req.params.id })
|
||||
|
||||
res.sendStatus(200);
|
||||
} catch (error) {
|
||||
logger.error(
|
||||
'app',
|
||||
'Failed to extend LOA',
|
||||
{
|
||||
error: error instanceof Error ? error.message : String(error),
|
||||
stack: error instanceof Error ? error.stack : undefined,
|
||||
}
|
||||
);
|
||||
res.status(500).json(error);
|
||||
}
|
||||
})
|
||||
|
||||
// admin extend LOA
|
||||
router.post('/extendAdmin/:id', [requireRole(['17th Administrator', '17th HQ', '17th Command'])], async (req: Request, res: Response) => {
|
||||
const to: Date = req.body.to;
|
||||
|
||||
if (!to) {
|
||||
|
||||
Reference in New Issue
Block a user