import express from "express"; import { Body, Controller, Get, Path, Post, Query, Request, Route } from "tsoa"; import type { ExamCreationDto, ExamDto, ExamWithMembersDto, MemberExamCreationDto, MemberExamDto, } from "../dtos/examDto.js"; import { inject } from "../infrastructure/di/index.js"; import { ExamsService } from "../services/examsService.js"; @Route("exams") export class ExamsController extends Controller { private readonly examsService = inject(ExamsService); @Post() public async createExam( @Request() request: express.Request, @Body() newExam: ExamCreationDto, ): Promise { return await this.examsService.createExam(newExam, request); } @Get("latest") public async getLatestExam( @Request() request: express.Request, ): Promise { return await this.examsService.getLatest(request); } @Post("register/{examId}") public async registerForExam( @Request() request: express.Request, @Body() newRegistration: MemberExamCreationDto ): Promise { return await this.examsService.register(newRegistration, request); } }