@hed-hog/lms 0.0.319 → 0.0.321

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 (128) hide show
  1. package/dist/class-group/class-group.controller.d.ts +64 -1
  2. package/dist/class-group/class-group.controller.d.ts.map +1 -1
  3. package/dist/class-group/class-group.controller.js +35 -0
  4. package/dist/class-group/class-group.controller.js.map +1 -1
  5. package/dist/class-group/class-group.service.d.ts +66 -1
  6. package/dist/class-group/class-group.service.d.ts.map +1 -1
  7. package/dist/class-group/class-group.service.js +164 -13
  8. package/dist/class-group/class-group.service.js.map +1 -1
  9. package/dist/class-group/dto/create-class-group.dto.d.ts.map +1 -1
  10. package/dist/class-group/dto/create-class-group.dto.js +2 -1
  11. package/dist/class-group/dto/create-class-group.dto.js.map +1 -1
  12. package/dist/class-group/dto/material.dto.d.ts +18 -0
  13. package/dist/class-group/dto/material.dto.d.ts.map +1 -0
  14. package/dist/class-group/dto/material.dto.js +86 -0
  15. package/dist/class-group/dto/material.dto.js.map +1 -0
  16. package/dist/course/course.service.d.ts +2 -0
  17. package/dist/course/course.service.d.ts.map +1 -1
  18. package/dist/course/course.service.js +27 -2
  19. package/dist/course/course.service.js.map +1 -1
  20. package/dist/course/dto/create-course.dto.d.ts +2 -2
  21. package/dist/course/dto/create-course.dto.d.ts.map +1 -1
  22. package/dist/course/dto/create-course.dto.js.map +1 -1
  23. package/dist/enterprise/enterprise.controller.d.ts +7 -1
  24. package/dist/enterprise/enterprise.controller.d.ts.map +1 -1
  25. package/dist/enterprise/enterprise.controller.js +72 -2
  26. package/dist/enterprise/enterprise.controller.js.map +1 -1
  27. package/dist/enterprise/enterprise.module.d.ts.map +1 -1
  28. package/dist/enterprise/enterprise.module.js +2 -1
  29. package/dist/enterprise/enterprise.module.js.map +1 -1
  30. package/dist/enterprise/enterprise.service.d.ts +3 -0
  31. package/dist/enterprise/enterprise.service.d.ts.map +1 -1
  32. package/dist/enterprise/enterprise.service.js +84 -1
  33. package/dist/enterprise/enterprise.service.js.map +1 -1
  34. package/dist/enterprise/training/enterprise-training.module.d.ts +3 -0
  35. package/dist/enterprise/training/enterprise-training.module.d.ts.map +1 -0
  36. package/dist/enterprise/training/enterprise-training.module.js +40 -0
  37. package/dist/enterprise/training/enterprise-training.module.js.map +1 -0
  38. package/dist/enterprise/training/training-admin.controller.d.ts +525 -0
  39. package/dist/enterprise/training/training-admin.controller.d.ts.map +1 -0
  40. package/dist/enterprise/training/training-admin.controller.js +385 -0
  41. package/dist/enterprise/training/training-admin.controller.js.map +1 -0
  42. package/dist/enterprise/training/training-admin.service.d.ts +582 -0
  43. package/dist/enterprise/training/training-admin.service.d.ts.map +1 -0
  44. package/dist/enterprise/training/training-admin.service.js +2283 -0
  45. package/dist/enterprise/training/training-admin.service.js.map +1 -0
  46. package/dist/enterprise/training/training-instructor.controller.d.ts +260 -0
  47. package/dist/enterprise/training/training-instructor.controller.d.ts.map +1 -0
  48. package/dist/enterprise/training/training-instructor.controller.js +199 -0
  49. package/dist/enterprise/training/training-instructor.controller.js.map +1 -0
  50. package/dist/enterprise/training/training-instructor.service.d.ts +280 -0
  51. package/dist/enterprise/training/training-instructor.service.d.ts.map +1 -0
  52. package/dist/enterprise/training/training-instructor.service.js +1218 -0
  53. package/dist/enterprise/training/training-instructor.service.js.map +1 -0
  54. package/dist/enterprise/training/training-student.controller.d.ts +168 -0
  55. package/dist/enterprise/training/training-student.controller.d.ts.map +1 -0
  56. package/dist/enterprise/training/training-student.controller.js +104 -0
  57. package/dist/enterprise/training/training-student.controller.js.map +1 -0
  58. package/dist/enterprise/training/training-student.service.d.ts +185 -0
  59. package/dist/enterprise/training/training-student.service.d.ts.map +1 -0
  60. package/dist/enterprise/training/training-student.service.js +674 -0
  61. package/dist/enterprise/training/training-student.service.js.map +1 -0
  62. package/dist/enterprise/training/training-viewer.controller.d.ts +298 -0
  63. package/dist/enterprise/training/training-viewer.controller.d.ts.map +1 -0
  64. package/dist/enterprise/training/training-viewer.controller.js +178 -0
  65. package/dist/enterprise/training/training-viewer.controller.js.map +1 -0
  66. package/dist/evaluation/dto/create-evaluation-topic.dto.d.ts +18 -0
  67. package/dist/evaluation/dto/create-evaluation-topic.dto.d.ts.map +1 -0
  68. package/dist/evaluation/dto/create-evaluation-topic.dto.js +59 -0
  69. package/dist/evaluation/dto/create-evaluation-topic.dto.js.map +1 -0
  70. package/dist/evaluation/dto/update-evaluation-topic.dto.d.ts +6 -0
  71. package/dist/evaluation/dto/update-evaluation-topic.dto.d.ts.map +1 -0
  72. package/dist/evaluation/dto/update-evaluation-topic.dto.js +9 -0
  73. package/dist/evaluation/dto/update-evaluation-topic.dto.js.map +1 -0
  74. package/dist/evaluation/evaluation.controller.d.ts +66 -0
  75. package/dist/evaluation/evaluation.controller.d.ts.map +1 -1
  76. package/dist/evaluation/evaluation.controller.js +73 -0
  77. package/dist/evaluation/evaluation.controller.js.map +1 -1
  78. package/dist/evaluation/evaluation.service.d.ts +71 -0
  79. package/dist/evaluation/evaluation.service.d.ts.map +1 -1
  80. package/dist/evaluation/evaluation.service.js +121 -0
  81. package/dist/evaluation/evaluation.service.js.map +1 -1
  82. package/dist/instructor/instructor.service.js +6 -6
  83. package/dist/instructor/instructor.service.js.map +1 -1
  84. package/dist/lms.module.d.ts.map +1 -1
  85. package/dist/lms.module.js +3 -0
  86. package/dist/lms.module.js.map +1 -1
  87. package/hedhog/data/menu.yaml +19 -2
  88. package/hedhog/data/route.yaml +730 -0
  89. package/hedhog/frontend/app/_components/class-form-sheet.tsx.ejs +74 -8
  90. package/hedhog/frontend/app/_components/course-avatar.tsx.ejs +10 -30
  91. package/hedhog/frontend/app/classes/[id]/_components/event-summary-popover.tsx.ejs +3 -3
  92. package/hedhog/frontend/app/classes/[id]/_components/quick-create-session-popover.tsx.ejs +1 -1
  93. package/hedhog/frontend/app/classes/[id]/page.tsx.ejs +2141 -308
  94. package/hedhog/frontend/app/classes/page.tsx.ejs +8 -7
  95. package/hedhog/frontend/app/courses/[id]/page.tsx.ejs +14 -1
  96. package/hedhog/frontend/app/courses/[id]/structure/_components/editor-course.tsx.ejs +6 -2
  97. package/hedhog/frontend/app/evaluations/_components/evaluation-topic-form-sheet.tsx.ejs +201 -0
  98. package/hedhog/frontend/app/evaluations/_components/evaluation-topic-types.ts.ejs +49 -0
  99. package/hedhog/frontend/app/evaluations/page.tsx.ejs +483 -1112
  100. package/hedhog/frontend/app/instructors/page.tsx.ejs +22 -20
  101. package/hedhog/frontend/app/reports/evaluations/page.tsx.ejs +1278 -0
  102. package/hedhog/frontend/messages/en.json +98 -7
  103. package/hedhog/frontend/messages/pt.json +98 -7
  104. package/hedhog/table/course_class_group_material.yaml +45 -0
  105. package/package.json +8 -8
  106. package/src/class-group/class-group.controller.ts +30 -0
  107. package/src/class-group/class-group.service.ts +176 -5
  108. package/src/class-group/dto/create-class-group.dto.ts +2 -2
  109. package/src/class-group/dto/material.dto.ts +69 -0
  110. package/src/course/course.service.ts +41 -8
  111. package/src/course/dto/create-course.dto.ts +2 -2
  112. package/src/enterprise/enterprise.controller.ts +62 -1
  113. package/src/enterprise/enterprise.module.ts +2 -1
  114. package/src/enterprise/enterprise.service.ts +84 -1
  115. package/src/enterprise/training/enterprise-training.module.ts +27 -0
  116. package/src/enterprise/training/training-admin.controller.ts +278 -0
  117. package/src/enterprise/training/training-admin.service.ts +2523 -0
  118. package/src/enterprise/training/training-instructor.controller.ts +141 -0
  119. package/src/enterprise/training/training-instructor.service.ts +1303 -0
  120. package/src/enterprise/training/training-student.controller.ts +65 -0
  121. package/src/enterprise/training/training-student.service.ts +762 -0
  122. package/src/enterprise/training/training-viewer.controller.ts +115 -0
  123. package/src/evaluation/dto/create-evaluation-topic.dto.ts +48 -0
  124. package/src/evaluation/dto/update-evaluation-topic.dto.ts +6 -0
  125. package/src/evaluation/evaluation.controller.ts +63 -1
  126. package/src/evaluation/evaluation.service.ts +150 -1
  127. package/src/instructor/instructor.service.ts +4 -4
  128. package/src/lms.module.ts +3 -0
@@ -0,0 +1,582 @@
1
+ import { PrismaService } from '@hed-hog/api-prisma';
2
+ export declare class TrainingAdminService {
3
+ private readonly prisma;
4
+ constructor(prisma: PrismaService);
5
+ getDashboard(userId: number, requestedEnterpriseId?: number): Promise<{
6
+ kpis: {
7
+ totalStudents: {
8
+ value: number;
9
+ change: number;
10
+ changeType: "percent";
11
+ };
12
+ activeClasses: {
13
+ value: number;
14
+ change: number;
15
+ changeType: "absolute";
16
+ };
17
+ slotsInUse: {
18
+ value: number;
19
+ change: number;
20
+ changeType: "absolute";
21
+ };
22
+ averageProgress: {
23
+ value: number;
24
+ change: any;
25
+ changeType: "percent";
26
+ };
27
+ };
28
+ upcomingClasses: {
29
+ id: number;
30
+ name: string;
31
+ courseId: number;
32
+ courseName: string;
33
+ courseLogoUrl: string;
34
+ instructor: string;
35
+ startDate: Date;
36
+ nextSession: {
37
+ date: Date;
38
+ time: string;
39
+ location: string;
40
+ };
41
+ slots: number;
42
+ totalSlots: number;
43
+ status: import("@prisma/client").$Enums.course_class_group_status_d840783477_enum;
44
+ deliveryMode: import("@prisma/client").$Enums.course_class_group_delivery_mode_1f1dcad009_enum;
45
+ }[];
46
+ alerts: {
47
+ type: string;
48
+ message: string;
49
+ severity: "info" | "warning" | "danger";
50
+ }[];
51
+ licenseInfo: {
52
+ limit: number;
53
+ totalStudents: number;
54
+ activeStudents: number;
55
+ };
56
+ }>;
57
+ private getKpis;
58
+ private getUpcomingClasses;
59
+ private getLicenseInfo;
60
+ private getAlerts;
61
+ getClassGroups(userId: number, options?: {
62
+ enterpriseId?: number;
63
+ search?: string;
64
+ status?: string;
65
+ deliveryMode?: string;
66
+ instructorId?: number;
67
+ }): Promise<{
68
+ data: {
69
+ id: number;
70
+ name: string;
71
+ code: string;
72
+ courseId: number;
73
+ courseName: string;
74
+ courseLogoUrl: string;
75
+ courseBannerUrl: string;
76
+ instructorName: any;
77
+ instructorAvatarUrl: string | null;
78
+ startDate: Date;
79
+ endDate: Date;
80
+ nextSession: {
81
+ date: Date;
82
+ time: string;
83
+ location: string;
84
+ };
85
+ slots: number;
86
+ totalSlots: number;
87
+ status: import("@prisma/client").$Enums.course_class_group_status_d840783477_enum;
88
+ deliveryMode: import("@prisma/client").$Enums.course_class_group_delivery_mode_1f1dcad009_enum;
89
+ completionRate: number;
90
+ }[];
91
+ total: number;
92
+ }>;
93
+ private assertAdminHasAccessToClassGroup;
94
+ getClassGroupDetail(userId: number, classGroupId: number): Promise<{
95
+ id: number;
96
+ courseName: string;
97
+ className: string;
98
+ code: string;
99
+ instructorName: string;
100
+ instructorAvatarUrl: string | null;
101
+ instructorBio: string | null;
102
+ startDate: Date;
103
+ endDate: Date;
104
+ status: import("@prisma/client").$Enums.course_class_group_status_d840783477_enum;
105
+ deliveryMode: import("@prisma/client").$Enums.course_class_group_delivery_mode_1f1dcad009_enum;
106
+ totalSlots: number;
107
+ enrolledCount: number;
108
+ totalSessions: number;
109
+ completedSessions: number;
110
+ avgAttendance: number;
111
+ completionRate: number;
112
+ nextSession: {
113
+ date: Date;
114
+ time: string;
115
+ location: string;
116
+ meetingUrl: string;
117
+ };
118
+ }>;
119
+ getClassGroupStudents(userId: number, classGroupId: number, params?: {
120
+ page?: number;
121
+ pageSize?: number;
122
+ search?: string;
123
+ status?: string;
124
+ }): Promise<{
125
+ total: number;
126
+ page: number;
127
+ pageSize: number;
128
+ lastPage: number;
129
+ data: {
130
+ id: number;
131
+ name: string;
132
+ avatarUrl: string | null;
133
+ progress: number;
134
+ attendance: number;
135
+ grade: number;
136
+ status: "ok" | "inactive" | "risk";
137
+ }[];
138
+ }>;
139
+ getClassGroupSessions(userId: number, classGroupId: number): Promise<{
140
+ id: number;
141
+ title: string;
142
+ date: Date;
143
+ time: string;
144
+ endTime: string;
145
+ location: string;
146
+ meetingUrl: string;
147
+ status: "next" | "completed" | "upcoming";
148
+ attendanceCount: number;
149
+ totalStudents: number;
150
+ }[]>;
151
+ getClassGroupMaterials(userId: number, classGroupId: number): Promise<{
152
+ id: number;
153
+ title: string;
154
+ description: string;
155
+ materialType: import("@prisma/client").$Enums.course_class_group_material_material_type_6e6c399501_enum;
156
+ url: string;
157
+ }[]>;
158
+ listLicenses(userId: number, params: {
159
+ page?: number;
160
+ pageSize?: number;
161
+ search?: string;
162
+ status?: string;
163
+ department?: string;
164
+ }): Promise<{
165
+ total: number;
166
+ page: number;
167
+ pageSize: number;
168
+ lastPage: number;
169
+ licenseLimit: number;
170
+ data: {
171
+ id: number;
172
+ personId: number;
173
+ name: string;
174
+ email: string;
175
+ status: import("@prisma/client").$Enums.enterprise_student_status_2597741ae7_enum;
176
+ createdAt: Date;
177
+ }[];
178
+ }>;
179
+ assignLicense(userId: number, dto: {
180
+ name: string;
181
+ email?: string;
182
+ department?: string;
183
+ }): Promise<{
184
+ id: number;
185
+ created_at: Date;
186
+ status: import("@prisma/client").$Enums.enterprise_student_status_2597741ae7_enum;
187
+ person_id: number;
188
+ }>;
189
+ revokeLicense(userId: number, personId: number): Promise<{
190
+ id: number;
191
+ }>;
192
+ getEnrollableStudents(userId: number, classGroupId: number, search?: string): Promise<{
193
+ data: {
194
+ id: number;
195
+ personId: number;
196
+ name: string;
197
+ email: string;
198
+ status: import("@prisma/client").$Enums.enterprise_student_status_2597741ae7_enum;
199
+ }[];
200
+ }>;
201
+ getLicenseAvailability(userId: number): Promise<{
202
+ limit: number;
203
+ totalStudents: number;
204
+ hasAvailableSlot: boolean;
205
+ }>;
206
+ enrollExistingStudent(userId: number, classGroupId: number, personId: number): Promise<{
207
+ id: number;
208
+ created_at: Date;
209
+ updated_at: Date;
210
+ status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
211
+ person_id: number;
212
+ course_id: number;
213
+ course_class_group_id: number | null;
214
+ completed_at: Date | null;
215
+ final_score: number | null;
216
+ enrolled_at: Date;
217
+ progress_percent: number;
218
+ }>;
219
+ createAndEnrollNewStudent(userId: number, classGroupId: number, dto: {
220
+ name: string;
221
+ email?: string;
222
+ department?: string;
223
+ }): Promise<{
224
+ id: number;
225
+ created_at: Date;
226
+ updated_at: Date;
227
+ status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
228
+ person_id: number;
229
+ course_id: number;
230
+ course_class_group_id: number | null;
231
+ completed_at: Date | null;
232
+ final_score: number | null;
233
+ enrolled_at: Date;
234
+ progress_percent: number;
235
+ }>;
236
+ private resolveEnterpriseId;
237
+ getCourses(userId: number, options?: {
238
+ enterpriseId?: number;
239
+ page?: number;
240
+ pageSize?: number;
241
+ search?: string;
242
+ level?: string;
243
+ category?: string;
244
+ }): Promise<{
245
+ total: number;
246
+ page: number;
247
+ pageSize: number;
248
+ lastPage: number;
249
+ data: {
250
+ id: number;
251
+ title: string;
252
+ description: string;
253
+ level: import("@prisma/client").$Enums.course_level_de6adae713_enum;
254
+ categories: string[];
255
+ durationHours: number;
256
+ moduleCount: number;
257
+ lessonCount: number;
258
+ instructors: {
259
+ id: number;
260
+ name: string;
261
+ avatarId: number | null;
262
+ }[];
263
+ createdAt: Date;
264
+ enrolledCount: number;
265
+ completedCount: number;
266
+ inProgressCount: number;
267
+ avgProgress: number;
268
+ }[];
269
+ }>;
270
+ getCourseStats(userId: number, enterpriseId?: number): Promise<{
271
+ totalCourses: number;
272
+ totalEnrolled: number;
273
+ totalCompleted: number;
274
+ avgCompletion: number;
275
+ }>;
276
+ getCourseDetail(userId: number, courseId: number, enterpriseId?: number): Promise<{
277
+ id: number;
278
+ title: string;
279
+ description: string;
280
+ level: import("@prisma/client").$Enums.course_level_de6adae713_enum;
281
+ categories: string[];
282
+ durationHours: number;
283
+ moduleCount: number;
284
+ lessonCount: number;
285
+ instructors: {
286
+ id: number;
287
+ name: string;
288
+ avatarId: number | null;
289
+ }[];
290
+ createdAt: Date;
291
+ objectives: string;
292
+ requirements: string;
293
+ enrolledCount: number;
294
+ completedCount: number;
295
+ inProgressCount: number;
296
+ avgProgress: number;
297
+ structure: {
298
+ id: number;
299
+ order: number;
300
+ title: string;
301
+ lessons: {
302
+ id: number;
303
+ order: number;
304
+ title: string;
305
+ type: import("@prisma/client").$Enums.course_lesson_type_c6739e3633_enum;
306
+ durationMinutes: number;
307
+ }[];
308
+ }[];
309
+ students: {
310
+ id: number;
311
+ name: string;
312
+ email: string;
313
+ department: string | null;
314
+ status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
315
+ progress: number;
316
+ enrolledAt: Date;
317
+ completedAt: Date;
318
+ lastAccess: Date | null;
319
+ }[];
320
+ }>;
321
+ getStudents(userId: number, options?: {
322
+ enterpriseId?: number;
323
+ page?: number;
324
+ pageSize?: number;
325
+ search?: string;
326
+ status?: string;
327
+ }): Promise<{
328
+ total: number;
329
+ page: number;
330
+ pageSize: number;
331
+ lastPage: number;
332
+ data: {
333
+ id: number;
334
+ personId: number;
335
+ name: string;
336
+ email: string;
337
+ department: any;
338
+ status: import("@prisma/client").$Enums.enterprise_student_status_2597741ae7_enum;
339
+ enrolledClasses: number;
340
+ completedCourses: number;
341
+ certificates: number;
342
+ avgProgress: number;
343
+ joinedAt: Date;
344
+ }[];
345
+ }>;
346
+ getStudentStats(userId: number, enterpriseId?: number): Promise<{
347
+ totalStudents: number;
348
+ activeStudents: number;
349
+ inactiveStudents: number;
350
+ pendingStudents: number;
351
+ avgProgress: number;
352
+ }>;
353
+ getStudentDetail(userId: number, personId: number, enterpriseId?: number): Promise<{
354
+ id: number;
355
+ name: string;
356
+ email: string;
357
+ department: any;
358
+ status: import("@prisma/client").$Enums.enterprise_student_status_2597741ae7_enum;
359
+ joinedAt: Date;
360
+ enrolledClasses: number;
361
+ completedCourses: number;
362
+ certificates: number;
363
+ avgProgress: number;
364
+ turmas: {
365
+ id: number;
366
+ code: string;
367
+ title: string;
368
+ status: import("@prisma/client").$Enums.course_class_group_status_d840783477_enum;
369
+ progress: number;
370
+ instructorName: any;
371
+ startDate: Date;
372
+ endDate: Date;
373
+ }[];
374
+ cursos: {
375
+ id: number;
376
+ title: string;
377
+ categories: string[];
378
+ durationHours: number;
379
+ status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
380
+ progress: number;
381
+ enrolledAt: Date;
382
+ completedAt: Date;
383
+ }[];
384
+ certificados: {
385
+ id: number;
386
+ verificationCode: string;
387
+ courseName: string;
388
+ issuedAt: Date;
389
+ type: import("@prisma/client").$Enums.certificate_certificate_type_d05ce6e32f_enum;
390
+ }[];
391
+ avaliacoes: {
392
+ id: number;
393
+ title: string;
394
+ score: number;
395
+ status: string;
396
+ submittedAt: Date;
397
+ }[];
398
+ acessos: {
399
+ id: number;
400
+ ipAddress: string;
401
+ userAgent: string;
402
+ createdAt: Date;
403
+ }[];
404
+ }>;
405
+ private resolveEnterpriseIdAsAdmin;
406
+ private mapRoleToPermission;
407
+ private mapPermissionToRole;
408
+ getAdminStats(userId: number, enterpriseId?: number): Promise<{
409
+ total: number;
410
+ adminCount: number;
411
+ hrManagerCount: number;
412
+ viewerCount: number;
413
+ }>;
414
+ getAdmins(userId: number, options?: {
415
+ enterpriseId?: number;
416
+ page?: number;
417
+ pageSize?: number;
418
+ search?: string;
419
+ role?: string;
420
+ }): Promise<{
421
+ total: number;
422
+ page: number;
423
+ pageSize: number;
424
+ lastPage: number;
425
+ data: {
426
+ id: number;
427
+ personId: number;
428
+ name: string;
429
+ email: string;
430
+ department: any;
431
+ permission: "viewer" | "admin" | "hr-manager";
432
+ status: import("@prisma/client").$Enums.enterprise_user_status_8a1e21341c_enum;
433
+ addedAt: string;
434
+ lastAccess: string;
435
+ }[];
436
+ }>;
437
+ addAdmin(userId: number, dto: {
438
+ name: string;
439
+ email?: string;
440
+ department?: string;
441
+ role?: string;
442
+ }): Promise<{
443
+ id: number;
444
+ created_at: Date;
445
+ status: import("@prisma/client").$Enums.enterprise_user_status_8a1e21341c_enum;
446
+ role: import("@prisma/client").$Enums.enterprise_user_role_43b5c384bf_enum;
447
+ }>;
448
+ updateAdminRole(userId: number, enterpriseUserId: number, permission: string): Promise<{
449
+ id: number;
450
+ role: import("@prisma/client").$Enums.enterprise_user_role_43b5c384bf_enum;
451
+ }>;
452
+ removeAdmin(userId: number, enterpriseUserId: number): Promise<{
453
+ success: boolean;
454
+ }>;
455
+ getEvaluationStats(userId: number, enterpriseId?: number): Promise<{
456
+ activeClassGroups: number;
457
+ totalEvaluations: number;
458
+ avgScore: number;
459
+ evaluatedStudentCount: number;
460
+ }>;
461
+ getEvaluationClassGroups(userId: number, options?: {
462
+ enterpriseId?: number;
463
+ page?: number;
464
+ pageSize?: number;
465
+ search?: string;
466
+ }): Promise<{
467
+ total: number;
468
+ page: number;
469
+ pageSize: number;
470
+ lastPage: number;
471
+ data: {
472
+ id: number;
473
+ title: string;
474
+ courseId: number;
475
+ courseTitle: string;
476
+ startDate: Date;
477
+ endDate: Date;
478
+ totalStudentCount: number;
479
+ sessionCount: number;
480
+ evaluatedSessionCount: number;
481
+ avgScore: number;
482
+ evaluatedStudentCount: number;
483
+ }[];
484
+ }>;
485
+ getEvaluationClassGroupDetail(userId: number, classGroupId: number, enterpriseId?: number): Promise<{
486
+ classGroup: {
487
+ id: number;
488
+ title: string;
489
+ courseId: number;
490
+ courseTitle: string;
491
+ startDate: Date;
492
+ endDate: Date;
493
+ };
494
+ topics: {
495
+ id: number;
496
+ name: string;
497
+ }[];
498
+ sessions: {
499
+ id: number;
500
+ title: string;
501
+ date: Date;
502
+ avg: number;
503
+ ratings: {
504
+ personId: number;
505
+ name: string;
506
+ topicScores: Record<number, number>;
507
+ comment: string;
508
+ evaluatedCourse: boolean;
509
+ }[];
510
+ }[];
511
+ courseTopics: {
512
+ id: number;
513
+ name: string;
514
+ }[];
515
+ }>;
516
+ getAdminReports(userId: number, options?: {
517
+ enterpriseId?: number;
518
+ dateFrom?: string;
519
+ dateTo?: string;
520
+ }): Promise<{
521
+ kpis: {
522
+ totalStudents: number;
523
+ enrollmentsInPeriod: number;
524
+ completedInPeriod: number;
525
+ activeClassGroups: number;
526
+ avgSatisfaction: number;
527
+ certificatesIssued: number;
528
+ atRiskStudentsCount: number;
529
+ activeCoursesCount: number;
530
+ };
531
+ enrollmentEvents: {
532
+ enrolledDate: string | null;
533
+ completedDate: string | null;
534
+ }[];
535
+ sessionAttendance: {
536
+ date: string;
537
+ title: string;
538
+ totalStudents: number;
539
+ presentCount: number;
540
+ pct: number;
541
+ }[];
542
+ courseStats: {
543
+ courseId: number;
544
+ title: string;
545
+ enrolledCount: number;
546
+ completedCount: number;
547
+ completionPct: number;
548
+ avgSatisfaction: number;
549
+ }[];
550
+ studentStatusCounts: {
551
+ active: number;
552
+ atRisk: number;
553
+ inactive: number;
554
+ };
555
+ evalSessions: {
556
+ date: string;
557
+ sessionTitle: string;
558
+ scores: {
559
+ topicName: string;
560
+ avg: number;
561
+ }[];
562
+ overallAvg: number;
563
+ }[];
564
+ evalTopicAverages: {
565
+ topicName: string;
566
+ avgScore: number;
567
+ }[];
568
+ atRiskStudents: {
569
+ personId: number;
570
+ name: string;
571
+ attendancePct: number;
572
+ lastPresentDate: string | null;
573
+ classGroupTitle: string | null;
574
+ }[];
575
+ }>;
576
+ private percentChange;
577
+ private round;
578
+ private addMonths;
579
+ private startOfMonth;
580
+ private endOfMonth;
581
+ }
582
+ //# sourceMappingURL=training-admin.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"training-admin.service.d.ts","sourceRoot":"","sources":["../../../src/enterprise/training/training-admin.service.ts"],"names":[],"mappings":"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"}