fix: integratie user + errors gefixt zodat het runt + format
This commit is contained in:
		
							parent
							
								
									6c4ea0eefb
								
							
						
					
					
						commit
						1b096b411b
					
				
					 55 changed files with 858 additions and 594 deletions
				
			
		| 
						 | 
				
			
			@ -1,92 +1,53 @@
 | 
			
		|||
import { Request, Response } from 'express';
 | 
			
		||||
import { TeacherUserService, TeacherService } from '../services/teachers.js';
 | 
			
		||||
import { ClassDTO } from '../interfaces/class.js';
 | 
			
		||||
import { StudentDTO } from '../interfaces/student.js';
 | 
			
		||||
import { QuestionDTO, QuestionId } from '../interfaces/question.js';
 | 
			
		||||
import {
 | 
			
		||||
    createTeacher,
 | 
			
		||||
    deleteTeacher,
 | 
			
		||||
    getTeacherByUsername,
 | 
			
		||||
    getClassesByTeacher,
 | 
			
		||||
    getClassIdsByTeacher,
 | 
			
		||||
    getAllTeachers,
 | 
			
		||||
    getAllTeachersIds, getStudentsByTeacher, getStudentIdsByTeacher, getQuestionsByTeacher, getQuestionIdsByTeacher
 | 
			
		||||
} from '../services/teachers.js';
 | 
			
		||||
import {TeacherDTO} from "../interfaces/teacher";
 | 
			
		||||
import {ClassDTO} from "../interfaces/class";
 | 
			
		||||
import {StudentDTO} from "../interfaces/student";
 | 
			
		||||
import {QuestionDTO, QuestionId} from "../interfaces/question";
 | 
			
		||||
    createUserHandler,
 | 
			
		||||
    deleteUserHandler,
 | 
			
		||||
    getAllUsersHandler,
 | 
			
		||||
    getUserHandler,
 | 
			
		||||
} from './users.js';
 | 
			
		||||
import { Teacher } from '../entities/users/teacher.entity.js';
 | 
			
		||||
 | 
			
		||||
export async function getTeacherHandler(req: Request, res: Response): Promise<void> {
 | 
			
		||||
    try {
 | 
			
		||||
        const full = req.query.full === 'true';
 | 
			
		||||
        const username = req.query.username as string;
 | 
			
		||||
export async function getAllTeachersHandler(
 | 
			
		||||
    req: Request,
 | 
			
		||||
    res: Response
 | 
			
		||||
): Promise<void> {
 | 
			
		||||
    await getAllUsersHandler<Teacher>(req, res, new TeacherUserService());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
        if (username){
 | 
			
		||||
            const teacher = await getTeacherByUsername(username);
 | 
			
		||||
            if (!teacher){
 | 
			
		||||
                res.status(404).json({ error: `Teacher with username '${username}' not found.` });
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            res.json(teacher);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let teachers: TeacherDTO[] | string[];
 | 
			
		||||
 | 
			
		||||
        if (full) teachers = await getAllTeachers();
 | 
			
		||||
        else teachers = await getAllTeachersIds();
 | 
			
		||||
 | 
			
		||||
        res.json(teachers);
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error("❌ Error fetching teachers:", error);
 | 
			
		||||
        res.status(500).json({ error: "Internal server error" });
 | 
			
		||||
    }
 | 
			
		||||
export async function getTeacherHandler(
 | 
			
		||||
    req: Request,
 | 
			
		||||
    res: Response
 | 
			
		||||
): Promise<void> {
 | 
			
		||||
    await getUserHandler<Teacher>(req, res, new TeacherUserService());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function createTeacherHandler(
 | 
			
		||||
    req: Request,
 | 
			
		||||
    res: Response
 | 
			
		||||
): Promise<void> {
 | 
			
		||||
    try {
 | 
			
		||||
        const teacherData = req.body as TeacherDTO;
 | 
			
		||||
 | 
			
		||||
        if (!teacherData.username || !teacherData.firstName || !teacherData.lastName) {
 | 
			
		||||
            res.status(400).json({ error: 'Missing required fields: username, firstName, lastName' });
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const newTeacher = await createTeacher(teacherData);
 | 
			
		||||
        res.status(201).json(newTeacher);
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error('Error creating teacher:', error);
 | 
			
		||||
        res.status(500).json({ error: 'Internal server error' });
 | 
			
		||||
    }
 | 
			
		||||
    await createUserHandler<Teacher>(
 | 
			
		||||
        req,
 | 
			
		||||
        res,
 | 
			
		||||
        new TeacherUserService(),
 | 
			
		||||
        Teacher
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function deleteTeacherHandler(
 | 
			
		||||
    req: Request,
 | 
			
		||||
    res: Response
 | 
			
		||||
): Promise<void> {
 | 
			
		||||
    try {
 | 
			
		||||
        const username = req.params.username as string;
 | 
			
		||||
 | 
			
		||||
        if (!username) {
 | 
			
		||||
            res.status(400).json({ error: 'Missing required field: username' });
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const deletedTeacher = await deleteTeacher(username);
 | 
			
		||||
 | 
			
		||||
        if (!deletedTeacher) {
 | 
			
		||||
            res.status(400).json({ error: `Did not find teacher with username ${username}` });
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        res.status(201).json(deletedTeacher);
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error('Error deleting teacher:', error);
 | 
			
		||||
        res.status(500).json({ error: 'Internal server error' });
 | 
			
		||||
    }
 | 
			
		||||
    await deleteUserHandler<Teacher>(req, res, new TeacherUserService());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function getTeacherClassHandler(req: Request, res: Response): Promise<void> {
 | 
			
		||||
export async function getTeacherClassHandler(
 | 
			
		||||
    req: Request,
 | 
			
		||||
    res: Response
 | 
			
		||||
): Promise<void> {
 | 
			
		||||
    try {
 | 
			
		||||
        const username = req.params.username as string;
 | 
			
		||||
        const full = req.query.full === 'true';
 | 
			
		||||
| 
						 | 
				
			
			@ -96,10 +57,11 @@ export async function getTeacherClassHandler(req: Request, res: Response): Promi
 | 
			
		|||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let classes: ClassDTO[] | string[];
 | 
			
		||||
        const teacherService = new TeacherService();
 | 
			
		||||
 | 
			
		||||
        if (full) classes = await getClassesByTeacher(username);
 | 
			
		||||
        else classes = await getClassIdsByTeacher(username);
 | 
			
		||||
        const classes: ClassDTO[] | string[] = full
 | 
			
		||||
            ? await teacherService.getClassesByTeacher(username)
 | 
			
		||||
            : await teacherService.getClassIdsByTeacher(username);
 | 
			
		||||
 | 
			
		||||
        res.status(201).json(classes);
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
| 
						 | 
				
			
			@ -108,7 +70,10 @@ export async function getTeacherClassHandler(req: Request, res: Response): Promi
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function getTeacherStudentHandler(req: Request, res: Response): Promise<void> {
 | 
			
		||||
export async function getTeacherStudentHandler(
 | 
			
		||||
    req: Request,
 | 
			
		||||
    res: Response
 | 
			
		||||
): Promise<void> {
 | 
			
		||||
    try {
 | 
			
		||||
        const username = req.params.username as string;
 | 
			
		||||
        const full = req.query.full === 'true';
 | 
			
		||||
| 
						 | 
				
			
			@ -118,10 +83,11 @@ export async function getTeacherStudentHandler(req: Request, res: Response): Pro
 | 
			
		|||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let students: StudentDTO[] | string[];
 | 
			
		||||
        const teacherService = new TeacherService();
 | 
			
		||||
 | 
			
		||||
        if (full) students = await getStudentsByTeacher(username);
 | 
			
		||||
        else students = await getStudentIdsByTeacher(username);
 | 
			
		||||
        const students: StudentDTO[] | string[] = full
 | 
			
		||||
            ? await teacherService.getStudentsByTeacher(username)
 | 
			
		||||
            : await teacherService.getStudentIdsByTeacher(username);
 | 
			
		||||
 | 
			
		||||
        res.status(201).json(students);
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
| 
						 | 
				
			
			@ -130,7 +96,10 @@ export async function getTeacherStudentHandler(req: Request, res: Response): Pro
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function getTeacherQuestionHandler(req: Request, res: Response): Promise<void> {
 | 
			
		||||
export async function getTeacherQuestionHandler(
 | 
			
		||||
    req: Request,
 | 
			
		||||
    res: Response
 | 
			
		||||
): Promise<void> {
 | 
			
		||||
    try {
 | 
			
		||||
        const username = req.params.username as string;
 | 
			
		||||
        const full = req.query.full === 'true';
 | 
			
		||||
| 
						 | 
				
			
			@ -140,10 +109,11 @@ export async function getTeacherQuestionHandler(req: Request, res: Response): Pr
 | 
			
		|||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let questions: QuestionDTO[] | QuestionId[];
 | 
			
		||||
        const teacherService = new TeacherService();
 | 
			
		||||
 | 
			
		||||
        if (full) questions = await getQuestionsByTeacher(username);
 | 
			
		||||
        else questions = await getQuestionIdsByTeacher(username);
 | 
			
		||||
        const questions: QuestionDTO[] | QuestionId[] = full
 | 
			
		||||
            ? await teacherService.getQuestionsByTeacher(username)
 | 
			
		||||
            : await teacherService.getQuestionIdsByTeacher(username);
 | 
			
		||||
 | 
			
		||||
        res.status(201).json(questions);
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
| 
						 | 
				
			
			@ -151,5 +121,3 @@ export async function getTeacherQuestionHandler(req: Request, res: Response): Pr
 | 
			
		|||
        res.status(500).json({ error: 'Internal server error' });
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue