feat: Made additions to grades

This commit is contained in:
2025-05-03 18:46:38 +02:00
parent 46a4428389
commit 84244777e2
7 changed files with 129 additions and 20 deletions

29
src/attendence.ts Normal file
View File

@@ -0,0 +1,29 @@
import { Job, scheduleJob } from "node-schedule";
class Attendence {
private attendence = new Map<string, {_id: string, hour?: string}[]>();
private job: Job
constructor () {
this.job = scheduleJob("0 0 * * *", () => {
this.attendence.clear()
})
}
setRoom (room: string, att: {_id: string, hour?: string}[]) {
this.attendence.set(room, att)
}
getRoom (room: string) {
return this.attendence.get(room)
}
summary () {
var summary: {room: string, hours: string[]}[] = []
this.attendence.forEach((v, k) => {
summary.push({room: k, hours: v.map(i => i.hour)})
})
return summary
}
}
export default new Attendence()

View File

@@ -3,12 +3,14 @@ import { Perms, adminPerm } from "@/utility";
import capability, { Features } from "@/capability";
import usettings from "@/usettings";
import Grade from "@schemas/Grade";
import User from "@/schemas/User";
import attendence from "@/attendence";
const cleanRouter = Router()
cleanRouter.use(adminPerm(Perms.Clean))
cleanRouter.use(capability.mw(Features.Clean))
cleanRouter.get("/:date/:room", async (req, res) => {
cleanRouter.get("/:date([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?([Zz]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)/:room", async (req, res) => {
res.send(await Grade.findOne({
date: new Date(req.params.date),
room: req.params.room
@@ -68,4 +70,20 @@ cleanRouter.get('/config', (req, res) => {
})
})
cleanRouter.get('/attendence/:room', async (req, res) => {
res.send({
users: await User.find({room: Number(req.params.room)}, {fname: true, surname: true, _id: true}),
attendence: attendence.getRoom(req.params.room)
})
})
cleanRouter.post('/attendence/:room', async (req, res) => {
attendence.setRoom(req.params.room, req.body)
res.send({status: 200})
})
cleanRouter.get('/attendenceSummary', async (req, res) => {
res.send(attendence.summary())
})
export {cleanRouter}

View File

@@ -11,7 +11,7 @@ settingsRouter.get('/', (req, res) => {
})
settingsRouter.post('/', (req, res) => {
usettings.settings = project(req.body, {keyrooms: true, cleanThings: true, rooms: true})
usettings.settings = project(req.body, {keyrooms: true, cleanThings: true, rooms: true, menu: true})
res.send({status: 200})
})

View File

@@ -52,7 +52,7 @@ authRouter.get("/check", islogged, (req, res, next) => {
res.status(401).send("Your account has been locked.")
})
}
res.send({"admin": req.user.admin, "features": cap.flags, "room": req.user.room, "menu": {"defaultItems": usettings.settings.menu.defaultItems}})
res.send({"admin": req.user.admin, "features": cap.flags, "vapid": usettings.settings.vapid, "room": req.user.room, "menu": {"defaultItems": usettings.settings.menu.defaultItems}})
})
export { authRouter };

View File

@@ -8,6 +8,9 @@ interface IUSettings {
sn: string[];
kol: string[];
}
},
vapid: {
}
}