45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
import { Exercise } from "../models/exercises/exercise.model";
|
|
import { ExerciseGroup } from "../models/exercises/exerciseGroup.model";
|
|
import { Request, Response, Router } from "express";
|
|
|
|
export const exercises = Router()
|
|
|
|
/**
|
|
* Get all Exercises grouped in ExerciseGroups
|
|
*/
|
|
exercises.get("/", (req: Request, res: Response) => {
|
|
Exercise.findAll({
|
|
include: [ ExerciseGroup ]
|
|
}).then(result => {
|
|
result.sort((a, b) => {
|
|
return (a.dataValues.exerciseGroup.dataValues.groupNr * 10 + a.dataValues.exerciseNr) > (b.dataValues.exerciseGroup.dataValues.groupNr * 10 + b.dataValues.exerciseNr) ? 1 : -1
|
|
})
|
|
|
|
res.status(200).json(result)
|
|
})
|
|
})
|
|
|
|
/**
|
|
* Update state of an Exercise
|
|
*
|
|
* @param groupNr Number of exercise group (not ID)
|
|
* @param exerciseNr Number of exercise (not ID)
|
|
* @param state New state boolean
|
|
*/
|
|
exercises.post("/:groupNr/:exerciseNr/:state", (req: Request, res: Response) => {
|
|
ExerciseGroup.findOne({
|
|
where: { groupNr: req.params.groupNr }
|
|
})
|
|
.then(group => {
|
|
Exercise.findOne({
|
|
where: {
|
|
exerciseNr: req.params.exerciseNr,
|
|
exerciseGroupId: group.id
|
|
}
|
|
})
|
|
.then(exercise => {
|
|
exercise.update({ solved: req.params.state == "1"})
|
|
res.status(200).send()
|
|
})
|
|
})
|
|
}) |