@hed-hog/lms 0.0.338 → 0.0.349

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 (53) hide show
  1. package/dist/class-group/class-group.controller.d.ts +8 -8
  2. package/dist/class-group/class-group.service.d.ts +8 -8
  3. package/dist/course/course.controller.d.ts +6 -1
  4. package/dist/course/course.controller.d.ts.map +1 -1
  5. package/dist/course/course.controller.js +19 -2
  6. package/dist/course/course.controller.js.map +1 -1
  7. package/dist/course/course.service.d.ts +6 -0
  8. package/dist/course/course.service.d.ts.map +1 -1
  9. package/dist/course/course.service.js +51 -8
  10. package/dist/course/course.service.js.map +1 -1
  11. package/dist/course/dto/create-course.dto.d.ts +1 -0
  12. package/dist/course/dto/create-course.dto.d.ts.map +1 -1
  13. package/dist/course/dto/create-course.dto.js +5 -0
  14. package/dist/course/dto/create-course.dto.js.map +1 -1
  15. package/dist/enterprise/enterprise.controller.d.ts +12 -12
  16. package/dist/enterprise/enterprise.service.d.ts +12 -12
  17. package/dist/enterprise/training/training-admin.controller.d.ts +5 -5
  18. package/dist/enterprise/training/training-admin.service.d.ts +5 -5
  19. package/dist/evaluation/evaluation.controller.d.ts +2 -2
  20. package/dist/evaluation/evaluation.service.d.ts +2 -2
  21. package/dist/instructor/instructor.controller.d.ts +1 -0
  22. package/dist/instructor/instructor.controller.d.ts.map +1 -1
  23. package/dist/instructor/instructor.service.d.ts +2 -0
  24. package/dist/instructor/instructor.service.d.ts.map +1 -1
  25. package/dist/instructor/instructor.service.js +9 -7
  26. package/dist/instructor/instructor.service.js.map +1 -1
  27. package/dist/training/dto/create-training.dto.d.ts +1 -0
  28. package/dist/training/dto/create-training.dto.d.ts.map +1 -1
  29. package/dist/training/dto/create-training.dto.js +5 -0
  30. package/dist/training/dto/create-training.dto.js.map +1 -1
  31. package/dist/training/training.controller.d.ts +4 -0
  32. package/dist/training/training.controller.d.ts.map +1 -1
  33. package/dist/training/training.service.d.ts +8 -0
  34. package/dist/training/training.service.d.ts.map +1 -1
  35. package/dist/training/training.service.js +71 -6
  36. package/dist/training/training.service.js.map +1 -1
  37. package/hedhog/frontend/app/_components/class-form-sheet.tsx.ejs +38 -9
  38. package/hedhog/frontend/app/certificates/models/page.tsx.ejs +33 -6
  39. package/hedhog/frontend/app/classes/[id]/page.tsx.ejs +1 -3
  40. package/hedhog/frontend/app/classes/page.tsx.ejs +28 -6
  41. package/hedhog/frontend/app/courses/[id]/structure/_components/editor-course.tsx.ejs +1 -1
  42. package/hedhog/frontend/app/exams/[id]/questions/page.tsx.ejs +25 -18
  43. package/hedhog/frontend/app/paths/page.tsx.ejs +68 -5
  44. package/hedhog/frontend/app/training/page.tsx.ejs +70 -6
  45. package/hedhog/frontend/messages/pt.json +14 -1
  46. package/hedhog/table/learning_path.yaml +4 -0
  47. package/package.json +8 -8
  48. package/src/course/course.controller.ts +18 -0
  49. package/src/course/course.service.ts +73 -2
  50. package/src/course/dto/create-course.dto.ts +4 -0
  51. package/src/instructor/instructor.service.ts +2 -0
  52. package/src/training/dto/create-training.dto.ts +4 -0
  53. package/src/training/training.service.ts +104 -5
@@ -39,6 +39,7 @@ export declare class TrainingController {
39
39
  isRequired: boolean;
40
40
  durationHours?: undefined;
41
41
  })[];
42
+ progressionMode: string;
42
43
  cargaTotal: any;
43
44
  alunos: any;
44
45
  status: string;
@@ -89,6 +90,7 @@ export declare class TrainingController {
89
90
  isRequired: boolean;
90
91
  durationHours?: undefined;
91
92
  })[];
93
+ progressionMode: string;
92
94
  cargaTotal: any;
93
95
  alunos: any;
94
96
  status: string;
@@ -132,6 +134,7 @@ export declare class TrainingController {
132
134
  isRequired: boolean;
133
135
  durationHours?: undefined;
134
136
  })[];
137
+ progressionMode: string;
135
138
  cargaTotal: any;
136
139
  alunos: any;
137
140
  status: string;
@@ -175,6 +178,7 @@ export declare class TrainingController {
175
178
  isRequired: boolean;
176
179
  durationHours?: undefined;
177
180
  })[];
181
+ progressionMode: string;
178
182
  cargaTotal: any;
179
183
  alunos: any;
180
184
  status: string;
@@ -1 +1 @@
1
- {"version":3,"file":"training.controller.d.ts","sourceRoot":"","sources":["../../src/training/training.controller.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,qBAEa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAG7D,IAAI,CACa,IAAI,CAAC,EAAE,MAAM,EACT,QAAQ,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAa9B,KAAK;;;;;;IAKL,OAAO,CAA4B,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAK7C,MAAM,CAAS,GAAG,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKrC,MAAM,CACuB,EAAE,EAAE,MAAM,EAC7B,GAAG,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAMhC,MAAM,CAA4B,EAAE,EAAE,MAAM;;;CAG7C"}
1
+ {"version":3,"file":"training.controller.d.ts","sourceRoot":"","sources":["../../src/training/training.controller.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,qBAEa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAG7D,IAAI,CACa,IAAI,CAAC,EAAE,MAAM,EACT,QAAQ,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAa9B,KAAK;;;;;;IAKL,OAAO,CAA4B,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAK7C,MAAM,CAAS,GAAG,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKrC,MAAM,CACuB,EAAE,EAAE,MAAM,EAC7B,GAAG,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAMhC,MAAM,CAA4B,EAAE,EAAE,MAAM;;;CAG7C"}
@@ -6,6 +6,10 @@ export declare class TrainingService {
6
6
  private readonly prisma;
7
7
  private readonly integrationApi;
8
8
  constructor(prisma: PrismaService, integrationApi: IntegrationDeveloperApiService);
9
+ private normalizeProgressMode;
10
+ private progressModeToPt;
11
+ private getTrainingExtras;
12
+ private persistTrainingProgressMode;
9
13
  list(params: {
10
14
  page?: number;
11
15
  pageSize?: number;
@@ -48,6 +52,7 @@ export declare class TrainingService {
48
52
  isRequired: boolean;
49
53
  durationHours?: undefined;
50
54
  })[];
55
+ progressionMode: string;
51
56
  cargaTotal: any;
52
57
  alunos: any;
53
58
  status: string;
@@ -98,6 +103,7 @@ export declare class TrainingService {
98
103
  isRequired: boolean;
99
104
  durationHours?: undefined;
100
105
  })[];
106
+ progressionMode: string;
101
107
  cargaTotal: any;
102
108
  alunos: any;
103
109
  status: string;
@@ -141,6 +147,7 @@ export declare class TrainingService {
141
147
  isRequired: boolean;
142
148
  durationHours?: undefined;
143
149
  })[];
150
+ progressionMode: string;
144
151
  cargaTotal: any;
145
152
  alunos: any;
146
153
  status: string;
@@ -184,6 +191,7 @@ export declare class TrainingService {
184
191
  isRequired: boolean;
185
192
  durationHours?: undefined;
186
193
  })[];
194
+ progressionMode: string;
187
195
  cargaTotal: any;
188
196
  alunos: any;
189
197
  status: string;
@@ -1 +1 @@
1
- {"version":3,"file":"training.service.d.ts","sourceRoot":"","sources":["../../src/training/training.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAuB,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,qBACa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAFd,MAAM,EAAE,aAAa,EAErB,cAAc,EAAE,8BAA8B;IAG3D,IAAI,CAAC,MAAM,EAAE;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoGK,KAAK;;;;;;IAoBL,OAAO,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2ClB,MAAM,CAAC,GAAG,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyE7B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuFzC,MAAM,CAAC,EAAE,EAAE,MAAM;;;IAcvB,OAAO,CAAC,WAAW;IA8EnB,OAAO,CAAC,oBAAoB;IAyC5B,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,QAAQ;CAGjB"}
1
+ {"version":3,"file":"training.service.d.ts","sourceRoot":"","sources":["../../src/training/training.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAuB,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,qBACa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAFd,MAAM,EAAE,aAAa,EAErB,cAAc,EAAE,8BAA8B;IAGjE,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,gBAAgB;YAIV,iBAAiB;YAmCjB,2BAA2B;IAuBnC,IAAI,CAAC,MAAM,EAAE;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsGK,KAAK;;;;;;IAoBL,OAAO,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6ClB,MAAM,CAAC,GAAG,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkF7B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+FzC,MAAM,CAAC,EAAE,EAAE,MAAM;;;IAcvB,OAAO,CAAC,WAAW;IAkFnB,OAAO,CAAC,oBAAoB;IAyC5B,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,QAAQ;CAGjB"}
@@ -21,6 +21,60 @@ let TrainingService = class TrainingService {
21
21
  this.prisma = prisma;
22
22
  this.integrationApi = integrationApi;
23
23
  }
24
+ normalizeProgressMode(value) {
25
+ if (!value)
26
+ return undefined;
27
+ const normalized = value.trim().toLowerCase();
28
+ if (normalized === 'free' || normalized === 'livre')
29
+ return 'free';
30
+ if (normalized === 'sequential' || normalized === 'sequencial') {
31
+ return 'sequential';
32
+ }
33
+ return undefined;
34
+ }
35
+ progressModeToPt(value) {
36
+ return this.normalizeProgressMode(value) === 'free' ? 'livre' : 'sequencial';
37
+ }
38
+ async getTrainingExtras(ids) {
39
+ const extrasById = new Map();
40
+ const normalizedIds = ids
41
+ .map((id) => Number(id))
42
+ .filter((id) => Number.isInteger(id) && id > 0);
43
+ if (normalizedIds.length === 0) {
44
+ return extrasById;
45
+ }
46
+ try {
47
+ const rows = (await this.prisma.$queryRawUnsafe(`
48
+ SELECT id, progress_mode
49
+ FROM learning_path
50
+ WHERE id IN (${normalizedIds.join(',')})
51
+ `));
52
+ for (const row of rows) {
53
+ extrasById.set(row.id, {
54
+ progress_mode: row.progress_mode,
55
+ });
56
+ }
57
+ }
58
+ catch (_a) {
59
+ return extrasById;
60
+ }
61
+ return extrasById;
62
+ }
63
+ async persistTrainingProgressMode(id, progressMode) {
64
+ if (progressMode === undefined) {
65
+ return;
66
+ }
67
+ try {
68
+ await this.prisma.$executeRawUnsafe(`
69
+ UPDATE learning_path
70
+ SET progress_mode = $1
71
+ WHERE id = $2
72
+ `, progressMode, id);
73
+ }
74
+ catch (_a) {
75
+ // Some environments may still be behind the current learning_path schema.
76
+ }
77
+ }
24
78
  async list(params) {
25
79
  var _a;
26
80
  const page = Math.max(Number(params.page) || 1, 1);
@@ -106,12 +160,13 @@ let TrainingService = class TrainingService {
106
160
  }),
107
161
  this.prisma.learning_path.count({ where }),
108
162
  ]);
163
+ const extrasById = await this.getTrainingExtras(paths.map((path) => path.id));
109
164
  return {
110
165
  total,
111
166
  page,
112
167
  pageSize,
113
168
  lastPage: Math.max(1, Math.ceil(total / pageSize)),
114
- data: paths.map((path) => this.mapTraining(path)),
169
+ data: paths.map((path) => this.mapTraining(path, extrasById.get(path.id))),
115
170
  };
116
171
  }
117
172
  async stats() {
@@ -171,14 +226,16 @@ let TrainingService = class TrainingService {
171
226
  });
172
227
  if (!path)
173
228
  return null;
174
- return this.mapTraining(path);
229
+ const extrasById = await this.getTrainingExtras([id]);
230
+ return this.mapTraining(path, extrasById.get(id));
175
231
  }
176
232
  async create(dto) {
177
- var _a, _b, _c;
233
+ var _a, _b, _c, _d;
178
234
  const slug = ((_a = dto.slug) === null || _a === void 0 ? void 0 : _a.trim()) || this.slugify(dto.title);
179
235
  const stepItems = this.resolveIncomingSteps(dto);
180
236
  const normalizedLevel = (_b = this.normalizeLevel(dto.level)) !== null && _b !== void 0 ? _b : 'beginner';
181
237
  const normalizedStatus = (_c = this.normalizeStatus(dto.status)) !== null && _c !== void 0 ? _c : 'draft';
238
+ const normalizedProgressMode = (_d = this.normalizeProgressMode(dto.progressMode)) !== null && _d !== void 0 ? _d : 'sequential';
182
239
  const created = await this.prisma.learning_path.create({
183
240
  data: Object.assign(Object.assign(Object.assign({ title: dto.title, slug, description: dto.description, short_description: dto.shortDescription, level: normalizedLevel, status: normalizedStatus }, (dto.primaryColor !== undefined && { primary_color: dto.primaryColor })), (dto.secondaryColor !== undefined && { secondary_color: dto.secondaryColor })), (stepItems.length > 0 && {
184
241
  learning_path_step: {
@@ -220,7 +277,9 @@ let TrainingService = class TrainingService {
220
277
  },
221
278
  },
222
279
  });
223
- const trainingResult = this.mapTraining(created);
280
+ await this.persistTrainingProgressMode(created.id, normalizedProgressMode);
281
+ const extrasById = await this.getTrainingExtras([created.id]);
282
+ const trainingResult = this.mapTraining(created, extrasById.get(created.id));
224
283
  await this.integrationApi.publishEvent({
225
284
  eventName: 'lms.training.created',
226
285
  sourceModule: 'lms',
@@ -236,6 +295,9 @@ let TrainingService = class TrainingService {
236
295
  const stepsWereProvided = dto.items !== undefined || dto.courseIds !== undefined;
237
296
  const normalizedLevel = dto.level !== undefined ? this.normalizeLevel(dto.level) : undefined;
238
297
  const normalizedStatus = dto.status !== undefined ? this.normalizeStatus(dto.status) : undefined;
298
+ const normalizedProgressMode = dto.progressMode !== undefined
299
+ ? this.normalizeProgressMode(dto.progressMode)
300
+ : undefined;
239
301
  if (stepsWereProvided) {
240
302
  await this.prisma.learning_path_step.deleteMany({
241
303
  where: {
@@ -288,7 +350,9 @@ let TrainingService = class TrainingService {
288
350
  },
289
351
  },
290
352
  });
291
- const updateTrainingResult = this.mapTraining(updated);
353
+ await this.persistTrainingProgressMode(id, normalizedProgressMode);
354
+ const extrasById = await this.getTrainingExtras([id]);
355
+ const updateTrainingResult = this.mapTraining(updated, extrasById.get(id));
292
356
  await this.integrationApi.publishEvent({
293
357
  eventName: 'lms.training.updated',
294
358
  sourceModule: 'lms',
@@ -309,7 +373,7 @@ let TrainingService = class TrainingService {
309
373
  }).catch(() => null);
310
374
  return { success: true };
311
375
  }
312
- mapTraining(path) {
376
+ mapTraining(path, extras) {
313
377
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
314
378
  const steps = [...((_a = path.learning_path_step) !== null && _a !== void 0 ? _a : [])].sort((a, b) => { var _a, _b; return ((_a = a === null || a === void 0 ? void 0 : a.order) !== null && _a !== void 0 ? _a : 0) - ((_b = b === null || b === void 0 ? void 0 : b.order) !== null && _b !== void 0 ? _b : 0); });
315
379
  const courseSteps = steps.filter((step) => step === null || step === void 0 ? void 0 : step.course);
@@ -363,6 +427,7 @@ let TrainingService = class TrainingService {
363
427
  courseIds,
364
428
  examIds,
365
429
  items,
430
+ progressionMode: this.progressModeToPt(extras === null || extras === void 0 ? void 0 : extras.progress_mode),
366
431
  cargaTotal,
367
432
  alunos: (_f = (_e = path._count) === null || _e === void 0 ? void 0 : _e.learning_path_enrollment) !== null && _f !== void 0 ? _f : 0,
368
433
  status: this.statusToPt(path.status),
@@ -1 +1 @@
1
- {"version":3,"file":"training.service.js","sourceRoot":"","sources":["../../src/training/training.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"training.service.js","sourceRoot":"","sources":["../../src/training/training.service.ts"],"names":[],"mappings":"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"}
@@ -136,6 +136,7 @@ type InstructorOption = {
136
136
  name: string;
137
137
  personId?: number;
138
138
  avatarId?: number | null;
139
+ userPhotoId?: number | null;
139
140
  qualificationSlugs?: string[];
140
141
  };
141
142
 
@@ -151,6 +152,8 @@ type InstructorApiRow = {
151
152
  person_id?: number | string;
152
153
  avatarId?: number | string | null;
153
154
  avatar_id?: number | string | null;
155
+ userPhotoId?: number | string | null;
156
+ user_photo_id?: number | string | null;
154
157
  qualificationSlugs?: string[];
155
158
  };
156
159
 
@@ -310,17 +313,38 @@ function normalizeInstructorOption(
310
313
  rawAvatarId !== undefined && rawAvatarId !== null
311
314
  ? Number(rawAvatarId) || null
312
315
  : null;
316
+ const rawUserPhotoId = item?.userPhotoId ?? item?.user_photo_id;
317
+ const userPhotoId =
318
+ rawUserPhotoId !== undefined && rawUserPhotoId !== null
319
+ ? Number(rawUserPhotoId) || null
320
+ : null;
313
321
  return {
314
322
  id,
315
323
  name,
316
324
  personId: Number(item?.personId ?? item?.person_id ?? 0) || undefined,
317
325
  avatarId,
326
+ userPhotoId,
318
327
  qualificationSlugs: Array.isArray(item?.qualificationSlugs)
319
328
  ? item.qualificationSlugs
320
329
  : undefined,
321
330
  };
322
331
  }
323
332
 
333
+ function getInstructorAvatarUrl(option?: {
334
+ userPhotoId?: number | null;
335
+ avatarId?: number | null;
336
+ }) {
337
+ if (option?.userPhotoId) {
338
+ return `${process.env.NEXT_PUBLIC_API_BASE_URL}/user/avatar/${option.userPhotoId}`;
339
+ }
340
+
341
+ if (option?.avatarId) {
342
+ return `${process.env.NEXT_PUBLIC_API_BASE_URL}/person/avatar/${option.avatarId}`;
343
+ }
344
+
345
+ return undefined;
346
+ }
347
+
324
348
  function getContrastColor(hex: string) {
325
349
  const cleaned = hex.replace('#', '');
326
350
  if (cleaned.length !== 6) return '#FFFFFF';
@@ -493,6 +517,8 @@ export interface ClassFormSheetProps {
493
517
  onOpenChange: (open: boolean) => void;
494
518
  /** Omit for create mode; provide for edit mode. */
495
519
  classId?: string;
520
+ defaultCourse?: { id: number; title: string };
521
+ lockCourse?: boolean;
496
522
  /** Disable nested instructor sheet to avoid recursive sheet composition. */
497
523
  enableInstructorSheet?: boolean;
498
524
  sheetTitle?: string;
@@ -509,6 +535,8 @@ export function ClassFormSheet({
509
535
  open,
510
536
  onOpenChange,
511
537
  classId,
538
+ defaultCourse,
539
+ lockCourse = false,
512
540
  enableInstructorSheet = true,
513
541
  sheetTitle,
514
542
  sheetDescription,
@@ -669,14 +697,15 @@ export function ClassFormSheet({
669
697
  } else {
670
698
  // Create mode: reset with fresh defaults + generated code
671
699
  const nextSeed = createClassCodeSeed();
672
- const nextCode = buildClassCode(undefined, nextSeed);
700
+ const defaultCourseTitle = defaultCourse?.title ?? '';
701
+ const nextCode = buildClassCode(defaultCourseTitle, nextSeed);
673
702
  setDateRangeDraft(undefined);
674
703
  setDateRangeOpen(false);
675
704
  setPreviousRecurrenceMode('none');
676
705
  form.reset({
677
706
  codigo: nextCode,
678
- curso: '',
679
- courseId: undefined,
707
+ curso: defaultCourseTitle,
708
+ courseId: defaultCourse?.id,
680
709
  instructorId: undefined,
681
710
  tipo: 'online',
682
711
  professor: '',
@@ -1173,6 +1202,7 @@ export function ClassFormSheet({
1173
1202
  noResultsLabel={t(
1174
1203
  'components.entityPicker.courses.empty'
1175
1204
  )}
1205
+ disabled={lockCourse}
1176
1206
  showCreateButton={false}
1177
1207
  onChange={(value, option) => {
1178
1208
  const cId =
@@ -1218,6 +1248,7 @@ export function ClassFormSheet({
1218
1248
  variant="outline"
1219
1249
  size="icon"
1220
1250
  className="shrink-0"
1251
+ disabled={lockCourse}
1221
1252
  onClick={() => {
1222
1253
  courseForm.reset(DEFAULT_COURSE_FORM_VALUES);
1223
1254
  setCourseSheetOpen(true);
@@ -1774,9 +1805,7 @@ export function ClassFormSheet({
1774
1805
  .slice(0, 2)
1775
1806
  .map((p) => p[0]?.toUpperCase() ?? '')
1776
1807
  .join('');
1777
- const avatarUrl = option.avatarId
1778
- ? `${process.env.NEXT_PUBLIC_API_BASE_URL}/person/avatar/${option.avatarId}`
1779
- : undefined;
1808
+ const avatarUrl = getInstructorAvatarUrl(option);
1780
1809
  return (
1781
1810
  <div className="flex min-w-0 items-center gap-3 py-0.5">
1782
1811
  <Avatar className="h-8 w-8 shrink-0 rounded-lg border border-border/60">
@@ -1799,9 +1828,9 @@ export function ClassFormSheet({
1799
1828
  .slice(0, 2)
1800
1829
  .map((p) => p[0]?.toUpperCase() ?? '')
1801
1830
  .join('');
1802
- const avatarUrl = option?.avatarId
1803
- ? `${process.env.NEXT_PUBLIC_API_BASE_URL}/person/avatar/${option.avatarId}`
1804
- : undefined;
1831
+ const avatarUrl = getInstructorAvatarUrl(
1832
+ option ?? undefined
1833
+ );
1805
1834
  return (
1806
1835
  <div className="flex items-center gap-2">
1807
1836
  <Avatar className="h-5 w-5 shrink-0 rounded">
@@ -62,7 +62,7 @@ import {
62
62
  } from 'lucide-react';
63
63
  import { useLocale, useTranslations } from 'next-intl';
64
64
  import { useRouter } from 'next/navigation';
65
- import { useEffect, useMemo, useState } from 'react';
65
+ import { useEffect, useMemo, useRef, useState } from 'react';
66
66
  import { usePersistedPageSize } from '@/hooks/use-persisted-page-size';
67
67
  import { Controller, useForm } from 'react-hook-form';
68
68
  import { toast } from 'sonner';
@@ -166,6 +166,11 @@ export default function ModelsPage() {
166
166
  null
167
167
  );
168
168
 
169
+ // Double-click tracking
170
+ const clickTimers = useRef<Map<number, ReturnType<typeof setTimeout>>>(
171
+ new Map()
172
+ );
173
+
169
174
  const form = useForm<CreateTemplateFormValues>({
170
175
  resolver: zodResolver(createTemplateSchema(t)),
171
176
  defaultValues: {
@@ -469,6 +474,23 @@ export default function ModelsPage() {
469
474
  }
470
475
  }
471
476
 
477
+ // ── Double-click to navigate ──────────────────────────────────────────────
478
+
479
+ function handleCardClick(template: CertificateTemplate) {
480
+ const existing = clickTimers.current.get(template.id);
481
+ if (existing) {
482
+ clearTimeout(existing);
483
+ clickTimers.current.delete(template.id);
484
+ router.push(`/lms/certificates/models/editor?templateId=${template.id}`);
485
+ } else {
486
+ const timer = setTimeout(
487
+ () => clickTimers.current.delete(template.id),
488
+ 300
489
+ );
490
+ clickTimers.current.set(template.id, timer);
491
+ }
492
+ }
493
+
472
494
  const { locales } = useApp();
473
495
 
474
496
  const handleNewModel = (): void => {
@@ -592,13 +614,17 @@ export default function ModelsPage() {
592
614
  {templates.map((template) => (
593
615
  <Card
594
616
  key={template.id}
595
- className="overflow-hidden border-border/70 py-0 shadow-sm transition-shadow duration-300 hover:shadow-md"
617
+ className="cursor-pointer overflow-hidden border-border/70 py-0 shadow-sm transition-shadow duration-300 hover:shadow-md"
618
+ onClick={() => handleCardClick(template)}
596
619
  >
597
620
  <div className="h-1 w-full bg-linear-to-r from-sky-400/70 via-cyan-300/50 to-transparent" />
598
621
  <CardContent className="space-y-4 p-5">
599
622
  <div className="flex items-start justify-between gap-2">
600
623
  {renderStatusBadge(template.status)}
601
- <div className="flex items-center gap-1">
624
+ <div
625
+ className="flex items-center gap-1"
626
+ onClick={(e) => e.stopPropagation()}
627
+ >
602
628
  <DropdownMenu>
603
629
  <DropdownMenuTrigger asChild>
604
630
  <Button
@@ -668,11 +694,12 @@ export default function ModelsPage() {
668
694
  variant="outline"
669
695
  size="sm"
670
696
  className="gap-2 w-full"
671
- onClick={() =>
697
+ onClick={(e) => {
698
+ e.stopPropagation();
672
699
  router.push(
673
700
  `/lms/certificates/models/editor?templateId=${template.id}`
674
- )
675
- }
701
+ );
702
+ }}
676
703
  >
677
704
  <FileEdit className="size-4" />
678
705
  {t('cards.actions.editTemplate')}
@@ -854,9 +854,7 @@ const getAulaSchema = (t: (key: string) => string) =>
854
854
  horaFim: z
855
855
  .string()
856
856
  .min(1, t('sheet.lessonForm.validation.endTimeRequired')),
857
- local: z
858
- .string()
859
- .min(1, t('sheet.lessonForm.validation.locationRequired')),
857
+ local: z.string().optional(),
860
858
  tipo: z.string().min(1, t('sheet.lessonForm.validation.typeRequired')),
861
859
  instrutorId: z.string().optional(),
862
860
  recurrenceFrequency: z
@@ -227,6 +227,7 @@ type InstructorOption = {
227
227
  name: string;
228
228
  personId?: number;
229
229
  avatarId?: number | null;
230
+ userPhotoId?: number | null;
230
231
  qualificationSlugs?: string[];
231
232
  };
232
233
 
@@ -242,6 +243,8 @@ type InstructorApiRow = {
242
243
  person_id?: number | string;
243
244
  avatarId?: number | string | null;
244
245
  avatar_id?: number | string | null;
246
+ userPhotoId?: number | string | null;
247
+ user_photo_id?: number | string | null;
245
248
  qualificationSlugs?: string[];
246
249
  };
247
250
 
@@ -268,18 +271,39 @@ function normalizeInstructorOption(
268
271
  rawAvatarId !== undefined && rawAvatarId !== null
269
272
  ? Number(rawAvatarId) || null
270
273
  : null;
274
+ const rawUserPhotoId = item?.userPhotoId ?? item?.user_photo_id;
275
+ const userPhotoId =
276
+ rawUserPhotoId !== undefined && rawUserPhotoId !== null
277
+ ? Number(rawUserPhotoId) || null
278
+ : null;
271
279
 
272
280
  return {
273
281
  id,
274
282
  name,
275
283
  personId: Number(item?.personId ?? item?.person_id ?? 0) || undefined,
276
284
  avatarId,
285
+ userPhotoId,
277
286
  qualificationSlugs: Array.isArray(item?.qualificationSlugs)
278
287
  ? item.qualificationSlugs
279
288
  : undefined,
280
289
  };
281
290
  }
282
291
 
292
+ function getInstructorAvatarUrl(option?: {
293
+ userPhotoId?: number | null;
294
+ avatarId?: number | null;
295
+ }) {
296
+ if (option?.userPhotoId) {
297
+ return `${process.env.NEXT_PUBLIC_API_BASE_URL}/user/avatar/${option.userPhotoId}`;
298
+ }
299
+
300
+ if (option?.avatarId) {
301
+ return `${process.env.NEXT_PUBLIC_API_BASE_URL}/person/avatar/${option.avatarId}`;
302
+ }
303
+
304
+ return undefined;
305
+ }
306
+
283
307
  function getCourseIdByTitle(
284
308
  courses: Array<{ id: number; title: string }>,
285
309
  title: string
@@ -754,6 +778,7 @@ export default function TurmasPage() {
754
778
  params: {
755
779
  page: 1,
756
780
  pageSize: 500,
781
+ offeringTypes: 'scheduled,blended',
757
782
  },
758
783
  });
759
784
  return response.data;
@@ -2389,6 +2414,7 @@ export default function TurmasPage() {
2389
2414
  params: {
2390
2415
  page,
2391
2416
  pageSize,
2417
+ offeringTypes: 'scheduled,blended',
2392
2418
  ...(search.trim() ? { search: search.trim() } : {}),
2393
2419
  },
2394
2420
  });
@@ -2917,9 +2943,7 @@ export default function TurmasPage() {
2917
2943
  .slice(0, 2)
2918
2944
  .map((p) => p[0]?.toUpperCase() ?? '')
2919
2945
  .join('');
2920
- const avatarUrl = option.avatarId
2921
- ? `${process.env.NEXT_PUBLIC_API_BASE_URL}/person/avatar/${option.avatarId}`
2922
- : undefined;
2946
+ const avatarUrl = getInstructorAvatarUrl(option);
2923
2947
  return (
2924
2948
  <div className="flex min-w-0 items-center gap-3 py-0.5">
2925
2949
  <Avatar className="h-8 w-8 shrink-0 rounded-lg border border-border/60">
@@ -2942,9 +2966,7 @@ export default function TurmasPage() {
2942
2966
  .slice(0, 2)
2943
2967
  .map((p) => p[0]?.toUpperCase() ?? '')
2944
2968
  .join('');
2945
- const avatarUrl = option?.avatarId
2946
- ? `${process.env.NEXT_PUBLIC_API_BASE_URL}/person/avatar/${option.avatarId}`
2947
- : undefined;
2969
+ const avatarUrl = getInstructorAvatarUrl(option ?? undefined);
2948
2970
  return (
2949
2971
  <div className="flex items-center gap-2">
2950
2972
  <Avatar className="h-5 w-5 shrink-0 rounded">
@@ -453,7 +453,7 @@ export function EditorCourse() {
453
453
  hasCertificate: data.certificado,
454
454
  isFeatured: data.destaque,
455
455
  isListed: data.listado,
456
- certificateModel: data.modeloCertificado || undefined,
456
+ certificateModel: data.modeloCertificado.trim() || null,
457
457
  instructorIds: (data.instrutores ?? []).map(Number),
458
458
  },
459
459
  });