@platform-modules/foreign-ministry 1.3.351 → 1.3.358

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 (78) hide show
  1. package/dist/helpers/employee-evaluation-request.utils.d.ts +12 -0
  2. package/dist/helpers/employee-evaluation-request.utils.js +85 -0
  3. package/dist/helpers/sla-request-status.helper.d.ts +3 -0
  4. package/dist/helpers/sla-request-status.helper.js +36 -0
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.js +4 -3
  7. package/dist/models/EmbassyEvaluationDepartmentSettingModel.d.ts +14 -0
  8. package/dist/models/EmbassyEvaluationDepartmentSettingModel.js +56 -0
  9. package/dist/models/EvaluationMastersModel.d.ts +16 -0
  10. package/dist/models/EvaluationMastersModel.js +67 -0
  11. package/dist/models/EvaluationQuestionMasterModel.d.ts +10 -0
  12. package/dist/models/EvaluationQuestionMasterModel.js +42 -0
  13. package/dist/models/EvaluationSectionMasterModel.d.ts +7 -0
  14. package/dist/models/EvaluationSectionMasterModel.js +36 -0
  15. package/dist/models/EvaluationWorkflowModel.d.ts +60 -0
  16. package/dist/models/EvaluationWorkflowModel.js +215 -0
  17. package/dist/models/IneligibleForEvaluationModel.d.ts +8 -0
  18. package/dist/models/IneligibleForEvaluationModel.js +44 -0
  19. package/dist/models/MissionTravelClassConfigModel.d.ts +10 -0
  20. package/dist/models/MissionTravelClassConfigModel.js +50 -0
  21. package/dist/models/MissionTravelPerdiemModel.d.ts +10 -0
  22. package/dist/models/MissionTravelPerdiemModel.js +54 -0
  23. package/dist/models/SlaApprovalsViewModel.js +54 -54
  24. package/dist/models/SlaMyRequestsViewModel.d.ts +3 -0
  25. package/dist/models/SlaMyRequestsViewModel.js +73 -53
  26. package/dist/models/UuidAuditModel.d.ts +9 -0
  27. package/dist/models/UuidAuditModel.js +41 -0
  28. package/package.json +2 -2
  29. package/scripts/check-column-types.js +38 -38
  30. package/scripts/check-service-tables.js +42 -42
  31. package/scripts/sync-sla-reports-sql.js +92 -92
  32. package/sql/sla-reports-sync.manifest.json +9 -9
  33. package/sql/sla_reports_admin_procedures.sql +321 -322
  34. package/sql/sla_reports_approvals_workbook.sql +427 -430
  35. package/sql/sla_reports_procedures.sql +883 -886
  36. package/sql/sla_requests_status_to_varchar.sql +28 -28
  37. package/sql/vw_sla_approvals.sql +115 -115
  38. package/sql/vw_sla_my_requests.sql +60 -55
  39. package/src/helpers/employee-evaluation-request.utils.ts +127 -0
  40. package/src/helpers/evaluation-eligibility.utils.ts +126 -126
  41. package/src/index.ts +1 -0
  42. package/src/models/DiplomaticAcademyRequestModel.ts +80 -80
  43. package/src/models/DocumentationFileModel.ts +40 -40
  44. package/src/models/EmbassyEvaluationCycleModel.ts +45 -45
  45. package/src/models/EmbassyEvaluationRequestModel.ts +59 -59
  46. package/src/models/EmployeeEvaluationAnswerModel.ts +26 -26
  47. package/src/models/EvaluationEligibilitySettingModel.ts +51 -51
  48. package/src/models/EvaluationFormModel.ts +44 -44
  49. package/src/models/LanguageCourseRequestModel.ts +67 -67
  50. package/src/models/LeaveApprovalsModel.ts +66 -66
  51. package/src/models/LeaveConfigModel.ts +71 -71
  52. package/src/models/MissionTravelApprovalModel.ts +101 -101
  53. package/src/models/MissionTravelAttachmentModel.ts +56 -56
  54. package/src/models/MissionTravelChatModel.ts +52 -52
  55. package/src/models/MissionTravelPersonModel.ts +105 -105
  56. package/src/models/MissionTravelWorkflowModel.ts +54 -54
  57. package/src/models/ProjectContactsModel.ts +51 -51
  58. package/src/models/ProjectFaqModel.ts +36 -36
  59. package/src/models/ProjectInvoicesModel.ts +41 -41
  60. package/src/models/ProjectModel.ts +75 -75
  61. package/src/models/ProjectTasksModel.ts +75 -75
  62. package/src/models/ServiceSlaApprovalModel.ts +63 -63
  63. package/src/models/ServicesNotificationConfigsModel.ts +55 -55
  64. package/src/models/SlaApprovalsViewModel.ts +142 -142
  65. package/src/models/SlaMyRequestsViewModel.ts +192 -172
  66. package/src/models/SlaRequestModel.ts +57 -57
  67. package/src/sla-report-views.ts +3 -3
  68. package/dist/auth/authenticate-jwt-session.d.ts +0 -19
  69. package/dist/auth/authenticate-jwt-session.js +0 -35
  70. package/dist/auth/jwt-token.helper.d.ts +0 -18
  71. package/dist/auth/jwt-token.helper.js +0 -58
  72. package/dist/auth/user-session-validation.d.ts +0 -42
  73. package/dist/auth/user-session-validation.js +0 -95
  74. package/dist/i18n/workflow-chat-i18n.d.ts +0 -5
  75. package/dist/i18n/workflow-chat-i18n.js +0 -21
  76. package/dist/i18n/workflow-chat-i18n.json +0 -320
  77. package/dist/i18n/workflow-chat-message.builder.d.ts +0 -325
  78. package/dist/i18n/workflow-chat-message.builder.js +0 -924
@@ -34,3 +34,15 @@ export declare function persistEmployeeEvaluationScores(manager: EntityManager,
34
34
  averageScore: number;
35
35
  employeeCount: number;
36
36
  }>;
37
+ /** Sync person_scores/answers on an existing request (draft update or draft promotion). */
38
+ export declare function syncEmployeeEvaluationScores(manager: EntityManager, opts: {
39
+ requestId: number;
40
+ formId: number;
41
+ createdBy: string;
42
+ employees: NormalizedEmployeeSubmission[];
43
+ validateAnswers?: boolean;
44
+ }): Promise<{
45
+ totalScore: number | null;
46
+ averageScore: number | null;
47
+ employeeCount: number;
48
+ }>;
@@ -5,6 +5,7 @@ exports.normalizeEmployeeSubmissions = normalizeEmployeeSubmissions;
5
5
  exports.normalizeEmployeeDraftSubmissions = normalizeEmployeeDraftSubmissions;
6
6
  exports.resolveMaxEmployeesPerRequest = resolveMaxEmployeesPerRequest;
7
7
  exports.persistEmployeeEvaluationScores = persistEmployeeEvaluationScores;
8
+ exports.syncEmployeeEvaluationScores = syncEmployeeEvaluationScores;
8
9
  const EmployeeEvaluationAnswerModel_1 = require("../models/EmployeeEvaluationAnswerModel");
9
10
  const EmployeeEvaluationPersonScoreModel_1 = require("../models/EmployeeEvaluationPersonScoreModel");
10
11
  const EmployeeEvaluationRequestModel_1 = require("../models/EmployeeEvaluationRequestModel");
@@ -213,3 +214,87 @@ async function persistEmployeeEvaluationScores(manager, opts) {
213
214
  });
214
215
  return { totalScore: requestTotal, averageScore, employeeCount };
215
216
  }
217
+ /** Sync person_scores/answers on an existing request (draft update or draft promotion). */
218
+ async function syncEmployeeEvaluationScores(manager, opts) {
219
+ const { requestId, formId, createdBy, employees, validateAnswers = false } = opts;
220
+ const payloadUserIds = new Set(employees.map((e) => e.user_id));
221
+ const existingScores = await manager.find(EmployeeEvaluationPersonScoreModel_1.EmployeeEvaluationPersonScore, {
222
+ where: { request_id: requestId, is_deleted: false },
223
+ });
224
+ for (const ps of existingScores) {
225
+ if (!payloadUserIds.has(ps.user_id)) {
226
+ await manager.update(EmployeeEvaluationPersonScoreModel_1.EmployeeEvaluationPersonScore, { id: ps.id }, { is_deleted: true, updated_by: createdBy });
227
+ await manager.update(EmployeeEvaluationAnswerModel_1.EmployeeEvaluationAnswers, { request_id: requestId, user_id: ps.user_id, is_deleted: false }, { is_deleted: true, updated_by: createdBy });
228
+ }
229
+ }
230
+ for (const emp of employees) {
231
+ const existingPerson = existingScores.find((p) => p.user_id === emp.user_id);
232
+ if (existingPerson) {
233
+ await manager.update(EmployeeEvaluationPersonScoreModel_1.EmployeeEvaluationPersonScore, { id: existingPerson.id }, { is_rca: Boolean(emp.is_rca), updated_by: createdBy });
234
+ await manager.update(EmployeeEvaluationAnswerModel_1.EmployeeEvaluationAnswers, { request_id: requestId, user_id: emp.user_id, is_deleted: false }, { is_deleted: true, updated_by: createdBy });
235
+ }
236
+ else {
237
+ await manager.save(EmployeeEvaluationPersonScoreModel_1.EmployeeEvaluationPersonScore, manager.create(EmployeeEvaluationPersonScoreModel_1.EmployeeEvaluationPersonScore, {
238
+ request_id: requestId,
239
+ user_id: emp.user_id,
240
+ is_rca: Boolean(emp.is_rca),
241
+ us_feedback: null,
242
+ total_score: null,
243
+ created_by: createdBy,
244
+ is_deleted: false,
245
+ }));
246
+ }
247
+ if (emp.answers.length > 0) {
248
+ let personTotal = 0;
249
+ for (const ans of emp.answers) {
250
+ const qMeta = await manager.findOne(EvaluationFormQuestionModel_1.EvaluationFormQuestion, {
251
+ where: { id: ans.question_id, is_deleted: false },
252
+ });
253
+ const questionSectionId = qMeta?.form_section_id;
254
+ if (validateAnswers) {
255
+ if (!qMeta || questionSectionId == null || questionSectionId !== ans.section_id) {
256
+ throw new Error(`Invalid question ${ans.question_id} for section ${ans.section_id}`);
257
+ }
258
+ if (qMeta.max_score != null && ans.score > qMeta.max_score) {
259
+ throw new Error(`score ${ans.score} exceeds max_score ${qMeta.max_score} for question ${ans.question_id}`);
260
+ }
261
+ }
262
+ else if (qMeta &&
263
+ qMeta.form_section_id != null &&
264
+ qMeta.form_section_id !== ans.section_id) {
265
+ throw new Error(`Invalid question ${ans.question_id} for section ${ans.section_id}`);
266
+ }
267
+ personTotal += ans.score;
268
+ await manager.save(EmployeeEvaluationAnswerModel_1.EmployeeEvaluationAnswers, manager.create(EmployeeEvaluationAnswerModel_1.EmployeeEvaluationAnswers, {
269
+ request_id: requestId,
270
+ user_id: emp.user_id,
271
+ form_id: formId,
272
+ section_id: ans.section_id,
273
+ question_id: ans.question_id,
274
+ score: ans.score,
275
+ remarks: ans.remarks ?? null,
276
+ created_by: createdBy,
277
+ is_deleted: false,
278
+ }));
279
+ }
280
+ await manager.update(EmployeeEvaluationPersonScoreModel_1.EmployeeEvaluationPersonScore, { request_id: requestId, user_id: emp.user_id, is_deleted: false }, { total_score: personTotal, updated_by: createdBy });
281
+ }
282
+ }
283
+ const personRows = await manager.find(EmployeeEvaluationPersonScoreModel_1.EmployeeEvaluationPersonScore, {
284
+ where: { request_id: requestId, is_deleted: false },
285
+ });
286
+ const scores = personRows.map((p) => p.total_score ?? 0);
287
+ const requestTotal = scores.reduce((a, b) => a + b, 0);
288
+ const average = personRows.length ? requestTotal / personRows.length : 0;
289
+ await manager.update(EmployeeEvaluationRequestModel_1.EmployeeEvaluationRequests, { id: requestId }, {
290
+ total_score: personRows.length ? requestTotal : null,
291
+ average_score: personRows.length ? average : null,
292
+ employee_count: personRows.length,
293
+ updated_by: createdBy,
294
+ });
295
+ return {
296
+ totalScore: personRows.length ? requestTotal : null,
297
+ averageScore: personRows.length ? average : null,
298
+ employeeCount: personRows.length,
299
+ };
300
+ }
@@ -0,0 +1,3 @@
1
+ export declare function resolveSlaRequestStatusFromNative(nativeStatus: unknown, fallback?: string): string;
2
+ /** Maps portal/native request status to a value stored on `sla_requests.status`. */
3
+ export declare function mapPortalRequestStatusToSla(status: string): string | null;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveSlaRequestStatusFromNative = resolveSlaRequestStatusFromNative;
4
+ exports.mapPortalRequestStatusToSla = mapPortalRequestStatusToSla;
5
+ const SlaRequestModel_1 = require("../models/SlaRequestModel");
6
+ const SLA_MIRROR_STATUS_CANONICAL = {
7
+ pending: SlaRequestModel_1.SlaRequestStatus.PENDING,
8
+ "in progress": SlaRequestModel_1.SlaRequestStatus.IN_PROGRESS,
9
+ approved: SlaRequestModel_1.SlaRequestStatus.APPROVED,
10
+ rejected: SlaRequestModel_1.SlaRequestStatus.REJECTED,
11
+ assigned: SlaRequestModel_1.SlaRequestStatus.ASSIGNED,
12
+ completed: SlaRequestModel_1.SlaRequestStatus.COMPLETED,
13
+ closed: "Closed",
14
+ returned: "Returned",
15
+ rfc: "RFC",
16
+ "request for change": "Request For Change"
17
+ };
18
+ function resolveSlaRequestStatusFromNative(nativeStatus, fallback = SlaRequestModel_1.SlaRequestStatus.PENDING) {
19
+ const trimmed = String(nativeStatus ?? "").trim();
20
+ if (!trimmed) {
21
+ return fallback;
22
+ }
23
+ const canonical = SLA_MIRROR_STATUS_CANONICAL[trimmed.toLowerCase()];
24
+ return canonical ?? trimmed;
25
+ }
26
+ /** Maps portal/native request status to a value stored on `sla_requests.status`. */
27
+ function mapPortalRequestStatusToSla(status) {
28
+ const resolved = resolveSlaRequestStatusFromNative(status, "");
29
+ if (!resolved) {
30
+ return null;
31
+ }
32
+ if (String(status || "").trim().toLowerCase() === "cancelled") {
33
+ return SlaRequestModel_1.SlaRequestStatus.REJECTED;
34
+ }
35
+ return resolved;
36
+ }
package/dist/index.d.ts CHANGED
@@ -411,7 +411,7 @@ export type { FmServicesNotificationConfigRecipient, CollectFmServicesNotificati
411
411
  export * from './models/MoodleUsersModel';
412
412
  export { EvaluationEligibilitySetting, EvaluationEligibilitySettingEmployee, } from './models/EvaluationEligibilitySettingModel';
413
413
  export { isEvaluationEligibilityWindowOpen, isCalendarMonthInEligibilityRange, mmDdWindowsOverlap, mmDdSortKey, parseMonthDay, parseEligibilityDateRange, parseEvaluationEndDay, parseMonthRange, } from './helpers/evaluation-eligibility.utils';
414
- export { DEFAULT_MAX_EMPLOYEES_PER_REQUEST, normalizeEmployeeSubmissions, normalizeEmployeeDraftSubmissions, resolveMaxEmployeesPerRequest, persistEmployeeEvaluationScores, } from './helpers/employee-evaluation-request.utils';
414
+ export { DEFAULT_MAX_EMPLOYEES_PER_REQUEST, normalizeEmployeeSubmissions, normalizeEmployeeDraftSubmissions, resolveMaxEmployeesPerRequest, persistEmployeeEvaluationScores, syncEmployeeEvaluationScores, } from './helpers/employee-evaluation-request.utils';
415
415
  export type { EmployeeEvaluationSubmitAnswer, EmployeeEvaluationSubmitEmployee, NormalizedEmployeeSubmission, } from './helpers/employee-evaluation-request.utils';
416
416
  export { EmployeeEvaluationRequests, EmployeeEvaluationRequestStatus, EmployeeEvaluationRoutingBucket, } from './models/EmployeeEvaluationRequestModel';
417
417
  export { EmployeeEvaluation, EmployeeEvaluationUsFeedback } from './models/EmployeeEvaluationModel';
package/dist/index.js CHANGED
@@ -15,9 +15,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.collectFmServicesNotificationConfigRecipients = exports.ServicesNotificationTriggerType = exports.AppointmentWorkFlowStatus = exports.AppointmentMessageType = exports.AppointmentAttendeeStatus = exports.AppointmentApprovalStatus = exports.AppointmentAttendees = exports.AppointmentWorkFlow = exports.AppointmentRequestChat = exports.AppointmentRequestAttachment = exports.AppointmentApprovalDetails = exports.AppointmentRequestStatus = exports.AppointmentRequests = exports.TravelClass = exports.MissionTravelWorkFlowStatus = exports.MissionTravelApprovalStatus = exports.AllowanceRatio = exports.DecisionType = exports.MissionType = exports.MissionTravelStatus = exports.GatePassMessageType = exports.GatePassWorkFlowStatus = exports.GatePassApprovalStatus = exports.GatePassType = exports.GatePassRequestStatus = exports.SecurityDeptMessageType = exports.SecurityDeptAccessType = exports.SecurityDeptRequestStatus = exports.RetiredCardMessageType = exports.RetiredCardWorkFlowStatus = exports.RetiredCardApprovalStatus = exports.RetiredCardAccessType = exports.RetiredCardRequestStatus = exports.TitleCategory = exports.ProfileUpdateRequestStatus = exports.StayAfterHoursTransactionStatus = exports.StayAfterHoursTransaction = exports.StayAfterHoursBalance = exports.EarlyCheckoutTransactionStatus = exports.EarlyCheckoutTransaction = exports.EarlyCheckoutFrequency = exports.EarlyCheckoutConfiguration = exports.EarlyCheckoutBalance = exports.LeaveTransactionStatus = exports.LeaveTransaction = exports.LeaveConfigurationGrades = exports.enumFrequency = exports.LeaveConfiguration = exports.ParcelDepartmentCategory = exports.RegisterCandidateExperienceActivity = void 0;
18
- exports.InitiatorEmployeeNominationApprovalDetails = exports.InitiatorInitiativeType = exports.InitiatorEmployeeNominationRequestStatus = exports.InitiatorEmployeeNominationRequests = exports.IpeGrievanceRequestAttachment = exports.IpeGrievanceMessageType = exports.IpeGrievanceRequestChat = exports.IpeGrievanceWorkFlowStatus = exports.IpeGrievanceWorkFlow = exports.IpeGrievanceApprovalStatus = exports.IpeGrievanceApprovalDetails = exports.IpeGrievancePeriodRating = exports.IpeGrievanceExemptionReason = exports.IpeGrievancePeriodType = exports.IpeGrievanceFinalEvaluationResult = exports.IpeGrievanceRequestStatus = exports.IpeGrievanceRequests = exports.EmployeeEvaluationRequestAttachment = exports.EmployeeEvaluationMessageType = exports.EmployeeEvaluationRequestChat = exports.EmployeeEvaluationWorkFlowStatus = exports.EmployeeEvaluationWorkFlow = exports.EmployeeEvaluationApprovalStatus = exports.EmployeeEvaluationApprovalDetails = exports.EmployeeEvaluationPersonScore = exports.EmployeeEvaluationAnswers = exports.EmployeeEvaluationUsFeedback = exports.EmployeeEvaluation = exports.EmployeeEvaluationRoutingBucket = exports.EmployeeEvaluationRequestStatus = exports.EmployeeEvaluationRequests = exports.persistEmployeeEvaluationScores = exports.resolveMaxEmployeesPerRequest = exports.normalizeEmployeeDraftSubmissions = exports.normalizeEmployeeSubmissions = exports.DEFAULT_MAX_EMPLOYEES_PER_REQUEST = exports.parseMonthRange = exports.parseEvaluationEndDay = exports.parseEligibilityDateRange = exports.parseMonthDay = exports.mmDdSortKey = exports.mmDdWindowsOverlap = exports.isCalendarMonthInEligibilityRange = exports.isEvaluationEligibilityWindowOpen = exports.EvaluationEligibilitySettingEmployee = exports.EvaluationEligibilitySetting = exports.isPortalAdminFromRequest = exports.userHasPortalAdminRole = exports.parsePortalUserIdFromRequest = exports.sendFmServicesNotificationConfigNotifications = void 0;
19
- exports.EvaluationFormSection = exports.EvaluationFormType = exports.EvaluationForm = exports.EmbassyEvaluationRequestAttachment = exports.EmbassyEvaluationMessageType = exports.EmbassyEvaluationRequestChat = exports.EmbassyEvaluationWorkFlowStatus = exports.EmbassyEvaluationWorkFlow = exports.EmbassyEvaluationApprovalStatus = exports.EmbassyEvaluationApprovalDetails = exports.EmbassyEvaluationRequestStatus = exports.EmbassyEvaluationRequests = exports.EmbassyEvaluationResponse = exports.EmbassyEvaluationAssignmentStatus = exports.EmbassyEvaluationAssignment = exports.EmbassyEvaluationCycleStatus = exports.EmbassyEvaluationCycle = exports.EmployeeOfMonthSupportNominationRequestAttachment = exports.EmployeeOfMonthSupportNominationMessageType = exports.EmployeeOfMonthSupportNominationRequestChat = exports.EmployeeOfMonthSupportNominationWorkFlowStatus = exports.EmployeeOfMonthSupportNominationWorkFlow = exports.EmployeeOfMonthSupportNominationApprovalStatus = exports.EmployeeOfMonthSupportNominationApprovalDetails = exports.EmployeeOfMonthSupportNominationRequestStatus = exports.EmployeeOfMonthSupportNominationRequests = exports.EmployeeOfMonthNominationRequestAttachment = exports.EmployeeOfMonthNominationMessageType = exports.EmployeeOfMonthNominationRequestChat = exports.EmployeeOfMonthNominationWorkFlowStatus = exports.EmployeeOfMonthNominationWorkFlow = exports.EmployeeOfMonthNominationApprovalStatus = exports.EmployeeOfMonthNominationApprovalDetails = exports.EmployeeOfMonthNominationRequestStatus = exports.EmployeeOfMonthNominationRequests = exports.InnovativeEmployeeNominationRequestAttachment = exports.InnovativeEmployeeNominationMessageType = exports.InnovativeEmployeeNominationRequestChat = exports.InnovativeEmployeeNominationWorkFlowStatus = exports.InnovativeEmployeeNominationWorkFlow = exports.InnovativeEmployeeNominationApprovalStatus = exports.InnovativeEmployeeNominationApprovalDetails = exports.InnovativeEmployeeNominationRequestStatus = exports.InnovativeEmployeeNominationRequests = exports.InitiatorEmployeeNominationRequestAttachment = exports.InitiatorEmployeeNominationMessageType = exports.InitiatorEmployeeNominationRequestChat = exports.InitiatorEmployeeNominationWorkFlowStatus = exports.InitiatorEmployeeNominationWorkFlow = exports.InitiatorEmployeeNominationApprovalStatus = void 0;
20
- exports.EvaluationFormQuestionType = exports.EvaluationFormQuestion = void 0;
18
+ exports.InitiatorInitiativeType = exports.InitiatorEmployeeNominationRequestStatus = exports.InitiatorEmployeeNominationRequests = exports.IpeGrievanceRequestAttachment = exports.IpeGrievanceMessageType = exports.IpeGrievanceRequestChat = exports.IpeGrievanceWorkFlowStatus = exports.IpeGrievanceWorkFlow = exports.IpeGrievanceApprovalStatus = exports.IpeGrievanceApprovalDetails = exports.IpeGrievancePeriodRating = exports.IpeGrievanceExemptionReason = exports.IpeGrievancePeriodType = exports.IpeGrievanceFinalEvaluationResult = exports.IpeGrievanceRequestStatus = exports.IpeGrievanceRequests = exports.EmployeeEvaluationRequestAttachment = exports.EmployeeEvaluationMessageType = exports.EmployeeEvaluationRequestChat = exports.EmployeeEvaluationWorkFlowStatus = exports.EmployeeEvaluationWorkFlow = exports.EmployeeEvaluationApprovalStatus = exports.EmployeeEvaluationApprovalDetails = exports.EmployeeEvaluationPersonScore = exports.EmployeeEvaluationAnswers = exports.EmployeeEvaluationUsFeedback = exports.EmployeeEvaluation = exports.EmployeeEvaluationRoutingBucket = exports.EmployeeEvaluationRequestStatus = exports.EmployeeEvaluationRequests = exports.syncEmployeeEvaluationScores = exports.persistEmployeeEvaluationScores = exports.resolveMaxEmployeesPerRequest = exports.normalizeEmployeeDraftSubmissions = exports.normalizeEmployeeSubmissions = exports.DEFAULT_MAX_EMPLOYEES_PER_REQUEST = exports.parseMonthRange = exports.parseEvaluationEndDay = exports.parseEligibilityDateRange = exports.parseMonthDay = exports.mmDdSortKey = exports.mmDdWindowsOverlap = exports.isCalendarMonthInEligibilityRange = exports.isEvaluationEligibilityWindowOpen = exports.EvaluationEligibilitySettingEmployee = exports.EvaluationEligibilitySetting = exports.isPortalAdminFromRequest = exports.userHasPortalAdminRole = exports.parsePortalUserIdFromRequest = exports.sendFmServicesNotificationConfigNotifications = void 0;
19
+ exports.EvaluationFormType = exports.EvaluationForm = exports.EmbassyEvaluationRequestAttachment = exports.EmbassyEvaluationMessageType = exports.EmbassyEvaluationRequestChat = exports.EmbassyEvaluationWorkFlowStatus = exports.EmbassyEvaluationWorkFlow = exports.EmbassyEvaluationApprovalStatus = exports.EmbassyEvaluationApprovalDetails = exports.EmbassyEvaluationRequestStatus = exports.EmbassyEvaluationRequests = exports.EmbassyEvaluationResponse = exports.EmbassyEvaluationAssignmentStatus = exports.EmbassyEvaluationAssignment = exports.EmbassyEvaluationCycleStatus = exports.EmbassyEvaluationCycle = exports.EmployeeOfMonthSupportNominationRequestAttachment = exports.EmployeeOfMonthSupportNominationMessageType = exports.EmployeeOfMonthSupportNominationRequestChat = exports.EmployeeOfMonthSupportNominationWorkFlowStatus = exports.EmployeeOfMonthSupportNominationWorkFlow = exports.EmployeeOfMonthSupportNominationApprovalStatus = exports.EmployeeOfMonthSupportNominationApprovalDetails = exports.EmployeeOfMonthSupportNominationRequestStatus = exports.EmployeeOfMonthSupportNominationRequests = exports.EmployeeOfMonthNominationRequestAttachment = exports.EmployeeOfMonthNominationMessageType = exports.EmployeeOfMonthNominationRequestChat = exports.EmployeeOfMonthNominationWorkFlowStatus = exports.EmployeeOfMonthNominationWorkFlow = exports.EmployeeOfMonthNominationApprovalStatus = exports.EmployeeOfMonthNominationApprovalDetails = exports.EmployeeOfMonthNominationRequestStatus = exports.EmployeeOfMonthNominationRequests = exports.InnovativeEmployeeNominationRequestAttachment = exports.InnovativeEmployeeNominationMessageType = exports.InnovativeEmployeeNominationRequestChat = exports.InnovativeEmployeeNominationWorkFlowStatus = exports.InnovativeEmployeeNominationWorkFlow = exports.InnovativeEmployeeNominationApprovalStatus = exports.InnovativeEmployeeNominationApprovalDetails = exports.InnovativeEmployeeNominationRequestStatus = exports.InnovativeEmployeeNominationRequests = exports.InitiatorEmployeeNominationRequestAttachment = exports.InitiatorEmployeeNominationMessageType = exports.InitiatorEmployeeNominationRequestChat = exports.InitiatorEmployeeNominationWorkFlowStatus = exports.InitiatorEmployeeNominationWorkFlow = exports.InitiatorEmployeeNominationApprovalStatus = exports.InitiatorEmployeeNominationApprovalDetails = void 0;
20
+ exports.EvaluationFormQuestionType = exports.EvaluationFormQuestion = exports.EvaluationFormSection = void 0;
21
21
  __exportStar(require("./models/user"), exports);
22
22
  __exportStar(require("./models/role"), exports);
23
23
  __exportStar(require("./models/user-sessions"), exports);
@@ -520,6 +520,7 @@ Object.defineProperty(exports, "normalizeEmployeeSubmissions", { enumerable: tru
520
520
  Object.defineProperty(exports, "normalizeEmployeeDraftSubmissions", { enumerable: true, get: function () { return employee_evaluation_request_utils_1.normalizeEmployeeDraftSubmissions; } });
521
521
  Object.defineProperty(exports, "resolveMaxEmployeesPerRequest", { enumerable: true, get: function () { return employee_evaluation_request_utils_1.resolveMaxEmployeesPerRequest; } });
522
522
  Object.defineProperty(exports, "persistEmployeeEvaluationScores", { enumerable: true, get: function () { return employee_evaluation_request_utils_1.persistEmployeeEvaluationScores; } });
523
+ Object.defineProperty(exports, "syncEmployeeEvaluationScores", { enumerable: true, get: function () { return employee_evaluation_request_utils_1.syncEmployeeEvaluationScores; } });
523
524
  var EmployeeEvaluationRequestModel_1 = require("./models/EmployeeEvaluationRequestModel");
524
525
  Object.defineProperty(exports, "EmployeeEvaluationRequests", { enumerable: true, get: function () { return EmployeeEvaluationRequestModel_1.EmployeeEvaluationRequests; } });
525
526
  Object.defineProperty(exports, "EmployeeEvaluationRequestStatus", { enumerable: true, get: function () { return EmployeeEvaluationRequestModel_1.EmployeeEvaluationRequestStatus; } });
@@ -0,0 +1,14 @@
1
+ import { BaseModel } from './BaseModel';
2
+ export declare enum EmbassyEvaluationDepartmentSettingStatus {
3
+ ACTIVE = "Active",
4
+ INACTIVE = "Inactive"
5
+ }
6
+ /** Required department–section pairs that participate in embassy evaluations. */
7
+ export declare class EmbassyEvaluationDepartmentSetting extends BaseModel {
8
+ department_id: number;
9
+ section_id: number;
10
+ /** Department evaluation form (EvaluationFormType.DEPARTMENT). */
11
+ form_id: number;
12
+ is_mandatory: boolean;
13
+ status: EmbassyEvaluationDepartmentSettingStatus;
14
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.EmbassyEvaluationDepartmentSetting = exports.EmbassyEvaluationDepartmentSettingStatus = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const BaseModel_1 = require("./BaseModel");
15
+ var EmbassyEvaluationDepartmentSettingStatus;
16
+ (function (EmbassyEvaluationDepartmentSettingStatus) {
17
+ EmbassyEvaluationDepartmentSettingStatus["ACTIVE"] = "Active";
18
+ EmbassyEvaluationDepartmentSettingStatus["INACTIVE"] = "Inactive";
19
+ })(EmbassyEvaluationDepartmentSettingStatus || (exports.EmbassyEvaluationDepartmentSettingStatus = EmbassyEvaluationDepartmentSettingStatus = {}));
20
+ /** Required department–section pairs that participate in embassy evaluations. */
21
+ let EmbassyEvaluationDepartmentSetting = class EmbassyEvaluationDepartmentSetting extends BaseModel_1.BaseModel {
22
+ };
23
+ exports.EmbassyEvaluationDepartmentSetting = EmbassyEvaluationDepartmentSetting;
24
+ __decorate([
25
+ (0, typeorm_1.Column)({ type: 'int', nullable: false }),
26
+ __metadata("design:type", Number)
27
+ ], EmbassyEvaluationDepartmentSetting.prototype, "department_id", void 0);
28
+ __decorate([
29
+ (0, typeorm_1.Column)({ type: 'int', nullable: false }),
30
+ __metadata("design:type", Number)
31
+ ], EmbassyEvaluationDepartmentSetting.prototype, "section_id", void 0);
32
+ __decorate([
33
+ (0, typeorm_1.Column)({ type: 'int', nullable: false }),
34
+ __metadata("design:type", Number)
35
+ ], EmbassyEvaluationDepartmentSetting.prototype, "form_id", void 0);
36
+ __decorate([
37
+ (0, typeorm_1.Column)({ type: 'boolean', default: true, nullable: false }),
38
+ __metadata("design:type", Boolean)
39
+ ], EmbassyEvaluationDepartmentSetting.prototype, "is_mandatory", void 0);
40
+ __decorate([
41
+ (0, typeorm_1.Column)({
42
+ type: 'enum',
43
+ enum: EmbassyEvaluationDepartmentSettingStatus,
44
+ enumName: 'embassy_eval_dept_setting_status_enum',
45
+ default: EmbassyEvaluationDepartmentSettingStatus.ACTIVE,
46
+ nullable: false,
47
+ }),
48
+ __metadata("design:type", String)
49
+ ], EmbassyEvaluationDepartmentSetting.prototype, "status", void 0);
50
+ exports.EmbassyEvaluationDepartmentSetting = EmbassyEvaluationDepartmentSetting = __decorate([
51
+ (0, typeorm_1.Entity)({ name: 'embassy_evaluation_department_settings' }),
52
+ (0, typeorm_1.Index)('uq_embassy_eval_dept_setting', ['department_id', 'section_id'], {
53
+ unique: true,
54
+ where: '"is_deleted" = false',
55
+ })
56
+ ], EmbassyEvaluationDepartmentSetting);
@@ -0,0 +1,16 @@
1
+ import { BaseModel } from './BaseModel';
2
+ export declare class EvaluationSection extends BaseModel {
3
+ section_name: string;
4
+ section_code: string | null;
5
+ sequence: number;
6
+ is_active: boolean;
7
+ questions?: EvaluationQuestion[];
8
+ }
9
+ export declare class EvaluationQuestion extends BaseModel {
10
+ evaluation_section: EvaluationSection;
11
+ question_text: string;
12
+ sequence: number;
13
+ /** Max score for this question (default 4 per project scale 0–4). */
14
+ max_score: number;
15
+ is_active: boolean;
16
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.EvaluationQuestion = exports.EvaluationSection = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const BaseModel_1 = require("./BaseModel");
15
+ let EvaluationSection = class EvaluationSection extends BaseModel_1.BaseModel {
16
+ };
17
+ exports.EvaluationSection = EvaluationSection;
18
+ __decorate([
19
+ (0, typeorm_1.Column)({ type: 'varchar', length: 255 }),
20
+ __metadata("design:type", String)
21
+ ], EvaluationSection.prototype, "section_name", void 0);
22
+ __decorate([
23
+ (0, typeorm_1.Column)({ type: 'varchar', length: 64, nullable: true }),
24
+ __metadata("design:type", Object)
25
+ ], EvaluationSection.prototype, "section_code", void 0);
26
+ __decorate([
27
+ (0, typeorm_1.Column)({ type: 'int', default: 0 }),
28
+ __metadata("design:type", Number)
29
+ ], EvaluationSection.prototype, "sequence", void 0);
30
+ __decorate([
31
+ (0, typeorm_1.Column)({ type: 'boolean', default: true }),
32
+ __metadata("design:type", Boolean)
33
+ ], EvaluationSection.prototype, "is_active", void 0);
34
+ __decorate([
35
+ (0, typeorm_1.OneToMany)(() => EvaluationQuestion, (q) => q.evaluation_section),
36
+ __metadata("design:type", Array)
37
+ ], EvaluationSection.prototype, "questions", void 0);
38
+ exports.EvaluationSection = EvaluationSection = __decorate([
39
+ (0, typeorm_1.Entity)({ name: 'evaluation_sections' })
40
+ ], EvaluationSection);
41
+ let EvaluationQuestion = class EvaluationQuestion extends BaseModel_1.BaseModel {
42
+ };
43
+ exports.EvaluationQuestion = EvaluationQuestion;
44
+ __decorate([
45
+ (0, typeorm_1.ManyToOne)(() => EvaluationSection, (s) => s.questions, { onDelete: 'CASCADE' }),
46
+ (0, typeorm_1.JoinColumn)({ name: 'evaluation_section_id' }),
47
+ __metadata("design:type", EvaluationSection)
48
+ ], EvaluationQuestion.prototype, "evaluation_section", void 0);
49
+ __decorate([
50
+ (0, typeorm_1.Column)({ type: 'text' }),
51
+ __metadata("design:type", String)
52
+ ], EvaluationQuestion.prototype, "question_text", void 0);
53
+ __decorate([
54
+ (0, typeorm_1.Column)({ type: 'int', default: 0 }),
55
+ __metadata("design:type", Number)
56
+ ], EvaluationQuestion.prototype, "sequence", void 0);
57
+ __decorate([
58
+ (0, typeorm_1.Column)({ type: 'int', default: 4 }),
59
+ __metadata("design:type", Number)
60
+ ], EvaluationQuestion.prototype, "max_score", void 0);
61
+ __decorate([
62
+ (0, typeorm_1.Column)({ type: 'boolean', default: true }),
63
+ __metadata("design:type", Boolean)
64
+ ], EvaluationQuestion.prototype, "is_active", void 0);
65
+ exports.EvaluationQuestion = EvaluationQuestion = __decorate([
66
+ (0, typeorm_1.Entity)({ name: 'evaluation_questions' })
67
+ ], EvaluationQuestion);
@@ -0,0 +1,10 @@
1
+ import { BaseModel } from './BaseModel';
2
+ import { EvaluationSectionMaster } from './EvaluationSectionMasterModel';
3
+ export declare class EvaluationQuestionMaster extends BaseModel {
4
+ evaluation_section: EvaluationSectionMaster;
5
+ question_text: string;
6
+ sequence_order: number;
7
+ /** Max score for this question (evaluation scale 0–4). */
8
+ max_score: number;
9
+ is_active: boolean;
10
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.EvaluationQuestionMaster = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const BaseModel_1 = require("./BaseModel");
15
+ const EvaluationSectionMasterModel_1 = require("./EvaluationSectionMasterModel");
16
+ let EvaluationQuestionMaster = class EvaluationQuestionMaster extends BaseModel_1.BaseModel {
17
+ };
18
+ exports.EvaluationQuestionMaster = EvaluationQuestionMaster;
19
+ __decorate([
20
+ (0, typeorm_1.ManyToOne)(() => EvaluationSectionMasterModel_1.EvaluationSectionMaster, { onDelete: 'CASCADE' }),
21
+ (0, typeorm_1.JoinColumn)({ name: 'evaluation_section_id' }),
22
+ __metadata("design:type", EvaluationSectionMasterModel_1.EvaluationSectionMaster)
23
+ ], EvaluationQuestionMaster.prototype, "evaluation_section", void 0);
24
+ __decorate([
25
+ (0, typeorm_1.Column)({ type: 'text', nullable: false }),
26
+ __metadata("design:type", String)
27
+ ], EvaluationQuestionMaster.prototype, "question_text", void 0);
28
+ __decorate([
29
+ (0, typeorm_1.Column)({ type: 'int', default: 0 }),
30
+ __metadata("design:type", Number)
31
+ ], EvaluationQuestionMaster.prototype, "sequence_order", void 0);
32
+ __decorate([
33
+ (0, typeorm_1.Column)({ type: 'int', default: 4 }),
34
+ __metadata("design:type", Number)
35
+ ], EvaluationQuestionMaster.prototype, "max_score", void 0);
36
+ __decorate([
37
+ (0, typeorm_1.Column)({ type: 'boolean', default: true }),
38
+ __metadata("design:type", Boolean)
39
+ ], EvaluationQuestionMaster.prototype, "is_active", void 0);
40
+ exports.EvaluationQuestionMaster = EvaluationQuestionMaster = __decorate([
41
+ (0, typeorm_1.Entity)({ name: 'evaluation_question_master' })
42
+ ], EvaluationQuestionMaster);
@@ -0,0 +1,7 @@
1
+ import { BaseModel } from './BaseModel';
2
+ export declare class EvaluationSectionMaster extends BaseModel {
3
+ section_code: string;
4
+ section_title: string;
5
+ sequence_order: number;
6
+ is_active: boolean;
7
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.EvaluationSectionMaster = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const BaseModel_1 = require("./BaseModel");
15
+ let EvaluationSectionMaster = class EvaluationSectionMaster extends BaseModel_1.BaseModel {
16
+ };
17
+ exports.EvaluationSectionMaster = EvaluationSectionMaster;
18
+ __decorate([
19
+ (0, typeorm_1.Column)({ type: 'varchar', length: 64, nullable: false }),
20
+ __metadata("design:type", String)
21
+ ], EvaluationSectionMaster.prototype, "section_code", void 0);
22
+ __decorate([
23
+ (0, typeorm_1.Column)({ type: 'varchar', length: 500, nullable: false }),
24
+ __metadata("design:type", String)
25
+ ], EvaluationSectionMaster.prototype, "section_title", void 0);
26
+ __decorate([
27
+ (0, typeorm_1.Column)({ type: 'int', default: 0 }),
28
+ __metadata("design:type", Number)
29
+ ], EvaluationSectionMaster.prototype, "sequence_order", void 0);
30
+ __decorate([
31
+ (0, typeorm_1.Column)({ type: 'boolean', default: true }),
32
+ __metadata("design:type", Boolean)
33
+ ], EvaluationSectionMaster.prototype, "is_active", void 0);
34
+ exports.EvaluationSectionMaster = EvaluationSectionMaster = __decorate([
35
+ (0, typeorm_1.Entity)({ name: 'evaluation_section_master' })
36
+ ], EvaluationSectionMaster);
@@ -0,0 +1,60 @@
1
+ import { BaseModel } from './BaseModel';
2
+ /** Request lifecycle */
3
+ export type EvaluationRequestStatusValue = 'draft' | 'submitted' | 'in_progress' | 'completed' | 'rejected';
4
+ /** Current workflow lane */
5
+ export type EvaluationStepKeyValue = 'evaluation_office_1' | 'us_feedback' | 'evaluation_office_2' | 'completed';
6
+ export declare class EvaluationRequest extends BaseModel {
7
+ user_id: number;
8
+ department_id: number;
9
+ section_id: number;
10
+ evaluation_year: number;
11
+ evaluation_period: string;
12
+ evaluation_month: number;
13
+ status: EvaluationRequestStatusValue;
14
+ current_step_key: EvaluationStepKeyValue;
15
+ /** From `departments.undersecretary_department_id` of raiser’s department — routes US feedback pool. */
16
+ undersecretary_department_id: number | null;
17
+ raiser_department_id: number;
18
+ raiser_section_id: number;
19
+ workflow_execution_id: string | null;
20
+ employee_evaluations?: EvaluationEmployeeEvaluation[];
21
+ approvals?: EvaluationApproval[];
22
+ chats?: EvaluationChat[];
23
+ attachments?: EvaluationAttachment[];
24
+ }
25
+ export declare class EvaluationEmployeeEvaluation extends BaseModel {
26
+ evaluation_request: EvaluationRequest;
27
+ user_id: number;
28
+ /** Snapshot of section/question structure or metadata (not a substitute for normalized answers). */
29
+ dynamic_evaluation_form: Record<string, unknown>;
30
+ is_rca: boolean;
31
+ /** US Political / Finance pool: Excellent | Very_good */
32
+ us_feedback: string | null;
33
+ answers?: EvaluationEmployeeAnswer[];
34
+ }
35
+ export declare class EvaluationEmployeeAnswer extends BaseModel {
36
+ evaluation_employee_evaluation: EvaluationEmployeeEvaluation;
37
+ evaluation_section_id: number;
38
+ evaluation_question_id: number;
39
+ score: number;
40
+ remarks: string | null;
41
+ }
42
+ export declare class EvaluationApproval extends BaseModel {
43
+ evaluation_request: EvaluationRequest;
44
+ step_key: string;
45
+ step_order: number;
46
+ approval_status: string;
47
+ approver_user_id: number | null;
48
+ comments: string | null;
49
+ }
50
+ export declare class EvaluationChat extends BaseModel {
51
+ evaluation_request: EvaluationRequest;
52
+ sender_user_id: number;
53
+ message_text: string;
54
+ }
55
+ export declare class EvaluationAttachment extends BaseModel {
56
+ evaluation_request: EvaluationRequest;
57
+ file_name: string;
58
+ file_url: string;
59
+ uploaded_by_user_id: number;
60
+ }