@platform-modules/civil-aviation-authority 2.3.282 → 2.3.291

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 (272) hide show
  1. package/dist/i18n/workflow-chat-i18n.json +162 -1
  2. package/dist/i18n/workflow-chat-message.builder.d.ts +178 -1
  3. package/dist/i18n/workflow-chat-message.builder.js +406 -13
  4. package/dist/models/AccessCardChatModel.d.ts +2 -0
  5. package/dist/models/AccessCardChatModel.js +8 -0
  6. package/dist/models/AccessCardWorkflowModel.d.ts +2 -0
  7. package/dist/models/AccessCardWorkflowModel.js +8 -0
  8. package/dist/models/AccommodationChatModel.d.ts +2 -0
  9. package/dist/models/AccommodationChatModel.js +8 -0
  10. package/dist/models/AccommodationWorkflowModel.d.ts +2 -0
  11. package/dist/models/AccommodationWorkflowModel.js +8 -0
  12. package/dist/models/AirportEntryPermitChatModel.d.ts +2 -0
  13. package/dist/models/AirportEntryPermitChatModel.js +8 -0
  14. package/dist/models/AirportEntryPermitWorkflowModel.d.ts +2 -0
  15. package/dist/models/AirportEntryPermitWorkflowModel.js +8 -0
  16. package/dist/models/AnnualTrainingPlanChatModel.d.ts +2 -0
  17. package/dist/models/AnnualTrainingPlanChatModel.js +8 -0
  18. package/dist/models/AnnualTrainingPlanWorkflowModel.d.ts +2 -0
  19. package/dist/models/AnnualTrainingPlanWorkflowModel.js +8 -0
  20. package/dist/models/AppealAgainstAdministrativeDecisionRequestModel.d.ts +4 -4
  21. package/dist/models/AppealAgainstAdministrativeDecisionRequestModel.js +8 -8
  22. package/dist/models/AssignTasksEmpChatModel.d.ts +2 -0
  23. package/dist/models/AssignTasksEmpChatModel.js +8 -0
  24. package/dist/models/AssignTasksEmpWorkflowModel.d.ts +2 -0
  25. package/dist/models/AssignTasksEmpWorkflowModel.js +8 -0
  26. package/dist/models/ComplaintLostPropertyReportChatModel.d.ts +2 -0
  27. package/dist/models/ComplaintLostPropertyReportChatModel.js +8 -0
  28. package/dist/models/ComplaintLostPropertyReportWorkflowModel.d.ts +2 -0
  29. package/dist/models/ComplaintLostPropertyReportWorkflowModel.js +8 -0
  30. package/dist/models/CyberSecurityAuditRequestModel.d.ts +2 -0
  31. package/dist/models/CyberSecurityAuditRequestModel.js +8 -0
  32. package/dist/models/CyberSecurityRiskManagementRiskModel.d.ts +2 -0
  33. package/dist/models/CyberSecurityRiskManagementRiskModel.js +8 -0
  34. package/dist/models/DutyMissionChatModel.d.ts +2 -0
  35. package/dist/models/DutyMissionChatModel.js +8 -0
  36. package/dist/models/DutyMissionWorkflowModel.d.ts +2 -0
  37. package/dist/models/DutyMissionWorkflowModel.js +8 -0
  38. package/dist/models/EventSupportChatModel.d.ts +2 -0
  39. package/dist/models/EventSupportChatModel.js +8 -0
  40. package/dist/models/EventSupportWorkflowModel.d.ts +2 -0
  41. package/dist/models/EventSupportWorkflowModel.js +8 -0
  42. package/dist/models/FollowUpReportChatModel.d.ts +2 -0
  43. package/dist/models/FollowUpReportChatModel.js +8 -0
  44. package/dist/models/FollowUpReportWorkflowModel.d.ts +2 -0
  45. package/dist/models/FollowUpReportWorkflowModel.js +8 -0
  46. package/dist/models/FoodChatModel.d.ts +2 -0
  47. package/dist/models/FoodChatModel.js +8 -0
  48. package/dist/models/FoodWorkflowModel.d.ts +2 -0
  49. package/dist/models/FoodWorkflowModel.js +8 -0
  50. package/dist/models/HallChatModel.d.ts +2 -0
  51. package/dist/models/HallChatModel.js +8 -0
  52. package/dist/models/HallWorkflowModel.d.ts +2 -0
  53. package/dist/models/HallWorkflowModel.js +8 -0
  54. package/dist/models/HotelChatModel.d.ts +2 -0
  55. package/dist/models/HotelChatModel.js +8 -0
  56. package/dist/models/HotelWorkFlowModel.d.ts +2 -0
  57. package/dist/models/HotelWorkFlowModel.js +8 -0
  58. package/dist/models/HousingContractCancelChatModel.d.ts +2 -0
  59. package/dist/models/HousingContractCancelChatModel.js +8 -0
  60. package/dist/models/HousingContractCancelWorkflowModel.d.ts +2 -0
  61. package/dist/models/HousingContractCancelWorkflowModel.js +8 -0
  62. package/dist/models/HousingContractRenewalChatModel.d.ts +2 -0
  63. package/dist/models/HousingContractRenewalChatModel.js +8 -0
  64. package/dist/models/HousingContractRenewalWorkflowModel.d.ts +2 -0
  65. package/dist/models/HousingContractRenewalWorkflowModel.js +8 -0
  66. package/dist/models/HrServiceChatModel.d.ts +2 -0
  67. package/dist/models/HrServiceChatModel.js +8 -0
  68. package/dist/models/HrServiceWorkflowModel.d.ts +2 -0
  69. package/dist/models/HrServiceWorkflowModel.js +8 -0
  70. package/dist/models/ITRequestChatModel.d.ts +2 -0
  71. package/dist/models/ITRequestChatModel.js +8 -0
  72. package/dist/models/ImportExportMaterialChatModel.d.ts +2 -0
  73. package/dist/models/ImportExportMaterialChatModel.js +8 -0
  74. package/dist/models/ImportExportMaterialWorkflowModel.d.ts +2 -0
  75. package/dist/models/ImportExportMaterialWorkflowModel.js +8 -0
  76. package/dist/models/InformationSecurityChatModel.d.ts +2 -0
  77. package/dist/models/InformationSecurityChatModel.js +8 -0
  78. package/dist/models/InformationSecurityWorkflowModel.d.ts +2 -0
  79. package/dist/models/InformationSecurityWorkflowModel.js +8 -0
  80. package/dist/models/ItWorkflowModel.d.ts +2 -0
  81. package/dist/models/ItWorkflowModel.js +8 -0
  82. package/dist/models/LegalComplaintChatModel.d.ts +2 -0
  83. package/dist/models/LegalComplaintChatModel.js +8 -0
  84. package/dist/models/LegalComplaintWorkflowModel.d.ts +2 -0
  85. package/dist/models/LegalComplaintWorkflowModel.js +8 -0
  86. package/dist/models/LegalConsultationChatModel.d.ts +2 -0
  87. package/dist/models/LegalConsultationChatModel.js +8 -0
  88. package/dist/models/LegalConsultationWorkflowModel.d.ts +2 -0
  89. package/dist/models/LegalConsultationWorkflowModel.js +8 -0
  90. package/dist/models/LegalContractReviewChatModel.d.ts +2 -0
  91. package/dist/models/LegalContractReviewChatModel.js +8 -0
  92. package/dist/models/LegalContractReviewWorkflowModel.d.ts +2 -0
  93. package/dist/models/LegalContractReviewWorkflowModel.js +8 -0
  94. package/dist/models/LogisticsChatModel.d.ts +2 -0
  95. package/dist/models/LogisticsChatModel.js +8 -0
  96. package/dist/models/LogisticsVehicleMaintenanceChatModel.d.ts +2 -0
  97. package/dist/models/LogisticsVehicleMaintenanceChatModel.js +8 -0
  98. package/dist/models/LogisticsVehicleMaintenanceWorkflowModel.d.ts +2 -0
  99. package/dist/models/LogisticsVehicleMaintenanceWorkflowModel.js +8 -0
  100. package/dist/models/LogisticsWorkflowModel.d.ts +2 -0
  101. package/dist/models/LogisticsWorkflowModel.js +8 -0
  102. package/dist/models/MaintenanceChatModel.d.ts +2 -0
  103. package/dist/models/MaintenanceChatModel.js +8 -0
  104. package/dist/models/MaintenanceExternalStationsChatModel.d.ts +2 -0
  105. package/dist/models/MaintenanceExternalStationsChatModel.js +8 -0
  106. package/dist/models/MaintenanceExternalStationsWorkflowModel.d.ts +2 -0
  107. package/dist/models/MaintenanceExternalStationsWorkflowModel.js +8 -0
  108. package/dist/models/MaintenanceRequestModel.d.ts +3 -1
  109. package/dist/models/MaintenanceRequestModel.js +2 -0
  110. package/dist/models/MaintenanceWorkflowModel.d.ts +2 -0
  111. package/dist/models/MaintenanceWorkflowModel.js +8 -0
  112. package/dist/models/MediaPublicationsChatModel.d.ts +2 -0
  113. package/dist/models/MediaPublicationsChatModel.js +8 -0
  114. package/dist/models/MediaPublicationsWorkflowModel.d.ts +2 -0
  115. package/dist/models/MediaPublicationsWorkflowModel.js +8 -0
  116. package/dist/models/MultiPurposeHallChatModel.d.ts +2 -0
  117. package/dist/models/MultiPurposeHallChatModel.js +8 -0
  118. package/dist/models/MultiPurposeHallWorkflowModel.d.ts +2 -0
  119. package/dist/models/MultiPurposeHallWorkflowModel.js +8 -0
  120. package/dist/models/RequestATenderRequestModel.d.ts +2 -0
  121. package/dist/models/RequestATenderRequestModel.js +8 -0
  122. package/dist/models/RequestForCoverageChatModel.d.ts +2 -0
  123. package/dist/models/RequestForCoverageChatModel.js +8 -0
  124. package/dist/models/RequestForCoverageWorkflowModel.d.ts +2 -0
  125. package/dist/models/RequestForCoverageWorkflowModel.js +8 -0
  126. package/dist/models/RequestForPresidentsCoverageChatModel.d.ts +2 -0
  127. package/dist/models/RequestForPresidentsCoverageChatModel.js +8 -0
  128. package/dist/models/RequestForPresidentsCoverageWorkflowModel.d.ts +2 -0
  129. package/dist/models/RequestForPresidentsCoverageWorkflowModel.js +8 -0
  130. package/dist/models/ResidentialUnitRentalChatModel.d.ts +2 -0
  131. package/dist/models/ResidentialUnitRentalChatModel.js +8 -0
  132. package/dist/models/ResidentialUnitRentalRequestModel.d.ts +1 -1
  133. package/dist/models/ResidentialUnitRentalRequestModel.js +2 -2
  134. package/dist/models/ResidentialUnitRentalWorkflowModel.d.ts +2 -0
  135. package/dist/models/ResidentialUnitRentalWorkflowModel.js +8 -0
  136. package/dist/models/RespondToEnquiriesChatModel.d.ts +2 -0
  137. package/dist/models/RespondToEnquiriesChatModel.js +8 -0
  138. package/dist/models/RespondToEnquiriesWorkflowModel.d.ts +2 -0
  139. package/dist/models/RespondToEnquiriesWorkflowModel.js +8 -0
  140. package/dist/models/ScholarshipChatModel.d.ts +2 -0
  141. package/dist/models/ScholarshipChatModel.js +8 -0
  142. package/dist/models/ScholarshipWorkflowModel.d.ts +2 -0
  143. package/dist/models/ScholarshipWorkflowModel.js +8 -0
  144. package/dist/models/SecurityAwarenessChatModel.d.ts +2 -0
  145. package/dist/models/SecurityAwarenessChatModel.js +8 -0
  146. package/dist/models/SecurityAwarenessWorkflowModel.d.ts +2 -0
  147. package/dist/models/SecurityAwarenessWorkflowModel.js +8 -0
  148. package/dist/models/SecurityThreatChatModel.d.ts +2 -0
  149. package/dist/models/SecurityThreatChatModel.js +8 -0
  150. package/dist/models/SecurityThreatWorkflowModel.d.ts +2 -0
  151. package/dist/models/SecurityThreatWorkflowModel.js +8 -0
  152. package/dist/models/ServiceExtensionAfter60ChatModel.d.ts +2 -0
  153. package/dist/models/ServiceExtensionAfter60ChatModel.js +8 -0
  154. package/dist/models/ServiceExtensionAfter60WorkflowModel.d.ts +2 -0
  155. package/dist/models/ServiceExtensionAfter60WorkflowModel.js +8 -0
  156. package/dist/models/StudyLeaveChatModel.d.ts +2 -0
  157. package/dist/models/StudyLeaveChatModel.js +8 -0
  158. package/dist/models/StudyLeaveWorkflowModel.d.ts +2 -0
  159. package/dist/models/StudyLeaveWorkflowModel.js +8 -0
  160. package/dist/models/TrainingChatModel.d.ts +2 -0
  161. package/dist/models/TrainingChatModel.js +8 -0
  162. package/dist/models/TrainingRoomBookingChatModel.d.ts +2 -0
  163. package/dist/models/TrainingRoomBookingChatModel.js +8 -0
  164. package/dist/models/TrainingRoomBookingWorkflowModel.d.ts +2 -0
  165. package/dist/models/TrainingRoomBookingWorkflowModel.js +8 -0
  166. package/dist/models/TrainingWorkflowModel.d.ts +2 -0
  167. package/dist/models/TrainingWorkflowModel.js +8 -0
  168. package/dist/models/VipHallChatModel.d.ts +2 -0
  169. package/dist/models/VipHallChatModel.js +8 -0
  170. package/dist/models/VipHallWorkflowModel.d.ts +2 -0
  171. package/dist/models/VipHallWorkflowModel.js +8 -0
  172. package/dist/models/VpnRequestChatModel.d.ts +2 -0
  173. package/dist/models/VpnRequestChatModel.js +8 -0
  174. package/dist/models/VpnWorkflowModel.d.ts +2 -0
  175. package/dist/models/VpnWorkflowModel.js +8 -0
  176. package/dist/models/WorkingHoursExtensionChatModel.d.ts +2 -0
  177. package/dist/models/WorkingHoursExtensionChatModel.js +8 -0
  178. package/dist/models/WorkingHoursExtensionWorkflowModel.d.ts +2 -0
  179. package/dist/models/WorkingHoursExtensionWorkflowModel.js +8 -0
  180. package/package.json +1 -1
  181. package/sql/add_all_workflow_chat_arabic_columns.sql +1 -0
  182. package/sql/caa_api_payload_changes_2026_07.sql +32 -0
  183. package/src/i18n/workflow-chat-i18n.json +162 -1
  184. package/src/i18n/workflow-chat-message.builder.ts +680 -13
  185. package/src/models/AccessCardChatModel.ts +6 -0
  186. package/src/models/AccessCardWorkflowModel.ts +6 -0
  187. package/src/models/AccommodationChatModel.ts +7 -1
  188. package/src/models/AccommodationWorkflowModel.ts +6 -0
  189. package/src/models/AirportEntryPermitChatModel.ts +6 -0
  190. package/src/models/AirportEntryPermitWorkflowModel.ts +6 -0
  191. package/src/models/AnnualTrainingPlanChatModel.ts +6 -0
  192. package/src/models/AnnualTrainingPlanWorkflowModel.ts +6 -0
  193. package/src/models/AppealAgainstAdministrativeDecisionRequestModel.ts +8 -8
  194. package/src/models/AssignTasksEmpChatModel.ts +6 -0
  195. package/src/models/AssignTasksEmpWorkflowModel.ts +6 -0
  196. package/src/models/ComplaintLostPropertyReportChatModel.ts +6 -0
  197. package/src/models/ComplaintLostPropertyReportWorkflowModel.ts +6 -0
  198. package/src/models/CyberSecurityAuditRequestModel.ts +6 -0
  199. package/src/models/CyberSecurityRiskManagementRiskModel.ts +6 -0
  200. package/src/models/DutyMissionChatModel.ts +6 -0
  201. package/src/models/DutyMissionWorkflowModel.ts +6 -0
  202. package/src/models/EventSupportChatModel.ts +6 -0
  203. package/src/models/EventSupportWorkflowModel.ts +6 -0
  204. package/src/models/FollowUpReportChatModel.ts +6 -0
  205. package/src/models/FollowUpReportWorkflowModel.ts +6 -0
  206. package/src/models/FoodChatModel.ts +6 -0
  207. package/src/models/FoodWorkflowModel.ts +6 -0
  208. package/src/models/HallChatModel.ts +6 -0
  209. package/src/models/HallWorkflowModel.ts +6 -0
  210. package/src/models/HotelChatModel.ts +6 -0
  211. package/src/models/HotelWorkFlowModel.ts +6 -0
  212. package/src/models/HousingContractCancelChatModel.ts +6 -0
  213. package/src/models/HousingContractCancelWorkflowModel.ts +6 -0
  214. package/src/models/HousingContractRenewalChatModel.ts +6 -0
  215. package/src/models/HousingContractRenewalWorkflowModel.ts +6 -0
  216. package/src/models/HrServiceChatModel.ts +6 -0
  217. package/src/models/HrServiceWorkflowModel.ts +6 -0
  218. package/src/models/ITRequestChatModel.ts +6 -0
  219. package/src/models/ImportExportMaterialChatModel.ts +6 -0
  220. package/src/models/ImportExportMaterialWorkflowModel.ts +6 -0
  221. package/src/models/InformationSecurityChatModel.ts +6 -0
  222. package/src/models/InformationSecurityWorkflowModel.ts +6 -0
  223. package/src/models/ItWorkflowModel.ts +6 -0
  224. package/src/models/LegalComplaintChatModel.ts +6 -0
  225. package/src/models/LegalComplaintWorkflowModel.ts +6 -0
  226. package/src/models/LegalConsultationChatModel.ts +6 -0
  227. package/src/models/LegalConsultationWorkflowModel.ts +6 -0
  228. package/src/models/LegalContractReviewChatModel.ts +6 -0
  229. package/src/models/LegalContractReviewWorkflowModel.ts +6 -0
  230. package/src/models/LogisticsChatModel.ts +6 -0
  231. package/src/models/LogisticsVehicleMaintenanceChatModel.ts +6 -0
  232. package/src/models/LogisticsVehicleMaintenanceWorkflowModel.ts +6 -0
  233. package/src/models/LogisticsWorkflowModel.ts +6 -0
  234. package/src/models/MaintenanceChatModel.ts +6 -0
  235. package/src/models/MaintenanceExternalStationsChatModel.ts +6 -0
  236. package/src/models/MaintenanceExternalStationsWorkflowModel.ts +6 -0
  237. package/src/models/MaintenanceRequestModel.ts +2 -0
  238. package/src/models/MaintenanceWorkflowModel.ts +6 -0
  239. package/src/models/MediaPublicationsChatModel.ts +6 -0
  240. package/src/models/MediaPublicationsWorkflowModel.ts +6 -0
  241. package/src/models/MultiPurposeHallChatModel.ts +6 -0
  242. package/src/models/MultiPurposeHallWorkflowModel.ts +6 -0
  243. package/src/models/RequestATenderRequestModel.ts +6 -0
  244. package/src/models/RequestForCoverageChatModel.ts +6 -0
  245. package/src/models/RequestForCoverageWorkflowModel.ts +6 -0
  246. package/src/models/RequestForPresidentsCoverageChatModel.ts +6 -0
  247. package/src/models/RequestForPresidentsCoverageWorkflowModel.ts +6 -0
  248. package/src/models/ResidentialUnitRentalChatModel.ts +6 -0
  249. package/src/models/ResidentialUnitRentalRequestModel.ts +2 -2
  250. package/src/models/ResidentialUnitRentalWorkflowModel.ts +8 -2
  251. package/src/models/RespondToEnquiriesChatModel.ts +6 -0
  252. package/src/models/RespondToEnquiriesWorkflowModel.ts +6 -0
  253. package/src/models/ScholarshipChatModel.ts +6 -0
  254. package/src/models/ScholarshipWorkflowModel.ts +6 -0
  255. package/src/models/SecurityAwarenessChatModel.ts +6 -0
  256. package/src/models/SecurityAwarenessWorkflowModel.ts +6 -0
  257. package/src/models/SecurityThreatChatModel.ts +6 -0
  258. package/src/models/SecurityThreatWorkflowModel.ts +6 -0
  259. package/src/models/ServiceExtensionAfter60ChatModel.ts +6 -0
  260. package/src/models/ServiceExtensionAfter60WorkflowModel.ts +6 -0
  261. package/src/models/StudyLeaveChatModel.ts +6 -0
  262. package/src/models/StudyLeaveWorkflowModel.ts +6 -0
  263. package/src/models/TrainingChatModel.ts +6 -0
  264. package/src/models/TrainingRoomBookingChatModel.ts +6 -0
  265. package/src/models/TrainingRoomBookingWorkflowModel.ts +6 -0
  266. package/src/models/TrainingWorkflowModel.ts +6 -0
  267. package/src/models/VipHallChatModel.ts +6 -0
  268. package/src/models/VipHallWorkflowModel.ts +6 -0
  269. package/src/models/VpnRequestChatModel.ts +6 -0
  270. package/src/models/VpnWorkflowModel.ts +6 -0
  271. package/src/models/WorkingHoursExtensionChatModel.ts +6 -0
  272. package/src/models/WorkingHoursExtensionWorkflowModel.ts +6 -0
@@ -20,9 +20,30 @@ exports.workflowTemplate = workflowTemplate;
20
20
  exports.chatTemplate = chatTemplate;
21
21
  exports.buildSynchronizedWorkflowMessage = buildSynchronizedWorkflowMessage;
22
22
  exports.buildSynchronizedChatMessage = buildSynchronizedChatMessage;
23
+ exports.buildWorkflowLogUpdateFields = buildWorkflowLogUpdateFields;
24
+ exports.toWorkflowPersistFields = toWorkflowPersistFields;
25
+ exports.toChatPersistFields = toChatPersistFields;
23
26
  exports.buildApprovalWorkflowContent = buildApprovalWorkflowContent;
24
27
  exports.buildHumanApprovalWorkflowContent = buildHumanApprovalWorkflowContent;
25
28
  exports.buildApprovalChatMessage = buildApprovalChatMessage;
29
+ exports.buildClosedChatMessage = buildClosedChatMessage;
30
+ exports.buildClosedWorkflowMessage = buildClosedWorkflowMessage;
31
+ exports.buildRequestForChangeChatMessage = buildRequestForChangeChatMessage;
32
+ exports.buildAttachmentUploadedChatMessage = buildAttachmentUploadedChatMessage;
33
+ exports.buildUserOrAttachmentChatMessage = buildUserOrAttachmentChatMessage;
34
+ exports.buildTaskInProgressChatMessage = buildTaskInProgressChatMessage;
35
+ exports.buildTaskCompletedChatMessage = buildTaskCompletedChatMessage;
36
+ exports.buildTaskStatusUpdatedChatMessage = buildTaskStatusUpdatedChatMessage;
37
+ exports.buildItHelpdeskAssignedChatMessage = buildItHelpdeskAssignedChatMessage;
38
+ exports.buildItHelpdeskReassignedChatMessage = buildItHelpdeskReassignedChatMessage;
39
+ exports.buildRequestSubmittedWithRefChatMessage = buildRequestSubmittedWithRefChatMessage;
40
+ exports.buildSecurityAccessApprovalChatMessage = buildSecurityAccessApprovalChatMessage;
41
+ exports.buildItHelpdeskReassignModifiers = buildItHelpdeskReassignModifiers;
42
+ exports.buildItHelpdeskMuscatWorkflowLog = buildItHelpdeskMuscatWorkflowLog;
43
+ exports.buildLogisticsActualReturnChatMessage = buildLogisticsActualReturnChatMessage;
44
+ exports.buildLogisticsActualReturnNotificationBody = buildLogisticsActualReturnNotificationBody;
45
+ exports.buildLogisticsActualReturnNotificationTitle = buildLogisticsActualReturnNotificationTitle;
46
+ exports.buildItHelpdeskCloseNotificationMessage = buildItHelpdeskCloseNotificationMessage;
26
47
  exports.resolveWorkflowStatusAr = resolveWorkflowStatusAr;
27
48
  exports.resolveChatStatusAr = resolveChatStatusAr;
28
49
  exports.extractBilingualActorsFromRecord = extractBilingualActorsFromRecord;
@@ -39,6 +60,7 @@ exports.enrichChatMessage = enrichChatMessage;
39
60
  const workflow_chat_i18n_json_1 = __importDefault(require("./workflow-chat-i18n.json"));
40
61
  const WORKFLOW_TEMPLATES = workflow_chat_i18n_json_1.default.workflowTemplates;
41
62
  const CHAT_TEMPLATES = workflow_chat_i18n_json_1.default.chatTemplates;
63
+ const NOTIFICATION_TEMPLATES = workflow_chat_i18n_json_1.default.notificationTemplates ?? {};
42
64
  const WORKFLOW_STATUS_LABELS = workflow_chat_i18n_json_1.default.workflowStatusLabels;
43
65
  const CHAT_STATUS_LABELS = workflow_chat_i18n_json_1.default.chatStatusLabels;
44
66
  function getWorkflowChatI18nCatalog() {
@@ -185,6 +207,12 @@ function buildSynchronizedChatMessage(ctx) {
185
207
  const employeeId = String(ctx.employeeId ?? 'N/A');
186
208
  return chatTemplate('cancellation_submitted_by', { userName: userEn, employeeId }, { userName: userAr, employeeId });
187
209
  }
210
+ case 'request_submitted': {
211
+ const userEn = ctx.userName?.trim() || 'Unknown User';
212
+ const userAr = resolveBilingualName(userEn, ctx.userArabicName);
213
+ const employeeId = String(ctx.employeeId ?? 'N/A');
214
+ return chatTemplate('request_submitted_by', { userName: userEn, employeeId }, { userName: userAr, employeeId });
215
+ }
188
216
  case 'request_received':
189
217
  return chatTemplate('request_received');
190
218
  case 'approved':
@@ -204,6 +232,48 @@ function buildSynchronizedChatMessage(ctx) {
204
232
  }
205
233
  }
206
234
  // ─── Backward-compatible aliases used by Cancellation pilot ───────────────────
235
+ /** Standard workflow log UPDATE fields for all CAA module repositories. */
236
+ function buildWorkflowLogUpdateFields(params) {
237
+ let action;
238
+ if (params.approvalStatus === 'Approved')
239
+ action = 'approved';
240
+ else if (params.approvalStatus === 'Rejected')
241
+ action = 'rejected';
242
+ else if (params.approvalStatus === 'Returned for Modification')
243
+ action = 'returned_for_modification';
244
+ else
245
+ action = 'approval_pending_update';
246
+ const bilingual = buildSynchronizedWorkflowMessage({
247
+ action,
248
+ roleName: params.roleName,
249
+ roleArabicName: params.roleArabicName,
250
+ comment: params.comment,
251
+ });
252
+ return {
253
+ content: bilingual.en,
254
+ content_ar: bilingual.ar,
255
+ status: params.workflowStatus,
256
+ status_ar: resolveWorkflowStatusAr(params.workflowStatus),
257
+ };
258
+ }
259
+ /** Bilingual workflow insert fields from builder output. */
260
+ function toWorkflowPersistFields(bilingual, status) {
261
+ return {
262
+ content: bilingual.en,
263
+ content_ar: bilingual.ar,
264
+ status,
265
+ status_ar: resolveWorkflowStatusAr(status),
266
+ };
267
+ }
268
+ /** Bilingual chat insert fields from builder output. */
269
+ function toChatPersistFields(bilingual, status) {
270
+ return {
271
+ message: bilingual.en,
272
+ message_ar: bilingual.ar,
273
+ status,
274
+ status_ar: resolveChatStatusAr(status),
275
+ };
276
+ }
207
277
  function buildApprovalWorkflowContent(params) {
208
278
  const status = params.status;
209
279
  let action;
@@ -234,6 +304,21 @@ function buildHumanApprovalWorkflowContent(params) {
234
304
  });
235
305
  }
236
306
  function buildApprovalChatMessage(params) {
307
+ if (params.status === 'Closed') {
308
+ return buildClosedChatMessage({
309
+ roleName: params.roleName,
310
+ roleArabicName: params.roleArabicName,
311
+ comment: params.comment,
312
+ });
313
+ }
314
+ if (params.status === 'Request For Change' || params.status === 'RFC') {
315
+ return buildRequestForChangeChatMessage({
316
+ roleName: params.roleName,
317
+ roleArabicName: params.roleArabicName,
318
+ comment: params.comment,
319
+ variant: 'by',
320
+ });
321
+ }
237
322
  let action = 'approved';
238
323
  if (params.status === 'Rejected')
239
324
  action = 'rejected';
@@ -246,6 +331,312 @@ function buildApprovalChatMessage(params) {
246
331
  comment: params.comment,
247
332
  });
248
333
  }
334
+ // ─── Specialized chat/workflow builders ─────────────────────────────────────
335
+ function formatDotCommentSuffix(comment) {
336
+ const text = comment?.trim();
337
+ return text ? `. Comment: ${text}` : '';
338
+ }
339
+ function formatColonCommentSuffix(comment) {
340
+ const text = comment?.trim();
341
+ return text ? `: ${text}` : '';
342
+ }
343
+ function formatReassignCommentSuffix(comment) {
344
+ const text = comment?.trim();
345
+ return text ? `:${text}` : '';
346
+ }
347
+ function buildClosedChatMessage(params) {
348
+ const roleEn = params.roleName?.trim() || 'Unknown Role';
349
+ const roleAr = resolveBilingualName(roleEn, params.roleArabicName);
350
+ const comment = formatDotCommentSuffix(params.comment);
351
+ return renderSynchronizedChatMessage('request_closed_by_role', { roleName: roleEn, comment }, { roleName: roleAr, comment });
352
+ }
353
+ function buildClosedWorkflowMessage(params) {
354
+ const comment = formatWorkflowCommentSuffix(params.comment);
355
+ const roleEn = params.roleName?.trim();
356
+ if (roleEn) {
357
+ const roleAr = resolveBilingualName(roleEn, params.roleArabicName);
358
+ return renderSynchronizedWorkflowMessage('request_closed_by', { name: roleEn, comment }, { name: roleAr, comment });
359
+ }
360
+ return renderSynchronizedWorkflowMessage('request_closed', { comment }, { comment });
361
+ }
362
+ function buildRequestForChangeChatMessage(params) {
363
+ const roleEn = params.roleName?.trim() || 'Unknown Role';
364
+ const roleAr = resolveBilingualName(roleEn, params.roleArabicName);
365
+ const comment = params.variant === 'requested_by'
366
+ ? formatChatCommentSuffix(params.comment)
367
+ : formatColonCommentSuffix(params.comment);
368
+ const key = params.variant === 'requested_by'
369
+ ? 'request_for_change_requested_by_role'
370
+ : 'request_for_change_by_role';
371
+ return renderSynchronizedChatMessage(key, { roleName: roleEn, comment }, { roleName: roleAr, comment });
372
+ }
373
+ function buildAttachmentUploadedChatMessage(fileName) {
374
+ const name = fileName?.trim() || 'file';
375
+ return renderSynchronizedChatMessage('attachment_uploaded', { fileName: name }, { fileName: name });
376
+ }
377
+ /** User-typed chat text, or bilingual [Attachment] placeholder when empty. */
378
+ function buildUserOrAttachmentChatMessage(userMessage) {
379
+ const text = userMessage?.trim();
380
+ if (text)
381
+ return { en: text, ar: text };
382
+ return chatTemplate('attachment_placeholder');
383
+ }
384
+ function buildTaskInProgressChatMessage(params) {
385
+ const roleEn = params.roleName?.trim() || 'Employee';
386
+ const roleAr = resolveBilingualName(roleEn, params.roleArabicName);
387
+ return renderSynchronizedChatMessage('task_status_in_progress_by_role', { roleName: roleEn }, { roleName: roleAr });
388
+ }
389
+ function buildTaskCompletedChatMessage(params) {
390
+ const roleEn = params.roleName?.trim() || 'Employee';
391
+ const roleAr = resolveBilingualName(roleEn, params.roleArabicName);
392
+ const comment = formatDotCommentSuffix(params.comment);
393
+ return renderSynchronizedChatMessage('task_completed_by_role', { roleName: roleEn, comment }, { roleName: roleAr, comment });
394
+ }
395
+ function buildTaskStatusUpdatedChatMessage(status, statusAr) {
396
+ const statusEn = status?.trim() || 'Updated';
397
+ const statusArResolved = statusAr?.trim() || resolveChatStatusAr(statusEn) || statusEn;
398
+ return renderSynchronizedChatMessage('task_status_updated', { status: statusEn }, { status: statusArResolved });
399
+ }
400
+ function buildItHelpdeskAssignedChatMessage(params) {
401
+ const assignedRoleEn = params.assignedRoleName?.trim() || 'Role';
402
+ const assignedRoleAr = resolveBilingualName(assignedRoleEn, params.assignedRoleArabicName);
403
+ const assignedUserEn = params.assignedUserName?.trim() || 'User';
404
+ const assignedUserAr = resolveBilingualName(assignedUserEn, params.assignedUserArabicName);
405
+ const comment = params.comment?.trim() ? ` - ${params.comment.trim()}` : '';
406
+ const templateKey = params.level === 1 ? 'it_helpdesk_hos_assigned' : 'it_helpdesk_technician_assigned';
407
+ const enParams = {
408
+ assignedRoleName: assignedRoleEn,
409
+ assignedUserName: assignedUserEn,
410
+ comment,
411
+ };
412
+ const arParams = {
413
+ assignedRoleName: assignedRoleAr,
414
+ assignedUserName: assignedUserAr,
415
+ comment,
416
+ };
417
+ if (params.level !== 1) {
418
+ enParams.level = String(params.level);
419
+ arParams.level = String(params.level);
420
+ }
421
+ return renderSynchronizedChatMessage(templateKey, enParams, arParams);
422
+ }
423
+ function buildItHelpdeskReassignedChatMessage(params) {
424
+ const approverEn = params.approverRoleName?.trim() || 'Role';
425
+ const approverAr = resolveBilingualName(approverEn, params.approverRoleArabicName);
426
+ const comment = formatReassignCommentSuffix(params.comment);
427
+ if (params.level === 1) {
428
+ const reassignedEn = params.reassignedRoleName?.trim() || 'Role';
429
+ const reassignedAr = resolveBilingualName(reassignedEn, params.reassignedRoleArabicName);
430
+ return renderSynchronizedChatMessage('it_helpdesk_reassigned_to_role', { approverRoleName: approverEn, reassignedRoleName: reassignedEn, comment }, { approverRoleName: approverAr, reassignedRoleName: reassignedAr, comment });
431
+ }
432
+ if (params.level === 2) {
433
+ return renderSynchronizedChatMessage('it_helpdesk_reassigned_to_l3', { approverRoleName: approverEn, comment }, { approverRoleName: approverAr, comment });
434
+ }
435
+ const level = String(params.level);
436
+ return renderSynchronizedChatMessage('it_helpdesk_reassigned_generic', { approverRoleName: approverEn, level, comment }, { approverRoleName: approverAr, level, comment });
437
+ }
438
+ function buildRequestSubmittedWithRefChatMessage(params) {
439
+ const userEn = params.userName?.trim() || 'Unknown User';
440
+ const userAr = resolveBilingualName(userEn, params.userArabicName);
441
+ const labelEn = params.requestLabel?.trim() || 'Request';
442
+ const labelAr = params.requestLabelAr?.trim() || labelEn;
443
+ const requestId = String(params.requestId);
444
+ const employeeId = String(params.employeeId ?? 'N/A');
445
+ return renderSynchronizedChatMessage('request_submitted_with_ref', { requestLabel: labelEn, requestId, userName: userEn, employeeId }, { requestLabel: labelAr, requestId, userName: userAr, employeeId });
446
+ }
447
+ function buildSecurityAccessApprovalChatMessage(params) {
448
+ const statusWord = params.decision === 'approve' ? 'approved' : 'rejected';
449
+ const statusWordAr = params.decision === 'approve' ? 'الموافقة على' : 'رفض';
450
+ const comment = params.comment?.trim() ? ` Comment: ${params.comment.trim()}` : '';
451
+ const labelEn = params.productLabel?.trim() || 'Security Access';
452
+ const labelAr = params.productLabelAr?.trim() || labelEn;
453
+ return renderSynchronizedChatMessage('security_access_approval_step', {
454
+ productLabel: labelEn,
455
+ requestId: String(params.requestId),
456
+ statusWord,
457
+ approvalLevel: String(params.approvalLevel),
458
+ comment,
459
+ statusWordAr,
460
+ }, {
461
+ productLabel: labelAr,
462
+ requestId: String(params.requestId),
463
+ statusWord,
464
+ approvalLevel: String(params.approvalLevel),
465
+ comment,
466
+ statusWordAr,
467
+ });
468
+ }
469
+ function renderSynchronizedNotificationMessage(templateKey, enParams, arParams) {
470
+ const tpl = NOTIFICATION_TEMPLATES[templateKey];
471
+ if (!tpl)
472
+ return { en: templateKey, ar: templateKey };
473
+ return {
474
+ en: interpolate(tpl.en, enParams),
475
+ ar: interpolate(tpl.ar, arParams),
476
+ };
477
+ }
478
+ function normalizeDisplayValue(value) {
479
+ if (value === undefined || value === null || String(value).trim() === '')
480
+ return 'Not specified';
481
+ return String(value);
482
+ }
483
+ function normalizeDisplayDate(value) {
484
+ if (value === undefined || value === null || String(value).trim() === '')
485
+ return 'Not specified';
486
+ const d = new Date(value);
487
+ if (!isNaN(d.getTime()))
488
+ return d.toISOString().slice(0, 10);
489
+ return String(value);
490
+ }
491
+ function buildItHelpdeskReassignModifiers(params) {
492
+ let en = '';
493
+ let ar = '';
494
+ if (params.sectionFrom != null &&
495
+ params.sectionTo != null &&
496
+ params.sectionFrom !== params.sectionTo) {
497
+ en += ` (Section modified from ${params.sectionFrom} to ${params.sectionTo})`;
498
+ ar += ` (تم تعديل القسم من ${params.sectionFrom} إلى ${params.sectionTo})`;
499
+ }
500
+ if (params.departmentFrom != null &&
501
+ params.departmentTo != null &&
502
+ params.departmentFrom !== params.departmentTo) {
503
+ en += ` (Department modified from ${params.departmentFrom} to ${params.departmentTo})`;
504
+ ar += ` (تم تعديل الإدارة من ${params.departmentFrom} إلى ${params.departmentTo})`;
505
+ }
506
+ return { en, ar };
507
+ }
508
+ function buildItHelpdeskMuscatWorkflowLog(params) {
509
+ const comment = formatColonCommentSuffix('comment' in params ? params.comment : undefined);
510
+ const modifiers = 'modifiers' in params && params.modifiers ? params.modifiers : { en: '', ar: '' };
511
+ switch (params.variant) {
512
+ case 'hos_assigned': {
513
+ const approverEn = params.approverRoleName.trim();
514
+ const approverAr = resolveBilingualName(approverEn, params.approverRoleArabicName);
515
+ const assignedEn = params.assignedRoleName.trim();
516
+ const assignedAr = resolveBilingualName(assignedEn, params.assignedRoleArabicName);
517
+ return renderSynchronizedWorkflowMessage('it_helpdesk_wf_hos_assigned', { approverRoleName: approverEn, assignedRoleName: assignedEn, comment }, { approverRoleName: approverAr, assignedRoleName: assignedAr, comment });
518
+ }
519
+ case 'technician_assigned': {
520
+ const approverEn = params.approverRoleName.trim();
521
+ const approverAr = resolveBilingualName(approverEn, params.approverRoleArabicName);
522
+ return renderSynchronizedWorkflowMessage('it_helpdesk_wf_technician_assigned', { level: String(params.level), approverRoleName: approverEn, comment }, { level: String(params.level), approverRoleName: approverAr, comment });
523
+ }
524
+ case 'reassigned_technician': {
525
+ const approverEn = params.approverRoleName.trim();
526
+ const approverAr = resolveBilingualName(approverEn, params.approverRoleArabicName);
527
+ return renderSynchronizedWorkflowMessage('it_helpdesk_wf_reassigned_technician', { approverRoleName: approverEn, comment, modifiers: modifiers.en }, { approverRoleName: approverAr, comment, modifiers: modifiers.ar });
528
+ }
529
+ case 'reassigned_l3': {
530
+ const approverEn = params.approverRoleName.trim();
531
+ const approverAr = resolveBilingualName(approverEn, params.approverRoleArabicName);
532
+ return renderSynchronizedWorkflowMessage('it_helpdesk_wf_reassigned_l3', { approverRoleName: approverEn, comment, modifiers: modifiers.en }, { approverRoleName: approverAr, comment, modifiers: modifiers.ar });
533
+ }
534
+ case 'reassigned_generic': {
535
+ const approverEn = params.approverRoleName.trim();
536
+ const approverAr = resolveBilingualName(approverEn, params.approverRoleArabicName);
537
+ const level = String(params.level ?? '');
538
+ return renderSynchronizedWorkflowMessage('it_helpdesk_wf_reassigned_generic', { approverRoleName: approverEn, level, comment, modifiers: modifiers.en }, { approverRoleName: approverAr, level, comment, modifiers: modifiers.ar });
539
+ }
540
+ case 'closed_level1': {
541
+ const approverEn = params.approverRoleName.trim();
542
+ const approverAr = resolveBilingualName(approverEn, params.approverRoleArabicName);
543
+ return renderSynchronizedWorkflowMessage('it_helpdesk_wf_closed_request', { approverRoleName: approverEn, comment }, { approverRoleName: approverAr, comment });
544
+ }
545
+ case 'closed_level2': {
546
+ const approverEn = params.approverRoleName.trim();
547
+ const approverAr = resolveBilingualName(approverEn, params.approverRoleArabicName);
548
+ return renderSynchronizedWorkflowMessage('it_helpdesk_wf_closed_request_cap', { approverRoleName: approverEn, comment }, { approverRoleName: approverAr, comment });
549
+ }
550
+ case 'l3_approved': {
551
+ const roleEn = params.roleName.trim();
552
+ const roleAr = resolveBilingualName(roleEn, params.roleArabicName);
553
+ const userEn = params.userName.trim();
554
+ const userAr = resolveBilingualName(userEn, params.userArabicName);
555
+ return renderSynchronizedWorkflowMessage('it_helpdesk_wf_l3_approved_by', { roleName: roleEn, userName: userEn, comment }, { roleName: roleAr, userName: userAr, comment });
556
+ }
557
+ case 'l3_rejected': {
558
+ const roleEn = params.roleName.trim();
559
+ const roleAr = resolveBilingualName(roleEn, params.roleArabicName);
560
+ const userEn = params.userName.trim();
561
+ const userAr = resolveBilingualName(userEn, params.userArabicName);
562
+ return renderSynchronizedWorkflowMessage('it_helpdesk_wf_l3_rejected_by', { roleName: roleEn, userName: userEn, comment }, { roleName: roleAr, userName: userAr, comment });
563
+ }
564
+ case 'level_approved': {
565
+ const approverEn = params.approverRoleName.trim();
566
+ const approverAr = resolveBilingualName(approverEn, params.approverRoleArabicName);
567
+ return renderSynchronizedWorkflowMessage('it_helpdesk_wf_level_approved', { level: String(params.level), approverRoleName: approverEn, comment }, { level: String(params.level), approverRoleName: approverAr, comment });
568
+ }
569
+ case 'rejected':
570
+ case 'l3_step_rejected': {
571
+ const key = params.variant === 'l3_step_rejected'
572
+ ? 'it_helpdesk_wf_l3_step_rejected'
573
+ : 'it_helpdesk_wf_rejected';
574
+ const roleEn = params.approverRoleName.trim();
575
+ const roleAr = resolveBilingualName(roleEn, params.approverRoleArabicName);
576
+ return renderSynchronizedWorkflowMessage(key, { approverRoleName: roleEn, roleName: roleEn, comment }, { approverRoleName: roleAr, roleName: roleAr, comment });
577
+ }
578
+ case 'generic_status': {
579
+ const approverEn = params.approverRoleName.trim();
580
+ const approverAr = resolveBilingualName(approverEn, params.approverRoleArabicName);
581
+ const statusEn = params.status.toLowerCase();
582
+ const statusAr = resolveChatStatusAr(params.status) ?? statusEn;
583
+ return renderSynchronizedWorkflowMessage('it_helpdesk_wf_status_by_role', { status: statusEn, statusAr, approverRoleName: approverEn, comment }, { status: statusEn, statusAr, approverRoleName: approverAr, comment });
584
+ }
585
+ case 'technician_completed': {
586
+ const roleEn = params.roleName.trim();
587
+ const roleAr = resolveBilingualName(roleEn, params.roleArabicName);
588
+ return renderSynchronizedWorkflowMessage('it_helpdesk_wf_technician_completed', { roleName: roleEn, comment }, { roleName: roleAr, comment });
589
+ }
590
+ case 'routing_rejected':
591
+ return renderSynchronizedWorkflowMessage('it_helpdesk_wf_routing_rejected', { comment }, { comment });
592
+ case 'routing_resolved':
593
+ return workflowTemplate('it_helpdesk_wf_routing_resolved');
594
+ default:
595
+ return workflowTemplate('request_submitted');
596
+ }
597
+ }
598
+ function buildLogisticsActualReturnChatMessage(params) {
599
+ const roleEn = params.roleName.trim() || 'Unknown Role';
600
+ const roleAr = resolveBilingualName(roleEn, params.roleArabicName);
601
+ const date = normalizeDisplayDate(params.returnDetails.actual_return_date);
602
+ const time = normalizeDisplayValue(params.returnDetails.actual_vehicle_return_time);
603
+ const reason = normalizeDisplayValue(params.returnDetails.reason);
604
+ return renderSynchronizedChatMessage('logistics_actual_return_updated', { roleName: roleEn, date, time, reason }, { roleName: roleAr, date, time, reason });
605
+ }
606
+ function buildLogisticsActualReturnNotificationBody(params) {
607
+ const requestLabel = params.requestTypeLabel
608
+ ? `${params.requestTypeLabel} Request`
609
+ : 'Vehicle Request';
610
+ const requestLabelAr = params.requestTypeLabel
611
+ ? `طلب ${params.requestTypeLabel}`
612
+ : 'طلب المركبة';
613
+ const requestId = normalizeDisplayValue(params.requestId);
614
+ const en = [
615
+ `${requestLabel} #${requestId}`,
616
+ `Actual Return Date: ${normalizeDisplayDate(params.actual_return_date)}`,
617
+ `Actual Return Time: ${normalizeDisplayValue(params.actual_vehicle_return_time)}`,
618
+ `Reason: ${normalizeDisplayValue(params.reason)}`,
619
+ ].join('\n');
620
+ const ar = [
621
+ `${requestLabelAr} رقم ${requestId}`,
622
+ `تاريخ الإرجاع الفعلي: ${normalizeDisplayDate(params.actual_return_date)}`,
623
+ `وقت الإرجاع الفعلي: ${normalizeDisplayValue(params.actual_vehicle_return_time)}`,
624
+ `السبب: ${normalizeDisplayValue(params.reason)}`,
625
+ ].join('\n');
626
+ return { en, ar };
627
+ }
628
+ function buildLogisticsActualReturnNotificationTitle(params) {
629
+ const requestLabel = params.requestTypeLabel || 'Vehicle';
630
+ const requestId = String(params.requestId ?? '');
631
+ return renderSynchronizedNotificationMessage('logistics_actual_return_title', { requestLabel, requestId }, { requestLabel, requestId });
632
+ }
633
+ function buildItHelpdeskCloseNotificationMessage(params) {
634
+ const requestId = String(params.requestId);
635
+ const key = params.status === 'Rejected'
636
+ ? 'it_helpdesk_notif_request_rejected'
637
+ : 'it_helpdesk_notif_request_closed';
638
+ return renderSynchronizedNotificationMessage(key, { requestId }, { requestId });
639
+ }
249
640
  // ─── Status labels ───────────────────────────────────────────────────────────
250
641
  function resolveWorkflowStatusAr(status) {
251
642
  if (status == null || status === '')
@@ -350,20 +741,22 @@ function resolveChatMessageAr(message, actors) {
350
741
  if (tpl.en === normalized)
351
742
  return tpl.ar;
352
743
  }
353
- const submittedTpl = CHAT_TEMPLATES.cancellation_submitted_by;
354
- if (submittedTpl) {
744
+ for (const tplKey of ['request_submitted_by', 'cancellation_submitted_by']) {
745
+ const submittedTpl = CHAT_TEMPLATES[tplKey];
746
+ if (!submittedTpl)
747
+ continue;
355
748
  const prefix = submittedTpl.en.split('{{userName}}')[0];
356
- if (normalized.startsWith(prefix)) {
357
- const afterPrefix = normalized.slice(prefix.length);
358
- const parenMatch = afterPrefix.match(/^(.+?) \((.+)\)$/);
359
- if (parenMatch) {
360
- const userEn = parenMatch[1].trim();
361
- const employeeId = parenMatch[2].trim();
362
- const userAr = actors?.userName?.trim()
363
- ? resolveBilingualName(actors.userName, actors.userArabicName)
364
- : resolveBilingualName(userEn, actors?.userArabicName);
365
- return interpolate(submittedTpl.ar, { userName: userAr, employeeId });
366
- }
749
+ if (!normalized.startsWith(prefix))
750
+ continue;
751
+ const afterPrefix = normalized.slice(prefix.length);
752
+ const parenMatch = afterPrefix.match(/^(.+?) \((.+)\)$/);
753
+ if (parenMatch) {
754
+ const userEn = parenMatch[1].trim();
755
+ const employeeId = parenMatch[2].trim();
756
+ const userAr = actors?.userName?.trim()
757
+ ? resolveBilingualName(actors.userName, actors.userArabicName)
758
+ : resolveBilingualName(userEn, actors?.userArabicName);
759
+ return interpolate(submittedTpl.ar, { userName: userAr, employeeId });
367
760
  }
368
761
  }
369
762
  for (const tpl of Object.values(CHAT_TEMPLATES)) {
@@ -14,7 +14,9 @@ export declare class AccessCardRequestChat extends BaseModel {
14
14
  user_id: number;
15
15
  role_id: number;
16
16
  message: string;
17
+ message_ar: string | null;
17
18
  messageType: AccessCardMessageType;
18
19
  status: string;
20
+ status_ar: string | null;
19
21
  constructor(request_id: number, user_id: number, role_id: number, message: string, service_id?: number, sub_service_id?: number, messageType?: AccessCardMessageType, status?: AccessCardApprovalStatus);
20
22
  }
@@ -59,6 +59,10 @@ __decorate([
59
59
  (0, typeorm_1.Column)({ type: "text", nullable: false }),
60
60
  __metadata("design:type", String)
61
61
  ], AccessCardRequestChat.prototype, "message", void 0);
62
+ __decorate([
63
+ (0, typeorm_1.Column)({ type: "text", nullable: true }),
64
+ __metadata("design:type", Object)
65
+ ], AccessCardRequestChat.prototype, "message_ar", void 0);
62
66
  __decorate([
63
67
  (0, typeorm_1.Column)({
64
68
  type: "enum",
@@ -72,6 +76,10 @@ __decorate([
72
76
  (0, typeorm_1.Column)({ type: 'text', nullable: true }),
73
77
  __metadata("design:type", String)
74
78
  ], AccessCardRequestChat.prototype, "status", void 0);
79
+ __decorate([
80
+ (0, typeorm_1.Column)({ type: "varchar", length: 100, nullable: true }),
81
+ __metadata("design:type", Object)
82
+ ], AccessCardRequestChat.prototype, "status_ar", void 0);
75
83
  exports.AccessCardRequestChat = AccessCardRequestChat = __decorate([
76
84
  (0, typeorm_1.Entity)({ name: "access_card_request_chat" }),
77
85
  __metadata("design:paramtypes", [Number, Number, Number, String, Number, Number, String, String])
@@ -9,7 +9,9 @@ export declare class AccessCardWorkflow extends BaseModel {
9
9
  service_id: number | null;
10
10
  sub_service_id: number | null;
11
11
  content: string;
12
+ content_ar: string | null;
12
13
  status: AccessCardWorkflowStatus;
14
+ status_ar: string | null;
13
15
  user_id: number | null;
14
16
  role_id: number | null;
15
17
  department_id: number | null;
@@ -49,6 +49,10 @@ __decorate([
49
49
  (0, typeorm_1.Column)({ type: "varchar", length: 500, nullable: false }),
50
50
  __metadata("design:type", String)
51
51
  ], AccessCardWorkflow.prototype, "content", void 0);
52
+ __decorate([
53
+ (0, typeorm_1.Column)({ type: "varchar", length: 500, nullable: true }),
54
+ __metadata("design:type", Object)
55
+ ], AccessCardWorkflow.prototype, "content_ar", void 0);
52
56
  __decorate([
53
57
  (0, typeorm_1.Column)({
54
58
  type: "enum",
@@ -58,6 +62,10 @@ __decorate([
58
62
  }),
59
63
  __metadata("design:type", String)
60
64
  ], AccessCardWorkflow.prototype, "status", void 0);
65
+ __decorate([
66
+ (0, typeorm_1.Column)({ type: "varchar", length: 100, nullable: true }),
67
+ __metadata("design:type", Object)
68
+ ], AccessCardWorkflow.prototype, "status_ar", void 0);
61
69
  __decorate([
62
70
  (0, typeorm_1.Column)({ type: "integer", nullable: true }),
63
71
  __metadata("design:type", Object)
@@ -12,10 +12,12 @@ export declare class AccommodationChat extends BaseModel {
12
12
  sub_service_id: number;
13
13
  user_id: number;
14
14
  message: string;
15
+ message_ar: string | null;
15
16
  message_type: string;
16
17
  is_internal: boolean;
17
18
  approver_role_id: number;
18
19
  status: string;
20
+ status_ar: string | null;
19
21
  created_by: number;
20
22
  constructor();
21
23
  }
@@ -46,6 +46,10 @@ __decorate([
46
46
  (0, typeorm_1.Column)({ type: 'text', nullable: false }),
47
47
  __metadata("design:type", String)
48
48
  ], AccommodationChat.prototype, "message", void 0);
49
+ __decorate([
50
+ (0, typeorm_1.Column)({ type: "text", nullable: true }),
51
+ __metadata("design:type", Object)
52
+ ], AccommodationChat.prototype, "message_ar", void 0);
49
53
  __decorate([
50
54
  (0, typeorm_1.Column)({ type: 'varchar', length: 20, nullable: false }),
51
55
  __metadata("design:type", String)
@@ -62,6 +66,10 @@ __decorate([
62
66
  (0, typeorm_1.Column)({ type: 'varchar', length: 50, nullable: true }),
63
67
  __metadata("design:type", String)
64
68
  ], AccommodationChat.prototype, "status", void 0);
69
+ __decorate([
70
+ (0, typeorm_1.Column)({ type: "varchar", length: 100, nullable: true }),
71
+ __metadata("design:type", Object)
72
+ ], AccommodationChat.prototype, "status_ar", void 0);
65
73
  __decorate([
66
74
  (0, typeorm_1.Column)({ type: 'int', nullable: false }),
67
75
  __metadata("design:type", Number)
@@ -13,7 +13,9 @@ export declare class AccommodationWorkflow extends BaseModel {
13
13
  workflow_definition_id: number;
14
14
  current_level: number;
15
15
  content: string;
16
+ content_ar: string | null;
16
17
  status: AccommodationWorkFlowStatus;
18
+ status_ar: string | null;
17
19
  step_order: number;
18
20
  order: number;
19
21
  user_id: number;
@@ -50,6 +50,10 @@ __decorate([
50
50
  (0, typeorm_1.Column)({ type: 'varchar', length: 500, nullable: true }),
51
51
  __metadata("design:type", String)
52
52
  ], AccommodationWorkflow.prototype, "content", void 0);
53
+ __decorate([
54
+ (0, typeorm_1.Column)({ type: "varchar", length: 500, nullable: true }),
55
+ __metadata("design:type", Object)
56
+ ], AccommodationWorkflow.prototype, "content_ar", void 0);
53
57
  __decorate([
54
58
  (0, typeorm_1.Column)({
55
59
  type: 'enum',
@@ -59,6 +63,10 @@ __decorate([
59
63
  }),
60
64
  __metadata("design:type", String)
61
65
  ], AccommodationWorkflow.prototype, "status", void 0);
66
+ __decorate([
67
+ (0, typeorm_1.Column)({ type: "varchar", length: 100, nullable: true }),
68
+ __metadata("design:type", Object)
69
+ ], AccommodationWorkflow.prototype, "status_ar", void 0);
62
70
  __decorate([
63
71
  (0, typeorm_1.Column)({ type: 'int', nullable: true }),
64
72
  __metadata("design:type", Number)
@@ -14,7 +14,9 @@ export declare class AirportEntryPermitChat extends BaseModel {
14
14
  user_id: number;
15
15
  role_id: number | null;
16
16
  message: string;
17
+ message_ar: string | null;
17
18
  messageType: AirportEntryPermitMessageTypes;
18
19
  status: string;
20
+ status_ar: string | null;
19
21
  constructor(request_id: number, user_id: number, message: string, service_id?: number, sub_service_id?: number, role_id?: number, messageType?: AirportEntryPermitMessageTypes, status?: AirportEntryPermitStatus);
20
22
  }
@@ -59,6 +59,10 @@ __decorate([
59
59
  (0, typeorm_1.Column)({ type: 'text', nullable: false }),
60
60
  __metadata("design:type", String)
61
61
  ], AirportEntryPermitChat.prototype, "message", void 0);
62
+ __decorate([
63
+ (0, typeorm_1.Column)({ type: "text", nullable: true }),
64
+ __metadata("design:type", Object)
65
+ ], AirportEntryPermitChat.prototype, "message_ar", void 0);
62
66
  __decorate([
63
67
  (0, typeorm_1.Column)({
64
68
  type: 'enum',
@@ -72,6 +76,10 @@ __decorate([
72
76
  (0, typeorm_1.Column)({ type: 'text', nullable: true }),
73
77
  __metadata("design:type", String)
74
78
  ], AirportEntryPermitChat.prototype, "status", void 0);
79
+ __decorate([
80
+ (0, typeorm_1.Column)({ type: "varchar", length: 100, nullable: true }),
81
+ __metadata("design:type", Object)
82
+ ], AirportEntryPermitChat.prototype, "status_ar", void 0);
75
83
  exports.AirportEntryPermitChat = AirportEntryPermitChat = __decorate([
76
84
  (0, typeorm_1.Entity)({ name: 'airport_entry_permit_chat' }),
77
85
  __metadata("design:paramtypes", [Number, Number, String, Number, Number, Number, String, String])
@@ -9,7 +9,9 @@ export declare class AirportEntryPermitWorkFlow extends BaseModel {
9
9
  service_id: number | null;
10
10
  sub_service_id: number | null;
11
11
  content: string;
12
+ content_ar: string | null;
12
13
  status: AirportEntryPermitWorkFlowStatus;
14
+ status_ar: string | null;
13
15
  user_id: number | null;
14
16
  role_id: number | null;
15
17
  department_id: number | null;