More bookstack integration stuff
This commit is contained in:
@@ -22,4 +22,9 @@ CLIENT_DOMAIN= #whatever.com
|
||||
|
||||
# Glitchtip
|
||||
GLITCHTIP_DSN=
|
||||
DISABLE_GLITCHTIP= # true/false
|
||||
DISABLE_GLITCHTIP= # true/false
|
||||
|
||||
# Bookstack
|
||||
DOC_HOST= # https://bookstack.whatever.com/
|
||||
DOC_TOKEN_SECRET=
|
||||
DOC_TOKEN_ID=
|
||||
@@ -3,7 +3,7 @@ const router = express.Router();
|
||||
|
||||
import { Request, Response } from 'express';
|
||||
import pool from '../db';
|
||||
import { createNewLOA, getAllLOA, getLoaTypes, getUserLOA } from '../services/loaService';
|
||||
import { closeLOA, createNewLOA, getAllLOA, getLOAbyID, getLoaTypes, getUserLOA } from '../services/loaService';
|
||||
import { LOARequest } from '@app/shared/types/loa';
|
||||
|
||||
//member posts LOA
|
||||
@@ -73,4 +73,62 @@ router.get('/types', async (req: Request, res: Response) => {
|
||||
}
|
||||
})
|
||||
|
||||
router.post('/cancel/:id', async (req: Request, res: Response) => {
|
||||
let closer = req.user.id;
|
||||
let id = Number(req.params.id);
|
||||
try {
|
||||
let loa = await getLOAbyID(id);
|
||||
if (loa.member_id != closer) {
|
||||
return res.sendStatus(403);
|
||||
}
|
||||
|
||||
await closeLOA(Number(req.params.id), closer);
|
||||
res.sendStatus(200);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
res.status(500).json(error);
|
||||
}
|
||||
})
|
||||
|
||||
//TODO: enforce admin only
|
||||
router.post('/adminCancel/:id', async (req: Request, res: Response) => {
|
||||
let closer = req.user.id;
|
||||
try {
|
||||
await closeLOA(Number(req.params.id), closer);
|
||||
res.sendStatus(200);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
res.status(500).json(error);
|
||||
}
|
||||
})
|
||||
|
||||
// TODO: Enforce admin only
|
||||
router.post('/extend/:id', async (req: Request, res: Response) => {
|
||||
const extendTo = req.body;
|
||||
console.log(extendTo);
|
||||
try {
|
||||
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
res.status(500).json(error);
|
||||
}
|
||||
})
|
||||
|
||||
router.get('/policy', async (req: Request, res: Response) => {
|
||||
const output = await fetch(`${process.env.DOC_HOST}/api/pages/42`, {
|
||||
headers: {
|
||||
Authorization: `Token ${process.env.DOC_TOKEN_ID}:${process.env.DOC_TOKEN_SECRET}`,
|
||||
}
|
||||
})
|
||||
|
||||
if (output.ok) {
|
||||
const out = await output.json();
|
||||
console.log(out);
|
||||
res.status(200).json(out);
|
||||
} else {
|
||||
console.log("BAD");
|
||||
res.sendStatus(500);
|
||||
}
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
|
||||
@@ -27,4 +27,26 @@ export async function createNewLOA(data: LOARequest) {
|
||||
VALUES (?, ?, ?, ?, ?, ?)`;
|
||||
await pool.query(sql, [data.member_id, toDateTime(data.filed_date), toDateTime(data.start_date), toDateTime(data.end_date), data.type_id, data.reason])
|
||||
return;
|
||||
}
|
||||
|
||||
export async function closeLOA(id: number, closer: number) {
|
||||
const sql = `UPDATE leave_of_absences
|
||||
SET closed = 1,
|
||||
closed_by = ?
|
||||
WHERE leave_of_absences.id = ?`;
|
||||
let out = await pool.query(sql, [closer, id]);
|
||||
console.log(out);
|
||||
return out;
|
||||
}
|
||||
|
||||
export async function getLOAbyID(id: number): Promise<LOARequest> {
|
||||
let res = await pool.query(`SELECT * FROM leave_of_absences WHERE id = ?`, [id]);
|
||||
if (res.length != 1)
|
||||
throw new Error(`LOA with id ${id} not found`);
|
||||
return res[0];
|
||||
}
|
||||
|
||||
export async function setLOAExtension(id: number, extendTo: Date) {
|
||||
|
||||
|
||||
}
|
||||
@@ -91,7 +91,7 @@ export async function getLoaTypes(): Promise<LOAType[]> {
|
||||
|
||||
export async function getLoaPolicy(): Promise<string> {
|
||||
//@ts-ignore
|
||||
const res = await fetch(`${import.meta.env.VITE_DOCHOST}/api/pages/42`, {
|
||||
const res = await fetch(`${addr}/loa/policy`, {
|
||||
method: "GET",
|
||||
credentials: 'include',
|
||||
});
|
||||
@@ -105,4 +105,4 @@ export async function getLoaPolicy(): Promise<string> {
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user