@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.
Files changed (409) hide show
  1. package/dist/achievement/achievement.controller.d.ts +62 -0
  2. package/dist/achievement/achievement.controller.d.ts.map +1 -0
  3. package/dist/achievement/achievement.controller.js +90 -0
  4. package/dist/achievement/achievement.controller.js.map +1 -0
  5. package/dist/achievement/achievement.mcp-tools.d.ts +19 -0
  6. package/dist/achievement/achievement.mcp-tools.d.ts.map +1 -0
  7. package/dist/achievement/achievement.mcp-tools.js +157 -0
  8. package/dist/achievement/achievement.mcp-tools.js.map +1 -0
  9. package/dist/achievement/achievement.module.d.ts +3 -0
  10. package/dist/achievement/achievement.module.d.ts.map +1 -0
  11. package/dist/achievement/achievement.module.js +26 -0
  12. package/dist/achievement/achievement.module.js.map +1 -0
  13. package/dist/achievement/achievement.service.d.ts +72 -0
  14. package/dist/achievement/achievement.service.d.ts.map +1 -0
  15. package/dist/achievement/achievement.service.js +200 -0
  16. package/dist/achievement/achievement.service.js.map +1 -0
  17. package/dist/achievement/dto/create-achievement.dto.d.ts +12 -0
  18. package/dist/achievement/dto/create-achievement.dto.d.ts.map +1 -0
  19. package/dist/achievement/dto/create-achievement.dto.js +60 -0
  20. package/dist/achievement/dto/create-achievement.dto.js.map +1 -0
  21. package/dist/achievement/dto/update-achievement.dto.d.ts +11 -0
  22. package/dist/achievement/dto/update-achievement.dto.d.ts.map +1 -0
  23. package/dist/achievement/dto/update-achievement.dto.js +57 -0
  24. package/dist/achievement/dto/update-achievement.dto.js.map +1 -0
  25. package/dist/bitcode-wallet/bitcode-wallet.controller.d.ts +114 -0
  26. package/dist/bitcode-wallet/bitcode-wallet.controller.d.ts.map +1 -0
  27. package/dist/bitcode-wallet/bitcode-wallet.controller.js +102 -0
  28. package/dist/bitcode-wallet/bitcode-wallet.controller.js.map +1 -0
  29. package/dist/bitcode-wallet/bitcode-wallet.mcp-tools.d.ts +25 -0
  30. package/dist/bitcode-wallet/bitcode-wallet.mcp-tools.d.ts.map +1 -0
  31. package/dist/bitcode-wallet/bitcode-wallet.mcp-tools.js +160 -0
  32. package/dist/bitcode-wallet/bitcode-wallet.mcp-tools.js.map +1 -0
  33. package/dist/bitcode-wallet/bitcode-wallet.module.d.ts +3 -0
  34. package/dist/bitcode-wallet/bitcode-wallet.module.d.ts.map +1 -0
  35. package/dist/bitcode-wallet/bitcode-wallet.module.js +26 -0
  36. package/dist/bitcode-wallet/bitcode-wallet.module.js.map +1 -0
  37. package/dist/bitcode-wallet/bitcode-wallet.service.d.ts +127 -0
  38. package/dist/bitcode-wallet/bitcode-wallet.service.d.ts.map +1 -0
  39. package/dist/bitcode-wallet/bitcode-wallet.service.js +264 -0
  40. package/dist/bitcode-wallet/bitcode-wallet.service.js.map +1 -0
  41. package/dist/bitcode-wallet/dto/create-bitcode-wallet-transaction.dto.d.ts +8 -0
  42. package/dist/bitcode-wallet/dto/create-bitcode-wallet-transaction.dto.d.ts.map +1 -0
  43. package/dist/bitcode-wallet/dto/create-bitcode-wallet-transaction.dto.js +33 -0
  44. package/dist/bitcode-wallet/dto/create-bitcode-wallet-transaction.dto.js.map +1 -0
  45. package/dist/bitcode-wallet/dto/create-bitcode-wallet.dto.d.ts +4 -0
  46. package/dist/bitcode-wallet/dto/create-bitcode-wallet.dto.d.ts.map +1 -0
  47. package/dist/bitcode-wallet/dto/create-bitcode-wallet.dto.js +22 -0
  48. package/dist/bitcode-wallet/dto/create-bitcode-wallet.dto.js.map +1 -0
  49. package/dist/bitcode-wallet/dto/update-bitcode-wallet-transaction.dto.d.ts +7 -0
  50. package/dist/bitcode-wallet/dto/update-bitcode-wallet-transaction.dto.d.ts.map +1 -0
  51. package/dist/bitcode-wallet/dto/update-bitcode-wallet-transaction.dto.js +35 -0
  52. package/dist/bitcode-wallet/dto/update-bitcode-wallet-transaction.dto.js.map +1 -0
  53. package/dist/bitcode-wallet/dto/update-bitcode-wallet.dto.d.ts +4 -0
  54. package/dist/bitcode-wallet/dto/update-bitcode-wallet.dto.d.ts.map +1 -0
  55. package/dist/bitcode-wallet/dto/update-bitcode-wallet.dto.js +23 -0
  56. package/dist/bitcode-wallet/dto/update-bitcode-wallet.dto.js.map +1 -0
  57. package/dist/certificate/certificate.controller.d.ts +22 -0
  58. package/dist/certificate/certificate.controller.d.ts.map +1 -1
  59. package/dist/certificate/certificate.controller.js +12 -0
  60. package/dist/certificate/certificate.controller.js.map +1 -1
  61. package/dist/certificate/certificate.mcp-tools.d.ts +24 -0
  62. package/dist/certificate/certificate.mcp-tools.d.ts.map +1 -0
  63. package/dist/certificate/certificate.mcp-tools.js +188 -0
  64. package/dist/certificate/certificate.mcp-tools.js.map +1 -0
  65. package/dist/certificate/certificate.module.d.ts.map +1 -1
  66. package/dist/certificate/certificate.module.js +2 -1
  67. package/dist/certificate/certificate.module.js.map +1 -1
  68. package/dist/certificate/certificate.service.d.ts +25 -2
  69. package/dist/certificate/certificate.service.d.ts.map +1 -1
  70. package/dist/certificate/certificate.service.js +87 -2
  71. package/dist/certificate/certificate.service.js.map +1 -1
  72. package/dist/certificate/dto/update-certificate-public-access.dto.d.ts +4 -0
  73. package/dist/certificate/dto/update-certificate-public-access.dto.d.ts.map +1 -0
  74. package/dist/certificate/dto/update-certificate-public-access.dto.js +21 -0
  75. package/dist/certificate/dto/update-certificate-public-access.dto.js.map +1 -0
  76. package/dist/class-group/class-group.mcp-tools.d.ts +87 -0
  77. package/dist/class-group/class-group.mcp-tools.d.ts.map +1 -0
  78. package/dist/class-group/class-group.mcp-tools.js +553 -0
  79. package/dist/class-group/class-group.mcp-tools.js.map +1 -0
  80. package/dist/class-group/class-group.module.d.ts.map +1 -1
  81. package/dist/class-group/class-group.module.js +2 -1
  82. package/dist/class-group/class-group.module.js.map +1 -1
  83. package/dist/class-group/class-group.service.d.ts +3 -1
  84. package/dist/class-group/class-group.service.d.ts.map +1 -1
  85. package/dist/class-group/class-group.service.js +45 -2
  86. package/dist/class-group/class-group.service.js.map +1 -1
  87. package/dist/course/course-operations-integration.service.d.ts +40 -0
  88. package/dist/course/course-operations-integration.service.d.ts.map +1 -0
  89. package/dist/course/course-operations-integration.service.js +372 -0
  90. package/dist/course/course-operations-integration.service.js.map +1 -0
  91. package/dist/course/course-structure.controller.d.ts +43 -4
  92. package/dist/course/course-structure.controller.d.ts.map +1 -1
  93. package/dist/course/course-structure.controller.js +22 -0
  94. package/dist/course/course-structure.controller.js.map +1 -1
  95. package/dist/course/course-structure.service.d.ts +42 -1
  96. package/dist/course/course-structure.service.d.ts.map +1 -1
  97. package/dist/course/course-structure.service.js +199 -32
  98. package/dist/course/course-structure.service.js.map +1 -1
  99. package/dist/course/course.controller.d.ts +12 -0
  100. package/dist/course/course.controller.d.ts.map +1 -1
  101. package/dist/course/course.mcp-tools.d.ts +90 -0
  102. package/dist/course/course.mcp-tools.d.ts.map +1 -0
  103. package/dist/course/course.mcp-tools.js +520 -0
  104. package/dist/course/course.mcp-tools.js.map +1 -0
  105. package/dist/course/course.module.d.ts.map +1 -1
  106. package/dist/course/course.module.js +8 -1
  107. package/dist/course/course.module.js.map +1 -1
  108. package/dist/course/course.service.d.ts +15 -1
  109. package/dist/course/course.service.d.ts.map +1 -1
  110. package/dist/course/course.service.js +70 -35
  111. package/dist/course/course.service.js.map +1 -1
  112. package/dist/course/dto/create-course.dto.d.ts +1 -0
  113. package/dist/course/dto/create-course.dto.d.ts.map +1 -1
  114. package/dist/course/dto/create-course.dto.js +7 -0
  115. package/dist/course/dto/create-course.dto.js.map +1 -1
  116. package/dist/course/dto/update-course-resources.dto.d.ts +11 -0
  117. package/dist/course/dto/update-course-resources.dto.d.ts.map +1 -0
  118. package/dist/course/dto/update-course-resources.dto.js +51 -0
  119. package/dist/course/dto/update-course-resources.dto.js.map +1 -0
  120. package/dist/course-lesson-discussion/course-lesson-discussion.controller.d.ts +23 -0
  121. package/dist/course-lesson-discussion/course-lesson-discussion.controller.d.ts.map +1 -0
  122. package/dist/course-lesson-discussion/course-lesson-discussion.controller.js +78 -0
  123. package/dist/course-lesson-discussion/course-lesson-discussion.controller.js.map +1 -0
  124. package/dist/course-lesson-discussion/course-lesson-discussion.mcp-tools.d.ts +22 -0
  125. package/dist/course-lesson-discussion/course-lesson-discussion.mcp-tools.d.ts.map +1 -0
  126. package/dist/course-lesson-discussion/course-lesson-discussion.mcp-tools.js +120 -0
  127. package/dist/course-lesson-discussion/course-lesson-discussion.mcp-tools.js.map +1 -0
  128. package/dist/course-lesson-discussion/course-lesson-discussion.module.d.ts +3 -0
  129. package/dist/course-lesson-discussion/course-lesson-discussion.module.d.ts.map +1 -0
  130. package/dist/course-lesson-discussion/course-lesson-discussion.module.js +26 -0
  131. package/dist/course-lesson-discussion/course-lesson-discussion.module.js.map +1 -0
  132. package/dist/course-lesson-discussion/course-lesson-discussion.service.d.ts +49 -0
  133. package/dist/course-lesson-discussion/course-lesson-discussion.service.d.ts.map +1 -0
  134. package/dist/course-lesson-discussion/course-lesson-discussion.service.js +272 -0
  135. package/dist/course-lesson-discussion/course-lesson-discussion.service.js.map +1 -0
  136. package/dist/course-lesson-discussion/dto/create-course-lesson-discussion-topic.dto.d.ts +6 -0
  137. package/dist/course-lesson-discussion/dto/create-course-lesson-discussion-topic.dto.d.ts.map +1 -0
  138. package/dist/course-lesson-discussion/dto/create-course-lesson-discussion-topic.dto.js +33 -0
  139. package/dist/course-lesson-discussion/dto/create-course-lesson-discussion-topic.dto.js.map +1 -0
  140. package/dist/course-lesson-note/course-lesson-note.controller.d.ts +53 -0
  141. package/dist/course-lesson-note/course-lesson-note.controller.d.ts.map +1 -0
  142. package/dist/course-lesson-note/course-lesson-note.controller.js +93 -0
  143. package/dist/course-lesson-note/course-lesson-note.controller.js.map +1 -0
  144. package/dist/course-lesson-note/course-lesson-note.mcp-tools.d.ts +27 -0
  145. package/dist/course-lesson-note/course-lesson-note.mcp-tools.d.ts.map +1 -0
  146. package/dist/course-lesson-note/course-lesson-note.mcp-tools.js +145 -0
  147. package/dist/course-lesson-note/course-lesson-note.mcp-tools.js.map +1 -0
  148. package/dist/course-lesson-note/course-lesson-note.module.d.ts +3 -0
  149. package/dist/course-lesson-note/course-lesson-note.module.d.ts.map +1 -0
  150. package/dist/course-lesson-note/course-lesson-note.module.js +26 -0
  151. package/dist/course-lesson-note/course-lesson-note.module.js.map +1 -0
  152. package/dist/course-lesson-note/course-lesson-note.service.d.ts +59 -0
  153. package/dist/course-lesson-note/course-lesson-note.service.d.ts.map +1 -0
  154. package/dist/course-lesson-note/course-lesson-note.service.js +195 -0
  155. package/dist/course-lesson-note/course-lesson-note.service.js.map +1 -0
  156. package/dist/course-lesson-note/dto/create-course-lesson-note.dto.d.ts +6 -0
  157. package/dist/course-lesson-note/dto/create-course-lesson-note.dto.d.ts.map +1 -0
  158. package/dist/course-lesson-note/dto/create-course-lesson-note.dto.js +33 -0
  159. package/dist/course-lesson-note/dto/create-course-lesson-note.dto.js.map +1 -0
  160. package/dist/course-lesson-note/dto/update-course-lesson-note.dto.d.ts +6 -0
  161. package/dist/course-lesson-note/dto/update-course-lesson-note.dto.d.ts.map +1 -0
  162. package/dist/course-lesson-note/dto/update-course-lesson-note.dto.js +35 -0
  163. package/dist/course-lesson-note/dto/update-course-lesson-note.dto.js.map +1 -0
  164. package/dist/dashboard/dashboard.mcp-tools.d.ts +10 -0
  165. package/dist/dashboard/dashboard.mcp-tools.d.ts.map +1 -0
  166. package/dist/dashboard/dashboard.mcp-tools.js +46 -0
  167. package/dist/dashboard/dashboard.mcp-tools.js.map +1 -0
  168. package/dist/dashboard/dashboard.module.d.ts.map +1 -1
  169. package/dist/dashboard/dashboard.module.js +2 -1
  170. package/dist/dashboard/dashboard.module.js.map +1 -1
  171. package/dist/enterprise/enterprise.mcp-tools.d.ts +82 -0
  172. package/dist/enterprise/enterprise.mcp-tools.d.ts.map +1 -0
  173. package/dist/enterprise/enterprise.mcp-tools.js +516 -0
  174. package/dist/enterprise/enterprise.mcp-tools.js.map +1 -0
  175. package/dist/enterprise/enterprise.module.d.ts.map +1 -1
  176. package/dist/enterprise/enterprise.module.js +2 -1
  177. package/dist/enterprise/enterprise.module.js.map +1 -1
  178. package/dist/enterprise/training/enterprise-training.module.d.ts.map +1 -1
  179. package/dist/enterprise/training/enterprise-training.module.js +11 -1
  180. package/dist/enterprise/training/enterprise-training.module.js.map +1 -1
  181. package/dist/enterprise/training/training-admin.mcp-tools.d.ts +79 -0
  182. package/dist/enterprise/training/training-admin.mcp-tools.d.ts.map +1 -0
  183. package/dist/enterprise/training/training-admin.mcp-tools.js +620 -0
  184. package/dist/enterprise/training/training-admin.mcp-tools.js.map +1 -0
  185. package/dist/enterprise/training/training-instructor.mcp-tools.d.ts +47 -0
  186. package/dist/enterprise/training/training-instructor.mcp-tools.d.ts.map +1 -0
  187. package/dist/enterprise/training/training-instructor.mcp-tools.js +275 -0
  188. package/dist/enterprise/training/training-instructor.mcp-tools.js.map +1 -0
  189. package/dist/enterprise/training/training-student.controller.d.ts +24 -0
  190. package/dist/enterprise/training/training-student.controller.d.ts.map +1 -1
  191. package/dist/enterprise/training/training-student.controller.js +22 -0
  192. package/dist/enterprise/training/training-student.controller.js.map +1 -1
  193. package/dist/enterprise/training/training-student.mcp-tools.d.ts +27 -0
  194. package/dist/enterprise/training/training-student.mcp-tools.d.ts.map +1 -0
  195. package/dist/enterprise/training/training-student.mcp-tools.js +186 -0
  196. package/dist/enterprise/training/training-student.mcp-tools.js.map +1 -0
  197. package/dist/enterprise/training/training-student.service.d.ts +32 -0
  198. package/dist/enterprise/training/training-student.service.d.ts.map +1 -1
  199. package/dist/enterprise/training/training-student.service.js +138 -0
  200. package/dist/enterprise/training/training-student.service.js.map +1 -1
  201. package/dist/evaluation/evaluation.mcp-tools.d.ts +25 -0
  202. package/dist/evaluation/evaluation.mcp-tools.d.ts.map +1 -0
  203. package/dist/evaluation/evaluation.mcp-tools.js +220 -0
  204. package/dist/evaluation/evaluation.mcp-tools.js.map +1 -0
  205. package/dist/evaluation/evaluation.module.d.ts.map +1 -1
  206. package/dist/evaluation/evaluation.module.js +2 -1
  207. package/dist/evaluation/evaluation.module.js.map +1 -1
  208. package/dist/exam/dto/create-exam-question.dto.d.ts +2 -0
  209. package/dist/exam/dto/create-exam-question.dto.d.ts.map +1 -1
  210. package/dist/exam/dto/create-exam-question.dto.js +10 -0
  211. package/dist/exam/dto/create-exam-question.dto.js.map +1 -1
  212. package/dist/exam/dto/create-exam.dto.d.ts +2 -0
  213. package/dist/exam/dto/create-exam.dto.d.ts.map +1 -1
  214. package/dist/exam/dto/create-exam.dto.js +10 -0
  215. package/dist/exam/dto/create-exam.dto.js.map +1 -1
  216. package/dist/exam/dto/create-question-subject.dto.d.ts +5 -0
  217. package/dist/exam/dto/create-question-subject.dto.d.ts.map +1 -0
  218. package/dist/exam/dto/create-question-subject.dto.js +28 -0
  219. package/dist/exam/dto/create-question-subject.dto.js.map +1 -0
  220. package/dist/exam/exam-attempt.controller.d.ts +4 -0
  221. package/dist/exam/exam-attempt.controller.d.ts.map +1 -1
  222. package/dist/exam/exam-attempt.service.d.ts +7 -1
  223. package/dist/exam/exam-attempt.service.d.ts.map +1 -1
  224. package/dist/exam/exam-attempt.service.js +47 -17
  225. package/dist/exam/exam-attempt.service.js.map +1 -1
  226. package/dist/exam/exam.controller.d.ts +34 -0
  227. package/dist/exam/exam.controller.d.ts.map +1 -1
  228. package/dist/exam/exam.controller.js +27 -0
  229. package/dist/exam/exam.controller.js.map +1 -1
  230. package/dist/exam/exam.mcp-tools.d.ts +62 -0
  231. package/dist/exam/exam.mcp-tools.d.ts.map +1 -0
  232. package/dist/exam/exam.mcp-tools.js +430 -0
  233. package/dist/exam/exam.mcp-tools.js.map +1 -0
  234. package/dist/exam/exam.module.d.ts.map +1 -1
  235. package/dist/exam/exam.module.js +2 -1
  236. package/dist/exam/exam.module.js.map +1 -1
  237. package/dist/exam/exam.service.d.ts +38 -0
  238. package/dist/exam/exam.service.d.ts.map +1 -1
  239. package/dist/exam/exam.service.js +114 -17
  240. package/dist/exam/exam.service.js.map +1 -1
  241. package/dist/index.d.ts +9 -0
  242. package/dist/index.d.ts.map +1 -1
  243. package/dist/index.js +9 -0
  244. package/dist/index.js.map +1 -1
  245. package/dist/instructor/instructor.mcp-tools.d.ts +41 -0
  246. package/dist/instructor/instructor.mcp-tools.d.ts.map +1 -0
  247. package/dist/instructor/instructor.mcp-tools.js +326 -0
  248. package/dist/instructor/instructor.mcp-tools.js.map +1 -0
  249. package/dist/instructor/instructor.module.d.ts.map +1 -1
  250. package/dist/instructor/instructor.module.js +2 -1
  251. package/dist/instructor/instructor.module.js.map +1 -1
  252. package/dist/lms.module.d.ts.map +1 -1
  253. package/dist/lms.module.js +15 -0
  254. package/dist/lms.module.js.map +1 -1
  255. package/dist/realtime/lms-realtime.controller.d.ts +7 -0
  256. package/dist/realtime/lms-realtime.controller.d.ts.map +1 -0
  257. package/dist/realtime/lms-realtime.controller.js +34 -0
  258. package/dist/realtime/lms-realtime.controller.js.map +1 -0
  259. package/dist/realtime/lms-realtime.module.d.ts +3 -0
  260. package/dist/realtime/lms-realtime.module.d.ts.map +1 -0
  261. package/dist/realtime/lms-realtime.module.js +25 -0
  262. package/dist/realtime/lms-realtime.module.js.map +1 -0
  263. package/dist/realtime/lms-realtime.service.d.ts +36 -0
  264. package/dist/realtime/lms-realtime.service.d.ts.map +1 -0
  265. package/dist/realtime/lms-realtime.service.js +59 -0
  266. package/dist/realtime/lms-realtime.service.js.map +1 -0
  267. package/dist/realtime/lms-realtime.subscriber.d.ts +10 -0
  268. package/dist/realtime/lms-realtime.subscriber.d.ts.map +1 -0
  269. package/dist/realtime/lms-realtime.subscriber.js +70 -0
  270. package/dist/realtime/lms-realtime.subscriber.js.map +1 -0
  271. package/dist/reports/reports.mcp-tools.d.ts +10 -0
  272. package/dist/reports/reports.mcp-tools.d.ts.map +1 -0
  273. package/dist/reports/reports.mcp-tools.js +50 -0
  274. package/dist/reports/reports.mcp-tools.js.map +1 -0
  275. package/dist/reports/reports.module.d.ts.map +1 -1
  276. package/dist/reports/reports.module.js +2 -1
  277. package/dist/reports/reports.module.js.map +1 -1
  278. package/dist/training/training.mcp-tools.d.ts +20 -0
  279. package/dist/training/training.mcp-tools.d.ts.map +1 -0
  280. package/dist/training/training.mcp-tools.js +181 -0
  281. package/dist/training/training.mcp-tools.js.map +1 -0
  282. package/dist/training/training.module.d.ts.map +1 -1
  283. package/dist/training/training.module.js +2 -1
  284. package/dist/training/training.module.js.map +1 -1
  285. package/hedhog/data/integration_event_catalog.yaml +69 -0
  286. package/hedhog/data/menu.yaml +34 -0
  287. package/hedhog/data/route.yaml +2351 -0
  288. package/hedhog/frontend/app/_components/class-form-sheet.tsx.ejs +168 -103
  289. package/hedhog/frontend/app/_components/course-form-sheet.tsx.ejs +80 -1
  290. package/hedhog/frontend/app/_components/course-picker.tsx.ejs +228 -0
  291. package/hedhog/frontend/app/_lib/hooks/use-lms-realtime-refresh.ts.ejs +58 -0
  292. package/hedhog/frontend/app/achievements/page.tsx.ejs +844 -0
  293. package/hedhog/frontend/app/bitcodes/page.tsx.ejs +1010 -0
  294. package/hedhog/frontend/app/certificates/issued/page.tsx.ejs +61 -2
  295. package/hedhog/frontend/app/classes/[id]/page.tsx.ejs +7 -0
  296. package/hedhog/frontend/app/classes/page.tsx.ejs +55 -2060
  297. package/hedhog/frontend/app/courses/[id]/_components/CourseRelationsCard.tsx.ejs +28 -0
  298. package/hedhog/frontend/app/courses/[id]/_components/course-edit-types.ts.ejs +1 -0
  299. package/hedhog/frontend/app/courses/[id]/page.tsx.ejs +0 -9
  300. package/hedhog/frontend/app/courses/[id]/structure/_components/course-tree-dnd.tsx.ejs +80 -66
  301. package/hedhog/frontend/app/courses/[id]/structure/_components/editor-course.tsx.ejs +583 -8
  302. package/hedhog/frontend/app/courses/[id]/structure/_components/editor-lesson.tsx.ejs +527 -57
  303. package/hedhog/frontend/app/courses/[id]/structure/_components/mock-data.ts.ejs +1 -1
  304. package/hedhog/frontend/app/courses/[id]/structure/_components/tree-context-menu.tsx.ejs +106 -4
  305. package/hedhog/frontend/app/courses/[id]/structure/_components/types.ts.ejs +2 -1
  306. package/hedhog/frontend/app/courses/[id]/structure/_data/adapters/course-structure.adapter.ts.ejs +11 -1
  307. package/hedhog/frontend/app/courses/[id]/structure/_data/services/course-structure.service.ts.ejs +53 -6
  308. package/hedhog/frontend/app/courses/[id]/structure/_data/types/api-course.types.ts.ejs +13 -2
  309. package/hedhog/frontend/app/courses/page.tsx.ejs +175 -29
  310. package/hedhog/frontend/app/enterprise/_components/enterprise-course-create-sheet.tsx.ejs +3 -0
  311. package/hedhog/frontend/app/enterprise/_components/enterprise-course-edit-sheet.tsx.ejs +7 -0
  312. package/hedhog/frontend/app/exams/[id]/questions/page.tsx.ejs +169 -2
  313. package/hedhog/frontend/app/exams/page.tsx.ejs +77 -22
  314. package/hedhog/frontend/app/instructor-skills/page.tsx.ejs +1 -0
  315. package/hedhog/frontend/app/instructors/page.tsx.ejs +1 -0
  316. package/hedhog/frontend/app/paths/page.tsx.ejs +6 -24
  317. package/hedhog/frontend/app/training/page.tsx.ejs +6 -24
  318. package/hedhog/frontend/messages/en.json +314 -12
  319. package/hedhog/frontend/messages/pt.json +314 -12
  320. package/hedhog/query/triggers.sql +53 -0
  321. package/hedhog/table/achievement.yaml +46 -0
  322. package/hedhog/table/bitcode_wallet.yaml +18 -0
  323. package/hedhog/table/bitcode_wallet_transaction.yaml +22 -0
  324. package/hedhog/table/certificate.yaml +3 -0
  325. package/hedhog/table/course.yaml +4 -0
  326. package/hedhog/table/course_file.yaml +23 -0
  327. package/hedhog/table/course_lesson.yaml +5 -0
  328. package/hedhog/table/course_lesson_discussion_like.yaml +21 -0
  329. package/hedhog/table/course_lesson_discussion_topic.yaml +35 -0
  330. package/hedhog/table/course_lesson_note.yaml +34 -0
  331. package/hedhog/table/exam.yaml +5 -0
  332. package/hedhog/table/learning_path_enrollment.yaml +6 -0
  333. package/hedhog/table/question.yaml +10 -0
  334. package/hedhog/table/question_subject.yaml +17 -0
  335. package/hedhog/table/student_activity_streak.yaml +25 -0
  336. package/package.json +6 -6
  337. package/src/achievement/achievement.controller.ts +60 -0
  338. package/src/achievement/achievement.mcp-tools.ts +108 -0
  339. package/src/achievement/achievement.module.ts +13 -0
  340. package/src/achievement/achievement.service.ts +252 -0
  341. package/src/achievement/dto/create-achievement.dto.ts +50 -0
  342. package/src/achievement/dto/update-achievement.dto.ts +47 -0
  343. package/src/bitcode-wallet/bitcode-wallet.controller.ts +69 -0
  344. package/src/bitcode-wallet/bitcode-wallet.mcp-tools.ts +107 -0
  345. package/src/bitcode-wallet/bitcode-wallet.module.ts +13 -0
  346. package/src/bitcode-wallet/bitcode-wallet.service.ts +361 -0
  347. package/src/bitcode-wallet/dto/create-bitcode-wallet-transaction.dto.ts +27 -0
  348. package/src/bitcode-wallet/dto/create-bitcode-wallet.dto.ts +7 -0
  349. package/src/bitcode-wallet/dto/update-bitcode-wallet-transaction.dto.ts +28 -0
  350. package/src/bitcode-wallet/dto/update-bitcode-wallet.dto.ts +8 -0
  351. package/src/certificate/certificate.controller.ts +20 -11
  352. package/src/certificate/certificate.mcp-tools.ts +131 -0
  353. package/src/certificate/certificate.module.ts +2 -1
  354. package/src/certificate/certificate.service.ts +95 -4
  355. package/src/certificate/dto/update-certificate-public-access.dto.ts +6 -0
  356. package/src/class-group/class-group.mcp-tools.ts +435 -0
  357. package/src/class-group/class-group.module.ts +2 -1
  358. package/src/class-group/class-group.service.ts +51 -1
  359. package/src/course/course-operations-integration.service.ts +520 -0
  360. package/src/course/course-structure.controller.ts +22 -8
  361. package/src/course/course-structure.service.ts +215 -23
  362. package/src/course/course.mcp-tools.ts +409 -0
  363. package/src/course/course.module.ts +8 -1
  364. package/src/course/course.service.ts +106 -27
  365. package/src/course/dto/create-course.dto.ts +8 -0
  366. package/src/course/dto/update-course-resources.dto.ts +39 -0
  367. package/src/course-lesson-discussion/course-lesson-discussion.controller.ts +55 -0
  368. package/src/course-lesson-discussion/course-lesson-discussion.mcp-tools.ts +75 -0
  369. package/src/course-lesson-discussion/course-lesson-discussion.module.ts +13 -0
  370. package/src/course-lesson-discussion/course-lesson-discussion.service.ts +354 -0
  371. package/src/course-lesson-discussion/dto/create-course-lesson-discussion-topic.dto.ts +16 -0
  372. package/src/course-lesson-note/course-lesson-note.controller.ts +68 -0
  373. package/src/course-lesson-note/course-lesson-note.mcp-tools.ts +96 -0
  374. package/src/course-lesson-note/course-lesson-note.module.ts +13 -0
  375. package/src/course-lesson-note/course-lesson-note.service.ts +248 -0
  376. package/src/course-lesson-note/dto/create-course-lesson-note.dto.ts +16 -0
  377. package/src/course-lesson-note/dto/update-course-lesson-note.dto.ts +18 -0
  378. package/src/dashboard/dashboard.mcp-tools.ts +23 -0
  379. package/src/dashboard/dashboard.module.ts +2 -1
  380. package/src/enterprise/enterprise.mcp-tools.ts +403 -0
  381. package/src/enterprise/enterprise.module.ts +2 -1
  382. package/src/enterprise/training/enterprise-training.module.ts +11 -1
  383. package/src/enterprise/training/training-admin.mcp-tools.ts +479 -0
  384. package/src/enterprise/training/training-instructor.mcp-tools.ts +210 -0
  385. package/src/enterprise/training/training-student.controller.ts +17 -1
  386. package/src/enterprise/training/training-student.mcp-tools.ts +136 -0
  387. package/src/enterprise/training/training-student.service.ts +167 -1
  388. package/src/evaluation/evaluation.mcp-tools.ts +155 -0
  389. package/src/evaluation/evaluation.module.ts +2 -1
  390. package/src/exam/dto/create-exam-question.dto.ts +8 -0
  391. package/src/exam/dto/create-exam.dto.ts +8 -0
  392. package/src/exam/dto/create-question-subject.dto.ts +12 -0
  393. package/src/exam/exam-attempt.service.ts +46 -14
  394. package/src/exam/exam.controller.ts +19 -0
  395. package/src/exam/exam.mcp-tools.ts +337 -0
  396. package/src/exam/exam.module.ts +2 -1
  397. package/src/exam/exam.service.ts +121 -0
  398. package/src/index.ts +9 -0
  399. package/src/instructor/instructor.mcp-tools.ts +243 -0
  400. package/src/instructor/instructor.module.ts +2 -1
  401. package/src/lms.module.ts +15 -1
  402. package/src/realtime/lms-realtime.controller.ts +12 -0
  403. package/src/realtime/lms-realtime.module.ts +12 -0
  404. package/src/realtime/lms-realtime.service.ts +98 -0
  405. package/src/realtime/lms-realtime.subscriber.ts +61 -0
  406. package/src/reports/reports.mcp-tools.ts +27 -0
  407. package/src/reports/reports.module.ts +2 -1
  408. package/src/training/training.mcp-tools.ts +128 -0
  409. 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
- constructor(prisma: PrismaService, instructorService: InstructorService);
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;gBADjB,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,iBAAiB;IAGjD,YAAY,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2G7B,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;;;;;;;IA4BhC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;IAcjD,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8B/B,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2C/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;;;;;;;;;;IA2FpD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiErE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe;;;YA6EpE,mBAAmB;YA+DnB,aAAa;YAsEb,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"}
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 [modules, instructors, courseRecord] = await Promise.all([
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: { id: true, slug: true, title: true, description: true },
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
- slug: (_a = courseRecord.slug) !== null && _a !== void 0 ? _a : '',
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: (_b = courseRecord.description) !== null && _b !== void 0 ? _b : '',
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 nextOrder = await this.nextLessonOrder(sessionId);
187
- const mappedType = this.mapUiTypeToDbType(dto.tipo);
188
- const created = await this.prisma.course_lesson.create({
189
- data: {
190
- course_module_id: sessionId,
191
- title: dto.titulo,
192
- description: (_a = dto.descricaoPublica) !== null && _a !== void 0 ? _a : null,
193
- type: mappedType,
194
- duration_seconds: dto.duracao * 60,
195
- order: nextOrder,
196
- content: this.serializeContent(dto),
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', (_a = newModule.order) !== null && _a !== void 0 ? _a : nextOrder),
538
+ codigo: this.formatCode('S', (_e = newModule.order) !== null && _e !== void 0 ? _e : nextOrder),
429
539
  titulo: newModule.title,
430
- duracao: (_b = newModule.duration_minutes) !== null && _b !== void 0 ? _b : 0,
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
- await this.prisma.$transaction(async (tx) => {
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: { id: true },
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 this.prisma.course_lesson.findFirst({
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