feat: Made additions to grades
This commit is contained in:
29
src/attendence.ts
Normal file
29
src/attendence.ts
Normal 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()
|
||||
@@ -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}
|
||||
@@ -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})
|
||||
})
|
||||
|
||||
|
||||
@@ -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 };
|
||||
|
||||
@@ -8,6 +8,9 @@ interface IUSettings {
|
||||
sn: string[];
|
||||
kol: string[];
|
||||
}
|
||||
},
|
||||
vapid: {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user