@hed-hog/lms 0.0.349 → 0.0.350
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/achievement/achievement.controller.d.ts +62 -0
- package/dist/achievement/achievement.controller.d.ts.map +1 -0
- package/dist/achievement/achievement.controller.js +90 -0
- package/dist/achievement/achievement.controller.js.map +1 -0
- package/dist/achievement/achievement.mcp-tools.d.ts +19 -0
- package/dist/achievement/achievement.mcp-tools.d.ts.map +1 -0
- package/dist/achievement/achievement.mcp-tools.js +157 -0
- package/dist/achievement/achievement.mcp-tools.js.map +1 -0
- package/dist/achievement/achievement.module.d.ts +3 -0
- package/dist/achievement/achievement.module.d.ts.map +1 -0
- package/dist/achievement/achievement.module.js +26 -0
- package/dist/achievement/achievement.module.js.map +1 -0
- package/dist/achievement/achievement.service.d.ts +72 -0
- package/dist/achievement/achievement.service.d.ts.map +1 -0
- package/dist/achievement/achievement.service.js +200 -0
- package/dist/achievement/achievement.service.js.map +1 -0
- package/dist/achievement/dto/create-achievement.dto.d.ts +12 -0
- package/dist/achievement/dto/create-achievement.dto.d.ts.map +1 -0
- package/dist/achievement/dto/create-achievement.dto.js +60 -0
- package/dist/achievement/dto/create-achievement.dto.js.map +1 -0
- package/dist/achievement/dto/update-achievement.dto.d.ts +11 -0
- package/dist/achievement/dto/update-achievement.dto.d.ts.map +1 -0
- package/dist/achievement/dto/update-achievement.dto.js +57 -0
- package/dist/achievement/dto/update-achievement.dto.js.map +1 -0
- package/dist/bitcode-wallet/bitcode-wallet.controller.d.ts +114 -0
- package/dist/bitcode-wallet/bitcode-wallet.controller.d.ts.map +1 -0
- package/dist/bitcode-wallet/bitcode-wallet.controller.js +102 -0
- package/dist/bitcode-wallet/bitcode-wallet.controller.js.map +1 -0
- package/dist/bitcode-wallet/bitcode-wallet.mcp-tools.d.ts +25 -0
- package/dist/bitcode-wallet/bitcode-wallet.mcp-tools.d.ts.map +1 -0
- package/dist/bitcode-wallet/bitcode-wallet.mcp-tools.js +160 -0
- package/dist/bitcode-wallet/bitcode-wallet.mcp-tools.js.map +1 -0
- package/dist/bitcode-wallet/bitcode-wallet.module.d.ts +3 -0
- package/dist/bitcode-wallet/bitcode-wallet.module.d.ts.map +1 -0
- package/dist/bitcode-wallet/bitcode-wallet.module.js +26 -0
- package/dist/bitcode-wallet/bitcode-wallet.module.js.map +1 -0
- package/dist/bitcode-wallet/bitcode-wallet.service.d.ts +127 -0
- package/dist/bitcode-wallet/bitcode-wallet.service.d.ts.map +1 -0
- package/dist/bitcode-wallet/bitcode-wallet.service.js +264 -0
- package/dist/bitcode-wallet/bitcode-wallet.service.js.map +1 -0
- package/dist/bitcode-wallet/dto/create-bitcode-wallet-transaction.dto.d.ts +8 -0
- package/dist/bitcode-wallet/dto/create-bitcode-wallet-transaction.dto.d.ts.map +1 -0
- package/dist/bitcode-wallet/dto/create-bitcode-wallet-transaction.dto.js +33 -0
- package/dist/bitcode-wallet/dto/create-bitcode-wallet-transaction.dto.js.map +1 -0
- package/dist/bitcode-wallet/dto/create-bitcode-wallet.dto.d.ts +4 -0
- package/dist/bitcode-wallet/dto/create-bitcode-wallet.dto.d.ts.map +1 -0
- package/dist/bitcode-wallet/dto/create-bitcode-wallet.dto.js +22 -0
- package/dist/bitcode-wallet/dto/create-bitcode-wallet.dto.js.map +1 -0
- package/dist/bitcode-wallet/dto/update-bitcode-wallet-transaction.dto.d.ts +7 -0
- package/dist/bitcode-wallet/dto/update-bitcode-wallet-transaction.dto.d.ts.map +1 -0
- package/dist/bitcode-wallet/dto/update-bitcode-wallet-transaction.dto.js +35 -0
- package/dist/bitcode-wallet/dto/update-bitcode-wallet-transaction.dto.js.map +1 -0
- package/dist/bitcode-wallet/dto/update-bitcode-wallet.dto.d.ts +4 -0
- package/dist/bitcode-wallet/dto/update-bitcode-wallet.dto.d.ts.map +1 -0
- package/dist/bitcode-wallet/dto/update-bitcode-wallet.dto.js +23 -0
- package/dist/bitcode-wallet/dto/update-bitcode-wallet.dto.js.map +1 -0
- package/dist/certificate/certificate.controller.d.ts +22 -0
- package/dist/certificate/certificate.controller.d.ts.map +1 -1
- package/dist/certificate/certificate.controller.js +12 -0
- package/dist/certificate/certificate.controller.js.map +1 -1
- package/dist/certificate/certificate.mcp-tools.d.ts +24 -0
- package/dist/certificate/certificate.mcp-tools.d.ts.map +1 -0
- package/dist/certificate/certificate.mcp-tools.js +188 -0
- package/dist/certificate/certificate.mcp-tools.js.map +1 -0
- package/dist/certificate/certificate.module.d.ts.map +1 -1
- package/dist/certificate/certificate.module.js +2 -1
- package/dist/certificate/certificate.module.js.map +1 -1
- package/dist/certificate/certificate.service.d.ts +25 -2
- package/dist/certificate/certificate.service.d.ts.map +1 -1
- package/dist/certificate/certificate.service.js +87 -2
- package/dist/certificate/certificate.service.js.map +1 -1
- package/dist/certificate/dto/update-certificate-public-access.dto.d.ts +4 -0
- package/dist/certificate/dto/update-certificate-public-access.dto.d.ts.map +1 -0
- package/dist/certificate/dto/update-certificate-public-access.dto.js +21 -0
- package/dist/certificate/dto/update-certificate-public-access.dto.js.map +1 -0
- package/dist/class-group/class-group.mcp-tools.d.ts +87 -0
- package/dist/class-group/class-group.mcp-tools.d.ts.map +1 -0
- package/dist/class-group/class-group.mcp-tools.js +553 -0
- package/dist/class-group/class-group.mcp-tools.js.map +1 -0
- package/dist/class-group/class-group.module.d.ts.map +1 -1
- package/dist/class-group/class-group.module.js +2 -1
- package/dist/class-group/class-group.module.js.map +1 -1
- package/dist/class-group/class-group.service.d.ts +3 -1
- package/dist/class-group/class-group.service.d.ts.map +1 -1
- package/dist/class-group/class-group.service.js +45 -2
- package/dist/class-group/class-group.service.js.map +1 -1
- package/dist/course/course-operations-integration.service.d.ts +40 -0
- package/dist/course/course-operations-integration.service.d.ts.map +1 -0
- package/dist/course/course-operations-integration.service.js +372 -0
- package/dist/course/course-operations-integration.service.js.map +1 -0
- package/dist/course/course-structure.controller.d.ts +43 -4
- package/dist/course/course-structure.controller.d.ts.map +1 -1
- package/dist/course/course-structure.controller.js +22 -0
- package/dist/course/course-structure.controller.js.map +1 -1
- package/dist/course/course-structure.service.d.ts +42 -1
- package/dist/course/course-structure.service.d.ts.map +1 -1
- package/dist/course/course-structure.service.js +199 -32
- package/dist/course/course-structure.service.js.map +1 -1
- package/dist/course/course.controller.d.ts +12 -0
- package/dist/course/course.controller.d.ts.map +1 -1
- package/dist/course/course.mcp-tools.d.ts +90 -0
- package/dist/course/course.mcp-tools.d.ts.map +1 -0
- package/dist/course/course.mcp-tools.js +520 -0
- package/dist/course/course.mcp-tools.js.map +1 -0
- package/dist/course/course.module.d.ts.map +1 -1
- package/dist/course/course.module.js +8 -1
- package/dist/course/course.module.js.map +1 -1
- package/dist/course/course.service.d.ts +15 -1
- package/dist/course/course.service.d.ts.map +1 -1
- package/dist/course/course.service.js +70 -35
- package/dist/course/course.service.js.map +1 -1
- package/dist/course/dto/create-course.dto.d.ts +1 -0
- package/dist/course/dto/create-course.dto.d.ts.map +1 -1
- package/dist/course/dto/create-course.dto.js +7 -0
- package/dist/course/dto/create-course.dto.js.map +1 -1
- package/dist/course/dto/update-course-resources.dto.d.ts +11 -0
- package/dist/course/dto/update-course-resources.dto.d.ts.map +1 -0
- package/dist/course/dto/update-course-resources.dto.js +51 -0
- package/dist/course/dto/update-course-resources.dto.js.map +1 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.controller.d.ts +23 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.controller.d.ts.map +1 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.controller.js +78 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.controller.js.map +1 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.mcp-tools.d.ts +22 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.mcp-tools.d.ts.map +1 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.mcp-tools.js +120 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.mcp-tools.js.map +1 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.module.d.ts +3 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.module.d.ts.map +1 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.module.js +26 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.module.js.map +1 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.service.d.ts +49 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.service.d.ts.map +1 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.service.js +272 -0
- package/dist/course-lesson-discussion/course-lesson-discussion.service.js.map +1 -0
- package/dist/course-lesson-discussion/dto/create-course-lesson-discussion-topic.dto.d.ts +6 -0
- package/dist/course-lesson-discussion/dto/create-course-lesson-discussion-topic.dto.d.ts.map +1 -0
- package/dist/course-lesson-discussion/dto/create-course-lesson-discussion-topic.dto.js +33 -0
- package/dist/course-lesson-discussion/dto/create-course-lesson-discussion-topic.dto.js.map +1 -0
- package/dist/course-lesson-note/course-lesson-note.controller.d.ts +53 -0
- package/dist/course-lesson-note/course-lesson-note.controller.d.ts.map +1 -0
- package/dist/course-lesson-note/course-lesson-note.controller.js +93 -0
- package/dist/course-lesson-note/course-lesson-note.controller.js.map +1 -0
- package/dist/course-lesson-note/course-lesson-note.mcp-tools.d.ts +27 -0
- package/dist/course-lesson-note/course-lesson-note.mcp-tools.d.ts.map +1 -0
- package/dist/course-lesson-note/course-lesson-note.mcp-tools.js +145 -0
- package/dist/course-lesson-note/course-lesson-note.mcp-tools.js.map +1 -0
- package/dist/course-lesson-note/course-lesson-note.module.d.ts +3 -0
- package/dist/course-lesson-note/course-lesson-note.module.d.ts.map +1 -0
- package/dist/course-lesson-note/course-lesson-note.module.js +26 -0
- package/dist/course-lesson-note/course-lesson-note.module.js.map +1 -0
- package/dist/course-lesson-note/course-lesson-note.service.d.ts +59 -0
- package/dist/course-lesson-note/course-lesson-note.service.d.ts.map +1 -0
- package/dist/course-lesson-note/course-lesson-note.service.js +195 -0
- package/dist/course-lesson-note/course-lesson-note.service.js.map +1 -0
- package/dist/course-lesson-note/dto/create-course-lesson-note.dto.d.ts +6 -0
- package/dist/course-lesson-note/dto/create-course-lesson-note.dto.d.ts.map +1 -0
- package/dist/course-lesson-note/dto/create-course-lesson-note.dto.js +33 -0
- package/dist/course-lesson-note/dto/create-course-lesson-note.dto.js.map +1 -0
- package/dist/course-lesson-note/dto/update-course-lesson-note.dto.d.ts +6 -0
- package/dist/course-lesson-note/dto/update-course-lesson-note.dto.d.ts.map +1 -0
- package/dist/course-lesson-note/dto/update-course-lesson-note.dto.js +35 -0
- package/dist/course-lesson-note/dto/update-course-lesson-note.dto.js.map +1 -0
- package/dist/dashboard/dashboard.mcp-tools.d.ts +10 -0
- package/dist/dashboard/dashboard.mcp-tools.d.ts.map +1 -0
- package/dist/dashboard/dashboard.mcp-tools.js +46 -0
- package/dist/dashboard/dashboard.mcp-tools.js.map +1 -0
- package/dist/dashboard/dashboard.module.d.ts.map +1 -1
- package/dist/dashboard/dashboard.module.js +2 -1
- package/dist/dashboard/dashboard.module.js.map +1 -1
- package/dist/enterprise/enterprise.mcp-tools.d.ts +82 -0
- package/dist/enterprise/enterprise.mcp-tools.d.ts.map +1 -0
- package/dist/enterprise/enterprise.mcp-tools.js +516 -0
- package/dist/enterprise/enterprise.mcp-tools.js.map +1 -0
- package/dist/enterprise/enterprise.module.d.ts.map +1 -1
- package/dist/enterprise/enterprise.module.js +2 -1
- package/dist/enterprise/enterprise.module.js.map +1 -1
- package/dist/enterprise/training/enterprise-training.module.d.ts.map +1 -1
- package/dist/enterprise/training/enterprise-training.module.js +11 -1
- package/dist/enterprise/training/enterprise-training.module.js.map +1 -1
- package/dist/enterprise/training/training-admin.mcp-tools.d.ts +79 -0
- package/dist/enterprise/training/training-admin.mcp-tools.d.ts.map +1 -0
- package/dist/enterprise/training/training-admin.mcp-tools.js +620 -0
- package/dist/enterprise/training/training-admin.mcp-tools.js.map +1 -0
- package/dist/enterprise/training/training-instructor.mcp-tools.d.ts +47 -0
- package/dist/enterprise/training/training-instructor.mcp-tools.d.ts.map +1 -0
- package/dist/enterprise/training/training-instructor.mcp-tools.js +275 -0
- package/dist/enterprise/training/training-instructor.mcp-tools.js.map +1 -0
- package/dist/enterprise/training/training-student.controller.d.ts +24 -0
- package/dist/enterprise/training/training-student.controller.d.ts.map +1 -1
- package/dist/enterprise/training/training-student.controller.js +22 -0
- package/dist/enterprise/training/training-student.controller.js.map +1 -1
- package/dist/enterprise/training/training-student.mcp-tools.d.ts +27 -0
- package/dist/enterprise/training/training-student.mcp-tools.d.ts.map +1 -0
- package/dist/enterprise/training/training-student.mcp-tools.js +186 -0
- package/dist/enterprise/training/training-student.mcp-tools.js.map +1 -0
- package/dist/enterprise/training/training-student.service.d.ts +32 -0
- package/dist/enterprise/training/training-student.service.d.ts.map +1 -1
- package/dist/enterprise/training/training-student.service.js +138 -0
- package/dist/enterprise/training/training-student.service.js.map +1 -1
- package/dist/evaluation/evaluation.mcp-tools.d.ts +25 -0
- package/dist/evaluation/evaluation.mcp-tools.d.ts.map +1 -0
- package/dist/evaluation/evaluation.mcp-tools.js +220 -0
- package/dist/evaluation/evaluation.mcp-tools.js.map +1 -0
- package/dist/evaluation/evaluation.module.d.ts.map +1 -1
- package/dist/evaluation/evaluation.module.js +2 -1
- package/dist/evaluation/evaluation.module.js.map +1 -1
- package/dist/exam/dto/create-exam-question.dto.d.ts +2 -0
- package/dist/exam/dto/create-exam-question.dto.d.ts.map +1 -1
- package/dist/exam/dto/create-exam-question.dto.js +10 -0
- package/dist/exam/dto/create-exam-question.dto.js.map +1 -1
- package/dist/exam/dto/create-exam.dto.d.ts +2 -0
- package/dist/exam/dto/create-exam.dto.d.ts.map +1 -1
- package/dist/exam/dto/create-exam.dto.js +10 -0
- package/dist/exam/dto/create-exam.dto.js.map +1 -1
- package/dist/exam/dto/create-question-subject.dto.d.ts +5 -0
- package/dist/exam/dto/create-question-subject.dto.d.ts.map +1 -0
- package/dist/exam/dto/create-question-subject.dto.js +28 -0
- package/dist/exam/dto/create-question-subject.dto.js.map +1 -0
- package/dist/exam/exam-attempt.controller.d.ts +4 -0
- package/dist/exam/exam-attempt.controller.d.ts.map +1 -1
- package/dist/exam/exam-attempt.service.d.ts +7 -1
- package/dist/exam/exam-attempt.service.d.ts.map +1 -1
- package/dist/exam/exam-attempt.service.js +47 -17
- package/dist/exam/exam-attempt.service.js.map +1 -1
- package/dist/exam/exam.controller.d.ts +34 -0
- package/dist/exam/exam.controller.d.ts.map +1 -1
- package/dist/exam/exam.controller.js +27 -0
- package/dist/exam/exam.controller.js.map +1 -1
- package/dist/exam/exam.mcp-tools.d.ts +62 -0
- package/dist/exam/exam.mcp-tools.d.ts.map +1 -0
- package/dist/exam/exam.mcp-tools.js +430 -0
- package/dist/exam/exam.mcp-tools.js.map +1 -0
- package/dist/exam/exam.module.d.ts.map +1 -1
- package/dist/exam/exam.module.js +2 -1
- package/dist/exam/exam.module.js.map +1 -1
- package/dist/exam/exam.service.d.ts +38 -0
- package/dist/exam/exam.service.d.ts.map +1 -1
- package/dist/exam/exam.service.js +114 -17
- package/dist/exam/exam.service.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/instructor/instructor.mcp-tools.d.ts +41 -0
- package/dist/instructor/instructor.mcp-tools.d.ts.map +1 -0
- package/dist/instructor/instructor.mcp-tools.js +326 -0
- package/dist/instructor/instructor.mcp-tools.js.map +1 -0
- package/dist/instructor/instructor.module.d.ts.map +1 -1
- package/dist/instructor/instructor.module.js +2 -1
- package/dist/instructor/instructor.module.js.map +1 -1
- package/dist/lms.module.d.ts.map +1 -1
- package/dist/lms.module.js +15 -0
- package/dist/lms.module.js.map +1 -1
- package/dist/realtime/lms-realtime.controller.d.ts +7 -0
- package/dist/realtime/lms-realtime.controller.d.ts.map +1 -0
- package/dist/realtime/lms-realtime.controller.js +34 -0
- package/dist/realtime/lms-realtime.controller.js.map +1 -0
- package/dist/realtime/lms-realtime.module.d.ts +3 -0
- package/dist/realtime/lms-realtime.module.d.ts.map +1 -0
- package/dist/realtime/lms-realtime.module.js +25 -0
- package/dist/realtime/lms-realtime.module.js.map +1 -0
- package/dist/realtime/lms-realtime.service.d.ts +36 -0
- package/dist/realtime/lms-realtime.service.d.ts.map +1 -0
- package/dist/realtime/lms-realtime.service.js +59 -0
- package/dist/realtime/lms-realtime.service.js.map +1 -0
- package/dist/realtime/lms-realtime.subscriber.d.ts +10 -0
- package/dist/realtime/lms-realtime.subscriber.d.ts.map +1 -0
- package/dist/realtime/lms-realtime.subscriber.js +70 -0
- package/dist/realtime/lms-realtime.subscriber.js.map +1 -0
- package/dist/reports/reports.mcp-tools.d.ts +10 -0
- package/dist/reports/reports.mcp-tools.d.ts.map +1 -0
- package/dist/reports/reports.mcp-tools.js +50 -0
- package/dist/reports/reports.mcp-tools.js.map +1 -0
- package/dist/reports/reports.module.d.ts.map +1 -1
- package/dist/reports/reports.module.js +2 -1
- package/dist/reports/reports.module.js.map +1 -1
- package/dist/training/training.mcp-tools.d.ts +20 -0
- package/dist/training/training.mcp-tools.d.ts.map +1 -0
- package/dist/training/training.mcp-tools.js +181 -0
- package/dist/training/training.mcp-tools.js.map +1 -0
- package/dist/training/training.module.d.ts.map +1 -1
- package/dist/training/training.module.js +2 -1
- package/dist/training/training.module.js.map +1 -1
- package/hedhog/data/integration_event_catalog.yaml +69 -0
- package/hedhog/data/menu.yaml +34 -0
- package/hedhog/data/route.yaml +2351 -0
- package/hedhog/frontend/app/_components/class-form-sheet.tsx.ejs +168 -103
- package/hedhog/frontend/app/_components/course-form-sheet.tsx.ejs +80 -1
- package/hedhog/frontend/app/_components/course-picker.tsx.ejs +228 -0
- package/hedhog/frontend/app/_lib/hooks/use-lms-realtime-refresh.ts.ejs +58 -0
- package/hedhog/frontend/app/achievements/page.tsx.ejs +844 -0
- package/hedhog/frontend/app/bitcodes/page.tsx.ejs +1010 -0
- package/hedhog/frontend/app/certificates/issued/page.tsx.ejs +61 -2
- package/hedhog/frontend/app/classes/[id]/page.tsx.ejs +7 -0
- package/hedhog/frontend/app/classes/page.tsx.ejs +55 -2060
- package/hedhog/frontend/app/courses/[id]/_components/CourseRelationsCard.tsx.ejs +28 -0
- package/hedhog/frontend/app/courses/[id]/_components/course-edit-types.ts.ejs +1 -0
- package/hedhog/frontend/app/courses/[id]/page.tsx.ejs +0 -9
- package/hedhog/frontend/app/courses/[id]/structure/_components/course-tree-dnd.tsx.ejs +80 -66
- package/hedhog/frontend/app/courses/[id]/structure/_components/editor-course.tsx.ejs +583 -8
- package/hedhog/frontend/app/courses/[id]/structure/_components/editor-lesson.tsx.ejs +527 -57
- package/hedhog/frontend/app/courses/[id]/structure/_components/mock-data.ts.ejs +1 -1
- package/hedhog/frontend/app/courses/[id]/structure/_components/tree-context-menu.tsx.ejs +106 -4
- package/hedhog/frontend/app/courses/[id]/structure/_components/types.ts.ejs +2 -1
- package/hedhog/frontend/app/courses/[id]/structure/_data/adapters/course-structure.adapter.ts.ejs +11 -1
- package/hedhog/frontend/app/courses/[id]/structure/_data/services/course-structure.service.ts.ejs +53 -6
- package/hedhog/frontend/app/courses/[id]/structure/_data/types/api-course.types.ts.ejs +13 -2
- package/hedhog/frontend/app/courses/page.tsx.ejs +175 -29
- package/hedhog/frontend/app/enterprise/_components/enterprise-course-create-sheet.tsx.ejs +3 -0
- package/hedhog/frontend/app/enterprise/_components/enterprise-course-edit-sheet.tsx.ejs +7 -0
- package/hedhog/frontend/app/exams/[id]/questions/page.tsx.ejs +169 -2
- package/hedhog/frontend/app/exams/page.tsx.ejs +77 -22
- package/hedhog/frontend/app/instructor-skills/page.tsx.ejs +1 -0
- package/hedhog/frontend/app/instructors/page.tsx.ejs +1 -0
- package/hedhog/frontend/app/paths/page.tsx.ejs +6 -24
- package/hedhog/frontend/app/training/page.tsx.ejs +6 -24
- package/hedhog/frontend/messages/en.json +314 -12
- package/hedhog/frontend/messages/pt.json +314 -12
- package/hedhog/query/triggers.sql +53 -0
- package/hedhog/table/achievement.yaml +46 -0
- package/hedhog/table/bitcode_wallet.yaml +18 -0
- package/hedhog/table/bitcode_wallet_transaction.yaml +22 -0
- package/hedhog/table/certificate.yaml +3 -0
- package/hedhog/table/course.yaml +4 -0
- package/hedhog/table/course_file.yaml +23 -0
- package/hedhog/table/course_lesson.yaml +5 -0
- package/hedhog/table/course_lesson_discussion_like.yaml +21 -0
- package/hedhog/table/course_lesson_discussion_topic.yaml +35 -0
- package/hedhog/table/course_lesson_note.yaml +34 -0
- package/hedhog/table/exam.yaml +5 -0
- package/hedhog/table/learning_path_enrollment.yaml +6 -0
- package/hedhog/table/question.yaml +10 -0
- package/hedhog/table/question_subject.yaml +17 -0
- package/hedhog/table/student_activity_streak.yaml +25 -0
- package/package.json +6 -6
- package/src/achievement/achievement.controller.ts +60 -0
- package/src/achievement/achievement.mcp-tools.ts +108 -0
- package/src/achievement/achievement.module.ts +13 -0
- package/src/achievement/achievement.service.ts +252 -0
- package/src/achievement/dto/create-achievement.dto.ts +50 -0
- package/src/achievement/dto/update-achievement.dto.ts +47 -0
- package/src/bitcode-wallet/bitcode-wallet.controller.ts +69 -0
- package/src/bitcode-wallet/bitcode-wallet.mcp-tools.ts +107 -0
- package/src/bitcode-wallet/bitcode-wallet.module.ts +13 -0
- package/src/bitcode-wallet/bitcode-wallet.service.ts +361 -0
- package/src/bitcode-wallet/dto/create-bitcode-wallet-transaction.dto.ts +27 -0
- package/src/bitcode-wallet/dto/create-bitcode-wallet.dto.ts +7 -0
- package/src/bitcode-wallet/dto/update-bitcode-wallet-transaction.dto.ts +28 -0
- package/src/bitcode-wallet/dto/update-bitcode-wallet.dto.ts +8 -0
- package/src/certificate/certificate.controller.ts +20 -11
- package/src/certificate/certificate.mcp-tools.ts +131 -0
- package/src/certificate/certificate.module.ts +2 -1
- package/src/certificate/certificate.service.ts +95 -4
- package/src/certificate/dto/update-certificate-public-access.dto.ts +6 -0
- package/src/class-group/class-group.mcp-tools.ts +435 -0
- package/src/class-group/class-group.module.ts +2 -1
- package/src/class-group/class-group.service.ts +51 -1
- package/src/course/course-operations-integration.service.ts +520 -0
- package/src/course/course-structure.controller.ts +22 -8
- package/src/course/course-structure.service.ts +215 -23
- package/src/course/course.mcp-tools.ts +409 -0
- package/src/course/course.module.ts +8 -1
- package/src/course/course.service.ts +106 -27
- package/src/course/dto/create-course.dto.ts +8 -0
- package/src/course/dto/update-course-resources.dto.ts +39 -0
- package/src/course-lesson-discussion/course-lesson-discussion.controller.ts +55 -0
- package/src/course-lesson-discussion/course-lesson-discussion.mcp-tools.ts +75 -0
- package/src/course-lesson-discussion/course-lesson-discussion.module.ts +13 -0
- package/src/course-lesson-discussion/course-lesson-discussion.service.ts +354 -0
- package/src/course-lesson-discussion/dto/create-course-lesson-discussion-topic.dto.ts +16 -0
- package/src/course-lesson-note/course-lesson-note.controller.ts +68 -0
- package/src/course-lesson-note/course-lesson-note.mcp-tools.ts +96 -0
- package/src/course-lesson-note/course-lesson-note.module.ts +13 -0
- package/src/course-lesson-note/course-lesson-note.service.ts +248 -0
- package/src/course-lesson-note/dto/create-course-lesson-note.dto.ts +16 -0
- package/src/course-lesson-note/dto/update-course-lesson-note.dto.ts +18 -0
- package/src/dashboard/dashboard.mcp-tools.ts +23 -0
- package/src/dashboard/dashboard.module.ts +2 -1
- package/src/enterprise/enterprise.mcp-tools.ts +403 -0
- package/src/enterprise/enterprise.module.ts +2 -1
- package/src/enterprise/training/enterprise-training.module.ts +11 -1
- package/src/enterprise/training/training-admin.mcp-tools.ts +479 -0
- package/src/enterprise/training/training-instructor.mcp-tools.ts +210 -0
- package/src/enterprise/training/training-student.controller.ts +17 -1
- package/src/enterprise/training/training-student.mcp-tools.ts +136 -0
- package/src/enterprise/training/training-student.service.ts +167 -1
- package/src/evaluation/evaluation.mcp-tools.ts +155 -0
- package/src/evaluation/evaluation.module.ts +2 -1
- package/src/exam/dto/create-exam-question.dto.ts +8 -0
- package/src/exam/dto/create-exam.dto.ts +8 -0
- package/src/exam/dto/create-question-subject.dto.ts +12 -0
- package/src/exam/exam-attempt.service.ts +46 -14
- package/src/exam/exam.controller.ts +19 -0
- package/src/exam/exam.mcp-tools.ts +337 -0
- package/src/exam/exam.module.ts +2 -1
- package/src/exam/exam.service.ts +121 -0
- package/src/index.ts +9 -0
- package/src/instructor/instructor.mcp-tools.ts +243 -0
- package/src/instructor/instructor.module.ts +2 -1
- package/src/lms.module.ts +15 -1
- package/src/realtime/lms-realtime.controller.ts +12 -0
- package/src/realtime/lms-realtime.module.ts +12 -0
- package/src/realtime/lms-realtime.service.ts +98 -0
- package/src/realtime/lms-realtime.subscriber.ts +61 -0
- package/src/reports/reports.mcp-tools.ts +27 -0
- package/src/reports/reports.module.ts +2 -1
- package/src/training/training.mcp-tools.ts +128 -0
- package/src/training/training.module.ts +2 -1
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import { PrismaService } from '@hed-hog/api-prisma';
|
|
2
2
|
import { InstructorService } from '../instructor/instructor.service';
|
|
3
|
+
import { CourseOperationsIntegrationService } from './course-operations-integration.service';
|
|
3
4
|
import { CreateCourseStructureLessonDto } from './dto/create-course-structure-lesson.dto';
|
|
4
5
|
import { CreateCourseStructureSessionDto } from './dto/create-course-structure-session.dto';
|
|
5
6
|
import { MoveLessonDto } from './dto/move-lesson.dto';
|
|
6
7
|
import { PasteLessonsDto } from './dto/paste-lessons.dto';
|
|
7
8
|
import { ReorderLessonsDto } from './dto/reorder-lessons.dto';
|
|
8
9
|
import { ReorderSessionsDto } from './dto/reorder-sessions.dto';
|
|
10
|
+
import { UpdateCourseResourcesDto } from './dto/update-course-resources.dto';
|
|
9
11
|
import { UpdateCourseStructureLessonDto } from './dto/update-course-structure-lesson.dto';
|
|
10
12
|
import { UpdateCourseStructureSessionDto } from './dto/update-course-structure-session.dto';
|
|
11
13
|
type LessonUiType = 'video' | 'questao' | 'post' | 'exercicio';
|
|
12
14
|
export declare class CourseStructureService {
|
|
13
15
|
private readonly prisma;
|
|
14
16
|
private readonly instructorService;
|
|
15
|
-
|
|
17
|
+
private readonly operationsIntegration;
|
|
18
|
+
constructor(prisma: PrismaService, instructorService: InstructorService, operationsIntegration: CourseOperationsIntegrationService);
|
|
16
19
|
getStructure(courseId: number): Promise<{
|
|
17
20
|
sessoes: {
|
|
18
21
|
id: string;
|
|
@@ -48,6 +51,9 @@ export declare class CourseStructureService {
|
|
|
48
51
|
role: import("@prisma/client").$Enums.course_lesson_instructor_role_300ba1a5e9_enum;
|
|
49
52
|
nome: string;
|
|
50
53
|
}[];
|
|
54
|
+
operationsTaskId: number;
|
|
55
|
+
operationsTaskName: string;
|
|
56
|
+
operationsTaskStatus: string;
|
|
51
57
|
}[];
|
|
52
58
|
instructors: {
|
|
53
59
|
id: number;
|
|
@@ -55,11 +61,37 @@ export declare class CourseStructureService {
|
|
|
55
61
|
}[];
|
|
56
62
|
curso: {
|
|
57
63
|
id: string;
|
|
64
|
+
name: string;
|
|
58
65
|
slug: string;
|
|
59
66
|
titulo: string;
|
|
60
67
|
descricao: string;
|
|
68
|
+
offeringType: import("@prisma/client").$Enums.course_offering_type_8af4d2739d_enum;
|
|
69
|
+
recursos: {
|
|
70
|
+
id: number;
|
|
71
|
+
nome: string;
|
|
72
|
+
fileId: number;
|
|
73
|
+
tipo: string;
|
|
74
|
+
publico: boolean;
|
|
75
|
+
}[];
|
|
76
|
+
operationsProjectId: number;
|
|
77
|
+
operationsProjectCode: string;
|
|
78
|
+
operationsProjectName: string;
|
|
61
79
|
};
|
|
62
80
|
}>;
|
|
81
|
+
getCourseResources(courseId: number): Promise<{
|
|
82
|
+
id: number;
|
|
83
|
+
nome: string;
|
|
84
|
+
fileId: number;
|
|
85
|
+
tipo: string;
|
|
86
|
+
publico: boolean;
|
|
87
|
+
}[]>;
|
|
88
|
+
updateCourseResources(courseId: number, dto: UpdateCourseResourcesDto): Promise<{
|
|
89
|
+
id: number;
|
|
90
|
+
nome: string;
|
|
91
|
+
fileId: number;
|
|
92
|
+
tipo: string;
|
|
93
|
+
publico: boolean;
|
|
94
|
+
}[]>;
|
|
63
95
|
createSession(courseId: number, dto: CreateCourseStructureSessionDto): Promise<{
|
|
64
96
|
id: string;
|
|
65
97
|
codigo: string;
|
|
@@ -104,6 +136,9 @@ export declare class CourseStructureService {
|
|
|
104
136
|
role: import("@prisma/client").$Enums.course_lesson_instructor_role_300ba1a5e9_enum;
|
|
105
137
|
nome: string;
|
|
106
138
|
}[];
|
|
139
|
+
operationsTaskId: number;
|
|
140
|
+
operationsTaskName: string;
|
|
141
|
+
operationsTaskStatus: string;
|
|
107
142
|
}>;
|
|
108
143
|
updateLesson(courseId: number, sessionId: number, lessonId: number, dto: UpdateCourseStructureLessonDto): Promise<{
|
|
109
144
|
id: string;
|
|
@@ -132,6 +167,9 @@ export declare class CourseStructureService {
|
|
|
132
167
|
role: import("@prisma/client").$Enums.course_lesson_instructor_role_300ba1a5e9_enum;
|
|
133
168
|
nome: string;
|
|
134
169
|
}[];
|
|
170
|
+
operationsTaskId: number;
|
|
171
|
+
operationsTaskName: string;
|
|
172
|
+
operationsTaskStatus: string;
|
|
135
173
|
}>;
|
|
136
174
|
deleteLesson(courseId: number, sessionId: number, lessonId: number): Promise<{
|
|
137
175
|
success: boolean;
|
|
@@ -182,6 +220,9 @@ export declare class CourseStructureService {
|
|
|
182
220
|
role: import("@prisma/client").$Enums.course_lesson_instructor_role_300ba1a5e9_enum;
|
|
183
221
|
nome: string;
|
|
184
222
|
}[];
|
|
223
|
+
operationsTaskId: number;
|
|
224
|
+
operationsTaskName: string;
|
|
225
|
+
operationsTaskStatus: string;
|
|
185
226
|
}>;
|
|
186
227
|
pasteLessons(courseId: number, targetSessionId: number, dto: PasteLessonsDto): Promise<{
|
|
187
228
|
lessons: any[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"course-structure.service.d.ts","sourceRoot":"","sources":["../../src/course/course-structure.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAE5F,KAAK,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;AAG/D,qBACa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;
|
|
1
|
+
{"version":3,"file":"course-structure.service.d.ts","sourceRoot":"","sources":["../../src/course/course-structure.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAC7F,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAE5F,KAAK,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;AAG/D,qBACa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBAFrB,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,iBAAiB,EACpC,qBAAqB,EAAE,kCAAkC;IAGtE,YAAY,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqI7B,kBAAkB,CAAC,QAAQ,EAAE,MAAM;;;;;;;IAqBnC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,wBAAwB;;;;;;;IAsBrE,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,+BAA+B;;;;;;;IAuBpE,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,+BAA+B;;;;;;;IAmChC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;IAqBjD,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwD/B,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4C/B,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM;;;IAmBZ,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB;;;IA2BzD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB;;;IAgC1E,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,aAAa;;;IA4Ed,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;IA8GpD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyFrE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe;;;YA0FpE,mBAAmB;YAwEnB,aAAa;YAoFb,kBAAkB;YAWlB,eAAe;YAUf,eAAe;IAU7B,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,gBAAgB;IAiCxB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;CAGnB"}
|
|
@@ -13,15 +13,18 @@ exports.CourseStructureService = void 0;
|
|
|
13
13
|
const api_prisma_1 = require("@hed-hog/api-prisma");
|
|
14
14
|
const common_1 = require("@nestjs/common");
|
|
15
15
|
const instructor_service_1 = require("../instructor/instructor.service");
|
|
16
|
+
const course_operations_integration_service_1 = require("./course-operations-integration.service");
|
|
16
17
|
let CourseStructureService = class CourseStructureService {
|
|
17
|
-
constructor(prisma, instructorService) {
|
|
18
|
+
constructor(prisma, instructorService, operationsIntegration) {
|
|
18
19
|
this.prisma = prisma;
|
|
19
20
|
this.instructorService = instructorService;
|
|
21
|
+
this.operationsIntegration = operationsIntegration;
|
|
20
22
|
}
|
|
21
23
|
async getStructure(courseId) {
|
|
22
|
-
var _a, _b;
|
|
24
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
23
25
|
await this.ensureCourseExists(courseId);
|
|
24
|
-
const
|
|
26
|
+
const courseResources = await this.getCourseResources(courseId);
|
|
27
|
+
const [modules, instructors, courseRecord, courseProjectLinks] = await Promise.all([
|
|
25
28
|
this.prisma.course_module.findMany({
|
|
26
29
|
where: { course_id: courseId },
|
|
27
30
|
orderBy: { order: 'asc' },
|
|
@@ -54,9 +57,19 @@ let CourseStructureService = class CourseStructureService {
|
|
|
54
57
|
this.instructorService.listQualifiedInstructorOptions(['course-lessons']),
|
|
55
58
|
this.prisma.course.findUnique({
|
|
56
59
|
where: { id: courseId },
|
|
57
|
-
select: {
|
|
60
|
+
select: {
|
|
61
|
+
id: true,
|
|
62
|
+
name: true,
|
|
63
|
+
slug: true,
|
|
64
|
+
title: true,
|
|
65
|
+
description: true,
|
|
66
|
+
offering_type: true,
|
|
67
|
+
},
|
|
58
68
|
}),
|
|
69
|
+
this.operationsIntegration.getCourseProjectLinks([courseId]),
|
|
59
70
|
]);
|
|
71
|
+
const lessonTaskLinks = await this.operationsIntegration.getLessonTaskLinks(modules.flatMap((module) => module.course_lesson.map((lesson) => lesson.id)));
|
|
72
|
+
const courseProject = courseProjectLinks.get(courseId);
|
|
60
73
|
const sessoes = modules.map((module, index) => {
|
|
61
74
|
var _a, _b;
|
|
62
75
|
return ({
|
|
@@ -68,7 +81,7 @@ let CourseStructureService = class CourseStructureService {
|
|
|
68
81
|
});
|
|
69
82
|
});
|
|
70
83
|
const aulas = modules.flatMap((module) => module.course_lesson.map((lesson, index) => {
|
|
71
|
-
var _a, _b, _c, _d, _e;
|
|
84
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
72
85
|
const parsedContent = this.parseLessonContent(lesson.content);
|
|
73
86
|
const tipo = this.mapDbTypeToUiType(lesson.type, parsedContent === null || parsedContent === void 0 ? void 0 : parsedContent.sourceType);
|
|
74
87
|
return {
|
|
@@ -105,6 +118,9 @@ let CourseStructureService = class CourseStructureService {
|
|
|
105
118
|
nome: this.personName((_a = item.instructor) === null || _a === void 0 ? void 0 : _a.person),
|
|
106
119
|
});
|
|
107
120
|
}),
|
|
121
|
+
operationsTaskId: (_g = (_f = lessonTaskLinks.get(lesson.id)) === null || _f === void 0 ? void 0 : _f.taskId) !== null && _g !== void 0 ? _g : null,
|
|
122
|
+
operationsTaskName: (_j = (_h = lessonTaskLinks.get(lesson.id)) === null || _h === void 0 ? void 0 : _h.taskName) !== null && _j !== void 0 ? _j : null,
|
|
123
|
+
operationsTaskStatus: (_l = (_k = lessonTaskLinks.get(lesson.id)) === null || _k === void 0 ? void 0 : _k.taskStatus) !== null && _l !== void 0 ? _l : null,
|
|
108
124
|
};
|
|
109
125
|
}));
|
|
110
126
|
return {
|
|
@@ -117,13 +133,54 @@ let CourseStructureService = class CourseStructureService {
|
|
|
117
133
|
curso: courseRecord
|
|
118
134
|
? {
|
|
119
135
|
id: String(courseRecord.id),
|
|
120
|
-
|
|
136
|
+
name: (_a = courseRecord.name) !== null && _a !== void 0 ? _a : '',
|
|
137
|
+
slug: (_b = courseRecord.slug) !== null && _b !== void 0 ? _b : '',
|
|
121
138
|
titulo: courseRecord.title,
|
|
122
|
-
descricao: (
|
|
139
|
+
descricao: (_c = courseRecord.description) !== null && _c !== void 0 ? _c : '',
|
|
140
|
+
offeringType: (_d = courseRecord.offering_type) !== null && _d !== void 0 ? _d : 'on_demand',
|
|
141
|
+
recursos: courseResources,
|
|
142
|
+
operationsProjectId: (_e = courseProject === null || courseProject === void 0 ? void 0 : courseProject.projectId) !== null && _e !== void 0 ? _e : null,
|
|
143
|
+
operationsProjectCode: (_f = courseProject === null || courseProject === void 0 ? void 0 : courseProject.projectCode) !== null && _f !== void 0 ? _f : null,
|
|
144
|
+
operationsProjectName: (_g = courseProject === null || courseProject === void 0 ? void 0 : courseProject.projectName) !== null && _g !== void 0 ? _g : null,
|
|
123
145
|
}
|
|
124
146
|
: null,
|
|
125
147
|
};
|
|
126
148
|
}
|
|
149
|
+
async getCourseResources(courseId) {
|
|
150
|
+
await this.ensureCourseExists(courseId);
|
|
151
|
+
const rows = await this.prisma.$queryRaw `
|
|
152
|
+
SELECT id, title, file_id
|
|
153
|
+
FROM course_file
|
|
154
|
+
WHERE course_id = ${courseId}
|
|
155
|
+
ORDER BY id DESC
|
|
156
|
+
`;
|
|
157
|
+
return rows.map((row) => ({
|
|
158
|
+
id: row.id,
|
|
159
|
+
nome: row.title,
|
|
160
|
+
fileId: row.file_id,
|
|
161
|
+
tipo: 'file',
|
|
162
|
+
publico: true,
|
|
163
|
+
}));
|
|
164
|
+
}
|
|
165
|
+
async updateCourseResources(courseId, dto) {
|
|
166
|
+
var _a;
|
|
167
|
+
await this.ensureCourseExists(courseId);
|
|
168
|
+
const recursos = (_a = dto.recursos) !== null && _a !== void 0 ? _a : [];
|
|
169
|
+
await this.prisma.$transaction(async (tx) => {
|
|
170
|
+
var _a;
|
|
171
|
+
await tx.$executeRaw `
|
|
172
|
+
DELETE FROM course_file
|
|
173
|
+
WHERE course_id = ${courseId}
|
|
174
|
+
`;
|
|
175
|
+
for (const recurso of recursos) {
|
|
176
|
+
await tx.$executeRaw `
|
|
177
|
+
INSERT INTO course_file (course_id, title, file_id)
|
|
178
|
+
VALUES (${courseId}, ${recurso.nome}, ${(_a = recurso.fileId) !== null && _a !== void 0 ? _a : null})
|
|
179
|
+
`;
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
return this.getCourseResources(courseId);
|
|
183
|
+
}
|
|
127
184
|
async createSession(courseId, dto) {
|
|
128
185
|
var _a, _b, _c;
|
|
129
186
|
await this.ensureCourseExists(courseId);
|
|
@@ -149,6 +206,13 @@ let CourseStructureService = class CourseStructureService {
|
|
|
149
206
|
var _a, _b;
|
|
150
207
|
const module = await this.prisma.course_module.findFirst({
|
|
151
208
|
where: { id: sessionId, course_id: courseId },
|
|
209
|
+
include: {
|
|
210
|
+
course: {
|
|
211
|
+
select: {
|
|
212
|
+
title: true,
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
},
|
|
152
216
|
});
|
|
153
217
|
if (!module) {
|
|
154
218
|
throw new common_1.NotFoundException('Session not found for this course');
|
|
@@ -168,6 +232,13 @@ let CourseStructureService = class CourseStructureService {
|
|
|
168
232
|
async deleteSession(courseId, sessionId) {
|
|
169
233
|
const module = await this.prisma.course_module.findFirst({
|
|
170
234
|
where: { id: sessionId, course_id: courseId },
|
|
235
|
+
include: {
|
|
236
|
+
course: {
|
|
237
|
+
select: {
|
|
238
|
+
title: true,
|
|
239
|
+
},
|
|
240
|
+
},
|
|
241
|
+
},
|
|
171
242
|
});
|
|
172
243
|
if (!module) {
|
|
173
244
|
throw new common_1.NotFoundException('Session not found for this course');
|
|
@@ -176,27 +247,47 @@ let CourseStructureService = class CourseStructureService {
|
|
|
176
247
|
return { success: true };
|
|
177
248
|
}
|
|
178
249
|
async createLesson(courseId, sessionId, dto) {
|
|
179
|
-
var _a;
|
|
180
250
|
const module = await this.prisma.course_module.findFirst({
|
|
181
251
|
where: { id: sessionId, course_id: courseId },
|
|
252
|
+
include: {
|
|
253
|
+
course: {
|
|
254
|
+
select: {
|
|
255
|
+
title: true,
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
},
|
|
182
259
|
});
|
|
183
260
|
if (!module) {
|
|
184
261
|
throw new common_1.NotFoundException('Session not found for this course');
|
|
185
262
|
}
|
|
186
|
-
const
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
263
|
+
const created = await this.prisma.$transaction(async (tx) => {
|
|
264
|
+
var _a, _b, _c, _d, _e, _f;
|
|
265
|
+
const nextOrder = await this.nextLessonOrder(sessionId, tx);
|
|
266
|
+
const mappedType = this.mapUiTypeToDbType(dto.tipo);
|
|
267
|
+
const lesson = await tx.course_lesson.create({
|
|
268
|
+
data: {
|
|
269
|
+
course_module_id: sessionId,
|
|
270
|
+
title: dto.titulo,
|
|
271
|
+
description: (_a = dto.descricaoPublica) !== null && _a !== void 0 ? _a : null,
|
|
272
|
+
type: mappedType,
|
|
273
|
+
duration_seconds: dto.duracao * 60,
|
|
274
|
+
order: nextOrder,
|
|
275
|
+
content: this.serializeContent(dto),
|
|
276
|
+
},
|
|
277
|
+
});
|
|
278
|
+
await this.syncLessonRelations(lesson.id, dto, tx);
|
|
279
|
+
const projectLinks = await this.operationsIntegration.getCourseProjectLinks([courseId], tx);
|
|
280
|
+
await this.operationsIntegration.createTaskForLesson(tx, {
|
|
281
|
+
courseId,
|
|
282
|
+
lessonId: lesson.id,
|
|
283
|
+
projectId: (_c = (_b = projectLinks.get(courseId)) === null || _b === void 0 ? void 0 : _b.projectId) !== null && _c !== void 0 ? _c : null,
|
|
284
|
+
courseTitle: (_e = (_d = module.course) === null || _d === void 0 ? void 0 : _d.title) !== null && _e !== void 0 ? _e : null,
|
|
285
|
+
sessionTitle: module.title,
|
|
286
|
+
lessonTitle: dto.titulo,
|
|
287
|
+
lessonDescription: (_f = dto.descricaoPublica) !== null && _f !== void 0 ? _f : null,
|
|
288
|
+
});
|
|
289
|
+
return lesson;
|
|
198
290
|
});
|
|
199
|
-
await this.syncLessonRelations(created.id, dto);
|
|
200
291
|
return this.getLessonById(created.id);
|
|
201
292
|
}
|
|
202
293
|
async updateLesson(courseId, sessionId, lessonId, dto) {
|
|
@@ -229,6 +320,7 @@ let CourseStructureService = class CourseStructureService {
|
|
|
229
320
|
}) }),
|
|
230
321
|
});
|
|
231
322
|
await this.syncLessonRelations(lessonId, dto);
|
|
323
|
+
await this.operationsIntegration.syncTaskForLesson(lessonId);
|
|
232
324
|
return this.getLessonById(updated.id);
|
|
233
325
|
}
|
|
234
326
|
async deleteLesson(courseId, sessionId, lessonId) {
|
|
@@ -352,10 +444,15 @@ let CourseStructureService = class CourseStructureService {
|
|
|
352
444
|
return { success: true };
|
|
353
445
|
}
|
|
354
446
|
async duplicateSession(courseId, sessionId) {
|
|
355
|
-
var _a, _b;
|
|
447
|
+
var _a, _b, _c, _d, _e, _f;
|
|
356
448
|
const sourceModule = await this.prisma.course_module.findFirst({
|
|
357
449
|
where: { id: sessionId, course_id: courseId },
|
|
358
450
|
include: {
|
|
451
|
+
course: {
|
|
452
|
+
select: {
|
|
453
|
+
title: true,
|
|
454
|
+
},
|
|
455
|
+
},
|
|
359
456
|
course_lesson: {
|
|
360
457
|
orderBy: { order: 'asc' },
|
|
361
458
|
include: {
|
|
@@ -380,6 +477,10 @@ let CourseStructureService = class CourseStructureService {
|
|
|
380
477
|
},
|
|
381
478
|
});
|
|
382
479
|
const newLessons = [];
|
|
480
|
+
const projectLinks = await this.operationsIntegration.getCourseProjectLinks([
|
|
481
|
+
courseId,
|
|
482
|
+
]);
|
|
483
|
+
const projectId = (_b = (_a = projectLinks.get(courseId)) === null || _a === void 0 ? void 0 : _a.projectId) !== null && _b !== void 0 ? _b : null;
|
|
383
484
|
for (const lesson of sourceModule.course_lesson) {
|
|
384
485
|
const lessonOrder = await this.nextLessonOrder(newModule.id);
|
|
385
486
|
const newLesson = await this.prisma.course_lesson.create({
|
|
@@ -420,20 +521,30 @@ let CourseStructureService = class CourseStructureService {
|
|
|
420
521
|
})),
|
|
421
522
|
});
|
|
422
523
|
}
|
|
524
|
+
await this.operationsIntegration.createTaskForLesson(this.prisma, {
|
|
525
|
+
courseId,
|
|
526
|
+
lessonId: newLesson.id,
|
|
527
|
+
projectId,
|
|
528
|
+
courseTitle: (_d = (_c = sourceModule.course) === null || _c === void 0 ? void 0 : _c.title) !== null && _d !== void 0 ? _d : null,
|
|
529
|
+
sessionTitle: newModule.title,
|
|
530
|
+
lessonTitle: newLesson.title,
|
|
531
|
+
lessonDescription: newLesson.description,
|
|
532
|
+
});
|
|
423
533
|
newLessons.push(await this.getLessonById(newLesson.id));
|
|
424
534
|
}
|
|
425
535
|
return {
|
|
426
536
|
session: {
|
|
427
537
|
id: String(newModule.id),
|
|
428
|
-
codigo: this.formatCode('S', (
|
|
538
|
+
codigo: this.formatCode('S', (_e = newModule.order) !== null && _e !== void 0 ? _e : nextOrder),
|
|
429
539
|
titulo: newModule.title,
|
|
430
|
-
duracao: (
|
|
540
|
+
duracao: (_f = newModule.duration_minutes) !== null && _f !== void 0 ? _f : 0,
|
|
431
541
|
collapsed: false,
|
|
432
542
|
},
|
|
433
543
|
lessons: newLessons,
|
|
434
544
|
};
|
|
435
545
|
}
|
|
436
546
|
async duplicateLesson(courseId, sessionId, lessonId) {
|
|
547
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
437
548
|
const sourceLesson = await this.prisma.course_lesson.findFirst({
|
|
438
549
|
where: {
|
|
439
550
|
id: lessonId,
|
|
@@ -441,6 +552,16 @@ let CourseStructureService = class CourseStructureService {
|
|
|
441
552
|
course_module: { course_id: courseId },
|
|
442
553
|
},
|
|
443
554
|
include: {
|
|
555
|
+
course_module: {
|
|
556
|
+
select: {
|
|
557
|
+
title: true,
|
|
558
|
+
course: {
|
|
559
|
+
select: {
|
|
560
|
+
title: true,
|
|
561
|
+
},
|
|
562
|
+
},
|
|
563
|
+
},
|
|
564
|
+
},
|
|
444
565
|
course_lesson_file: true,
|
|
445
566
|
course_lesson_question: true,
|
|
446
567
|
course_lesson_instructor: true,
|
|
@@ -450,6 +571,10 @@ let CourseStructureService = class CourseStructureService {
|
|
|
450
571
|
throw new common_1.NotFoundException('Lesson not found for this session');
|
|
451
572
|
}
|
|
452
573
|
const nextOrder = await this.nextLessonOrder(sessionId);
|
|
574
|
+
const projectLinks = await this.operationsIntegration.getCourseProjectLinks([
|
|
575
|
+
courseId,
|
|
576
|
+
]);
|
|
577
|
+
const projectId = (_b = (_a = projectLinks.get(courseId)) === null || _a === void 0 ? void 0 : _a.projectId) !== null && _b !== void 0 ? _b : null;
|
|
453
578
|
const newLesson = await this.prisma.course_lesson.create({
|
|
454
579
|
data: {
|
|
455
580
|
course_module_id: sessionId,
|
|
@@ -488,9 +613,19 @@ let CourseStructureService = class CourseStructureService {
|
|
|
488
613
|
})),
|
|
489
614
|
});
|
|
490
615
|
}
|
|
616
|
+
await this.operationsIntegration.createTaskForLesson(this.prisma, {
|
|
617
|
+
courseId,
|
|
618
|
+
lessonId: newLesson.id,
|
|
619
|
+
projectId,
|
|
620
|
+
courseTitle: (_e = (_d = (_c = sourceLesson.course_module) === null || _c === void 0 ? void 0 : _c.course) === null || _d === void 0 ? void 0 : _d.title) !== null && _e !== void 0 ? _e : null,
|
|
621
|
+
sessionTitle: (_g = (_f = sourceLesson.course_module) === null || _f === void 0 ? void 0 : _f.title) !== null && _g !== void 0 ? _g : null,
|
|
622
|
+
lessonTitle: newLesson.title,
|
|
623
|
+
lessonDescription: newLesson.description,
|
|
624
|
+
});
|
|
491
625
|
return this.getLessonById(newLesson.id);
|
|
492
626
|
}
|
|
493
627
|
async pasteLessons(courseId, targetSessionId, dto) {
|
|
628
|
+
var _a, _b;
|
|
494
629
|
const targetModule = await this.prisma.course_module.findFirst({
|
|
495
630
|
where: { id: targetSessionId, course_id: courseId },
|
|
496
631
|
});
|
|
@@ -513,6 +648,10 @@ let CourseStructureService = class CourseStructureService {
|
|
|
513
648
|
throw new common_1.BadRequestException('Some lessons do not belong to this course');
|
|
514
649
|
}
|
|
515
650
|
const result = [];
|
|
651
|
+
const projectLinks = await this.operationsIntegration.getCourseProjectLinks([
|
|
652
|
+
courseId,
|
|
653
|
+
]);
|
|
654
|
+
const projectId = (_b = (_a = projectLinks.get(courseId)) === null || _a === void 0 ? void 0 : _a.projectId) !== null && _b !== void 0 ? _b : null;
|
|
516
655
|
for (const lesson of sourceLessons) {
|
|
517
656
|
const lessonOrder = await this.nextLessonOrder(targetSessionId);
|
|
518
657
|
const newLesson = await this.prisma.course_lesson.create({
|
|
@@ -553,17 +692,25 @@ let CourseStructureService = class CourseStructureService {
|
|
|
553
692
|
})),
|
|
554
693
|
});
|
|
555
694
|
}
|
|
695
|
+
await this.operationsIntegration.createTaskForLesson(this.prisma, {
|
|
696
|
+
courseId,
|
|
697
|
+
lessonId: newLesson.id,
|
|
698
|
+
projectId,
|
|
699
|
+
sessionTitle: targetModule.title,
|
|
700
|
+
lessonTitle: newLesson.title,
|
|
701
|
+
lessonDescription: newLesson.description,
|
|
702
|
+
});
|
|
556
703
|
result.push(await this.getLessonById(newLesson.id));
|
|
557
704
|
}
|
|
558
705
|
return { lessons: result };
|
|
559
706
|
}
|
|
560
|
-
async syncLessonRelations(lessonId, dto) {
|
|
707
|
+
async syncLessonRelations(lessonId, dto, client = this.prisma) {
|
|
561
708
|
var _a;
|
|
562
709
|
const instructorIds = [...new Set((_a = dto.instructorIds) !== null && _a !== void 0 ? _a : [])];
|
|
563
710
|
if (instructorIds.length > 0) {
|
|
564
711
|
await this.instructorService.assertQualifiedInstructorIds(instructorIds, ['course-lessons']);
|
|
565
712
|
}
|
|
566
|
-
|
|
713
|
+
const syncWithClient = async (tx) => {
|
|
567
714
|
var _a;
|
|
568
715
|
await tx.course_lesson_instructor.deleteMany({
|
|
569
716
|
where: { course_lesson_id: lessonId },
|
|
@@ -605,15 +752,28 @@ let CourseStructureService = class CourseStructureService {
|
|
|
605
752
|
},
|
|
606
753
|
});
|
|
607
754
|
}
|
|
608
|
-
}
|
|
755
|
+
};
|
|
756
|
+
if (typeof (client === null || client === void 0 ? void 0 : client.$transaction) === 'function') {
|
|
757
|
+
await client.$transaction(async (tx) => syncWithClient(tx));
|
|
758
|
+
return;
|
|
759
|
+
}
|
|
760
|
+
await syncWithClient(client);
|
|
609
761
|
}
|
|
610
762
|
async getLessonById(lessonId) {
|
|
611
|
-
var _a, _b, _c, _d, _e;
|
|
763
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
612
764
|
const lesson = await this.prisma.course_lesson.findUnique({
|
|
613
765
|
where: { id: lessonId },
|
|
614
766
|
include: {
|
|
615
767
|
course_module: {
|
|
616
|
-
select: {
|
|
768
|
+
select: {
|
|
769
|
+
id: true,
|
|
770
|
+
title: true,
|
|
771
|
+
course: {
|
|
772
|
+
select: {
|
|
773
|
+
title: true,
|
|
774
|
+
},
|
|
775
|
+
},
|
|
776
|
+
},
|
|
617
777
|
},
|
|
618
778
|
course_lesson_file: true,
|
|
619
779
|
course_lesson_question: {
|
|
@@ -638,6 +798,9 @@ let CourseStructureService = class CourseStructureService {
|
|
|
638
798
|
if (!lesson) {
|
|
639
799
|
throw new common_1.NotFoundException('Lesson not found');
|
|
640
800
|
}
|
|
801
|
+
const taskLinks = await this.operationsIntegration.getLessonTaskLinks([
|
|
802
|
+
lessonId,
|
|
803
|
+
]);
|
|
641
804
|
const parsedContent = this.parseLessonContent(lesson.content);
|
|
642
805
|
const tipo = this.mapDbTypeToUiType(lesson.type, parsedContent === null || parsedContent === void 0 ? void 0 : parsedContent.sourceType);
|
|
643
806
|
return {
|
|
@@ -674,6 +837,9 @@ let CourseStructureService = class CourseStructureService {
|
|
|
674
837
|
nome: this.personName((_a = item.instructor) === null || _a === void 0 ? void 0 : _a.person),
|
|
675
838
|
});
|
|
676
839
|
}),
|
|
840
|
+
operationsTaskId: (_g = (_f = taskLinks.get(lessonId)) === null || _f === void 0 ? void 0 : _f.taskId) !== null && _g !== void 0 ? _g : null,
|
|
841
|
+
operationsTaskName: (_j = (_h = taskLinks.get(lessonId)) === null || _h === void 0 ? void 0 : _h.taskName) !== null && _j !== void 0 ? _j : null,
|
|
842
|
+
operationsTaskStatus: (_l = (_k = taskLinks.get(lessonId)) === null || _k === void 0 ? void 0 : _k.taskStatus) !== null && _l !== void 0 ? _l : null,
|
|
677
843
|
};
|
|
678
844
|
}
|
|
679
845
|
async ensureCourseExists(courseId) {
|
|
@@ -694,9 +860,9 @@ let CourseStructureService = class CourseStructureService {
|
|
|
694
860
|
});
|
|
695
861
|
return ((_a = last === null || last === void 0 ? void 0 : last.order) !== null && _a !== void 0 ? _a : 0) + 1;
|
|
696
862
|
}
|
|
697
|
-
async nextLessonOrder(sessionId) {
|
|
863
|
+
async nextLessonOrder(sessionId, client = this.prisma) {
|
|
698
864
|
var _a;
|
|
699
|
-
const last = await
|
|
865
|
+
const last = await client.course_lesson.findFirst({
|
|
700
866
|
where: { course_module_id: sessionId },
|
|
701
867
|
orderBy: { order: 'desc' },
|
|
702
868
|
select: { order: true },
|
|
@@ -765,6 +931,7 @@ exports.CourseStructureService = CourseStructureService;
|
|
|
765
931
|
exports.CourseStructureService = CourseStructureService = __decorate([
|
|
766
932
|
(0, common_1.Injectable)(),
|
|
767
933
|
__metadata("design:paramtypes", [api_prisma_1.PrismaService,
|
|
768
|
-
instructor_service_1.InstructorService
|
|
934
|
+
instructor_service_1.InstructorService,
|
|
935
|
+
course_operations_integration_service_1.CourseOperationsIntegrationService])
|
|
769
936
|
], CourseStructureService);
|
|
770
937
|
//# sourceMappingURL=course-structure.service.js.map
|