fix: import errors van gabe gefixt, teacher en student abstractie weggedaan
This commit is contained in:
parent
6404335040
commit
b5390258e3
36 changed files with 9754 additions and 180 deletions
|
@ -12,7 +12,7 @@ import {LearningObjectIdentifier} from "../entities/content/learning-object-iden
|
|||
import {Language} from "../entities/content/language.js";
|
||||
|
||||
function getObjectId(req: Request, res: Response): LearningObjectIdentifier | null {
|
||||
const { hruid, version} = req.params
|
||||
const { hruid, version } = req.params
|
||||
const lang = req.query.lang
|
||||
|
||||
if (!hruid || !version ) {
|
||||
|
@ -23,7 +23,7 @@ function getObjectId(req: Request, res: Response): LearningObjectIdentifier | nu
|
|||
return {
|
||||
hruid,
|
||||
language: lang as Language || FALLBACK_LANG,
|
||||
version
|
||||
version: +version
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,49 +1,106 @@
|
|||
import { Request, Response } from 'express';
|
||||
import {
|
||||
createStudent,
|
||||
deleteStudent,
|
||||
getStudent,
|
||||
getStudentAssignments,
|
||||
getStudentClasses,
|
||||
getStudentGroups,
|
||||
getStudentSubmissions,
|
||||
StudentService,
|
||||
} from '../services/students.js';
|
||||
import { ClassDTO } from '../interfaces/class.js';
|
||||
import { getAllAssignments } from '../services/assignments.js';
|
||||
import {
|
||||
createUserHandler,
|
||||
deleteUserHandler,
|
||||
getAllUsersHandler,
|
||||
getUserHandler,
|
||||
} from './users.js';
|
||||
import { Student } from '../entities/users/student.entity.js';
|
||||
import { StudentDTO } from '../interfaces/student.js';
|
||||
import { getStudentRepository } from '../data/repositories.js';
|
||||
import { UserDTO } from '../interfaces/user.js';
|
||||
|
||||
// TODO: accept arguments (full, ...)
|
||||
// TODO: endpoints
|
||||
export async function getAllStudentsHandler(
|
||||
req: Request,
|
||||
res: Response
|
||||
res: Response,
|
||||
): Promise<void> {
|
||||
await getAllUsersHandler<Student>(req, res, new StudentService());
|
||||
const full = req.query.full === 'true';
|
||||
|
||||
const studentRepository = getStudentRepository();
|
||||
|
||||
const students: StudentDTO[] | string[] = full
|
||||
? await getAllStudents()
|
||||
: await getAllStudents();
|
||||
|
||||
if (!students) {
|
||||
res.status(404).json({ error: `Student not found.` });
|
||||
return;
|
||||
}
|
||||
|
||||
res.status(201).json(students);
|
||||
}
|
||||
|
||||
|
||||
export async function getStudentHandler(
|
||||
req: Request,
|
||||
res: Response
|
||||
res: Response,
|
||||
): Promise<void> {
|
||||
await getUserHandler<Student>(req, res, new StudentService());
|
||||
const username = req.params.username;
|
||||
|
||||
if (!username) {
|
||||
res.status(400).json({ error: 'Missing required field: username' });
|
||||
return;
|
||||
}
|
||||
|
||||
const user = await getStudent(username);
|
||||
|
||||
if (!user) {
|
||||
res.status(404).json({
|
||||
error: `User with username '${username}' not found.`,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
res.status(201).json(user);
|
||||
}
|
||||
|
||||
export async function createStudentHandler(
|
||||
req: Request,
|
||||
res: Response
|
||||
): Promise<void> {
|
||||
await createUserHandler<Student>(req, res, new StudentService(), Student);
|
||||
res: Response,
|
||||
) {
|
||||
const userData = req.body as StudentDTO;
|
||||
|
||||
if (!userData.username || !userData.firstName || !userData.lastName) {
|
||||
res.status(400).json({
|
||||
error: 'Missing required fields: username, firstName, lastName',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const newUser = await createStudent(userData);
|
||||
res.status(201).json(newUser);
|
||||
}
|
||||
|
||||
export async function deleteStudentHandler(
|
||||
req: Request,
|
||||
res: Response
|
||||
): Promise<void> {
|
||||
await deleteUserHandler<Student>(req, res, new StudentService());
|
||||
res: Response,
|
||||
) {
|
||||
const username = req.params.username;
|
||||
|
||||
if (!username) {
|
||||
res.status(400).json({ error: 'Missing required field: username' });
|
||||
return;
|
||||
}
|
||||
|
||||
const deletedUser = await deleteStudent(username);
|
||||
if (!deletedUser) {
|
||||
res.status(404).json({
|
||||
error: `User with username '${username}' not found.`,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
res.status(200).json(deletedUser);
|
||||
}
|
||||
|
||||
export async function getStudentClassesHandler(
|
||||
|
@ -115,3 +172,7 @@ export async function getStudentSubmissionsHandler(
|
|||
submissions: submissions,
|
||||
});
|
||||
}
|
||||
function getAllStudents(): StudentDTO[] | string[] | PromiseLike<StudentDTO[] | string[]> {
|
||||
throw new Error('Function not implemented.');
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ export async function getSubmissionHandler(
|
|||
}
|
||||
|
||||
let lang = languageMap[req.query.language as string] || Language.Dutch;
|
||||
let version = req.query.version as string || '1';
|
||||
let version = (req.query.version || 1) as number;
|
||||
|
||||
const submission = await getSubmission(lohruid, lang, version, submissionNumber);
|
||||
|
||||
|
@ -49,7 +49,7 @@ export async function deleteSubmissionHandler(req: Request, res: Response){
|
|||
const submissionNumber = +req.params.id;
|
||||
|
||||
let lang = languageMap[req.query.language as string] || Language.Dutch;
|
||||
let version = req.query.version as string || '1';
|
||||
let version = (req.query.version || 1) as number;
|
||||
|
||||
const submission = await deleteSubmission(hruid, lang, version, submissionNumber);
|
||||
|
||||
|
|
|
@ -1,49 +1,96 @@
|
|||
import { Request, Response } from 'express';
|
||||
import { TeacherUserService, TeacherService } from '../services/teachers.js';
|
||||
import { createTeacher, deleteTeacher, getAllTeachers, getClassesByTeacher, getClassIdsByTeacher, getQuestionIdsByTeacher, getQuestionsByTeacher, getStudentIdsByTeacher, getStudentsByTeacher, getTeacher } from '../services/teachers.js';
|
||||
import { ClassDTO } from '../interfaces/class.js';
|
||||
import { StudentDTO } from '../interfaces/student.js';
|
||||
import { QuestionDTO, QuestionId } from '../interfaces/question.js';
|
||||
import {
|
||||
createUserHandler,
|
||||
deleteUserHandler,
|
||||
getAllUsersHandler,
|
||||
getUserHandler,
|
||||
} from './users.js';
|
||||
import { Teacher } from '../entities/users/teacher.entity.js';
|
||||
import { TeacherDTO } from '../interfaces/teacher.js';
|
||||
import { getTeacherRepository } from '../data/repositories.js';
|
||||
|
||||
export async function getAllTeachersHandler(
|
||||
req: Request,
|
||||
res: Response
|
||||
res: Response,
|
||||
): Promise<void> {
|
||||
await getAllUsersHandler<Teacher>(req, res, new TeacherUserService());
|
||||
const full = req.query.full === 'true';
|
||||
|
||||
const teacherRepository = getTeacherRepository();
|
||||
|
||||
const teachers: TeacherDTO[] | string[] = full
|
||||
? await getAllTeachers()
|
||||
: await getAllTeachers();
|
||||
|
||||
if (!teachers) {
|
||||
res.status(404).json({ error: `Teacher not found.` });
|
||||
return;
|
||||
}
|
||||
|
||||
res.status(201).json(teachers);
|
||||
}
|
||||
|
||||
|
||||
export async function getTeacherHandler(
|
||||
req: Request,
|
||||
res: Response
|
||||
res: Response,
|
||||
): Promise<void> {
|
||||
await getUserHandler<Teacher>(req, res, new TeacherUserService());
|
||||
const username = req.params.username;
|
||||
|
||||
if (!username) {
|
||||
res.status(400).json({ error: 'Missing required field: username' });
|
||||
return;
|
||||
}
|
||||
|
||||
const user = await getTeacher(username);
|
||||
|
||||
if (!user) {
|
||||
res.status(404).json({
|
||||
error: `User with username '${username}' not found.`,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
res.status(201).json(user);
|
||||
}
|
||||
|
||||
export async function createTeacherHandler(
|
||||
req: Request,
|
||||
res: Response
|
||||
): Promise<void> {
|
||||
await createUserHandler<Teacher>(
|
||||
req,
|
||||
res,
|
||||
new TeacherUserService(),
|
||||
Teacher
|
||||
);
|
||||
res: Response,
|
||||
) {
|
||||
const userData = req.body as TeacherDTO;
|
||||
|
||||
if (!userData.username || !userData.firstName || !userData.lastName) {
|
||||
res.status(400).json({
|
||||
error: 'Missing required fields: username, firstName, lastName',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const newUser = await createTeacher(userData);
|
||||
res.status(201).json(newUser);
|
||||
}
|
||||
|
||||
export async function deleteTeacherHandler(
|
||||
req: Request,
|
||||
res: Response
|
||||
): Promise<void> {
|
||||
await deleteUserHandler<Teacher>(req, res, new TeacherUserService());
|
||||
res: Response,
|
||||
) {
|
||||
const username = req.params.username;
|
||||
|
||||
if (!username) {
|
||||
res.status(400).json({ error: 'Missing required field: username' });
|
||||
return;
|
||||
}
|
||||
|
||||
const deletedUser = await deleteTeacher(username);
|
||||
if (!deletedUser) {
|
||||
res.status(404).json({
|
||||
error: `User with username '${username}' not found.`,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
res.status(200).json(deletedUser);
|
||||
}
|
||||
|
||||
|
||||
export async function getTeacherClassHandler(
|
||||
req: Request,
|
||||
res: Response
|
||||
|
@ -57,11 +104,9 @@ export async function getTeacherClassHandler(
|
|||
return;
|
||||
}
|
||||
|
||||
const teacherService = new TeacherService();
|
||||
|
||||
const classes: ClassDTO[] | string[] = full
|
||||
? await teacherService.getClassesByTeacher(username)
|
||||
: await teacherService.getClassIdsByTeacher(username);
|
||||
? await getClassesByTeacher(username)
|
||||
: await getClassIdsByTeacher(username);
|
||||
|
||||
res.status(201).json(classes);
|
||||
} catch (error) {
|
||||
|
@ -83,11 +128,9 @@ export async function getTeacherStudentHandler(
|
|||
return;
|
||||
}
|
||||
|
||||
const teacherService = new TeacherService();
|
||||
|
||||
const students: StudentDTO[] | string[] = full
|
||||
? await teacherService.getStudentsByTeacher(username)
|
||||
: await teacherService.getStudentIdsByTeacher(username);
|
||||
? await getStudentsByTeacher(username)
|
||||
: await getStudentIdsByTeacher(username);
|
||||
|
||||
res.status(201).json(students);
|
||||
} catch (error) {
|
||||
|
@ -109,11 +152,9 @@ export async function getTeacherQuestionHandler(
|
|||
return;
|
||||
}
|
||||
|
||||
const teacherService = new TeacherService();
|
||||
|
||||
const questions: QuestionDTO[] | QuestionId[] = full
|
||||
? await teacherService.getQuestionsByTeacher(username)
|
||||
: await teacherService.getQuestionIdsByTeacher(username);
|
||||
? await getQuestionsByTeacher(username)
|
||||
: await getQuestionIdsByTeacher(username);
|
||||
|
||||
res.status(201).json(questions);
|
||||
} catch (error) {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { Request, Response } from 'express';
|
||||
import { themes } from '../data/themes.js';
|
||||
import { loadTranslations } from '../util/translationHelper.js';
|
||||
import { loadTranslations } from '../util/translation-helper.js';
|
||||
|
||||
interface Translations {
|
||||
curricula_page: {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue