Files
starr-philproperties/routes/admin/lessons.routes.js
T
2026-08-01 17:44:25 +08:00

46 lines
2.7 KiB
JavaScript

/***********************************************************************************************************************************************************************
* File Name: lessons.routes.js (admin)
* Type of Program: Router
* Description: Standalone Lesson library — Lessons run independently of Units.
* Unit membership (attach/detach/reorder) lives under
* /admin/units/:unitId/lessons.
*
* Author: Kenneth Obsequio (@lash0000)
* Date Created: Jul. 7, 2026
***********************************************************************************************************************************************************************/
const router = require("express").Router();
const ctrl = require("../../controllers/admin/lessons.controller");
const requirementsCtrl = require("../../controllers/admin/completion_requirements.controller");
// Guards are applied by admin.routes.js (authenticate → requireAdmin → adminLimiter)
// ── static segments first ─────────────────────────────────────────────────────
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);
router.get("/archives", ctrl.getArchivedLessons);
router.patch("/restore/bulk", ctrl.bulkRestoreLessons);
router.get("/archives/:lessonId", ctrl.getArchivedLesson);
// ── then :lessonId ────────────────────────────────────────────────────────────
router.patch("/:lessonId/restore", ctrl.restoreLesson);
router.get("/:lessonId/permanent-delete-impact", ctrl.getLessonPermanentDeleteImpact);
router.get("/:lessonId", ctrl.getLesson);
router.put("/:lessonId", ctrl.updateLesson);
router.delete("/:lessonId", ctrl.archiveLesson);
router.delete("/:lessonId/permanent", ctrl.permanentlyDeleteLesson);
// ── Lesson page (block content) ───────────────────────────────────────────────
router.get("/:lessonId/page", ctrl.getLessonPage);
router.put("/:lessonId/page", ctrl.upsertLessonPage);
// ── Completion requirements (shared with the nested courses.routes.js mount) ──
router.get("/:lessonId/requirements", requirementsCtrl.getLessonRequirements);
router.put("/:lessonId/requirements", requirementsCtrl.syncLessonRequirements);
module.exports = router;