Commit graph

62 commits

Author SHA1 Message Date
JakkrapartXD
832a8f5067 feat: add course approval history endpoint for instructors to view rejection reasons and approval timeline 2026-02-06 14:52:10 +07:00
JakkrapartXD
108f1b73f2 feat: integrate audit logging across authentication, course management, and user operations
Add comprehensive audit trail tracking by integrating auditService throughout the application. Track user authentication (LOGIN, REGISTER), course lifecycle (CREATE, APPROVE_COURSE, REJECT_COURSE, ENROLL), content management (CREATE/DELETE Chapter/Lesson), file operations (UPLOAD_FILE, DELETE_FILE for videos and attachments), password management (CHANGE_PASSWORD, RESET_PASSWORD), user role updates (UPDATE
2026-02-05 17:35:37 +07:00
JakkrapartXD
05755992a7 feat: add published_at field support to announcements with scheduled publishing and student visibility filtering
Add published_at field to announcement creation and updates, allowing instructors to schedule announcement publishing. Update student announcement filtering to only show PUBLISHED announcements where published_at <= now. Modify announcement creation to set published_at to provided value or current time for PUBLISHED status. Update announcement updates to handle published_at changes while
2026-02-04 16:15:38 +07:00
JakkrapartXD
ff841c7638 feat: add search and filter capabilities to student and quiz endpoints, implement YouTube video support for lessons
Add search and status filter parameters to getEnrolledStudents endpoint to filter students by name/email/username and enrollment status. Add search and isPassed filter parameters to getQuizScores endpoint to filter quiz results by student details and pass status. Remove separate searchStudents endpoint as its functionality is now integrated into getEnrolledStudents. Add setYouTubeVideo endpoint to
2026-02-03 17:23:47 +07:00
JakkrapartXD
7749a39be7 feat: add enrolled student detail endpoint and reorder student endpoints
Add getEnrolledStudentDetail endpoint to retrieve individual student's lesson progress across all course chapters. Move searchStudents endpoint before getEnrolledStudentDetail to prevent route conflicts. Remove correct_choice_id and correct_choice_text from quiz attempt detail answers review. Fix selected_choice_id mapping to use choice_id from student answers.
2026-02-03 14:42:45 +07:00
JakkrapartXD
06db182c46 feat: add email_verified_at field to auth controller mock responses and user management service
Add email_verified_at field to mock user responses in login, registerInstructor, and registerStudent endpoints. Include email_verified_at in UserManagementService user response mapping to ensure consistency across all user-related endpoints.
2026-02-03 10:41:06 +07:00
JakkrapartXD
48e8f56e22 feat: update instructor search to exclude self and existing course instructors, add email_verified_at to user responses
Update searchInstructors endpoint to accept courseId parameter and filter out the requesting instructor and instructors already assigned to the course. Add email_verified_at field to UserResponse type and include it in auth and user service responses.
2026-02-03 10:38:59 +07:00
JakkrapartXD
80d7372dfa feat: add instructor endpoints for student progress tracking and quiz score management
Add four new instructor endpoints: getEnrolledStudents to view all enrolled students with progress, getQuizScores to view quiz scores for all students in a lesson, getQuizAttemptDetail to view detailed quiz attempt for a specific student, and searchStudents to search enrolled students by name/email/username. Add getQuizAttempts endpoint for students to retrieve their own quiz attempt history. All endpoints include
2026-02-02 18:02:19 +07:00
JakkrapartXD
b7e4f45942 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.
2026-02-02 11:49:23 +07:00
JakkrapartXD
d7f824f353 feat: standardize login response format with code, message, and data wrapper
Update login endpoint to return consistent API response structure with code, message, and data fields. Wrap token, refreshToken, and user data inside a data object to match the standardized response format used across other endpoints.
2026-01-30 17:54:43 +07:00
JakkrapartXD
babccc4869 feat: add email verification endpoints with token-based verification and SMTP integration 2026-01-30 14:53:50 +07:00
JakkrapartXD
9ed2347843 feat: add certificate generation system with PDF template and Thai font support 2026-01-30 14:14:00 +07:00
JakkrapartXD
24c37df4ef refactor: reorder searchInstructors endpoint and fix role code to uppercase INSTRUCTOR, add lesson completion tracking on quiz pass 2026-01-29 16:39:33 +07:00
JakkrapartXD
0641b2547a refactor: simplify instructor search to query all instructors without course-specific filtering 2026-01-29 16:17:25 +07:00
JakkrapartXD
f4a12c686b feat: Implement instructor search and improve instructor management with email/username lookup and avatar presigned URLs. 2026-01-29 15:52:10 +07:00
JakkrapartXD
07ab43a785 feat: update getCourseById endpoint to return single course response type and improve error handling. 2026-01-28 17:08:44 +07:00
JakkrapartXD
b303c50865 feat: add dedicated thumbnail upload endpoint for courses with old file cleanup and presigned URL generation. 2026-01-28 16:47:08 +07:00
JakkrapartXD
cf12ef965e feat: add thumbnail upload support to course creation endpoint with multipart form data handling. 2026-01-28 14:38:11 +07:00
JakkrapartXD
53314dfd7e feat: implement avatar upload functionality with presigned URL support for user profiles and announcement attachments. 2026-01-28 11:49:11 +07:00
JakkrapartXD
d2b3842564 feat: enable file upload support for announcement creation with multipart form data handling. 2026-01-27 16:43:59 +07:00
JakkrapartXD
dd5a8c1cc8 feat: reorder Security decorator in announcements controller for consistency. 2026-01-27 14:36:28 +07:00
JakkrapartXD
52a013f431 feat: add JWT authentication requirement to announcements retrieval endpoint. 2026-01-27 14:23:51 +07:00
JakkrapartXD
baf389643b feat: implement announcement management service with CRUD operations, attachment handling, and role-based access control for courses. 2026-01-27 14:00:20 +07:00
JakkrapartXD
be7348c74d feat: Implement granular API for video upload/update and attachment management with dedicated types and endpoints. 2026-01-26 17:23:26 +07:00
JakkrapartXD
84e4d478c7 feat: add API endpoint and service logic for reordering quiz questions. 2026-01-26 12:00:59 +07:00
JakkrapartXD
8fc11381ad reorder lesson fix path 2026-01-23 13:33:47 +07:00
JakkrapartXD
5d6cab229f make admin approve api 2026-01-23 13:16:41 +07:00
JakkrapartXD
6acb536aef add filter APPROVED to couse to see olny APPROVED course 2026-01-23 11:29:46 +07:00
JakkrapartXD
6e5a8d01e6 add skill to project 2026-01-23 10:53:48 +07:00
JakkrapartXD
5e7d265ffb add filter to course 2026-01-23 10:37:30 +07:00
JakkrapartXD
c982ab2c05 add check quizz for student 2026-01-22 17:30:35 +07:00
JakkrapartXD
5c2b5d55aa update api chapterlesson 2026-01-22 15:56:56 +07:00
JakkrapartXD
bb79e6aedc feat: Remove createLessonWithFiles endpoint and its associated imports and types. 2026-01-22 10:22:53 +07:00
JakkrapartXD
fc3e2820cc feat: Introduce dedicated instructor and student controllers for chapter and lesson management, including quiz questions. 2026-01-21 16:52:54 +07:00
JakkrapartXD
9a7eb50d17 feat: Add student and instructor chapter/lesson controllers and refactor instructor lesson file upload endpoints with TSOA. 2026-01-21 16:52:38 +07:00
JakkrapartXD
cad3f276f5 refactor: add type assertions for request parameters and explicitly type multer middleware. 2026-01-20 10:03:06 +00:00
JakkrapartXD
04e2da43c4 feat: Implement lesson creation with file uploads (video, attachments) and quiz data, integrating MinIO for storage. 2026-01-20 16:51:42 +07:00
JakkrapartXD
057f640272 refactor: Standardize type naming conventions and file casing for course and category types. 2026-01-20 07:13:59 +00:00
JakkrapartXD
6bbbde062a feat: Implement chapter and lesson management with new services and types, and introduce Minio service. 2026-01-20 13:39:42 +07:00
JakkrapartXD
0308995d8e feat: Implement lesson access control logic including enrollment, prerequisite, and quiz completion checks. 2026-01-19 17:08:06 +07:00
JakkrapartXD
a38389cc9f feat: Add instructor registration endpoint and rename student registration to learner registration. 2026-01-19 07:30:28 +00:00
JakkrapartXD
e379ed83c8 refactor: Split category management into separate public and admin controllers, adjusting routes and tags accordingly. 2026-01-19 14:19:51 +07:00
JakkrapartXD
4c9ad1cea7 feat: Implement student course management functionalities and standardize multi-language text types across course and category definitions. 2026-01-19 14:14:59 +07:00
JakkrapartXD
d97569acbc feat: remove admin security from category listing. 2026-01-19 14:12:17 +07:00
JakkrapartXD
946d6ea0ca docs: Add JSDoc comments to all instructor course controller methods and update HTTP verbs for instructor management endpoints. 2026-01-19 10:09:10 +07:00
JakkrapartXD
b5ca6b2e0f feat: Introduce API endpoints and refactor service methods for adding, removing, listing, and setting primary course instructors. 2026-01-16 17:52:36 +07:00
JakkrapartXD
2e536ad193 feat: Add instructor capabilities to update, delete, and submit courses for review. 2026-01-16 17:36:32 +07:00
JakkrapartXD
8a2ca592bc feat: Implement instructor-specific course management with dedicated controller, service, types, and validation. 2026-01-16 15:43:14 +07:00
JakkrapartXD
000de75dd1 feat: Implement instructor-specific course management and refactor course creation into dedicated modules. 2026-01-16 11:12:12 +07:00
JakkrapartXD
1aa3190ca4 feat: implement course listing and retrieval API with dedicated controller, service, and types. 2026-01-15 17:57:32 +07:00