feat: add student endpoint for listing course announcements

Add new AnnouncementsStudentController with GET endpoint for students to retrieve course announcements with pagination support. Endpoint requires JWT authentication and validates course enrollment.
This commit is contained in:
JakkrapartXD 2026-02-02 11:49:23 +07:00
parent 18b8f4501f
commit b7e4f45942

View file

@ -193,3 +193,36 @@ export class AnnouncementsController {
});
}
}
@Route('api/student/courses/{courseId}/announcements')
@Tags('CoursesStudent')
export class AnnouncementsStudentController {
/**
* ()
* List announcements for a course (for students)
* @param courseId - / Course ID
* @param page - / Page number
* @param limit - / Items per page
*/
@Get()
@Security('jwt')
@SuccessResponse('200', 'Announcements retrieved successfully')
@Response('401', 'Unauthorized')
@Response('403', 'Forbidden - Not enrolled in this course')
public async listAnnouncements(
@Request() request: any,
@Path() courseId: number,
@Query() page?: number,
@Query() limit?: number
): Promise<ListAnnouncementResponse> {
const token = request.headers.authorization?.replace('Bearer ', '');
if (!token) throw new ValidationError('No token provided');
return await announcementsService.listAnnouncement({
token,
course_id: courseId,
page,
limit,
});
}
}