@hed-hog/lms 0.0.361 → 0.0.365
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/bitcode-wallet/bitcode-wallet.service.d.ts +66 -0
- package/dist/bitcode-wallet/bitcode-wallet.service.d.ts.map +1 -1
- package/dist/bitcode-wallet/bitcode-wallet.service.js +91 -0
- package/dist/bitcode-wallet/bitcode-wallet.service.js.map +1 -1
- package/dist/bitcode-wallet/dto/create-current-bitcode-wallet-transaction.dto.d.ts +8 -0
- package/dist/bitcode-wallet/dto/create-current-bitcode-wallet-transaction.dto.d.ts.map +1 -0
- package/dist/bitcode-wallet/dto/create-current-bitcode-wallet-transaction.dto.js +40 -0
- package/dist/bitcode-wallet/dto/create-current-bitcode-wallet-transaction.dto.js.map +1 -0
- package/dist/class-group/class-group.controller.d.ts +16 -16
- package/dist/class-group/class-group.service.d.ts +12 -12
- package/dist/course/course-audio-transcription.service.d.ts +3 -2
- package/dist/course/course-audio-transcription.service.d.ts.map +1 -1
- package/dist/course/course-audio-transcription.service.js +49 -8
- package/dist/course/course-audio-transcription.service.js.map +1 -1
- package/dist/course/course-export-scorm12-worker.service.d.ts +21 -0
- package/dist/course/course-export-scorm12-worker.service.d.ts.map +1 -0
- package/dist/course/course-export-scorm12-worker.service.js +109 -0
- package/dist/course/course-export-scorm12-worker.service.js.map +1 -0
- package/dist/course/course-export-scorm12.service.d.ts +42 -0
- package/dist/course/course-export-scorm12.service.d.ts.map +1 -0
- package/dist/course/course-export-scorm12.service.js +628 -0
- package/dist/course/course-export-scorm12.service.js.map +1 -0
- package/dist/course/course-export.service.d.ts +84 -0
- package/dist/course/course-export.service.d.ts.map +1 -0
- package/dist/course/course-export.service.js +237 -0
- package/dist/course/course-export.service.js.map +1 -0
- package/dist/course/course-lesson.controller.d.ts +4 -0
- package/dist/course/course-lesson.controller.d.ts.map +1 -1
- package/dist/course/course-lesson.controller.js +10 -0
- package/dist/course/course-lesson.controller.js.map +1 -1
- package/dist/course/course-structure.controller.d.ts +24 -9
- package/dist/course/course-structure.controller.d.ts.map +1 -1
- package/dist/course/course-structure.controller.js +30 -3
- package/dist/course/course-structure.controller.js.map +1 -1
- package/dist/course/course-structure.service.d.ts +25 -3
- package/dist/course/course-structure.service.d.ts.map +1 -1
- package/dist/course/course-structure.service.js +234 -24
- package/dist/course/course-structure.service.js.map +1 -1
- package/dist/course/course-video-conversion.service.d.ts +8 -0
- package/dist/course/course-video-conversion.service.d.ts.map +1 -1
- package/dist/course/course-video-conversion.service.js +87 -51
- package/dist/course/course-video-conversion.service.js.map +1 -1
- package/dist/course/course-video-hls.service.d.ts +57 -0
- package/dist/course/course-video-hls.service.d.ts.map +1 -0
- package/dist/course/course-video-hls.service.js +767 -0
- package/dist/course/course-video-hls.service.js.map +1 -0
- package/dist/course/course.controller.d.ts +115 -11
- package/dist/course/course.controller.d.ts.map +1 -1
- package/dist/course/course.controller.js +66 -28
- package/dist/course/course.controller.js.map +1 -1
- package/dist/course/course.mcp-tools.js +1 -1
- package/dist/course/course.mcp-tools.js.map +1 -1
- package/dist/course/course.module.d.ts.map +1 -1
- package/dist/course/course.module.js +13 -0
- package/dist/course/course.module.js.map +1 -1
- package/dist/course/course.service.d.ts +112 -11
- package/dist/course/course.service.d.ts.map +1 -1
- package/dist/course/course.service.js +682 -72
- package/dist/course/course.service.js.map +1 -1
- package/dist/course/dto/cleanup-course-storage.dto.d.ts +6 -0
- package/dist/course/dto/cleanup-course-storage.dto.d.ts.map +1 -0
- package/dist/course/dto/cleanup-course-storage.dto.js +34 -0
- package/dist/course/dto/cleanup-course-storage.dto.js.map +1 -0
- package/dist/course/dto/cleanup-upload-history.dto.d.ts +9 -0
- package/dist/course/dto/cleanup-upload-history.dto.d.ts.map +1 -0
- package/dist/course/dto/cleanup-upload-history.dto.js +36 -0
- package/dist/course/dto/cleanup-upload-history.dto.js.map +1 -0
- package/dist/course/dto/create-course-bulk-job.dto.d.ts +5 -0
- package/dist/course/dto/create-course-bulk-job.dto.d.ts.map +1 -0
- package/dist/course/dto/create-course-bulk-job.dto.js +26 -0
- package/dist/course/dto/create-course-bulk-job.dto.js.map +1 -0
- package/dist/course/dto/create-course-export.dto.d.ts +14 -0
- package/dist/course/dto/create-course-export.dto.d.ts.map +1 -0
- package/dist/course/dto/create-course-export.dto.js +71 -0
- package/dist/course/dto/create-course-export.dto.js.map +1 -0
- package/dist/course/dto/create-course-structure-lesson.dto.d.ts +2 -2
- package/dist/course/dto/create-course-structure-lesson.dto.d.ts.map +1 -1
- package/dist/course/dto/create-course-structure-lesson.dto.js +3 -2
- package/dist/course/dto/create-course-structure-lesson.dto.js.map +1 -1
- package/dist/course/lms-bulk-upload-automation.service.d.ts +54 -0
- package/dist/course/lms-bulk-upload-automation.service.d.ts.map +1 -0
- package/dist/course/lms-bulk-upload-automation.service.js +537 -0
- package/dist/course/lms-bulk-upload-automation.service.js.map +1 -0
- package/dist/course/lms-bulk-upload-infra.service.d.ts +32 -0
- package/dist/course/lms-bulk-upload-infra.service.d.ts.map +1 -0
- package/dist/course/lms-bulk-upload-infra.service.js +301 -0
- package/dist/course/lms-bulk-upload-infra.service.js.map +1 -0
- package/dist/course/lms-bulk-upload.constants.d.ts +4 -0
- package/dist/course/lms-bulk-upload.constants.d.ts.map +1 -0
- package/dist/course/lms-bulk-upload.constants.js +7 -0
- package/dist/course/lms-bulk-upload.constants.js.map +1 -0
- package/dist/course/lms-bulk-upload.controller.d.ts +144 -1
- package/dist/course/lms-bulk-upload.controller.d.ts.map +1 -1
- package/dist/course/lms-bulk-upload.controller.js +114 -4
- package/dist/course/lms-bulk-upload.controller.js.map +1 -1
- package/dist/course/lms-bulk-upload.service.d.ts +153 -3
- package/dist/course/lms-bulk-upload.service.d.ts.map +1 -1
- package/dist/course/lms-bulk-upload.service.js +659 -21
- package/dist/course/lms-bulk-upload.service.js.map +1 -1
- package/dist/course/lms-setting.controller.d.ts +6 -2
- package/dist/course/lms-setting.controller.d.ts.map +1 -1
- package/dist/course/lms-setting.controller.js +25 -8
- package/dist/course/lms-setting.controller.js.map +1 -1
- package/dist/course/scorm12-schemas.d.ts +4 -0
- package/dist/course/scorm12-schemas.d.ts.map +1 -0
- package/dist/course/scorm12-schemas.js +9 -0
- package/dist/course/scorm12-schemas.js.map +1 -0
- package/dist/enterprise/enterprise.controller.d.ts +20 -20
- package/dist/enterprise/enterprise.service.d.ts +20 -20
- package/dist/enterprise/training/training-admin.controller.d.ts +11 -11
- package/dist/enterprise/training/training-admin.service.d.ts +11 -11
- package/dist/enterprise/training/training-instructor.controller.d.ts +2 -2
- package/dist/enterprise/training/training-instructor.service.d.ts +2 -2
- package/dist/enterprise/training/training-student.controller.d.ts +1 -1
- package/dist/enterprise/training/training-student.service.d.ts +52 -1
- package/dist/enterprise/training/training-student.service.d.ts.map +1 -1
- package/dist/enterprise/training/training-student.service.js +217 -4
- package/dist/enterprise/training/training-student.service.js.map +1 -1
- package/dist/enterprise/training/training-viewer.controller.d.ts +2 -2
- package/dist/evaluation/evaluation.controller.d.ts +8 -8
- package/dist/evaluation/evaluation.service.d.ts +26 -8
- package/dist/evaluation/evaluation.service.d.ts.map +1 -1
- package/dist/evaluation/evaluation.service.js +125 -0
- package/dist/evaluation/evaluation.service.js.map +1 -1
- package/dist/exam/dto/create-standalone-question.dto.d.ts +12 -0
- package/dist/exam/dto/create-standalone-question.dto.d.ts.map +1 -0
- package/dist/exam/dto/create-standalone-question.dto.js +70 -0
- package/dist/exam/dto/create-standalone-question.dto.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 +21 -0
- package/dist/exam/exam.service.d.ts.map +1 -1
- package/dist/exam/exam.service.js +80 -0
- package/dist/exam/exam.service.js.map +1 -1
- package/dist/exam/question.controller.d.ts +27 -0
- package/dist/exam/question.controller.d.ts.map +1 -0
- package/dist/exam/question.controller.js +53 -0
- package/dist/exam/question.controller.js.map +1 -0
- package/dist/lesson-xp-map/dto/create-lesson-xp-map.dto.d.ts +6 -0
- package/dist/lesson-xp-map/dto/create-lesson-xp-map.dto.d.ts.map +1 -0
- package/dist/lesson-xp-map/dto/create-lesson-xp-map.dto.js +34 -0
- package/dist/lesson-xp-map/dto/create-lesson-xp-map.dto.js.map +1 -0
- package/dist/lesson-xp-map/dto/create-lesson-xp-segment.dto.d.ts +28 -0
- package/dist/lesson-xp-map/dto/create-lesson-xp-segment.dto.d.ts.map +1 -0
- package/dist/lesson-xp-map/dto/create-lesson-xp-segment.dto.js +123 -0
- package/dist/lesson-xp-map/dto/create-lesson-xp-segment.dto.js.map +1 -0
- package/dist/lesson-xp-map/dto/review-lesson-xp-map.dto.d.ts +4 -0
- package/dist/lesson-xp-map/dto/review-lesson-xp-map.dto.d.ts.map +1 -0
- package/dist/lesson-xp-map/dto/review-lesson-xp-map.dto.js +22 -0
- package/dist/lesson-xp-map/dto/review-lesson-xp-map.dto.js.map +1 -0
- package/dist/lesson-xp-map/dto/update-lesson-xp-map.dto.d.ts +10 -0
- package/dist/lesson-xp-map/dto/update-lesson-xp-map.dto.d.ts.map +1 -0
- package/dist/lesson-xp-map/dto/update-lesson-xp-map.dto.js +52 -0
- package/dist/lesson-xp-map/dto/update-lesson-xp-map.dto.js.map +1 -0
- package/dist/lesson-xp-map/dto/update-lesson-xp-segment.dto.d.ts +15 -0
- package/dist/lesson-xp-map/dto/update-lesson-xp-segment.dto.d.ts.map +1 -0
- package/dist/lesson-xp-map/dto/update-lesson-xp-segment.dto.js +86 -0
- package/dist/lesson-xp-map/dto/update-lesson-xp-segment.dto.js.map +1 -0
- package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.d.ts +30 -0
- package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.d.ts.map +1 -0
- package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.js +440 -0
- package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.js.map +1 -0
- package/dist/lesson-xp-map/lesson-xp-map.controller.d.ts +87 -0
- package/dist/lesson-xp-map/lesson-xp-map.controller.d.ts.map +1 -0
- package/dist/lesson-xp-map/lesson-xp-map.controller.js +185 -0
- package/dist/lesson-xp-map/lesson-xp-map.controller.js.map +1 -0
- package/dist/lesson-xp-map/lesson-xp-map.module.d.ts +3 -0
- package/dist/lesson-xp-map/lesson-xp-map.module.d.ts.map +1 -0
- package/dist/lesson-xp-map/lesson-xp-map.module.js +34 -0
- package/dist/lesson-xp-map/lesson-xp-map.module.js.map +1 -0
- package/dist/lesson-xp-map/lesson-xp-map.service.d.ts +84 -0
- package/dist/lesson-xp-map/lesson-xp-map.service.d.ts.map +1 -0
- package/dist/lesson-xp-map/lesson-xp-map.service.js +353 -0
- package/dist/lesson-xp-map/lesson-xp-map.service.js.map +1 -0
- package/dist/lesson-xp-map/lesson-xp-segment.controller.d.ts +10 -0
- package/dist/lesson-xp-map/lesson-xp-segment.controller.d.ts.map +1 -0
- package/dist/lesson-xp-map/lesson-xp-segment.controller.js +63 -0
- package/dist/lesson-xp-map/lesson-xp-segment.controller.js.map +1 -0
- package/dist/lesson-xp-map/lesson-xp-segment.service.d.ts +27 -0
- package/dist/lesson-xp-map/lesson-xp-segment.service.d.ts.map +1 -0
- package/dist/lesson-xp-map/lesson-xp-segment.service.js +194 -0
- package/dist/lesson-xp-map/lesson-xp-segment.service.js.map +1 -0
- package/dist/libraries/lms/tsconfig.tsbuildinfo +1 -0
- package/dist/lms-commerce-access.subscriber.d.ts +11 -0
- package/dist/lms-commerce-access.subscriber.d.ts.map +1 -0
- package/dist/lms-commerce-access.subscriber.js +74 -0
- package/dist/lms-commerce-access.subscriber.js.map +1 -0
- package/dist/lms.module.d.ts.map +1 -1
- package/dist/lms.module.js +21 -5
- package/dist/lms.module.js.map +1 -1
- package/dist/platforma/dto/update-profile.dto.d.ts +17 -0
- package/dist/platforma/dto/update-profile.dto.d.ts.map +1 -0
- package/dist/platforma/dto/update-profile.dto.js +87 -0
- package/dist/platforma/dto/update-profile.dto.js.map +1 -0
- package/dist/platforma/platforma-video.service.d.ts +39 -0
- package/dist/platforma/platforma-video.service.d.ts.map +1 -0
- package/dist/platforma/platforma-video.service.js +301 -0
- package/dist/platforma/platforma-video.service.js.map +1 -0
- package/dist/platforma/platforma.controller.d.ts +182 -1
- package/dist/platforma/platforma.controller.d.ts.map +1 -1
- package/dist/platforma/platforma.controller.js +243 -2
- package/dist/platforma/platforma.controller.js.map +1 -1
- package/dist/platforma/platforma.service.d.ts +27 -0
- package/dist/platforma/platforma.service.d.ts.map +1 -0
- package/dist/platforma/platforma.service.js +274 -0
- package/dist/platforma/platforma.service.js.map +1 -0
- package/dist/student-xp/dto/grant-skill-card-xp.dto.d.ts +5 -0
- package/dist/student-xp/dto/grant-skill-card-xp.dto.d.ts.map +1 -0
- package/dist/student-xp/dto/grant-skill-card-xp.dto.js +26 -0
- package/dist/student-xp/dto/grant-skill-card-xp.dto.js.map +1 -0
- package/dist/student-xp/student-xp.controller.d.ts +56 -0
- package/dist/student-xp/student-xp.controller.d.ts.map +1 -0
- package/dist/student-xp/student-xp.controller.js +138 -0
- package/dist/student-xp/student-xp.controller.js.map +1 -0
- package/dist/student-xp/student-xp.module.d.ts +3 -0
- package/dist/student-xp/student-xp.module.d.ts.map +1 -0
- package/dist/student-xp/student-xp.module.js +25 -0
- package/dist/student-xp/student-xp.module.js.map +1 -0
- package/dist/student-xp/student-xp.service.d.ts +81 -0
- package/dist/student-xp/student-xp.service.d.ts.map +1 -0
- package/dist/student-xp/student-xp.service.js +247 -0
- package/dist/student-xp/student-xp.service.js.map +1 -0
- package/dist/xp-catalog/dto/create-xp-area.dto.d.ts +12 -0
- package/dist/xp-catalog/dto/create-xp-area.dto.d.ts.map +1 -0
- package/dist/xp-catalog/dto/create-xp-area.dto.js +63 -0
- package/dist/xp-catalog/dto/create-xp-area.dto.js.map +1 -0
- package/dist/xp-catalog/dto/create-xp-learning-type.dto.d.ts +11 -0
- package/dist/xp-catalog/dto/create-xp-learning-type.dto.d.ts.map +1 -0
- package/dist/xp-catalog/dto/create-xp-learning-type.dto.js +57 -0
- package/dist/xp-catalog/dto/create-xp-learning-type.dto.js.map +1 -0
- package/dist/xp-catalog/dto/create-xp-skill.dto.d.ts +11 -0
- package/dist/xp-catalog/dto/create-xp-skill.dto.d.ts.map +1 -0
- package/dist/xp-catalog/dto/create-xp-skill.dto.js +57 -0
- package/dist/xp-catalog/dto/create-xp-skill.dto.js.map +1 -0
- package/dist/xp-catalog/dto/update-xp-area.dto.d.ts +12 -0
- package/dist/xp-catalog/dto/update-xp-area.dto.d.ts.map +1 -0
- package/dist/xp-catalog/dto/update-xp-area.dto.js +66 -0
- package/dist/xp-catalog/dto/update-xp-area.dto.js.map +1 -0
- package/dist/xp-catalog/dto/update-xp-learning-type.dto.d.ts +11 -0
- package/dist/xp-catalog/dto/update-xp-learning-type.dto.d.ts.map +1 -0
- package/dist/xp-catalog/dto/update-xp-learning-type.dto.js +60 -0
- package/dist/xp-catalog/dto/update-xp-learning-type.dto.js.map +1 -0
- package/dist/xp-catalog/dto/update-xp-skill.dto.d.ts +11 -0
- package/dist/xp-catalog/dto/update-xp-skill.dto.d.ts.map +1 -0
- package/dist/xp-catalog/dto/update-xp-skill.dto.js +60 -0
- package/dist/xp-catalog/dto/update-xp-skill.dto.js.map +1 -0
- package/dist/xp-catalog/xp-area.controller.d.ts +25 -0
- package/dist/xp-catalog/xp-area.controller.d.ts.map +1 -0
- package/dist/xp-catalog/xp-area.controller.js +105 -0
- package/dist/xp-catalog/xp-area.controller.js.map +1 -0
- package/dist/xp-catalog/xp-area.service.d.ts +35 -0
- package/dist/xp-catalog/xp-area.service.d.ts.map +1 -0
- package/dist/xp-catalog/xp-area.service.js +168 -0
- package/dist/xp-catalog/xp-area.service.js.map +1 -0
- package/dist/xp-catalog/xp-catalog.module.d.ts +3 -0
- package/dist/xp-catalog/xp-catalog.module.d.ts.map +1 -0
- package/dist/xp-catalog/xp-catalog.module.js +29 -0
- package/dist/xp-catalog/xp-catalog.module.js.map +1 -0
- package/dist/xp-catalog/xp-learning-type.controller.d.ts +20 -0
- package/dist/xp-catalog/xp-learning-type.controller.d.ts.map +1 -0
- package/dist/xp-catalog/xp-learning-type.controller.js +96 -0
- package/dist/xp-catalog/xp-learning-type.controller.js.map +1 -0
- package/dist/xp-catalog/xp-learning-type.service.d.ts +30 -0
- package/dist/xp-catalog/xp-learning-type.service.d.ts.map +1 -0
- package/dist/xp-catalog/xp-learning-type.service.js +146 -0
- package/dist/xp-catalog/xp-learning-type.service.js.map +1 -0
- package/dist/xp-catalog/xp-skill.controller.d.ts +26 -0
- package/dist/xp-catalog/xp-skill.controller.d.ts.map +1 -0
- package/dist/xp-catalog/xp-skill.controller.js +113 -0
- package/dist/xp-catalog/xp-skill.controller.js.map +1 -0
- package/dist/xp-catalog/xp-skill.service.d.ts +37 -0
- package/dist/xp-catalog/xp-skill.service.d.ts.map +1 -0
- package/dist/xp-catalog/xp-skill.service.js +174 -0
- package/dist/xp-catalog/xp-skill.service.js.map +1 -0
- package/hedhog/data/evaluation_topic.yaml +17 -0
- package/hedhog/data/menu.yaml +91 -7
- package/hedhog/data/queue_definition.yaml +48 -0
- package/hedhog/data/route.yaml +511 -29
- package/hedhog/data/setting_group.yaml +20 -20
- package/hedhog/data/xp_area.yaml +164 -0
- package/hedhog/data/xp_learning_type.yaml +131 -0
- package/hedhog/data/xp_skill.yaml +1834 -0
- package/hedhog/frontend/app/achievements/page.tsx.ejs +108 -118
- package/hedhog/frontend/app/bitcodes/page.tsx.ejs +22 -34
- package/hedhog/frontend/app/bulk-upload-sessions/page.tsx.ejs +1749 -0
- package/hedhog/frontend/app/certificates/models/page.tsx.ejs +21 -45
- package/hedhog/frontend/app/classes/[id]/page.tsx.ejs +40 -74
- package/hedhog/frontend/app/classes/page.tsx.ejs +56 -85
- package/hedhog/frontend/app/courses/[id]/_components/CourseDangerZoneCard.tsx.ejs +3 -2
- package/hedhog/frontend/app/courses/[id]/_components/CourseMediaCard.tsx.ejs +48 -5
- package/hedhog/frontend/app/courses/[id]/page.tsx.ejs +73 -8
- package/hedhog/frontend/app/courses/[id]/structure/_components/course-export-sheet.tsx.ejs +420 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/course-exports-tab.tsx.ejs +308 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/course-operations-tab.tsx.ejs +19 -2
- package/hedhog/frontend/app/courses/[id]/structure/_components/course-overview-tab.tsx.ejs +1172 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/course-tree-dnd.tsx.ejs +16 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/course-tree.tsx.ejs +2 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/course-xp-overview-tab.tsx.ejs +623 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/detail-lesson-xp-tab.tsx.ejs +1458 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/detail-lesson.tsx.ejs +87 -46
- package/hedhog/frontend/app/courses/[id]/structure/_components/detail-panel.tsx.ejs +8 -3
- package/hedhog/frontend/app/courses/[id]/structure/_components/detail-session.tsx.ejs +31 -8
- package/hedhog/frontend/app/courses/[id]/structure/_components/drag-overlay.tsx.ejs +16 -9
- package/hedhog/frontend/app/courses/[id]/structure/_components/editor-course.tsx.ejs +618 -480
- package/hedhog/frontend/app/courses/[id]/structure/_components/editor-lesson.tsx.ejs +672 -737
- package/hedhog/frontend/app/courses/[id]/structure/_components/mock-data.ts.ejs +1 -2
- package/hedhog/frontend/app/courses/[id]/structure/_components/sortable-tree-row.tsx.ejs +3 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/store.ts.ejs +1 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/tree-display-settings-popover.tsx.ejs +101 -85
- package/hedhog/frontend/app/courses/[id]/structure/_components/tree-row-lesson.tsx.ejs +24 -10
- package/hedhog/frontend/app/courses/[id]/structure/_components/tree-row.tsx.ejs +3 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/types.ts.ejs +1 -1
- package/hedhog/frontend/app/courses/[id]/structure/_components/use-tree-display-settings.ts.ejs +7 -1
- package/hedhog/frontend/app/courses/[id]/structure/_components/xp-premium-pills.tsx.ejs +44 -0
- package/hedhog/frontend/app/courses/[id]/structure/_data/adapters/course-structure.adapter.ts.ejs +6 -10
- package/hedhog/frontend/app/courses/[id]/structure/_data/services/course-structure.service.ts.ejs +49 -0
- package/hedhog/frontend/app/courses/[id]/structure/_data/types/api-course.types.ts.ejs +4 -3
- package/hedhog/frontend/app/courses/[id]/structure/_data/use-course-content-overview.ts.ejs +53 -0
- package/hedhog/frontend/app/courses/[id]/structure/_data/use-course-exports.ts.ejs +106 -0
- package/hedhog/frontend/app/courses/[id]/structure/_data/use-course-structure-mutations.ts.ejs +80 -1
- package/hedhog/frontend/app/courses/[id]/structure/_data/use-course-xp-overview.ts.ejs +76 -0
- package/hedhog/frontend/app/courses/[id]/structure/_data/use-lesson-xp-map.ts.ejs +128 -0
- package/hedhog/frontend/app/courses/[id]/structure/_data/use-lms-settings-query.ts.ejs +0 -2
- package/hedhog/frontend/app/courses/[id]/structure/_data/use-transcription-segments.ts.ejs +30 -0
- package/hedhog/frontend/app/courses/[id]/structure/_utils/xp-color-config.ts.ejs +115 -0
- package/hedhog/frontend/app/courses/_components/CourseDeleteDialog.tsx.ejs +223 -0
- package/hedhog/frontend/app/courses/_components/CourseRowActions.tsx.ejs +89 -0
- package/hedhog/frontend/app/courses/page.tsx.ejs +445 -230
- package/hedhog/frontend/app/enterprise/page.tsx.ejs +39 -63
- package/hedhog/frontend/app/exams/[id]/questions/page.tsx.ejs +53 -77
- package/hedhog/frontend/app/exams/page.tsx.ejs +54 -90
- package/hedhog/frontend/app/instructor-skills/page.tsx.ejs +23 -36
- package/hedhog/frontend/app/instructors/page.tsx.ejs +72 -81
- package/hedhog/frontend/app/paths/page.tsx.ejs +40 -68
- package/hedhog/frontend/app/training/page.tsx.ejs +40 -68
- package/hedhog/frontend/app/xp/areas/page.tsx.ejs +782 -0
- package/hedhog/frontend/app/xp/learning-types/page.tsx.ejs +690 -0
- package/hedhog/frontend/app/xp/skills/page.tsx.ejs +811 -0
- package/hedhog/frontend/messages/en.json +412 -31
- package/hedhog/frontend/messages/pt.json +412 -31
- package/hedhog/table/course_export.yaml +62 -0
- package/hedhog/table/lesson_xp_map.yaml +50 -0
- package/hedhog/table/lesson_xp_segment.yaml +40 -0
- package/hedhog/table/lesson_xp_segment_area.yaml +24 -0
- package/hedhog/table/lesson_xp_segment_learning_type.yaml +24 -0
- package/hedhog/table/lesson_xp_segment_skill.yaml +24 -0
- package/hedhog/table/lms_bulk_upload_item.yaml +44 -0
- package/hedhog/table/lms_bulk_upload_session.yaml +42 -0
- package/hedhog/table/student_area_xp.yaml +30 -0
- package/hedhog/table/student_learning_type_xp.yaml +30 -0
- package/hedhog/table/student_skill_xp.yaml +30 -0
- package/hedhog/table/student_xp_event.yaml +34 -0
- package/hedhog/table/xp_area.yaml +39 -0
- package/hedhog/table/xp_learning_type.yaml +34 -0
- package/hedhog/table/xp_skill.yaml +39 -0
- package/package.json +13 -8
- package/src/bitcode-wallet/bitcode-wallet.service.ts +152 -0
- package/src/bitcode-wallet/dto/create-current-bitcode-wallet-transaction.dto.ts +32 -0
- package/src/course/course-audio-transcription.service.ts +58 -21
- package/src/course/course-export-scorm12-worker.service.ts +124 -0
- package/src/course/course-export-scorm12.service.ts +668 -0
- package/src/course/course-export.service.ts +280 -0
- package/src/course/course-lesson.controller.ts +6 -1
- package/src/course/course-structure.controller.ts +23 -1
- package/src/course/course-structure.service.ts +273 -7
- package/src/course/course-video-conversion.service.ts +113 -75
- package/src/course/course-video-hls.service.ts +946 -0
- package/src/course/course.controller.ts +54 -21
- package/src/course/course.mcp-tools.ts +1 -1
- package/src/course/course.module.ts +13 -0
- package/src/course/course.service.ts +906 -76
- package/src/course/dto/cleanup-course-storage.dto.ts +23 -0
- package/src/course/dto/cleanup-upload-history.dto.ts +26 -0
- package/src/course/dto/create-course-bulk-job.dto.ts +10 -0
- package/src/course/dto/create-course-export.dto.ts +56 -0
- package/src/course/dto/create-course-structure-lesson.dto.ts +4 -3
- package/src/course/lms-bulk-upload-automation.service.ts +707 -0
- package/src/course/lms-bulk-upload-infra.service.ts +360 -0
- package/src/course/lms-bulk-upload.constants.ts +5 -0
- package/src/course/lms-bulk-upload.controller.ts +110 -4
- package/src/course/lms-bulk-upload.service.ts +1092 -204
- package/src/course/lms-setting.controller.ts +26 -8
- package/src/course/scorm12-schemas.ts +9 -0
- package/src/enterprise/training/training-student.service.ts +221 -2
- package/src/evaluation/evaluation.service.ts +123 -0
- package/src/exam/dto/create-standalone-question.dto.ts +66 -0
- package/src/exam/exam.module.ts +2 -1
- package/src/exam/exam.service.ts +86 -0
- package/src/exam/question.controller.ts +28 -0
- package/src/lesson-xp-map/dto/create-lesson-xp-map.dto.ts +17 -0
- package/src/lesson-xp-map/dto/create-lesson-xp-segment.dto.ts +102 -0
- package/src/lesson-xp-map/dto/review-lesson-xp-map.dto.ts +7 -0
- package/src/lesson-xp-map/dto/update-lesson-xp-map.dto.ts +36 -0
- package/src/lesson-xp-map/dto/update-lesson-xp-segment.dto.ts +78 -0
- package/src/lesson-xp-map/lesson-xp-ai-calculation.service.ts +570 -0
- package/src/lesson-xp-map/lesson-xp-map.controller.ts +116 -0
- package/src/lesson-xp-map/lesson-xp-map.module.ts +21 -0
- package/src/lesson-xp-map/lesson-xp-map.service.ts +442 -0
- package/src/lesson-xp-map/lesson-xp-segment.controller.ts +36 -0
- package/src/lesson-xp-map/lesson-xp-segment.service.ts +229 -0
- package/src/lms-commerce-access.subscriber.ts +88 -0
- package/src/lms.module.ts +21 -5
- package/src/platforma/dto/update-profile.dto.ts +59 -0
- package/src/platforma/platforma-video.service.ts +346 -0
- package/src/platforma/platforma.controller.ts +152 -3
- package/src/platforma/platforma.service.ts +268 -0
- package/src/student-xp/dto/grant-skill-card-xp.dto.ts +10 -0
- package/src/student-xp/student-xp.controller.ts +92 -0
- package/src/student-xp/student-xp.module.ts +12 -0
- package/src/student-xp/student-xp.service.ts +318 -0
- package/src/xp-catalog/dto/create-xp-area.dto.ts +40 -0
- package/src/xp-catalog/dto/create-xp-learning-type.dto.ts +35 -0
- package/src/xp-catalog/dto/create-xp-skill.dto.ts +35 -0
- package/src/xp-catalog/dto/update-xp-area.dto.ts +43 -0
- package/src/xp-catalog/dto/update-xp-learning-type.dto.ts +38 -0
- package/src/xp-catalog/dto/update-xp-skill.dto.ts +38 -0
- package/src/xp-catalog/xp-area.controller.ts +64 -0
- package/src/xp-catalog/xp-area.service.ts +196 -0
- package/src/xp-catalog/xp-catalog.module.ts +16 -0
- package/src/xp-catalog/xp-learning-type.controller.ts +59 -0
- package/src/xp-catalog/xp-learning-type.service.ts +170 -0
- package/src/xp-catalog/xp-skill.controller.ts +71 -0
- package/src/xp-catalog/xp-skill.service.ts +205 -0
- package/hedhog/data/video_resolution_profile.yaml +0 -7
- package/hedhog/frontend/app/video-resolution-profiles/page.tsx.ejs +0 -607
- package/hedhog/table/course_video_resolution_profile.yaml +0 -22
- package/hedhog/table/video_resolution_profile.yaml +0 -18
- package/src/video-resolution-profile/dto/create-video-resolution-profile.dto.ts +0 -16
- package/src/video-resolution-profile/dto/update-video-resolution-profile.dto.ts +0 -16
- package/src/video-resolution-profile/video-resolution-profile.controller.ts +0 -62
- package/src/video-resolution-profile/video-resolution-profile.mcp-tools.ts +0 -128
- package/src/video-resolution-profile/video-resolution-profile.module.ts +0 -13
- package/src/video-resolution-profile/video-resolution-profile.service.ts +0 -117
|
@@ -197,7 +197,7 @@ export declare class TrainingAdminController {
|
|
|
197
197
|
progress: number;
|
|
198
198
|
attendance: number;
|
|
199
199
|
grade: number;
|
|
200
|
-
status: "
|
|
200
|
+
status: "inactive" | "ok" | "risk";
|
|
201
201
|
}[];
|
|
202
202
|
}>;
|
|
203
203
|
getClassGroupSessions(userId: number, classGroupId: number): Promise<{
|
|
@@ -208,7 +208,7 @@ export declare class TrainingAdminController {
|
|
|
208
208
|
endTime: string;
|
|
209
209
|
location: string;
|
|
210
210
|
meetingUrl: string;
|
|
211
|
-
status: "
|
|
211
|
+
status: "completed" | "next" | "upcoming";
|
|
212
212
|
attendanceCount: number;
|
|
213
213
|
totalStudents: number;
|
|
214
214
|
}[]>;
|
|
@@ -244,8 +244,8 @@ export declare class TrainingAdminController {
|
|
|
244
244
|
email?: string;
|
|
245
245
|
department?: string;
|
|
246
246
|
}): Promise<{
|
|
247
|
-
status: import("@prisma/client").$Enums.enterprise_student_status_2597741ae7_enum;
|
|
248
247
|
id: number;
|
|
248
|
+
status: import("@prisma/client").$Enums.enterprise_student_status_2597741ae7_enum;
|
|
249
249
|
created_at: Date;
|
|
250
250
|
person_id: number;
|
|
251
251
|
}>;
|
|
@@ -264,15 +264,15 @@ export declare class TrainingAdminController {
|
|
|
264
264
|
enrollExistingStudent(userId: number, classGroupId: number, dto: {
|
|
265
265
|
personId: number;
|
|
266
266
|
}): Promise<{
|
|
267
|
-
status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
|
|
268
267
|
id: number;
|
|
268
|
+
status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
|
|
269
|
+
course_id: number;
|
|
269
270
|
created_at: Date;
|
|
270
271
|
updated_at: Date;
|
|
271
|
-
person_id: number;
|
|
272
|
-
course_id: number;
|
|
273
272
|
course_class_group_id: number | null;
|
|
274
273
|
completed_at: Date | null;
|
|
275
274
|
final_score: number | null;
|
|
275
|
+
person_id: number;
|
|
276
276
|
enrolled_at: Date;
|
|
277
277
|
progress_percent: number;
|
|
278
278
|
}>;
|
|
@@ -281,15 +281,15 @@ export declare class TrainingAdminController {
|
|
|
281
281
|
email?: string;
|
|
282
282
|
department?: string;
|
|
283
283
|
}): Promise<{
|
|
284
|
-
status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
|
|
285
284
|
id: number;
|
|
285
|
+
status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
|
|
286
|
+
course_id: number;
|
|
286
287
|
created_at: Date;
|
|
287
288
|
updated_at: Date;
|
|
288
|
-
person_id: number;
|
|
289
|
-
course_id: number;
|
|
290
289
|
course_class_group_id: number | null;
|
|
291
290
|
completed_at: Date | null;
|
|
292
291
|
final_score: number | null;
|
|
292
|
+
person_id: number;
|
|
293
293
|
enrolled_at: Date;
|
|
294
294
|
progress_percent: number;
|
|
295
295
|
}>;
|
|
@@ -400,10 +400,10 @@ export declare class TrainingAdminController {
|
|
|
400
400
|
department?: string;
|
|
401
401
|
role?: string;
|
|
402
402
|
}): Promise<{
|
|
403
|
-
status: import("@prisma/client").$Enums.enterprise_user_status_8a1e21341c_enum;
|
|
404
403
|
id: number;
|
|
405
|
-
|
|
404
|
+
status: import("@prisma/client").$Enums.enterprise_user_status_8a1e21341c_enum;
|
|
406
405
|
created_at: Date;
|
|
406
|
+
role: import("@prisma/client").$Enums.enterprise_user_role_43b5c384bf_enum;
|
|
407
407
|
}>;
|
|
408
408
|
updateAdminRole(userId: number, enterpriseUserId: number, role: string): Promise<{
|
|
409
409
|
id: number;
|
|
@@ -139,7 +139,7 @@ export declare class TrainingAdminService {
|
|
|
139
139
|
progress: number;
|
|
140
140
|
attendance: number;
|
|
141
141
|
grade: number;
|
|
142
|
-
status: "
|
|
142
|
+
status: "inactive" | "ok" | "risk";
|
|
143
143
|
}[];
|
|
144
144
|
}>;
|
|
145
145
|
getClassGroupSessions(userId: number, classGroupId: number): Promise<{
|
|
@@ -150,7 +150,7 @@ export declare class TrainingAdminService {
|
|
|
150
150
|
endTime: string;
|
|
151
151
|
location: string;
|
|
152
152
|
meetingUrl: string;
|
|
153
|
-
status: "
|
|
153
|
+
status: "completed" | "next" | "upcoming";
|
|
154
154
|
attendanceCount: number;
|
|
155
155
|
totalStudents: number;
|
|
156
156
|
}[]>;
|
|
@@ -187,8 +187,8 @@ export declare class TrainingAdminService {
|
|
|
187
187
|
email?: string;
|
|
188
188
|
department?: string;
|
|
189
189
|
}): Promise<{
|
|
190
|
-
status: import("@prisma/client").$Enums.enterprise_student_status_2597741ae7_enum;
|
|
191
190
|
id: number;
|
|
191
|
+
status: import("@prisma/client").$Enums.enterprise_student_status_2597741ae7_enum;
|
|
192
192
|
created_at: Date;
|
|
193
193
|
person_id: number;
|
|
194
194
|
}>;
|
|
@@ -210,15 +210,15 @@ export declare class TrainingAdminService {
|
|
|
210
210
|
hasAvailableSlot: boolean;
|
|
211
211
|
}>;
|
|
212
212
|
enrollExistingStudent(userId: number, classGroupId: number, personId: number): Promise<{
|
|
213
|
-
status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
|
|
214
213
|
id: number;
|
|
214
|
+
status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
|
|
215
|
+
course_id: number;
|
|
215
216
|
created_at: Date;
|
|
216
217
|
updated_at: Date;
|
|
217
|
-
person_id: number;
|
|
218
|
-
course_id: number;
|
|
219
218
|
course_class_group_id: number | null;
|
|
220
219
|
completed_at: Date | null;
|
|
221
220
|
final_score: number | null;
|
|
221
|
+
person_id: number;
|
|
222
222
|
enrolled_at: Date;
|
|
223
223
|
progress_percent: number;
|
|
224
224
|
}>;
|
|
@@ -227,15 +227,15 @@ export declare class TrainingAdminService {
|
|
|
227
227
|
email?: string;
|
|
228
228
|
department?: string;
|
|
229
229
|
}): Promise<{
|
|
230
|
-
status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
|
|
231
230
|
id: number;
|
|
231
|
+
status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
|
|
232
|
+
course_id: number;
|
|
232
233
|
created_at: Date;
|
|
233
234
|
updated_at: Date;
|
|
234
|
-
person_id: number;
|
|
235
|
-
course_id: number;
|
|
236
235
|
course_class_group_id: number | null;
|
|
237
236
|
completed_at: Date | null;
|
|
238
237
|
final_score: number | null;
|
|
238
|
+
person_id: number;
|
|
239
239
|
enrolled_at: Date;
|
|
240
240
|
progress_percent: number;
|
|
241
241
|
}>;
|
|
@@ -446,10 +446,10 @@ export declare class TrainingAdminService {
|
|
|
446
446
|
department?: string;
|
|
447
447
|
role?: string;
|
|
448
448
|
}): Promise<{
|
|
449
|
-
status: import("@prisma/client").$Enums.enterprise_user_status_8a1e21341c_enum;
|
|
450
449
|
id: number;
|
|
451
|
-
|
|
450
|
+
status: import("@prisma/client").$Enums.enterprise_user_status_8a1e21341c_enum;
|
|
452
451
|
created_at: Date;
|
|
452
|
+
role: import("@prisma/client").$Enums.enterprise_user_role_43b5c384bf_enum;
|
|
453
453
|
}>;
|
|
454
454
|
updateAdminRole(userId: number, enterpriseUserId: number, permission: string): Promise<{
|
|
455
455
|
id: number;
|
|
@@ -189,7 +189,7 @@ export declare class TrainingInstructorController {
|
|
|
189
189
|
progress: number;
|
|
190
190
|
attendance: number;
|
|
191
191
|
grade: number;
|
|
192
|
-
status: "
|
|
192
|
+
status: "inactive" | "ok" | "risk";
|
|
193
193
|
}[];
|
|
194
194
|
}>;
|
|
195
195
|
getClassGroupSessions(userId: number, classGroupId: number): Promise<{
|
|
@@ -200,7 +200,7 @@ export declare class TrainingInstructorController {
|
|
|
200
200
|
endTime: string;
|
|
201
201
|
location: string;
|
|
202
202
|
meetingUrl: string;
|
|
203
|
-
status: "
|
|
203
|
+
status: "completed" | "next" | "upcoming";
|
|
204
204
|
attendanceCount: number;
|
|
205
205
|
totalStudents: number;
|
|
206
206
|
}[]>;
|
|
@@ -147,7 +147,7 @@ export declare class TrainingInstructorService {
|
|
|
147
147
|
progress: number;
|
|
148
148
|
attendance: number;
|
|
149
149
|
grade: number;
|
|
150
|
-
status: "
|
|
150
|
+
status: "inactive" | "ok" | "risk";
|
|
151
151
|
}[];
|
|
152
152
|
}>;
|
|
153
153
|
getClassGroupSessions(userId: number, classGroupId: number): Promise<{
|
|
@@ -158,7 +158,7 @@ export declare class TrainingInstructorService {
|
|
|
158
158
|
endTime: string;
|
|
159
159
|
location: string;
|
|
160
160
|
meetingUrl: string;
|
|
161
|
-
status: "
|
|
161
|
+
status: "completed" | "next" | "upcoming";
|
|
162
162
|
attendanceCount: number;
|
|
163
163
|
totalStudents: number;
|
|
164
164
|
}[]>;
|
|
@@ -70,7 +70,7 @@ export declare class TrainingStudentController {
|
|
|
70
70
|
endTime: string;
|
|
71
71
|
location: string;
|
|
72
72
|
meetingUrl: string;
|
|
73
|
-
status: "
|
|
73
|
+
status: "completed" | "next" | "upcoming";
|
|
74
74
|
recordingUrl: string | null;
|
|
75
75
|
}[]>;
|
|
76
76
|
getClassGroupMaterials(userId: number, classGroupId: number): Promise<{
|
|
@@ -43,6 +43,7 @@ export declare class TrainingStudentService {
|
|
|
43
43
|
level: import("@prisma/client").$Enums.course_level_de6adae713_enum;
|
|
44
44
|
lessons: number;
|
|
45
45
|
image: string;
|
|
46
|
+
logoImage: string;
|
|
46
47
|
categoryKey: string;
|
|
47
48
|
categoryLabel: string;
|
|
48
49
|
enrollmentCount: number;
|
|
@@ -57,6 +58,56 @@ export declare class TrainingStudentService {
|
|
|
57
58
|
pageSize: number;
|
|
58
59
|
lastPage: number;
|
|
59
60
|
}>;
|
|
61
|
+
getPublishedCourseBySlug(slug: string, userId?: number): Promise<{
|
|
62
|
+
id: number;
|
|
63
|
+
slug: string;
|
|
64
|
+
title: string;
|
|
65
|
+
description: string;
|
|
66
|
+
durationHours: number;
|
|
67
|
+
level: import("@prisma/client").$Enums.course_level_de6adae713_enum;
|
|
68
|
+
image: string;
|
|
69
|
+
logoImage: string;
|
|
70
|
+
primaryColor: string;
|
|
71
|
+
categoryKey: string;
|
|
72
|
+
categoryLabel: string;
|
|
73
|
+
completedLessonIds: number[];
|
|
74
|
+
progressPercent: number;
|
|
75
|
+
modules: {
|
|
76
|
+
id: number;
|
|
77
|
+
title: string;
|
|
78
|
+
lessonCount: number;
|
|
79
|
+
durationHours: number;
|
|
80
|
+
lessons: {
|
|
81
|
+
id: number;
|
|
82
|
+
title: string;
|
|
83
|
+
type: import("@prisma/client").$Enums.course_lesson_type_c6739e3633_enum;
|
|
84
|
+
durationSeconds: number;
|
|
85
|
+
hasResources: boolean;
|
|
86
|
+
}[];
|
|
87
|
+
}[];
|
|
88
|
+
instructor: {
|
|
89
|
+
name: string;
|
|
90
|
+
avatar: string;
|
|
91
|
+
};
|
|
92
|
+
}>;
|
|
93
|
+
getLessonDetail(lessonId: number): Promise<{
|
|
94
|
+
id: number;
|
|
95
|
+
title: string;
|
|
96
|
+
description: string;
|
|
97
|
+
type: import("@prisma/client").$Enums.course_lesson_type_c6739e3633_enum;
|
|
98
|
+
content: string;
|
|
99
|
+
durationSeconds: number;
|
|
100
|
+
videos: {
|
|
101
|
+
type: string;
|
|
102
|
+
label: string;
|
|
103
|
+
fileId: number;
|
|
104
|
+
}[];
|
|
105
|
+
resources: {
|
|
106
|
+
id: number;
|
|
107
|
+
title: string;
|
|
108
|
+
url: string;
|
|
109
|
+
}[];
|
|
110
|
+
}>;
|
|
60
111
|
getDashboard(userId: number, enterpriseId?: number): Promise<{
|
|
61
112
|
user: {
|
|
62
113
|
id: number;
|
|
@@ -241,7 +292,7 @@ export declare class TrainingStudentService {
|
|
|
241
292
|
endTime: string;
|
|
242
293
|
location: string;
|
|
243
294
|
meetingUrl: string;
|
|
244
|
-
status: "
|
|
295
|
+
status: "completed" | "next" | "upcoming";
|
|
245
296
|
recordingUrl: string | null;
|
|
246
297
|
}[]>;
|
|
247
298
|
getClassGroupMaterials(userId: number, classGroupId: number): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"training-student.service.d.ts","sourceRoot":"","sources":["../../../src/enterprise/training/training-student.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,qBACa,sBAAsB;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAElD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAK;IAEhC,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;IAiC1E,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,SAAK;;;;;;;;;;IA4BnC,mBAAmB,CAAC,MAAM,EAAE;QAChC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf
|
|
1
|
+
{"version":3,"file":"training-student.service.d.ts","sourceRoot":"","sources":["../../../src/enterprise/training/training-student.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,qBACa,sBAAsB;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAElD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAK;IAEhC,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;IAiC1E,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,SAAK;;;;;;;;;;IA4BnC,mBAAmB,CAAC,MAAM,EAAE;QAChC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;;;;;;;;;;;;;;;;;;;;;;;;;IA2IK,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4ItD,eAAe,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;IA8EhC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+GlD,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;KAClB;;;;;;;;;;;iCA0H2B,MAAM,GAAG,IAAI;;;;;;;;;;;;;;YAqBlC,OAAO;YAqEP,YAAY;YA6EZ,kBAAkB;YAgDlB,uBAAuB;IA+HrC,OAAO,CAAC,2BAA2B;IAkBnC,OAAO,CAAC,mBAAmB;YAUb,iBAAiB;YAwCjB,UAAU;YA0BV,eAAe;YAkDf,uBAAuB;YASvB,qBAAqB;IAU7B,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;;;;;;6BAmE7B,MAAM,GAAG,IAAI;uBACnB,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2BlC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;;;;;;;;;sBAuCpC,MAAM,GAAG,IAAI;;IAKnC,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;;;;;;;IAkB3D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;;;;;;;;;;;;;IA6B3D,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,UAAU;CAKnB"}
|
|
@@ -126,7 +126,7 @@ let TrainingStudentService = class TrainingStudentService {
|
|
|
126
126
|
orderBy: [{ is_primary: 'desc' }, { order: 'asc' }],
|
|
127
127
|
select: {
|
|
128
128
|
image_type: { select: { slug: true } },
|
|
129
|
-
file: { select: {
|
|
129
|
+
file: { select: { id: true } },
|
|
130
130
|
},
|
|
131
131
|
},
|
|
132
132
|
course_module: {
|
|
@@ -167,7 +167,7 @@ let TrainingStudentService = class TrainingStudentService {
|
|
|
167
167
|
]);
|
|
168
168
|
return {
|
|
169
169
|
data: rows.map((row) => {
|
|
170
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l
|
|
170
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
171
171
|
const banner = row.course_image.find((image) => { var _a; return ((_a = image.image_type) === null || _a === void 0 ? void 0 : _a.slug) === 'course-banner'; });
|
|
172
172
|
const logo = row.course_image.find((image) => { var _a; return ((_a = image.image_type) === null || _a === void 0 ? void 0 : _a.slug) === 'course-logo'; });
|
|
173
173
|
const lessons = ((_a = row.course_module) !== null && _a !== void 0 ? _a : []).reduce((sum, module) => { var _a, _b; return sum + ((_b = (_a = module._count) === null || _a === void 0 ? void 0 : _a.course_lesson) !== null && _b !== void 0 ? _b : 0); }, 0);
|
|
@@ -180,10 +180,11 @@ let TrainingStudentService = class TrainingStudentService {
|
|
|
180
180
|
durationHours: (_f = row.duration_hours) !== null && _f !== void 0 ? _f : 0,
|
|
181
181
|
level: row.level,
|
|
182
182
|
lessons,
|
|
183
|
-
image: (
|
|
183
|
+
image: ((_g = banner === null || banner === void 0 ? void 0 : banner.file) === null || _g === void 0 ? void 0 : _g.id) ? `/file/open/${banner.file.id}` : ((_h = logo === null || logo === void 0 ? void 0 : logo.file) === null || _h === void 0 ? void 0 : _h.id) ? `/file/open/${logo.file.id}` : null,
|
|
184
|
+
logoImage: ((_j = logo === null || logo === void 0 ? void 0 : logo.file) === null || _j === void 0 ? void 0 : _j.id) ? `/file/open/${logo.file.id}` : null,
|
|
184
185
|
categoryKey: categorySlug,
|
|
185
186
|
categoryLabel: this.formatCategoryLabel(categorySlug),
|
|
186
|
-
enrollmentCount: (
|
|
187
|
+
enrollmentCount: (_l = (_k = row._count) === null || _k === void 0 ? void 0 : _k.course_enrollment) !== null && _l !== void 0 ? _l : 0,
|
|
187
188
|
updatedAt: row.updated_at,
|
|
188
189
|
};
|
|
189
190
|
}),
|
|
@@ -197,6 +198,218 @@ let TrainingStudentService = class TrainingStudentService {
|
|
|
197
198
|
lastPage: Math.max(1, Math.ceil(total / pageSize)),
|
|
198
199
|
};
|
|
199
200
|
}
|
|
201
|
+
async getPublishedCourseBySlug(slug, userId) {
|
|
202
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
203
|
+
const row = await this.prisma.course.findFirst({
|
|
204
|
+
where: { slug, status: 'published', is_listed: true },
|
|
205
|
+
select: {
|
|
206
|
+
id: true,
|
|
207
|
+
slug: true,
|
|
208
|
+
title: true,
|
|
209
|
+
description: true,
|
|
210
|
+
duration_hours: true,
|
|
211
|
+
level: true,
|
|
212
|
+
primary_color: true,
|
|
213
|
+
course_category: {
|
|
214
|
+
select: { category: { select: { slug: true } } },
|
|
215
|
+
},
|
|
216
|
+
course_image: {
|
|
217
|
+
where: { image_type: { slug: { in: ['course-banner', 'course-logo'] } } },
|
|
218
|
+
orderBy: [{ is_primary: 'desc' }, { order: 'asc' }],
|
|
219
|
+
select: {
|
|
220
|
+
image_type: { select: { slug: true } },
|
|
221
|
+
file: { select: { id: true } },
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
course_module: {
|
|
225
|
+
orderBy: { order: 'asc' },
|
|
226
|
+
select: {
|
|
227
|
+
id: true,
|
|
228
|
+
title: true,
|
|
229
|
+
duration_minutes: true,
|
|
230
|
+
course_lesson: {
|
|
231
|
+
where: { published: true },
|
|
232
|
+
orderBy: { order: 'asc' },
|
|
233
|
+
select: {
|
|
234
|
+
id: true,
|
|
235
|
+
title: true,
|
|
236
|
+
type: true,
|
|
237
|
+
duration_seconds: true,
|
|
238
|
+
course_lesson_file: {
|
|
239
|
+
where: {
|
|
240
|
+
is_public: true,
|
|
241
|
+
file_id: { not: null },
|
|
242
|
+
OR: [{ type: null }, { type: { not: { startsWith: 'video' } } }],
|
|
243
|
+
},
|
|
244
|
+
select: { id: true },
|
|
245
|
+
take: 1,
|
|
246
|
+
},
|
|
247
|
+
course_lesson_instructor: {
|
|
248
|
+
take: 1,
|
|
249
|
+
select: {
|
|
250
|
+
instructor: {
|
|
251
|
+
select: {
|
|
252
|
+
person: {
|
|
253
|
+
select: {
|
|
254
|
+
name: true,
|
|
255
|
+
file: { select: { id: true } },
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
},
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
});
|
|
268
|
+
if (!row)
|
|
269
|
+
throw new common_1.NotFoundException(`Course "${slug}" not found`);
|
|
270
|
+
const banner = row.course_image.find((img) => { var _a; return ((_a = img.image_type) === null || _a === void 0 ? void 0 : _a.slug) === 'course-banner'; });
|
|
271
|
+
const logo = row.course_image.find((img) => { var _a; return ((_a = img.image_type) === null || _a === void 0 ? void 0 : _a.slug) === 'course-logo'; });
|
|
272
|
+
const categorySlug = (_c = (_b = (_a = row.course_category[0]) === null || _a === void 0 ? void 0 : _a.category) === null || _b === void 0 ? void 0 : _b.slug) !== null && _c !== void 0 ? _c : null;
|
|
273
|
+
const firstInstructor = row.course_module
|
|
274
|
+
.flatMap((m) => m.course_lesson)
|
|
275
|
+
.flatMap((l) => l.course_lesson_instructor)
|
|
276
|
+
.find((cli) => { var _a; return (_a = cli.instructor) === null || _a === void 0 ? void 0 : _a.person; });
|
|
277
|
+
const instructor = ((_d = firstInstructor === null || firstInstructor === void 0 ? void 0 : firstInstructor.instructor) === null || _d === void 0 ? void 0 : _d.person)
|
|
278
|
+
? {
|
|
279
|
+
name: firstInstructor.instructor.person.name,
|
|
280
|
+
avatar: ((_e = firstInstructor.instructor.person.file) === null || _e === void 0 ? void 0 : _e.id) ? `/file/open/${firstInstructor.instructor.person.file.id}` : null,
|
|
281
|
+
}
|
|
282
|
+
: null;
|
|
283
|
+
let completedLessonIds = [];
|
|
284
|
+
let progressPercent = 0;
|
|
285
|
+
if (userId) {
|
|
286
|
+
const personUser = await this.prisma.person_user.findFirst({
|
|
287
|
+
where: { user_id: userId },
|
|
288
|
+
select: { person_id: true },
|
|
289
|
+
});
|
|
290
|
+
if (personUser) {
|
|
291
|
+
const enrollment = await this.prisma.course_enrollment.findFirst({
|
|
292
|
+
where: { person_id: personUser.person_id, course_id: row.id, status: { not: 'cancelled' } },
|
|
293
|
+
select: { id: true, progress_percent: true },
|
|
294
|
+
});
|
|
295
|
+
if (enrollment) {
|
|
296
|
+
progressPercent = (_f = enrollment.progress_percent) !== null && _f !== void 0 ? _f : 0;
|
|
297
|
+
const completedRows = await this.prisma.course_lesson_progress.findMany({
|
|
298
|
+
where: { course_enrollment_id: enrollment.id, status: 'completed' },
|
|
299
|
+
select: { course_lesson_id: true },
|
|
300
|
+
});
|
|
301
|
+
completedLessonIds = completedRows.map((r) => r.course_lesson_id);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return {
|
|
306
|
+
id: row.id,
|
|
307
|
+
slug: row.slug,
|
|
308
|
+
title: row.title,
|
|
309
|
+
description: (_g = row.description) !== null && _g !== void 0 ? _g : '',
|
|
310
|
+
durationHours: (_h = row.duration_hours) !== null && _h !== void 0 ? _h : 0,
|
|
311
|
+
level: row.level,
|
|
312
|
+
image: ((_j = banner === null || banner === void 0 ? void 0 : banner.file) === null || _j === void 0 ? void 0 : _j.id) ? `/file/open/${banner.file.id}` : ((_k = logo === null || logo === void 0 ? void 0 : logo.file) === null || _k === void 0 ? void 0 : _k.id) ? `/file/open/${logo.file.id}` : null,
|
|
313
|
+
logoImage: ((_l = logo === null || logo === void 0 ? void 0 : logo.file) === null || _l === void 0 ? void 0 : _l.id) ? `/file/open/${logo.file.id}` : null,
|
|
314
|
+
primaryColor: (_m = row.primary_color) !== null && _m !== void 0 ? _m : null,
|
|
315
|
+
categoryKey: categorySlug,
|
|
316
|
+
categoryLabel: this.formatCategoryLabel(categorySlug),
|
|
317
|
+
completedLessonIds,
|
|
318
|
+
progressPercent,
|
|
319
|
+
modules: row.course_module.map((m) => {
|
|
320
|
+
var _a;
|
|
321
|
+
return ({
|
|
322
|
+
id: m.id,
|
|
323
|
+
title: m.title,
|
|
324
|
+
lessonCount: m.course_lesson.length,
|
|
325
|
+
durationHours: ((_a = m.duration_minutes) !== null && _a !== void 0 ? _a : 0) / 60,
|
|
326
|
+
lessons: m.course_lesson.map((l) => ({
|
|
327
|
+
id: l.id,
|
|
328
|
+
title: l.title,
|
|
329
|
+
type: l.type,
|
|
330
|
+
durationSeconds: l.duration_seconds,
|
|
331
|
+
hasResources: l.course_lesson_file.length > 0,
|
|
332
|
+
})),
|
|
333
|
+
});
|
|
334
|
+
}),
|
|
335
|
+
instructor,
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
async getLessonDetail(lessonId) {
|
|
339
|
+
const lesson = await this.prisma.course_lesson.findFirst({
|
|
340
|
+
where: { id: lessonId, published: true },
|
|
341
|
+
select: {
|
|
342
|
+
id: true,
|
|
343
|
+
title: true,
|
|
344
|
+
description: true,
|
|
345
|
+
type: true,
|
|
346
|
+
content: true,
|
|
347
|
+
duration_seconds: true,
|
|
348
|
+
course_lesson_file: {
|
|
349
|
+
select: {
|
|
350
|
+
id: true,
|
|
351
|
+
title: true,
|
|
352
|
+
type: true,
|
|
353
|
+
is_public: true,
|
|
354
|
+
file: { select: { id: true } },
|
|
355
|
+
},
|
|
356
|
+
},
|
|
357
|
+
},
|
|
358
|
+
});
|
|
359
|
+
if (!lesson)
|
|
360
|
+
throw new common_1.NotFoundException('Lesson not found');
|
|
361
|
+
const resources = lesson.course_lesson_file.filter((f) => { var _a, _b; return ((_a = f.file) === null || _a === void 0 ? void 0 : _a.id) && f.is_public && !((_b = f.type) === null || _b === void 0 ? void 0 : _b.startsWith('video')); });
|
|
362
|
+
// HLS takes priority: if a video_hls file exists, use it exclusively
|
|
363
|
+
const hlsFile = lesson.course_lesson_file.find((f) => { var _a; return ((_a = f.file) === null || _a === void 0 ? void 0 : _a.id) && f.type === 'video_hls'; });
|
|
364
|
+
if (hlsFile) {
|
|
365
|
+
return {
|
|
366
|
+
id: lesson.id,
|
|
367
|
+
title: lesson.title,
|
|
368
|
+
description: lesson.description,
|
|
369
|
+
type: lesson.type,
|
|
370
|
+
content: lesson.content,
|
|
371
|
+
durationSeconds: lesson.duration_seconds,
|
|
372
|
+
videos: [{ type: 'video_hls', label: 'HLS', fileId: hlsFile.file.id }],
|
|
373
|
+
resources: resources.map((r) => {
|
|
374
|
+
var _a;
|
|
375
|
+
return ({
|
|
376
|
+
id: r.id,
|
|
377
|
+
title: r.title,
|
|
378
|
+
url: ((_a = r.file) === null || _a === void 0 ? void 0 : _a.id) ? `/file/open/${r.file.id}` : null,
|
|
379
|
+
});
|
|
380
|
+
}),
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
// Legacy MP4 fallback
|
|
384
|
+
const videoFiles = lesson.course_lesson_file.filter((f) => { var _a, _b; return ((_a = f.file) === null || _a === void 0 ? void 0 : _a.id) && (f.type === 'video_original' || ((_b = f.type) === null || _b === void 0 ? void 0 : _b.startsWith('video_profile:'))); });
|
|
385
|
+
return {
|
|
386
|
+
id: lesson.id,
|
|
387
|
+
title: lesson.title,
|
|
388
|
+
description: lesson.description,
|
|
389
|
+
type: lesson.type,
|
|
390
|
+
content: lesson.content,
|
|
391
|
+
durationSeconds: lesson.duration_seconds,
|
|
392
|
+
videos: videoFiles.map((f) => {
|
|
393
|
+
var _a;
|
|
394
|
+
const profileMatch = (_a = f.type) === null || _a === void 0 ? void 0 : _a.match(/^video_profile:(\d+)$/);
|
|
395
|
+
const profileId = profileMatch ? Number(profileMatch[1]) : null;
|
|
396
|
+
const label = f.type === 'video_original'
|
|
397
|
+
? 'Original'
|
|
398
|
+
: profileId !== null
|
|
399
|
+
? f.title || `Perfil ${profileId}`
|
|
400
|
+
: f.title || f.type || 'Vídeo';
|
|
401
|
+
return { type: f.type, label, fileId: f.file.id };
|
|
402
|
+
}),
|
|
403
|
+
resources: resources.map((r) => {
|
|
404
|
+
var _a;
|
|
405
|
+
return ({
|
|
406
|
+
id: r.id,
|
|
407
|
+
title: r.title,
|
|
408
|
+
url: ((_a = r.file) === null || _a === void 0 ? void 0 : _a.id) ? `/file/open/${r.file.id}` : null,
|
|
409
|
+
});
|
|
410
|
+
}),
|
|
411
|
+
};
|
|
412
|
+
}
|
|
200
413
|
async getDashboard(userId, enterpriseId) {
|
|
201
414
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
202
415
|
const personUser = await this.prisma.person_user.findFirst({
|