mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
units,lesson as standalone
This commit is contained in:
@@ -69,6 +69,10 @@ router.use('/notifications', notificationRoutes);
|
||||
router.use('/notification-broadcasts', notificationBroadcastRoutes);
|
||||
router.use('/notification-settings', notificationSettingsRoutes);
|
||||
router.use('/notification-templates', notificationTemplatesRoutes);
|
||||
// Announcements (alias routes for notification broadcasts/templates/settings)
|
||||
router.use('/announcements', notificationBroadcastRoutes);
|
||||
router.use('/announcement-settings', notificationSettingsRoutes);
|
||||
router.use('/announcement-templates', notificationTemplatesRoutes);
|
||||
router.use('/media', mediaRoutes);
|
||||
router.use('/achievements', achievementsRoutes);
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ router.use(authenticate, requireAdmin(), adminLimiter);
|
||||
|
||||
router.get("/", ctrl.getCourses);
|
||||
router.post("/", ctrl.createCourse);
|
||||
router.post("/full", ctrl.createCourseFull); // one-shot Add Course wizard submit (course + roadmap + rewards)
|
||||
|
||||
// ── static segments first ────────────────────────────────────────────────────
|
||||
router.get("/field-values", ctrl.getCourseFieldValues);
|
||||
@@ -25,6 +26,7 @@ router.get("/flat", ctrl.getCoursesFlat);
|
||||
router.get("/by-subscription", ctrl.getCoursesBySubscription);
|
||||
router.get("/units-flat", ctrl.getUnitsFlat);
|
||||
router.get("/lessons-flat", ctrl.getLessonsFlat);
|
||||
router.get("/quizzes-flat", ctrl.getQuizzesFlat);
|
||||
|
||||
// ── then :courseId ────────────────────────────────────────────────────────────
|
||||
router.get("/archives/:courseId", ctrl.getArchivedCourse);
|
||||
|
||||
@@ -33,6 +33,7 @@ router.post("/:taskListId/tasks", sensitiveOpsLimiter, controller.createTask);
|
||||
router.post("/:taskListId/tasks/bulk-archive", sensitiveOpsLimiter, controller.bulkArchiveTasks);
|
||||
router.post("/:taskListId/tasks/bulk-restore", sensitiveOpsLimiter, controller.bulkRestoreTasks);
|
||||
router.post("/:taskListId/tasks/bulk-delete", sensitiveOpsLimiter, controller.bulkPermanentlyDeleteTasks);
|
||||
router.patch("/:taskListId/tasks/order", sensitiveOpsLimiter, controller.reorderTasks);
|
||||
|
||||
// ─── Tasks (single) ───────────────────────────────────────────────────────────
|
||||
router.get("/:taskListId/tasks/:taskId", controller.getTask);
|
||||
@@ -47,6 +48,7 @@ router.get("/:taskListId/tasks/:taskId/completions/user/:userId", completionCont
|
||||
router.post("/:taskListId/tasks/:taskId/completions/bulk-archive", sensitiveOpsLimiter, completionController.bulkArchiveCompletions);
|
||||
router.post("/:taskListId/tasks/:taskId/completions/bulk-restore", sensitiveOpsLimiter, completionController.bulkRestoreCompletions);
|
||||
router.get("/:taskListId/tasks/:taskId/completions/:completionId", completionController.getCompletion);
|
||||
router.patch("/:taskListId/tasks/:taskId/completions/:completionId/review", sensitiveOpsLimiter, completionController.reviewSubmission);
|
||||
router.delete("/:taskListId/tasks/:taskId/completions/:completionId", sensitiveOpsLimiter, completionController.archiveCompletion);
|
||||
router.patch("/:taskListId/tasks/:taskId/completions/:completionId/restore", sensitiveOpsLimiter, completionController.restoreCompletion);
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ router.get('/uuid/:uuid', ctrl.getCourseByUuid);
|
||||
router.get('/unit/uuid/:uuid/lessons', ctrl.getLessonsByUnitUuid);
|
||||
router.get('/unit/uuid/:uuid', ctrl.getUnitByUuid);
|
||||
router.get('/lesson/uuid/:uuid', ctrl.getLessonByUuid);
|
||||
router.get('/quiz/uuid/:uuid', ctrl.getQuizByUuid);
|
||||
|
||||
// Courses
|
||||
router.get('/', ctrl.getCourses);
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
* Type of Program: Router
|
||||
* Description: Standalone Lesson consumption — each Lesson runs independently.
|
||||
*
|
||||
* GET /client/lessons → learner-facing lesson library
|
||||
* GET /client/lessons/:uuid → lesson with full block content
|
||||
* POST /client/lessons/:uuid/progress → standalone reading progress
|
||||
* (course NULL; body.unit_uuid optional)
|
||||
@@ -14,6 +15,7 @@ const express = require('express');
|
||||
const router = express.Router();
|
||||
const ctrl = require('../../controllers/client/units.controller');
|
||||
|
||||
router.get('/', ctrl.getLessons);
|
||||
router.get('/:uuid', ctrl.getLessonByUuid);
|
||||
router.post('/:uuid/progress', ctrl.upsertStandaloneLessonProgress);
|
||||
|
||||
|
||||
@@ -16,10 +16,11 @@
|
||||
***********************************************************************************************************************************************************************/
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const { list, unseenCount, markSeen, markAllSeen, clearAll } = require('../../controllers/client/notification.controller');
|
||||
const { list, unseenCount, stickyAnnouncement, markSeen, markAllSeen, clearAll } = require('../../controllers/client/notification.controller');
|
||||
|
||||
router.get('/', list);
|
||||
router.get('/unseen', unseenCount);
|
||||
router.get('/sticky', stickyAnnouncement);
|
||||
router.patch('/seen-all', markAllSeen);
|
||||
router.patch('/:id/seen', markSeen);
|
||||
router.delete('/clear-all', clearAll);
|
||||
|
||||
Reference in New Issue
Block a user