rez_core 5.0.84 → 5.0.85

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 (427) hide show
  1. package/.prettierrc +3 -3
  2. package/.vscode/extensions.json +5 -0
  3. package/README.md +99 -99
  4. package/dist/module/auth/guards/role.guard.js +3 -3
  5. package/dist/module/auth/services/auth.service.js +2 -2
  6. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  7. package/dist/module/filter/service/filter-evaluator.service.js +2 -2
  8. package/dist/module/filter/service/filter.service.js +22 -22
  9. package/dist/module/integration/examples/usage.example.js +9 -9
  10. package/dist/module/integration/service/integration.service.d.ts +3 -1
  11. package/dist/module/integration/service/integration.service.js +7 -4
  12. package/dist/module/integration/service/integration.service.js.map +1 -1
  13. package/dist/module/integration/service/wrapper.service.js +26 -26
  14. package/dist/module/listmaster/service/list-master-item.service.js +2 -2
  15. package/dist/module/mapper/service/field-mapper.service.js +4 -4
  16. package/dist/module/meta/repository/entity-attribute-update.repository.js +3 -3
  17. package/dist/module/meta/repository/entity-master.repository.js +6 -6
  18. package/dist/module/meta/service/entity-dynamic.service.js +36 -36
  19. package/dist/module/meta/service/entity-list.service.js +3 -3
  20. package/dist/module/meta/service/entity-relation.service.js +9 -9
  21. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  22. package/dist/module/meta/service/resolver.service.js +34 -34
  23. package/dist/module/meta/service/resolver.service.js.map +1 -1
  24. package/dist/module/module/repository/menu.repository.js +17 -17
  25. package/dist/module/notification/service/notification.service.js +10 -10
  26. package/dist/module/user/controller/login.controller.js +18 -18
  27. package/dist/module/user/service/user-session.service.js +2 -2
  28. package/dist/module/workflow/repository/action.repository.js +12 -12
  29. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  30. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  31. package/dist/module/workflow/repository/stage-group.repository.js +20 -20
  32. package/dist/module/workflow/repository/stage.repository.js +8 -8
  33. package/dist/module/workflow/repository/task.repository.d.ts +2 -1
  34. package/dist/module/workflow/repository/task.repository.js +5 -5
  35. package/dist/module/workflow/repository/task.repository.js.map +1 -1
  36. package/dist/module/workflow/service/action-template-mapping.service.js +13 -13
  37. package/dist/module/workflow/service/action.service.js +7 -7
  38. package/dist/module/workflow/service/entity-modification.service.js +2 -2
  39. package/dist/module/workflow/service/stage-group.service.js +2 -2
  40. package/dist/module/workflow/service/stage.service.js +2 -2
  41. package/dist/module/workflow/service/task.service.js +19 -19
  42. package/dist/module/workflow/service/task.service.js.map +1 -1
  43. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  44. package/dist/module/workflow/service/workflow-meta.service.js +26 -26
  45. package/dist/module/workflow-automation/service/schedule-handler.service.js +9 -9
  46. package/dist/module/workflow-schedule/processors/schedule.processor.js +4 -4
  47. package/dist/module/workflow-schedule/service/workflow-schedule.service.js +9 -9
  48. package/dist/tsconfig.build.tsbuildinfo +1 -1
  49. package/dist/utils/service/reflection-helper.service.js +2 -2
  50. package/docs/modules/event-driven-integration-design.md +91 -91
  51. package/docs/modules/integration.md +250 -250
  52. package/eslint.config.mjs +34 -34
  53. package/nest-cli.json +14 -14
  54. package/package.json +125 -125
  55. package/src/app.controller.ts +12 -12
  56. package/src/app.module.ts +66 -66
  57. package/src/app.service.ts +8 -8
  58. package/src/config/bull.config.ts +69 -69
  59. package/src/config/config.module.ts +17 -17
  60. package/src/config/database.config.ts +48 -48
  61. package/src/constant/global.constant.ts +67 -67
  62. package/src/core.module.ts +91 -91
  63. package/src/decorators/roles.decorator.ts +7 -7
  64. package/src/dtos/response.dto.ts +6 -6
  65. package/src/dtos/response.ts +5 -5
  66. package/src/index.ts +1 -1
  67. package/src/module/auth/auth.module.ts +49 -49
  68. package/src/module/auth/controller/auth.controller.ts +28 -28
  69. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  70. package/src/module/auth/guards/jwt.guard.ts +22 -22
  71. package/src/module/auth/guards/role.guard.ts +68 -68
  72. package/src/module/auth/services/auth.service.ts +50 -50
  73. package/src/module/auth/services/jwt.service.ts +11 -11
  74. package/src/module/auth/strategies/google.strategy.ts +54 -54
  75. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  76. package/src/module/auth/strategies/local.strategy.ts +13 -13
  77. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  78. package/src/module/dashboard/dashboard.module.ts +21 -21
  79. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  80. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  81. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  82. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  83. package/src/module/dev/dev.module.ts +12 -12
  84. package/src/module/dev/service/dev.service.ts +7 -7
  85. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  86. package/src/module/enterprise/enterprise.module.ts +30 -30
  87. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  88. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  89. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  90. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  91. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  92. package/src/module/enterprise/repository/school.repository.ts +278 -278
  93. package/src/module/enterprise/service/brand.service.ts +5 -5
  94. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  95. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  96. package/src/module/enterprise/service/organization.service.ts +145 -145
  97. package/src/module/entity_json/controller/entity_json.controller.ts +47 -47
  98. package/src/module/entity_json/entity/entityJson.entity.ts +39 -39
  99. package/src/module/entity_json/entity_json.module.ts +18 -18
  100. package/src/module/entity_json/service/entityJson.repository.ts +37 -37
  101. package/src/module/entity_json/service/entity_json.service.ts +234 -234
  102. package/src/module/filter/controller/filter.controller.ts +84 -84
  103. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  104. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  105. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  106. package/src/module/filter/filter.module.ts +31 -31
  107. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  108. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  109. package/src/module/filter/service/filter.service.ts +1299 -1299
  110. package/src/module/filter/service/saved-filter.service.ts +170 -170
  111. package/src/module/ics/controller/ics.controller.ts +21 -21
  112. package/src/module/ics/dto/ics.dto.ts +55 -55
  113. package/src/module/ics/ics.module.ts +13 -13
  114. package/src/module/ics/service/ics.service.ts +57 -57
  115. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  116. package/src/module/integration/controller/integration.controller.ts +662 -662
  117. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  118. package/src/module/integration/dto/create-config.dto.ts +526 -526
  119. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  120. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  121. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  122. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  123. package/src/module/integration/examples/usage.example.ts +338 -338
  124. package/src/module/integration/factories/base.factory.ts +7 -7
  125. package/src/module/integration/factories/email.factory.ts +49 -49
  126. package/src/module/integration/factories/integration.factory.ts +121 -121
  127. package/src/module/integration/factories/sms.factory.ts +51 -51
  128. package/src/module/integration/factories/telephone.factory.ts +41 -41
  129. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  130. package/src/module/integration/integration.module.ts +110 -110
  131. package/src/module/integration/service/calendar-event.service.ts +118 -118
  132. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  133. package/src/module/integration/service/integration-queue.service.ts +229 -229
  134. package/src/module/integration/service/integration.service.ts +2634 -2633
  135. package/src/module/integration/service/oauth.service.ts +224 -224
  136. package/src/module/integration/service/wrapper.service.ts +738 -738
  137. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  138. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  139. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  140. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  141. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  142. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  143. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  144. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  145. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  146. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  147. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  148. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  149. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  150. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  151. package/src/module/layout/controller/layout.controller.ts +47 -47
  152. package/src/module/layout/entity/header-items.entity.ts +28 -28
  153. package/src/module/layout/entity/header-section.entity.ts +19 -19
  154. package/src/module/layout/layout.module.ts +21 -21
  155. package/src/module/layout/repository/header-items.repository.ts +18 -18
  156. package/src/module/layout/repository/header-section.repository.ts +22 -22
  157. package/src/module/layout/service/header-section.service.ts +25 -25
  158. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  159. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  160. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  161. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  162. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  163. package/src/module/lead/controller/lead.controller.ts +30 -30
  164. package/src/module/lead/lead.module.ts +14 -14
  165. package/src/module/lead/repository/lead.repository.ts +41 -41
  166. package/src/module/lead/service/lead.service.ts +54 -54
  167. package/src/module/linked_attributes/controller/linked_attributes.controller.ts +37 -37
  168. package/src/module/linked_attributes/entity/linked_attribute.entity.ts +51 -51
  169. package/src/module/linked_attributes/linked_attributes.module.ts +16 -16
  170. package/src/module/linked_attributes/repository/linked_attribute.repository.ts +12 -12
  171. package/src/module/linked_attributes/service/linked_attributes.service.ts +75 -75
  172. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  173. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  174. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  175. package/src/module/listmaster/listmaster.module.ts +46 -46
  176. package/src/module/listmaster/repository/list-master-items.repository.ts +173 -173
  177. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  178. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  179. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  180. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  181. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  182. package/src/module/listmaster/service/list-master.service.ts +535 -535
  183. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  184. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  185. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  186. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  187. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  188. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  189. package/src/module/mapper/mapper.module.ts +35 -35
  190. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  191. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  192. package/src/module/mapper/repository/mapper.repository.ts +32 -32
  193. package/src/module/mapper/service/field-mapper.service.ts +271 -271
  194. package/src/module/mapper/service/mapper.service.ts +81 -81
  195. package/src/module/master/controller/master.controller.ts +74 -74
  196. package/src/module/master/service/master.service.ts +483 -483
  197. package/src/module/meta/controller/app-master.controller.ts +38 -38
  198. package/src/module/meta/controller/attribute-master.controller.ts +84 -84
  199. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  200. package/src/module/meta/controller/entity-master.controller.ts +41 -41
  201. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  202. package/src/module/meta/controller/entity.controller.ts +392 -392
  203. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  204. package/src/module/meta/controller/media.controller.ts +107 -107
  205. package/src/module/meta/controller/meta.controller.ts +96 -96
  206. package/src/module/meta/controller/view-master.controller.ts +86 -86
  207. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  208. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  209. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  210. package/src/module/meta/entity/app-master.entity.ts +34 -34
  211. package/src/module/meta/entity/attribute-master.entity.ts +92 -92
  212. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  213. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  214. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  215. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  216. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  217. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  218. package/src/module/meta/entity/media-data.entity.ts +32 -32
  219. package/src/module/meta/entity/preference.entity.ts +62 -62
  220. package/src/module/meta/entity/view-master.entity.ts +41 -41
  221. package/src/module/meta/entity.module.ts +166 -166
  222. package/src/module/meta/repository/app-master.repository.ts +20 -20
  223. package/src/module/meta/repository/attribute-master.repository.ts +138 -138
  224. package/src/module/meta/repository/entity-attribute-update.repository.ts +44 -44
  225. package/src/module/meta/repository/entity-master.repository.ts +111 -111
  226. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  227. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  228. package/src/module/meta/repository/media-data.repository.ts +50 -50
  229. package/src/module/meta/repository/preference.repository.ts +20 -20
  230. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  231. package/src/module/meta/repository/view-master.repository.ts +42 -42
  232. package/src/module/meta/service/app-master.service.ts +37 -37
  233. package/src/module/meta/service/attribute-master.service.ts +130 -130
  234. package/src/module/meta/service/common.service.ts +9 -9
  235. package/src/module/meta/service/entity-attribute-update.service.ts +28 -28
  236. package/src/module/meta/service/entity-dynamic.service.ts +857 -857
  237. package/src/module/meta/service/entity-list.service.ts +205 -205
  238. package/src/module/meta/service/entity-master.service.ts +171 -171
  239. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  240. package/src/module/meta/service/entity-relation.service.ts +87 -87
  241. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  242. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  243. package/src/module/meta/service/entity-table.service.ts +150 -150
  244. package/src/module/meta/service/entity-validation.service.ts +187 -187
  245. package/src/module/meta/service/entity.service.ts +67 -67
  246. package/src/module/meta/service/field-group.service.ts +103 -103
  247. package/src/module/meta/service/media-data.service.ts +507 -507
  248. package/src/module/meta/service/populate-meta.service.ts +222 -222
  249. package/src/module/meta/service/preference.service.ts +16 -16
  250. package/src/module/meta/service/resolver.service.ts +316 -318
  251. package/src/module/meta/service/section-master.service.ts +104 -104
  252. package/src/module/meta/service/update-form-json.service.ts +22 -22
  253. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  254. package/src/module/meta/service/view-master.service.ts +127 -127
  255. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  256. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  257. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  258. package/src/module/module/controller/menu.controller.ts +15 -15
  259. package/src/module/module/controller/module-access.controller.ts +134 -134
  260. package/src/module/module/entity/menu.entity.ts +43 -43
  261. package/src/module/module/entity/module-access.entity.ts +25 -25
  262. package/src/module/module/entity/module-action.entity.ts +17 -17
  263. package/src/module/module/entity/module.entity.ts +52 -52
  264. package/src/module/module/module.module.ts +42 -42
  265. package/src/module/module/repository/menu.repository.ts +191 -191
  266. package/src/module/module/repository/module-access.repository.ts +344 -344
  267. package/src/module/module/service/menu.service.ts +82 -82
  268. package/src/module/module/service/module-access.service.ts +195 -195
  269. package/src/module/notification/controller/notification.controller.ts +58 -58
  270. package/src/module/notification/controller/otp.controller.ts +117 -117
  271. package/src/module/notification/entity/notification.entity.ts +26 -26
  272. package/src/module/notification/entity/otp.entity.ts +28 -28
  273. package/src/module/notification/firebase-admin.config.ts +22 -22
  274. package/src/module/notification/notification.module.ts +69 -69
  275. package/src/module/notification/repository/otp.repository.ts +27 -27
  276. package/src/module/notification/service/email.service.ts +127 -127
  277. package/src/module/notification/service/notification.service.ts +160 -160
  278. package/src/module/notification/service/otp.service.ts +133 -133
  279. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  280. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  281. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  282. package/src/module/third-party-module/third-party.module.ts +12 -12
  283. package/src/module/user/controller/login.controller.ts +198 -198
  284. package/src/module/user/controller/user.controller.ts +40 -40
  285. package/src/module/user/dto/create-user.dto.ts +62 -62
  286. package/src/module/user/dto/update-user.dto.ts +4 -4
  287. package/src/module/user/entity/role.entity.ts +33 -33
  288. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  289. package/src/module/user/entity/user-session.entity.ts +73 -73
  290. package/src/module/user/entity/user.entity.ts +59 -59
  291. package/src/module/user/repository/role.repository.ts +96 -96
  292. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  293. package/src/module/user/repository/user.repository.ts +50 -50
  294. package/src/module/user/repository/userSession.repository.ts +33 -33
  295. package/src/module/user/service/login.service.ts +326 -326
  296. package/src/module/user/service/role.service.ts +197 -197
  297. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  298. package/src/module/user/service/user-session.service.ts +168 -168
  299. package/src/module/user/service/user.service.ts +368 -368
  300. package/src/module/user/user.module.ts +65 -65
  301. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  302. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  303. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  304. package/src/module/workflow/controller/action.controller.ts +111 -111
  305. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  306. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  307. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  308. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  309. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  310. package/src/module/workflow/controller/stage.controller.ts +50 -50
  311. package/src/module/workflow/controller/task.controller.ts +77 -77
  312. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  313. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  314. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  315. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  316. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  317. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  318. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  319. package/src/module/workflow/entity/action.entity.ts +53 -53
  320. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  321. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  322. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  323. package/src/module/workflow/entity/form.entity.ts +25 -25
  324. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  325. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  326. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  327. package/src/module/workflow/entity/stage.entity.ts +20 -20
  328. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  329. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  330. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  331. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  332. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  333. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  334. package/src/module/workflow/repository/action-data.repository.ts +339 -339
  335. package/src/module/workflow/repository/action.repository.ts +341 -341
  336. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  337. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  338. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  339. package/src/module/workflow/repository/stage-group.repository.ts +197 -197
  340. package/src/module/workflow/repository/stage-movement.repository.ts +253 -253
  341. package/src/module/workflow/repository/stage.repository.ts +172 -172
  342. package/src/module/workflow/repository/task.repository.ts +151 -149
  343. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  344. package/src/module/workflow/service/action-category.service.ts +33 -33
  345. package/src/module/workflow/service/action-data.service.ts +62 -62
  346. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  347. package/src/module/workflow/service/action-template-mapping.service.ts +131 -131
  348. package/src/module/workflow/service/action.service.ts +279 -279
  349. package/src/module/workflow/service/activity-log.service.ts +107 -107
  350. package/src/module/workflow/service/comm-template.service.ts +180 -180
  351. package/src/module/workflow/service/entity-modification.service.ts +61 -61
  352. package/src/module/workflow/service/form-master.service.ts +35 -35
  353. package/src/module/workflow/service/populate-workflow.service.ts +333 -333
  354. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  355. package/src/module/workflow/service/stage-group.service.ts +342 -342
  356. package/src/module/workflow/service/stage.service.ts +199 -199
  357. package/src/module/workflow/service/task.service.ts +549 -549
  358. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  359. package/src/module/workflow/service/workflow-meta.service.ts +674 -674
  360. package/src/module/workflow/service/workflow.service.ts +209 -209
  361. package/src/module/workflow/workflow.module.ts +180 -180
  362. package/src/module/workflow-automation/SCHEDULING_GUIDE.md +145 -145
  363. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +43 -43
  364. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  365. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +40 -40
  366. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  367. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  368. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  369. package/src/module/workflow-automation/service/schedule-handler.service.ts +168 -168
  370. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +224 -224
  371. package/src/module/workflow-automation/service/workflow-automation.service.ts +515 -515
  372. package/src/module/workflow-automation/workflow-automation.module.ts +54 -54
  373. package/src/module/workflow-schedule/INSTALLATION.md +244 -244
  374. package/src/module/workflow-schedule/MULTI_PROJECT_GUIDE.md +196 -196
  375. package/src/module/workflow-schedule/README.md +422 -422
  376. package/src/module/workflow-schedule/constants/schedule.constants.ts +48 -48
  377. package/src/module/workflow-schedule/controller/workflow-schedule.controller.ts +255 -255
  378. package/src/module/workflow-schedule/docs/CLAUDE_CODE_GUIDE.md +510 -510
  379. package/src/module/workflow-schedule/docs/CLAUDE_CODE_PROMPT.md +362 -362
  380. package/src/module/workflow-schedule/docs/RUN_CLAUDE_CODE.sh +68 -68
  381. package/src/module/workflow-schedule/dto/create-schedule.dto.ts +147 -147
  382. package/src/module/workflow-schedule/dto/get-execution-logs.dto.ts +119 -119
  383. package/src/module/workflow-schedule/dto/update-schedule.dto.ts +96 -96
  384. package/src/module/workflow-schedule/entities/scheduled-workflow.entity.ts +148 -148
  385. package/src/module/workflow-schedule/entities/workflow-execution-log.entity.ts +154 -154
  386. package/src/module/workflow-schedule/interfaces/schedule-job-data.interface.ts +53 -53
  387. package/src/module/workflow-schedule/interfaces/workflow-schedule-options.interface.ts +12 -12
  388. package/src/module/workflow-schedule/processors/schedule.processor.ts +584 -584
  389. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +600 -600
  390. package/src/module/workflow-schedule/workflow-schedule.module.ts +67 -67
  391. package/src/resources/dev.properties.yaml +31 -31
  392. package/src/resources/local.properties.yaml +27 -27
  393. package/src/resources/properties.module.ts +12 -12
  394. package/src/resources/properties.yaml.ts +11 -11
  395. package/src/resources/uat.properties.yaml +31 -31
  396. package/src/table.config.ts +133 -133
  397. package/src/utils/dto/excel-data.dto.ts +14 -14
  398. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  399. package/src/utils/service/base64util.service.ts +18 -18
  400. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  401. package/src/utils/service/codeGenerator.service.ts +22 -22
  402. package/src/utils/service/dateUtil.service.ts +17 -17
  403. package/src/utils/service/encryptUtil.service.ts +97 -97
  404. package/src/utils/service/excel-helper.service.ts +72 -72
  405. package/src/utils/service/excelUtil.service.ts +15 -15
  406. package/src/utils/service/file-util.service.ts +11 -11
  407. package/src/utils/service/json-util.service.ts +23 -23
  408. package/src/utils/service/loggingUtil.service.ts +88 -88
  409. package/src/utils/service/reflection-helper.service.ts +62 -62
  410. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  411. package/src/utils/utils.module.ts +27 -27
  412. package/tsconfig.build.json +4 -4
  413. package/tsconfig.json +24 -24
  414. package/.claude/settings.local.json +0 -26
  415. package/.idea/250218_nodejs_core.iml +0 -9
  416. package/.idea/codeStyles/Project.xml +0 -59
  417. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  418. package/.idea/copilot.data.migration.agent.xml +0 -6
  419. package/.idea/copilot.data.migration.ask.xml +0 -6
  420. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  421. package/.idea/copilot.data.migration.edit.xml +0 -6
  422. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  423. package/.idea/misc.xml +0 -6
  424. package/.idea/modules.xml +0 -8
  425. package/.idea/prettier.xml +0 -6
  426. package/.idea/vcs.xml +0 -6
  427. package/server.log +0 -850
@@ -1,341 +1,341 @@
1
- import {
2
- BadRequestException,
3
- Inject,
4
- Injectable,
5
- NotFoundException,
6
- } from '@nestjs/common';
7
- import { InjectRepository } from '@nestjs/typeorm';
8
- import { DataSource, In, Repository } from 'typeorm';
9
- import { ActionEntity } from '../entity/action.entity';
10
- import { UserData } from 'src/module/user/entity/user.entity';
11
- import { ReflectionHelper } from '../../../utils/service/reflection-helper.service';
12
-
13
- @Injectable()
14
- export class ActionRepository {
15
- constructor(
16
- @InjectRepository(ActionEntity)
17
- private readonly actionRepository: Repository<ActionEntity>,
18
- private readonly dataSource: DataSource,
19
- private readonly reflectionHelper: ReflectionHelper,
20
- ) {
21
- }
22
-
23
- async getReasonCode(loggedInUser: UserData): Promise<any> {
24
- const { organization_id } = loggedInUser;
25
- const result = await this.dataSource.query(
26
- `
27
- SELECT name, type
28
- FROM frm_list_master
29
- WHERE organization_id = $1
30
- AND source = 'master'
31
- `,
32
- [organization_id],
33
- );
34
-
35
- const formatted = result.map((item: any) => ({
36
- label: item.name,
37
- value: item.type,
38
- }));
39
-
40
- return formatted;
41
- }
42
-
43
- async defaultReasonCode(list_type: string, loggedInUser: UserData) {
44
- const { organization_id } = loggedInUser;
45
- if (!list_type) {
46
- throw new BadRequestException('list_type is required');
47
- }
48
- const result = await this.dataSource.query(
49
- `
50
- SELECT name, id
51
- FROM frm_list_master_items
52
- WHERE listtype = $1
53
- AND organization_id = $2
54
- `,
55
- [list_type, organization_id],
56
- );
57
-
58
- // Format as array of key-value pairs
59
- return result.map((row: any) => ({
60
- label: row.name,
61
- value: row.id,
62
- }));
63
- }
64
-
65
- async getActions(loggedInUser: UserData, stage_id: number) {
66
- const { organization_id } = loggedInUser;
67
-
68
- const workflowStageActionRepo = this.reflectionHelper.getRepoService('StageActionMapping');
69
-
70
- // Step 1: Get all action_ids for the provided stage_id
71
- const stageActions = await workflowStageActionRepo.find({
72
- where: {
73
- stage_id: stage_id,
74
- },
75
- });
76
- if (!stageActions?.length) return [];
77
-
78
- const actionIds = stageActions.map((sa) => sa.action_id);
79
- const mappingIds = stageActions.map((sa) => sa.id);
80
-
81
- // Step 2: Get template codes with mapping IDs
82
- const workflowActionTemplateMappingRepo = this.reflectionHelper.getRepoService('ActionTemplateMapping');
83
-
84
- const templateMappings = await workflowActionTemplateMappingRepo.find({
85
- where: {
86
- stg_act_mapping_id: In(mappingIds),
87
- },
88
- });
89
-
90
- const templateCodes = templateMappings.map((tm) => tm.template_code);
91
-
92
- // Step 3: Fetch template names from frm_wf_comm_template
93
- const templateCodeToName: Record<string, string> = {};
94
-
95
- const workflowCommTemplateRepo = this.reflectionHelper.getRepoService('CommTemplate');
96
-
97
- if (templateCodes.length > 0) {
98
- const templates = await workflowCommTemplateRepo.find({
99
- where: {
100
- code: In(templateCodes),
101
- organization_id: organization_id,
102
- },
103
- });
104
-
105
- templates.forEach((tpl) => {
106
- templateCodeToName[tpl.code] = tpl.name;
107
- });
108
- }
109
-
110
- // Step 4: Build map of mapping_id → template names
111
- const mappingIdToTemplates: Record<number, string[]> = {};
112
-
113
- for (const tm of templateMappings) {
114
- const mappingId = tm.stg_act_mapping_id;
115
- const name = templateCodeToName[tm.template_code];
116
- if (name) {
117
- if (!mappingIdToTemplates[mappingId]) {
118
- mappingIdToTemplates[mappingId] = [];
119
- }
120
- mappingIdToTemplates[mappingId].push(name);
121
- }
122
- }
123
-
124
- // Step 5: Build action_id → template names using mappingIdToTemplates + stageActions
125
- const actionIdToTemplates: Record<number, string[]> = {};
126
-
127
- for (const sa of stageActions) {
128
- const mappingId = sa.id;
129
- const templates = mappingIdToTemplates[mappingId];
130
- if (templates?.length) {
131
- if (!actionIdToTemplates[sa.action_id]) {
132
- actionIdToTemplates[sa.action_id] = [];
133
- }
134
- actionIdToTemplates[sa.action_id].push(...templates);
135
- }
136
- }
137
-
138
- // Step 6: Fetch action details
139
- const workflowActionRepo = this.reflectionHelper.getRepoService('ActionEntity');
140
-
141
- const actionResults = await workflowActionRepo
142
- .createQueryBuilder()
143
- .select([
144
- 'DISTINCT ON (a.id) a.*',
145
- 'ac.name AS action_category',
146
- 'ac.modalname AS modalname',
147
- 'ar.name AS action_requirement',
148
- ])
149
- .from('frm_wf_action', 'a')
150
- .leftJoin('frm_wf_action_category', 'ac', 'ac.id::text = a.action_category')
151
- .leftJoin(
152
- 'frm_list_master_items',
153
- 'ar',
154
- `ar.id::text = a.action_requirement
155
- AND ar.listtype = 'ACRQ'
156
- AND ar.organization_id = :orgId`,
157
- { orgId: organization_id },
158
- )
159
- .where('a.organization_id = :orgId', { orgId: organization_id })
160
- .andWhere('a.id::text IN (:...actionIds)', { actionIds })
161
- .getRawMany();
162
-
163
- // Step 7: Enrich result with template field
164
- const enrichedResult = actionResults.map((row) => {
165
- const actionId = Number(row.id); // Ensure numeric ID match
166
- const templates = actionIdToTemplates[actionId] || [];
167
- const uniqueTemplates = [...new Set(templates)]; // remove duplicates
168
-
169
- return {
170
- ...row,
171
- template: uniqueTemplates.join(', '),
172
- };
173
- });
174
-
175
- return enrichedResult;
176
- }
177
-
178
- async getDependentActions(
179
- loggedInUser: UserData,
180
- stage_id: number,
181
- action_id?: number,
182
- ) {
183
- // Step 1: Get all action_ids for the provided stage_id
184
- let stageActionMappingRepo = this.reflectionHelper.getRepoService('StageActionMapping');
185
-
186
- const stageActions = await stageActionMappingRepo.find({
187
- where: {
188
- stage_id: stage_id,
189
- },
190
- });
191
-
192
- if (!stageActions?.length) return [];
193
-
194
- const actionIds = stageActions.map((sa) => sa.action_id);
195
-
196
- // Step 2: Fetch action details except the provided action_id incase it is provided
197
- const filteredActionIds = action_id
198
- ? actionIds.filter((id) => id != action_id)
199
- : actionIds;
200
-
201
- let actionResults;
202
-
203
- if (filteredActionIds.length === 0) {
204
- return [];
205
- }
206
-
207
- const actionRepo = this.reflectionHelper.getRepoService('ActionEntity');
208
- actionResults = await actionRepo.find({
209
- where: {
210
- id: In(actionIds)
211
- }
212
- });
213
-
214
- // Step 3: Format result
215
- const enrichedResult = actionResults.map((row) => ({
216
- value: row.action_id,
217
- label: row.action_name,
218
- }));
219
-
220
- return enrichedResult;
221
- }
222
-
223
- async getAction(
224
- organization_id: number,
225
- stage_id: number,
226
- mapped_entity_id: number,
227
- mapped_entity_type: string,
228
- ) {
229
- // Step 1: Get all action mappings for the stage
230
-
231
- const stageActionMappingRepo =
232
- this.reflectionHelper.getRepoService('StageActionMapping');
233
- const stageActions = await stageActionMappingRepo.find({
234
- where: {
235
- stage_id: stage_id,
236
- },
237
- });
238
-
239
- if (!stageActions?.length) {
240
- return [
241
- {
242
- value: '0',
243
- label: 'Generic',
244
- },
245
- ];
246
- }
247
-
248
- const actionIds = stageActions.map((sa) => sa.action_id);
249
-
250
- // Step 2: Fetch all actions with category details
251
- const actionRepo = this.reflectionHelper.getRepoService('ActionEntity');
252
-
253
- const actions = await actionRepo
254
- .createQueryBuilder("a")
255
- .select([
256
- "a.id AS action_id",
257
- "a.name AS action_name",
258
- "a.reason_code AS action_reason_code",
259
- "a.default_reason_code AS default_reason_code",
260
- "a.default_value AS default_value",
261
- "a.mode AS mode",
262
- "a.action_category AS action_category_id",
263
- "ac.reason_code AS category_reason_code",
264
- "ac.modalname AS modalname",
265
- "ac.logo AS logo",
266
- "ac.name AS action_category_name",
267
- "a.dependent_action_id AS dependent_action_id",
268
- ])
269
- .leftJoin(
270
- "frm_wf_action_category",
271
- "ac",
272
- "ac.id = a.action_category::bigint"
273
- )
274
- .where("a.organization_id = :orgId", { orgId: organization_id })
275
- .andWhere("a.id IN (:...actionIds)", { actionIds })
276
- .orderBy("a.sequence", "ASC")
277
- .getRawMany();
278
-
279
- // Step 3: Fetch action_data
280
- const actionDataRepo = this.reflectionHelper.getRepoService('ActionDataEntity');
281
-
282
- const actionData = await actionDataRepo
283
- .createQueryBuilder("ad")
284
- .select([
285
- "ad.action_id AS action_id",
286
- "ad.is_current AS is_current",
287
- "ad.is_mandatory AS is_mandatory",
288
- "ad.is_done AS is_done",
289
- ])
290
- .where("ad.stage_id = :stageId", { stageId: stage_id })
291
- .andWhere("ad.action_id IN (:...actionIds)", { actionIds })
292
- .andWhere("ad.mapped_entity_id = :mapped_entity_id", { mapped_entity_id })
293
- .andWhere("ad.mapped_entity_type = :mapped_entity_type", {
294
- mapped_entity_type,
295
- })
296
- .getRawMany();
297
-
298
- const actionIdToData = actionData.reduce((acc, row) => {
299
- acc[row.action_id] = {
300
- is_current: row.is_current === 'Y',
301
- is_mandatory: row.is_mandatory === 1,
302
- is_done: row.is_done === 1,
303
- };
304
- return acc;
305
- }, {});
306
-
307
- // Step 5: Enrich actions
308
- const enrichedResult = actions.map((row) => {
309
- const data = actionIdToData[row.action_id];
310
-
311
- const reason_code =
312
- row.action_reason_code && row.action_reason_code.trim()
313
- ? row.action_reason_code
314
- : row.category_reason_code;
315
-
316
- return {
317
- value: row.action_id,
318
- dependent_action_id: row.dependent_action_id,
319
- label: row.action_name,
320
- modalname: row.modalname,
321
- logo: row.logo,
322
- mode: row.mode,
323
- name: row.action_category_name,
324
- reason_code,
325
- default_reason_code: row.default_reason_code,
326
- is_default: row.default_value === 1,
327
- is_current: data?.is_current ?? false,
328
- is_done: data?.is_done ?? false,
329
- is_mandatory: data?.is_mandatory ?? false,
330
- };
331
- });
332
-
333
- // Step 6: Add fallback option
334
- enrichedResult.push({
335
- value: '0',
336
- label: 'Generic',
337
- } as any);
338
-
339
- return enrichedResult;
340
- }
341
- }
1
+ import {
2
+ BadRequestException,
3
+ Inject,
4
+ Injectable,
5
+ NotFoundException,
6
+ } from '@nestjs/common';
7
+ import { InjectRepository } from '@nestjs/typeorm';
8
+ import { DataSource, In, Repository } from 'typeorm';
9
+ import { ActionEntity } from '../entity/action.entity';
10
+ import { UserData } from 'src/module/user/entity/user.entity';
11
+ import { ReflectionHelper } from '../../../utils/service/reflection-helper.service';
12
+
13
+ @Injectable()
14
+ export class ActionRepository {
15
+ constructor(
16
+ @InjectRepository(ActionEntity)
17
+ private readonly actionRepository: Repository<ActionEntity>,
18
+ private readonly dataSource: DataSource,
19
+ private readonly reflectionHelper: ReflectionHelper,
20
+ ) {
21
+ }
22
+
23
+ async getReasonCode(loggedInUser: UserData): Promise<any> {
24
+ const { organization_id } = loggedInUser;
25
+ const result = await this.dataSource.query(
26
+ `
27
+ SELECT name, type
28
+ FROM frm_list_master
29
+ WHERE organization_id = $1
30
+ AND source = 'master'
31
+ `,
32
+ [organization_id],
33
+ );
34
+
35
+ const formatted = result.map((item: any) => ({
36
+ label: item.name,
37
+ value: item.type,
38
+ }));
39
+
40
+ return formatted;
41
+ }
42
+
43
+ async defaultReasonCode(list_type: string, loggedInUser: UserData) {
44
+ const { organization_id } = loggedInUser;
45
+ if (!list_type) {
46
+ throw new BadRequestException('list_type is required');
47
+ }
48
+ const result = await this.dataSource.query(
49
+ `
50
+ SELECT name, id
51
+ FROM frm_list_master_items
52
+ WHERE listtype = $1
53
+ AND organization_id = $2
54
+ `,
55
+ [list_type, organization_id],
56
+ );
57
+
58
+ // Format as array of key-value pairs
59
+ return result.map((row: any) => ({
60
+ label: row.name,
61
+ value: row.id,
62
+ }));
63
+ }
64
+
65
+ async getActions(loggedInUser: UserData, stage_id: number) {
66
+ const { organization_id } = loggedInUser;
67
+
68
+ const workflowStageActionRepo = this.reflectionHelper.getRepoService('StageActionMapping');
69
+
70
+ // Step 1: Get all action_ids for the provided stage_id
71
+ const stageActions = await workflowStageActionRepo.find({
72
+ where: {
73
+ stage_id: stage_id,
74
+ },
75
+ });
76
+ if (!stageActions?.length) return [];
77
+
78
+ const actionIds = stageActions.map((sa) => sa.action_id);
79
+ const mappingIds = stageActions.map((sa) => sa.id);
80
+
81
+ // Step 2: Get template codes with mapping IDs
82
+ const workflowActionTemplateMappingRepo = this.reflectionHelper.getRepoService('ActionTemplateMapping');
83
+
84
+ const templateMappings = await workflowActionTemplateMappingRepo.find({
85
+ where: {
86
+ stg_act_mapping_id: In(mappingIds),
87
+ },
88
+ });
89
+
90
+ const templateCodes = templateMappings.map((tm) => tm.template_code);
91
+
92
+ // Step 3: Fetch template names from frm_wf_comm_template
93
+ const templateCodeToName: Record<string, string> = {};
94
+
95
+ const workflowCommTemplateRepo = this.reflectionHelper.getRepoService('CommTemplate');
96
+
97
+ if (templateCodes.length > 0) {
98
+ const templates = await workflowCommTemplateRepo.find({
99
+ where: {
100
+ code: In(templateCodes),
101
+ organization_id: organization_id,
102
+ },
103
+ });
104
+
105
+ templates.forEach((tpl) => {
106
+ templateCodeToName[tpl.code] = tpl.name;
107
+ });
108
+ }
109
+
110
+ // Step 4: Build map of mapping_id → template names
111
+ const mappingIdToTemplates: Record<number, string[]> = {};
112
+
113
+ for (const tm of templateMappings) {
114
+ const mappingId = tm.stg_act_mapping_id;
115
+ const name = templateCodeToName[tm.template_code];
116
+ if (name) {
117
+ if (!mappingIdToTemplates[mappingId]) {
118
+ mappingIdToTemplates[mappingId] = [];
119
+ }
120
+ mappingIdToTemplates[mappingId].push(name);
121
+ }
122
+ }
123
+
124
+ // Step 5: Build action_id → template names using mappingIdToTemplates + stageActions
125
+ const actionIdToTemplates: Record<number, string[]> = {};
126
+
127
+ for (const sa of stageActions) {
128
+ const mappingId = sa.id;
129
+ const templates = mappingIdToTemplates[mappingId];
130
+ if (templates?.length) {
131
+ if (!actionIdToTemplates[sa.action_id]) {
132
+ actionIdToTemplates[sa.action_id] = [];
133
+ }
134
+ actionIdToTemplates[sa.action_id].push(...templates);
135
+ }
136
+ }
137
+
138
+ // Step 6: Fetch action details
139
+ const workflowActionRepo = this.reflectionHelper.getRepoService('ActionEntity');
140
+
141
+ const actionResults = await workflowActionRepo
142
+ .createQueryBuilder()
143
+ .select([
144
+ 'DISTINCT ON (a.id) a.*',
145
+ 'ac.name AS action_category',
146
+ 'ac.modalname AS modalname',
147
+ 'ar.name AS action_requirement',
148
+ ])
149
+ .from('frm_wf_action', 'a')
150
+ .leftJoin('frm_wf_action_category', 'ac', 'ac.id::text = a.action_category')
151
+ .leftJoin(
152
+ 'frm_list_master_items',
153
+ 'ar',
154
+ `ar.id::text = a.action_requirement
155
+ AND ar.listtype = 'ACRQ'
156
+ AND ar.organization_id = :orgId`,
157
+ { orgId: organization_id },
158
+ )
159
+ .where('a.organization_id = :orgId', { orgId: organization_id })
160
+ .andWhere('a.id::text IN (:...actionIds)', { actionIds })
161
+ .getRawMany();
162
+
163
+ // Step 7: Enrich result with template field
164
+ const enrichedResult = actionResults.map((row) => {
165
+ const actionId = Number(row.id); // Ensure numeric ID match
166
+ const templates = actionIdToTemplates[actionId] || [];
167
+ const uniqueTemplates = [...new Set(templates)]; // remove duplicates
168
+
169
+ return {
170
+ ...row,
171
+ template: uniqueTemplates.join(', '),
172
+ };
173
+ });
174
+
175
+ return enrichedResult;
176
+ }
177
+
178
+ async getDependentActions(
179
+ loggedInUser: UserData,
180
+ stage_id: number,
181
+ action_id?: number,
182
+ ) {
183
+ // Step 1: Get all action_ids for the provided stage_id
184
+ let stageActionMappingRepo = this.reflectionHelper.getRepoService('StageActionMapping');
185
+
186
+ const stageActions = await stageActionMappingRepo.find({
187
+ where: {
188
+ stage_id: stage_id,
189
+ },
190
+ });
191
+
192
+ if (!stageActions?.length) return [];
193
+
194
+ const actionIds = stageActions.map((sa) => sa.action_id);
195
+
196
+ // Step 2: Fetch action details except the provided action_id incase it is provided
197
+ const filteredActionIds = action_id
198
+ ? actionIds.filter((id) => id != action_id)
199
+ : actionIds;
200
+
201
+ let actionResults;
202
+
203
+ if (filteredActionIds.length === 0) {
204
+ return [];
205
+ }
206
+
207
+ const actionRepo = this.reflectionHelper.getRepoService('ActionEntity');
208
+ actionResults = await actionRepo.find({
209
+ where: {
210
+ id: In(actionIds)
211
+ }
212
+ });
213
+
214
+ // Step 3: Format result
215
+ const enrichedResult = actionResults.map((row) => ({
216
+ value: row.action_id,
217
+ label: row.action_name,
218
+ }));
219
+
220
+ return enrichedResult;
221
+ }
222
+
223
+ async getAction(
224
+ organization_id: number,
225
+ stage_id: number,
226
+ mapped_entity_id: number,
227
+ mapped_entity_type: string,
228
+ ) {
229
+ // Step 1: Get all action mappings for the stage
230
+
231
+ const stageActionMappingRepo =
232
+ this.reflectionHelper.getRepoService('StageActionMapping');
233
+ const stageActions = await stageActionMappingRepo.find({
234
+ where: {
235
+ stage_id: stage_id,
236
+ },
237
+ });
238
+
239
+ if (!stageActions?.length) {
240
+ return [
241
+ {
242
+ value: '0',
243
+ label: 'Generic',
244
+ },
245
+ ];
246
+ }
247
+
248
+ const actionIds = stageActions.map((sa) => sa.action_id);
249
+
250
+ // Step 2: Fetch all actions with category details
251
+ const actionRepo = this.reflectionHelper.getRepoService('ActionEntity');
252
+
253
+ const actions = await actionRepo
254
+ .createQueryBuilder("a")
255
+ .select([
256
+ "a.id AS action_id",
257
+ "a.name AS action_name",
258
+ "a.reason_code AS action_reason_code",
259
+ "a.default_reason_code AS default_reason_code",
260
+ "a.default_value AS default_value",
261
+ "a.mode AS mode",
262
+ "a.action_category AS action_category_id",
263
+ "ac.reason_code AS category_reason_code",
264
+ "ac.modalname AS modalname",
265
+ "ac.logo AS logo",
266
+ "ac.name AS action_category_name",
267
+ "a.dependent_action_id AS dependent_action_id",
268
+ ])
269
+ .leftJoin(
270
+ "frm_wf_action_category",
271
+ "ac",
272
+ "ac.id = a.action_category::bigint"
273
+ )
274
+ .where("a.organization_id = :orgId", { orgId: organization_id })
275
+ .andWhere("a.id IN (:...actionIds)", { actionIds })
276
+ .orderBy("a.sequence", "ASC")
277
+ .getRawMany();
278
+
279
+ // Step 3: Fetch action_data
280
+ const actionDataRepo = this.reflectionHelper.getRepoService('ActionDataEntity');
281
+
282
+ const actionData = await actionDataRepo
283
+ .createQueryBuilder("ad")
284
+ .select([
285
+ "ad.action_id AS action_id",
286
+ "ad.is_current AS is_current",
287
+ "ad.is_mandatory AS is_mandatory",
288
+ "ad.is_done AS is_done",
289
+ ])
290
+ .where("ad.stage_id = :stageId", { stageId: stage_id })
291
+ .andWhere("ad.action_id IN (:...actionIds)", { actionIds })
292
+ .andWhere("ad.mapped_entity_id = :mapped_entity_id", { mapped_entity_id })
293
+ .andWhere("ad.mapped_entity_type = :mapped_entity_type", {
294
+ mapped_entity_type,
295
+ })
296
+ .getRawMany();
297
+
298
+ const actionIdToData = actionData.reduce((acc, row) => {
299
+ acc[row.action_id] = {
300
+ is_current: row.is_current === 'Y',
301
+ is_mandatory: row.is_mandatory === 1,
302
+ is_done: row.is_done === 1,
303
+ };
304
+ return acc;
305
+ }, {});
306
+
307
+ // Step 5: Enrich actions
308
+ const enrichedResult = actions.map((row) => {
309
+ const data = actionIdToData[row.action_id];
310
+
311
+ const reason_code =
312
+ row.action_reason_code && row.action_reason_code.trim()
313
+ ? row.action_reason_code
314
+ : row.category_reason_code;
315
+
316
+ return {
317
+ value: row.action_id,
318
+ dependent_action_id: row.dependent_action_id,
319
+ label: row.action_name,
320
+ modalname: row.modalname,
321
+ logo: row.logo,
322
+ mode: row.mode,
323
+ name: row.action_category_name,
324
+ reason_code,
325
+ default_reason_code: row.default_reason_code,
326
+ is_default: row.default_value === 1,
327
+ is_current: data?.is_current ?? false,
328
+ is_done: data?.is_done ?? false,
329
+ is_mandatory: data?.is_mandatory ?? false,
330
+ };
331
+ });
332
+
333
+ // Step 6: Add fallback option
334
+ enrichedResult.push({
335
+ value: '0',
336
+ label: 'Generic',
337
+ } as any);
338
+
339
+ return enrichedResult;
340
+ }
341
+ }