feat: post en delete toegevoegd voor class students en teachers
This commit is contained in:
parent
441b77b8cd
commit
d65bb1f4a6
3 changed files with 94 additions and 0 deletions
|
@ -1,7 +1,11 @@
|
|||
import { Request, Response } from 'express';
|
||||
import {
|
||||
addClassStudent,
|
||||
addClassTeacher,
|
||||
createClass,
|
||||
deleteClass,
|
||||
deleteClassStudent,
|
||||
deleteClassTeacher,
|
||||
getAllClasses,
|
||||
getClass,
|
||||
getClassStudents,
|
||||
|
@ -73,3 +77,43 @@ export async function getTeacherInvitationsHandler(req: Request, res: Response):
|
|||
|
||||
res.json({ invitations });
|
||||
}
|
||||
|
||||
export async function deleteClassStudentHandler(req: Request, res: Response): Promise<void> {
|
||||
const classId = req.params.id;
|
||||
const username = req.params.username;
|
||||
requireFields({ classId, username });
|
||||
|
||||
const cls = await deleteClassStudent(classId, username);
|
||||
|
||||
res.json({ class: cls });
|
||||
}
|
||||
|
||||
export async function deleteClassTeacherHandler(req: Request, res: Response): Promise<void> {
|
||||
const classId = req.params.id;
|
||||
const username = req.params.username;
|
||||
requireFields({ classId, username });
|
||||
|
||||
const cls = await deleteClassTeacher(classId, username);
|
||||
|
||||
res.json({ class: cls });
|
||||
}
|
||||
|
||||
export async function addClassStudentHandler(req: Request, res: Response): Promise<void> {
|
||||
const classId = req.params.id;
|
||||
const username = req.body.username;
|
||||
requireFields({ classId, username });
|
||||
|
||||
const cls = await addClassStudent(classId, username);
|
||||
|
||||
res.json({ class: cls });
|
||||
}
|
||||
|
||||
export async function addClassTeacherHandler(req: Request, res: Response): Promise<void> {
|
||||
const classId = req.params.id;
|
||||
const username = req.body.username;
|
||||
requireFields({ classId, username });
|
||||
|
||||
const cls = await addClassTeacher(classId, username);
|
||||
|
||||
res.json({ class: cls });
|
||||
}
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
import express from 'express';
|
||||
import {
|
||||
addClassStudentHandler,
|
||||
addClassTeacherHandler,
|
||||
createClassHandler,
|
||||
deleteClassHandler,
|
||||
deleteClassStudentHandler,
|
||||
deleteClassTeacherHandler,
|
||||
getAllClassesHandler,
|
||||
getClassHandler,
|
||||
getClassStudentsHandler, getClassTeachersHandler,
|
||||
|
@ -24,8 +28,16 @@ router.get('/:id/teacher-invitations', getTeacherInvitationsHandler);
|
|||
|
||||
router.get('/:id/students', getClassStudentsHandler);
|
||||
|
||||
router.post('/:id/students', addClassStudentHandler);
|
||||
|
||||
router.delete('/:id/students/:username', deleteClassStudentHandler);
|
||||
|
||||
router.get('/:id/teachers', getClassTeachersHandler);
|
||||
|
||||
router.post('/:id/teachers', addClassTeacherHandler);
|
||||
|
||||
router.delete('/:id/teachers/:username', deleteClassTeacherHandler);
|
||||
|
||||
router.use('/:classid/assignments', assignmentRouter);
|
||||
|
||||
export default router;
|
||||
|
|
|
@ -101,3 +101,41 @@ export async function getClassTeacherInvitations(classId: string, full: boolean)
|
|||
|
||||
return invitations.map(mapToTeacherInvitationDTOIds);
|
||||
}
|
||||
|
||||
export async function deleteClassStudent(classId: string, username: string): Promise<ClassDTO> {
|
||||
const cls = await fetchClass(classId);
|
||||
|
||||
const classRepository = getClassRepository();
|
||||
classRepository.assign(cls, { students: cls.students.filter((student) => student.username !== username) });
|
||||
|
||||
return mapToClassDTO(cls);
|
||||
}
|
||||
|
||||
export async function deleteClassTeacher(classId: string, username: string): Promise<ClassDTO> {
|
||||
const cls = await fetchClass(classId);
|
||||
|
||||
const classRepository = getClassRepository();
|
||||
classRepository.assign(cls, { teachers: cls.teachers.filter((teacher) => teacher.username !== username) });
|
||||
|
||||
return mapToClassDTO(cls);
|
||||
}
|
||||
|
||||
export async function addClassStudent(classId: string, username: string): Promise<ClassDTO> {
|
||||
const cls = await fetchClass(classId);
|
||||
const newStudent = await fetchStudent(username);
|
||||
|
||||
const classRepository = getClassRepository();
|
||||
classRepository.assign(cls, { students: [...cls.students, newStudent] });
|
||||
|
||||
return mapToClassDTO(cls);
|
||||
}
|
||||
|
||||
export async function addClassTeacher(classId: string, username: string): Promise<ClassDTO> {
|
||||
const cls = await fetchClass(classId);
|
||||
const newTeacher = await fetchTeacher(username);
|
||||
|
||||
const classRepository = getClassRepository();
|
||||
classRepository.assign(cls, { teachers: [...cls.teachers, newTeacher] });
|
||||
|
||||
return mapToClassDTO(cls);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue