assets and tier plans revamp

Signed-off-by: Kenneth Obsequio <k80308392@gmail.com>
This commit is contained in:
2026-08-01 17:44:25 +08:00
parent 39c3c4566b
commit cae958b5d5
41 changed files with 1271 additions and 165 deletions
+1
View File
@@ -18,6 +18,7 @@ const requirementsCtrl = require("../../controllers/admin/completion_requirement
router.get("/", ctrl.getLessons);
router.post("/", ctrl.createLesson);
router.get("/flat", ctrl.getLessonsFlat);
router.get("/by-subscription", ctrl.getLessonsBySubscription);
router.get("/field-values", ctrl.getLessonFieldValues);
router.delete("/bulk", ctrl.bulkArchiveLessons);
router.delete("/bulk/permanent", ctrl.bulkPermanentlyDeleteLessons);
+10
View File
@@ -7,6 +7,16 @@ router.get ('/courses/:courseId/product', ctrl.getCourseProduct);
router.put ('/courses/:courseId/product', ctrl.upsertCourseProduct);
router.delete('/courses/:courseId/product', ctrl.removeCourseProduct);
// Product per standalone unit
router.get ('/units/:unitId/product', ctrl.getUnitProduct);
router.put ('/units/:unitId/product', ctrl.upsertUnitProduct);
router.delete('/units/:unitId/product', ctrl.removeUnitProduct);
// Product per standalone lesson
router.get ('/lessons/:lessonId/product', ctrl.getLessonProduct);
router.put ('/lessons/:lessonId/product', ctrl.upsertLessonProduct);
router.delete('/lessons/:lessonId/product', ctrl.removeLessonProduct);
// Categories per course
router.get ('/courses/:courseId/categories', ctrl.getCourseCategories);
router.post ('/courses/:courseId/categories', ctrl.syncCourseCategories);
+5 -1
View File
@@ -18,11 +18,15 @@ router.get ('/users/:id/tiers', ctrl.getUserTiers);
router.post ('/users/tiers/grant', ctrl.grantTier);
router.patch ('/users/tiers/:tid/revoke', ctrl.revokeTier);
// ← course + impact routes before /:id
// ← course/unit/lesson + impact routes before /:id
router.get ('/:id/impact', ctrl.getPlanImpact);
router.get ('/:id/permanent-delete-impact', ctrl.getPlanPermanentDeleteImpact);
router.get ('/:id/courses', ctrl.getPlanCourses);
router.post ('/:id/courses', ctrl.syncPlanCourses);
router.get ('/:id/units', ctrl.getPlanUnits);
router.post ('/:id/units', ctrl.syncPlanUnits);
router.get ('/:id/lessons', ctrl.getPlanLessons);
router.post ('/:id/lessons', ctrl.syncPlanLessons);
router.get ('/:id', ctrl.getPlan);
router.put ('/:id', ctrl.updatePlan);
+1
View File
@@ -20,6 +20,7 @@ router.get("/", ctrl.getUnits);
router.post("/", ctrl.createUnit);
router.post("/full", ctrl.createUnitFull);
router.get("/flat", ctrl.getUnitsFlat);
router.get("/by-subscription", ctrl.getUnitsBySubscription);
router.get("/field-values", ctrl.getUnitFieldValues);
router.delete("/bulk", ctrl.bulkArchiveUnits);
router.delete("/bulk/permanent", ctrl.bulkPermanentlyDeleteUnits);
+1
View File
@@ -23,6 +23,7 @@ router.get('/quiz/uuid/:uuid', ctrl.getQuizByUuid);
// Courses
router.get('/', ctrl.getCourses);
router.get('/:courseId/checkout-info', ctrl.getCourseCheckoutInfo);
router.get('/:courseId', ctrl.getCourse);
// Unit
+1
View File
@@ -16,6 +16,7 @@ const router = express.Router();
const ctrl = require('../../controllers/client/units.controller');
router.get('/', ctrl.getLessons);
router.get('/:uuid/checkout-info', ctrl.getLessonCheckoutInfo);
router.get('/:uuid', ctrl.getLessonByUuid);
router.post('/:uuid/progress', ctrl.upsertStandaloneLessonProgress);
router.post('/:uuid/watch-progress', ctrl.upsertStandaloneWatchProgress);
+1
View File
@@ -19,6 +19,7 @@ const ctrl = require('../../controllers/client/units.controller');
router.get('/', ctrl.getUnits);
router.get('/:uuid/lessons', ctrl.getLessonsByUnitUuid);
router.get('/:uuid/quiz', ctrl.getUnitQuiz);
router.get('/:uuid/checkout-info', ctrl.getUnitCheckoutInfo);
router.patch('/:uuid/quiz/:quizId/draft', ctrl.saveUnitQuizDraft);
router.post('/:uuid/quiz/:quizId/submit', ctrl.submitUnitQuiz);
router.get('/:uuid', ctrl.getUnitByUuid);