rez_core 5.0.85 → 5.0.87

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 (485) hide show
  1. package/.claude/settings.local.json +26 -0
  2. package/.idea/250218_nodejs_core.iml +9 -0
  3. package/.idea/codeStyles/Project.xml +59 -0
  4. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  5. package/.idea/copilot.data.migration.agent.xml +6 -0
  6. package/.idea/copilot.data.migration.ask.xml +6 -0
  7. package/.idea/copilot.data.migration.ask2agent.xml +6 -0
  8. package/.idea/copilot.data.migration.edit.xml +6 -0
  9. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  10. package/.idea/misc.xml +6 -0
  11. package/.idea/modules.xml +8 -0
  12. package/.idea/prettier.xml +6 -0
  13. package/.idea/vcs.xml +6 -0
  14. package/.prettierrc +3 -3
  15. package/README.md +99 -99
  16. package/dist/module/auth/guards/role.guard.js +3 -3
  17. package/dist/module/auth/services/auth.service.d.ts +3 -3
  18. package/dist/module/auth/services/auth.service.js +18 -7
  19. package/dist/module/auth/services/auth.service.js.map +1 -1
  20. package/dist/module/dashboard/controller/dashboard.controller.d.ts +1 -1
  21. package/dist/module/dashboard/repository/dashboard.repository.d.ts +5 -4
  22. package/dist/module/dashboard/repository/dashboard.repository.js +31 -18
  23. package/dist/module/dashboard/repository/dashboard.repository.js.map +1 -1
  24. package/dist/module/dashboard/service/dashboard.service.d.ts +1 -1
  25. package/dist/module/enterprise/repository/school.repository.d.ts +3 -3
  26. package/dist/module/enterprise/repository/school.repository.js +56 -70
  27. package/dist/module/enterprise/repository/school.repository.js.map +1 -1
  28. package/dist/module/filter/filter.module.js +2 -0
  29. package/dist/module/filter/filter.module.js.map +1 -1
  30. package/dist/module/filter/repository/saved-filter.repository.d.ts +4 -3
  31. package/dist/module/filter/repository/saved-filter.repository.js +11 -8
  32. package/dist/module/filter/repository/saved-filter.repository.js.map +1 -1
  33. package/dist/module/filter/repository/saved.filter-detail.repository.d.ts +7 -0
  34. package/dist/module/filter/repository/saved.filter-detail.repository.js +38 -0
  35. package/dist/module/filter/repository/saved.filter-detail.repository.js.map +1 -0
  36. package/dist/module/filter/service/filter-evaluator.service.d.ts +3 -3
  37. package/dist/module/filter/service/filter-evaluator.service.js +6 -9
  38. package/dist/module/filter/service/filter-evaluator.service.js.map +1 -1
  39. package/dist/module/filter/service/filter.service.d.ts +5 -3
  40. package/dist/module/filter/service/filter.service.js +47 -37
  41. package/dist/module/filter/service/filter.service.js.map +1 -1
  42. package/dist/module/integration/examples/usage.example.js +9 -9
  43. package/dist/module/integration/service/wrapper.service.d.ts +3 -7
  44. package/dist/module/integration/service/wrapper.service.js +71 -69
  45. package/dist/module/integration/service/wrapper.service.js.map +1 -1
  46. package/dist/module/listmaster/repository/list-master.repository.d.ts +1 -0
  47. package/dist/module/listmaster/repository/list-master.repository.js +9 -0
  48. package/dist/module/listmaster/repository/list-master.repository.js.map +1 -1
  49. package/dist/module/listmaster/service/list-master-item.service.d.ts +2 -1
  50. package/dist/module/listmaster/service/list-master-item.service.js +3 -5
  51. package/dist/module/listmaster/service/list-master-item.service.js.map +1 -1
  52. package/dist/module/mapper/service/field-mapper.service.d.ts +1 -3
  53. package/dist/module/mapper/service/field-mapper.service.js +10 -10
  54. package/dist/module/mapper/service/field-mapper.service.js.map +1 -1
  55. package/dist/module/meta/controller/meta.controller.d.ts +4 -1
  56. package/dist/module/meta/repository/attribute-master.repository.d.ts +5 -3
  57. package/dist/module/meta/repository/attribute-master.repository.js +28 -8
  58. package/dist/module/meta/repository/attribute-master.repository.js.map +1 -1
  59. package/dist/module/meta/repository/entity-attribute-update.repository.d.ts +5 -3
  60. package/dist/module/meta/repository/entity-attribute-update.repository.js +19 -13
  61. package/dist/module/meta/repository/entity-attribute-update.repository.js.map +1 -1
  62. package/dist/module/meta/repository/entity-master.repository.d.ts +8 -4
  63. package/dist/module/meta/repository/entity-master.repository.js +17 -14
  64. package/dist/module/meta/repository/entity-master.repository.js.map +1 -1
  65. package/dist/module/meta/service/entity-dynamic.service.d.ts +3 -5
  66. package/dist/module/meta/service/entity-dynamic.service.js +61 -67
  67. package/dist/module/meta/service/entity-dynamic.service.js.map +1 -1
  68. package/dist/module/meta/service/entity-list.service.js +3 -3
  69. package/dist/module/meta/service/entity-master.service.d.ts +4 -1
  70. package/dist/module/meta/service/entity-relation.service.js +9 -9
  71. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  72. package/dist/module/meta/service/media-data.service.d.ts +3 -3
  73. package/dist/module/meta/service/media-data.service.js +37 -16
  74. package/dist/module/meta/service/media-data.service.js.map +1 -1
  75. package/dist/module/meta/service/resolver.service.d.ts +5 -3
  76. package/dist/module/meta/service/resolver.service.js +40 -49
  77. package/dist/module/meta/service/resolver.service.js.map +1 -1
  78. package/dist/module/module/repository/menu.repository.d.ts +3 -1
  79. package/dist/module/module/repository/menu.repository.js +37 -35
  80. package/dist/module/module/repository/menu.repository.js.map +1 -1
  81. package/dist/module/notification/service/notification.service.js +10 -10
  82. package/dist/module/user/controller/login.controller.js +18 -18
  83. package/dist/module/user/service/user-session.service.d.ts +8 -5
  84. package/dist/module/user/service/user-session.service.js +45 -24
  85. package/dist/module/user/service/user-session.service.js.map +1 -1
  86. package/dist/module/workflow/controller/action-template-mapping.controller.d.ts +1 -1
  87. package/dist/module/workflow/repository/action.repository.js +12 -12
  88. package/dist/module/workflow/repository/comm-template.repository.d.ts +3 -1
  89. package/dist/module/workflow/repository/comm-template.repository.js +15 -9
  90. package/dist/module/workflow/repository/comm-template.repository.js.map +1 -1
  91. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  92. package/dist/module/workflow/repository/stage-group.repository.js +20 -20
  93. package/dist/module/workflow/repository/stage.repository.js +8 -8
  94. package/dist/module/workflow/repository/stage.repository.js.map +1 -1
  95. package/dist/module/workflow/service/action-template-mapping.service.d.ts +3 -4
  96. package/dist/module/workflow/service/action-template-mapping.service.js +43 -33
  97. package/dist/module/workflow/service/action-template-mapping.service.js.map +1 -1
  98. package/dist/module/workflow/service/action.service.js +7 -7
  99. package/dist/module/workflow/service/entity-modification.service.js +2 -2
  100. package/dist/module/workflow/service/populate-workflow.service.js.map +1 -1
  101. package/dist/module/workflow/service/stage-group.service.js +2 -2
  102. package/dist/module/workflow/service/stage.service.js +2 -2
  103. package/dist/module/workflow/service/task.service.js +18 -18
  104. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  105. package/dist/module/workflow/service/workflow-meta.service.js +26 -26
  106. package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
  107. package/dist/module/workflow-automation/service/schedule-handler.service.js +9 -9
  108. package/dist/module/workflow-automation/service/workflow-automation-engine.service.js.map +1 -1
  109. package/dist/module/workflow-schedule/processors/schedule.processor.js +4 -4
  110. package/dist/module/workflow-schedule/service/workflow-schedule.service.js +9 -9
  111. package/dist/tsconfig.build.tsbuildinfo +1 -1
  112. package/dist/utils/service/reflection-helper.service.js +2 -2
  113. package/docs/modules/event-driven-integration-design.md +91 -91
  114. package/docs/modules/integration.md +250 -250
  115. package/eslint.config.mjs +34 -34
  116. package/nest-cli.json +14 -14
  117. package/package.json +125 -125
  118. package/server.log +850 -0
  119. package/src/app.controller.ts +12 -12
  120. package/src/app.module.ts +66 -66
  121. package/src/app.service.ts +8 -8
  122. package/src/config/bull.config.ts +69 -69
  123. package/src/config/config.module.ts +17 -17
  124. package/src/config/database.config.ts +48 -48
  125. package/src/constant/global.constant.ts +67 -67
  126. package/src/core.module.ts +91 -91
  127. package/src/decorators/roles.decorator.ts +7 -7
  128. package/src/dtos/response.dto.ts +6 -6
  129. package/src/dtos/response.ts +5 -5
  130. package/src/index.ts +1 -1
  131. package/src/module/auth/auth.module.ts +49 -49
  132. package/src/module/auth/controller/auth.controller.ts +28 -28
  133. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  134. package/src/module/auth/guards/jwt.guard.ts +22 -22
  135. package/src/module/auth/guards/role.guard.ts +68 -68
  136. package/src/module/auth/services/auth.service.ts +56 -50
  137. package/src/module/auth/services/jwt.service.ts +11 -11
  138. package/src/module/auth/strategies/google.strategy.ts +54 -54
  139. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  140. package/src/module/auth/strategies/local.strategy.ts +13 -13
  141. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  142. package/src/module/dashboard/dashboard.module.ts +21 -21
  143. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  144. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  145. package/src/module/dashboard/repository/dashboard.repository.ts +51 -42
  146. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  147. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  148. package/src/module/enterprise/enterprise.module.ts +30 -30
  149. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  150. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  151. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  152. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  153. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  154. package/src/module/enterprise/repository/school.repository.ts +272 -278
  155. package/src/module/enterprise/service/brand.service.ts +5 -5
  156. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  157. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  158. package/src/module/enterprise/service/organization.service.ts +145 -145
  159. package/src/module/entity_json/controller/entity_json.controller.ts +47 -47
  160. package/src/module/entity_json/entity/entityJson.entity.ts +39 -39
  161. package/src/module/entity_json/entity_json.module.ts +18 -18
  162. package/src/module/entity_json/service/entityJson.repository.ts +37 -37
  163. package/src/module/entity_json/service/entity_json.service.ts +234 -234
  164. package/src/module/filter/controller/filter.controller.ts +84 -84
  165. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  166. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  167. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  168. package/src/module/filter/filter.module.ts +33 -31
  169. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  170. package/src/module/filter/repository/saved.filter-detail.repository.ts +20 -0
  171. package/src/module/filter/service/filter-evaluator.service.ts +82 -86
  172. package/src/module/filter/service/filter.service.ts +1304 -1299
  173. package/src/module/filter/service/saved-filter.service.ts +170 -170
  174. package/src/module/ics/controller/ics.controller.ts +21 -21
  175. package/src/module/ics/dto/ics.dto.ts +55 -55
  176. package/src/module/ics/ics.module.ts +13 -13
  177. package/src/module/ics/service/ics.service.ts +57 -57
  178. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  179. package/src/module/integration/controller/integration.controller.ts +662 -662
  180. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  181. package/src/module/integration/dto/create-config.dto.ts +526 -526
  182. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  183. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  184. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  185. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  186. package/src/module/integration/examples/usage.example.ts +338 -338
  187. package/src/module/integration/factories/base.factory.ts +7 -7
  188. package/src/module/integration/factories/email.factory.ts +49 -49
  189. package/src/module/integration/factories/integration.factory.ts +121 -121
  190. package/src/module/integration/factories/sms.factory.ts +51 -51
  191. package/src/module/integration/factories/telephone.factory.ts +41 -41
  192. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  193. package/src/module/integration/integration.module.ts +110 -110
  194. package/src/module/integration/service/calendar-event.service.ts +118 -118
  195. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  196. package/src/module/integration/service/integration-queue.service.ts +229 -229
  197. package/src/module/integration/service/integration.service.ts +2634 -2634
  198. package/src/module/integration/service/oauth.service.ts +224 -224
  199. package/src/module/integration/service/wrapper.service.ts +716 -738
  200. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  201. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  202. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  203. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  204. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  205. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  206. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  207. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  208. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  209. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  210. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  211. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  212. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  213. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  214. package/src/module/layout/controller/layout.controller.ts +47 -47
  215. package/src/module/layout/entity/header-items.entity.ts +28 -28
  216. package/src/module/layout/entity/header-section.entity.ts +19 -19
  217. package/src/module/layout/layout.module.ts +21 -21
  218. package/src/module/layout/repository/header-items.repository.ts +18 -18
  219. package/src/module/layout/repository/header-section.repository.ts +22 -22
  220. package/src/module/layout/service/header-section.service.ts +25 -25
  221. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  222. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  223. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  224. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  225. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  226. package/src/module/lead/controller/lead.controller.ts +30 -30
  227. package/src/module/lead/lead.module.ts +14 -14
  228. package/src/module/lead/repository/lead.repository.ts +41 -41
  229. package/src/module/lead/service/lead.service.ts +54 -54
  230. package/src/module/linked_attributes/controller/linked_attributes.controller.ts +37 -37
  231. package/src/module/linked_attributes/entity/linked_attribute.entity.ts +51 -51
  232. package/src/module/linked_attributes/linked_attributes.module.ts +16 -16
  233. package/src/module/linked_attributes/repository/linked_attribute.repository.ts +12 -12
  234. package/src/module/linked_attributes/service/linked_attributes.service.ts +75 -75
  235. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  236. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  237. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  238. package/src/module/listmaster/listmaster.module.ts +46 -46
  239. package/src/module/listmaster/repository/list-master-items.repository.ts +173 -173
  240. package/src/module/listmaster/repository/list-master.repository.ts +56 -46
  241. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  242. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  243. package/src/module/listmaster/service/list-master-item.service.ts +281 -292
  244. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  245. package/src/module/listmaster/service/list-master.service.ts +535 -535
  246. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  247. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  248. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  249. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  250. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  251. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  252. package/src/module/mapper/mapper.module.ts +35 -35
  253. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  254. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  255. package/src/module/mapper/repository/mapper.repository.ts +32 -32
  256. package/src/module/mapper/service/field-mapper.service.ts +269 -271
  257. package/src/module/mapper/service/mapper.service.ts +81 -81
  258. package/src/module/master/controller/master.controller.ts +74 -74
  259. package/src/module/master/service/master.service.ts +483 -483
  260. package/src/module/meta/controller/app-master.controller.ts +38 -38
  261. package/src/module/meta/controller/attribute-master.controller.ts +84 -84
  262. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  263. package/src/module/meta/controller/entity-master.controller.ts +41 -41
  264. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  265. package/src/module/meta/controller/entity.controller.ts +392 -392
  266. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  267. package/src/module/meta/controller/media.controller.ts +107 -107
  268. package/src/module/meta/controller/meta.controller.ts +96 -96
  269. package/src/module/meta/controller/view-master.controller.ts +86 -86
  270. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  271. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  272. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  273. package/src/module/meta/entity/app-master.entity.ts +34 -34
  274. package/src/module/meta/entity/attribute-master.entity.ts +92 -92
  275. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  276. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  277. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  278. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  279. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  280. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  281. package/src/module/meta/entity/media-data.entity.ts +32 -32
  282. package/src/module/meta/entity/preference.entity.ts +62 -62
  283. package/src/module/meta/entity/view-master.entity.ts +41 -41
  284. package/src/module/meta/entity.module.ts +166 -166
  285. package/src/module/meta/repository/app-master.repository.ts +20 -20
  286. package/src/module/meta/repository/attribute-master.repository.ts +156 -138
  287. package/src/module/meta/repository/entity-attribute-update.repository.ts +48 -44
  288. package/src/module/meta/repository/entity-master.repository.ts +109 -111
  289. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  290. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  291. package/src/module/meta/repository/media-data.repository.ts +50 -50
  292. package/src/module/meta/repository/preference.repository.ts +20 -20
  293. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  294. package/src/module/meta/repository/view-master.repository.ts +42 -42
  295. package/src/module/meta/service/app-master.service.ts +37 -37
  296. package/src/module/meta/service/attribute-master.service.ts +130 -130
  297. package/src/module/meta/service/common.service.ts +9 -9
  298. package/src/module/meta/service/entity-attribute-update.service.ts +28 -28
  299. package/src/module/meta/service/entity-dynamic.service.ts +810 -857
  300. package/src/module/meta/service/entity-list.service.ts +205 -205
  301. package/src/module/meta/service/entity-master.service.ts +171 -171
  302. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  303. package/src/module/meta/service/entity-relation.service.ts +87 -87
  304. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  305. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  306. package/src/module/meta/service/entity-table.service.ts +150 -150
  307. package/src/module/meta/service/entity-validation.service.ts +187 -187
  308. package/src/module/meta/service/entity.service.ts +67 -67
  309. package/src/module/meta/service/field-group.service.ts +103 -103
  310. package/src/module/meta/service/media-data.service.ts +510 -507
  311. package/src/module/meta/service/populate-meta.service.ts +222 -222
  312. package/src/module/meta/service/preference.service.ts +16 -16
  313. package/src/module/meta/service/resolver.service.ts +292 -316
  314. package/src/module/meta/service/section-master.service.ts +104 -104
  315. package/src/module/meta/service/update-form-json.service.ts +22 -22
  316. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  317. package/src/module/meta/service/view-master.service.ts +127 -127
  318. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  319. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  320. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  321. package/src/module/module/controller/menu.controller.ts +15 -15
  322. package/src/module/module/controller/module-access.controller.ts +134 -134
  323. package/src/module/module/entity/menu.entity.ts +43 -43
  324. package/src/module/module/entity/module-access.entity.ts +25 -25
  325. package/src/module/module/entity/module-action.entity.ts +17 -17
  326. package/src/module/module/entity/module.entity.ts +52 -52
  327. package/src/module/module/module.module.ts +42 -42
  328. package/src/module/module/repository/menu.repository.ts +184 -191
  329. package/src/module/module/repository/module-access.repository.ts +344 -344
  330. package/src/module/module/service/menu.service.ts +82 -82
  331. package/src/module/module/service/module-access.service.ts +195 -195
  332. package/src/module/notification/controller/notification.controller.ts +58 -58
  333. package/src/module/notification/controller/otp.controller.ts +117 -117
  334. package/src/module/notification/entity/notification.entity.ts +26 -26
  335. package/src/module/notification/entity/otp.entity.ts +28 -28
  336. package/src/module/notification/firebase-admin.config.ts +22 -22
  337. package/src/module/notification/notification.module.ts +69 -69
  338. package/src/module/notification/repository/otp.repository.ts +27 -27
  339. package/src/module/notification/service/email.service.ts +127 -127
  340. package/src/module/notification/service/notification.service.ts +160 -160
  341. package/src/module/notification/service/otp.service.ts +133 -133
  342. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  343. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  344. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  345. package/src/module/third-party-module/third-party.module.ts +12 -12
  346. package/src/module/user/controller/login.controller.ts +198 -198
  347. package/src/module/user/controller/user.controller.ts +40 -40
  348. package/src/module/user/dto/create-user.dto.ts +62 -62
  349. package/src/module/user/dto/update-user.dto.ts +4 -4
  350. package/src/module/user/entity/role.entity.ts +33 -33
  351. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  352. package/src/module/user/entity/user-session.entity.ts +73 -73
  353. package/src/module/user/entity/user.entity.ts +59 -59
  354. package/src/module/user/repository/role.repository.ts +96 -96
  355. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  356. package/src/module/user/repository/user.repository.ts +50 -50
  357. package/src/module/user/repository/userSession.repository.ts +33 -33
  358. package/src/module/user/service/login.service.ts +326 -326
  359. package/src/module/user/service/role.service.ts +197 -197
  360. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  361. package/src/module/user/service/user-session.service.ts +177 -168
  362. package/src/module/user/service/user.service.ts +368 -368
  363. package/src/module/user/user.module.ts +65 -65
  364. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  365. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  366. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  367. package/src/module/workflow/controller/action.controller.ts +111 -111
  368. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  369. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  370. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  371. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  372. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  373. package/src/module/workflow/controller/stage.controller.ts +50 -50
  374. package/src/module/workflow/controller/task.controller.ts +77 -77
  375. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  376. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  377. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  378. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  379. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  380. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  381. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  382. package/src/module/workflow/entity/action.entity.ts +53 -53
  383. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  384. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  385. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  386. package/src/module/workflow/entity/form.entity.ts +25 -25
  387. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  388. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  389. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  390. package/src/module/workflow/entity/stage.entity.ts +20 -20
  391. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  392. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  393. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  394. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  395. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  396. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  397. package/src/module/workflow/repository/action-data.repository.ts +339 -339
  398. package/src/module/workflow/repository/action.repository.ts +341 -341
  399. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  400. package/src/module/workflow/repository/comm-template.repository.ts +151 -149
  401. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  402. package/src/module/workflow/repository/stage-group.repository.ts +197 -197
  403. package/src/module/workflow/repository/stage-movement.repository.ts +253 -253
  404. package/src/module/workflow/repository/stage.repository.ts +160 -172
  405. package/src/module/workflow/repository/task.repository.ts +151 -151
  406. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  407. package/src/module/workflow/service/action-category.service.ts +33 -33
  408. package/src/module/workflow/service/action-data.service.ts +62 -62
  409. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  410. package/src/module/workflow/service/action-template-mapping.service.ts +131 -131
  411. package/src/module/workflow/service/action.service.ts +279 -279
  412. package/src/module/workflow/service/activity-log.service.ts +107 -107
  413. package/src/module/workflow/service/comm-template.service.ts +180 -180
  414. package/src/module/workflow/service/entity-modification.service.ts +61 -61
  415. package/src/module/workflow/service/form-master.service.ts +35 -35
  416. package/src/module/workflow/service/populate-workflow.service.ts +320 -333
  417. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  418. package/src/module/workflow/service/stage-group.service.ts +342 -342
  419. package/src/module/workflow/service/stage.service.ts +199 -199
  420. package/src/module/workflow/service/task.service.ts +549 -549
  421. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  422. package/src/module/workflow/service/workflow-meta.service.ts +635 -674
  423. package/src/module/workflow/service/workflow.service.ts +209 -209
  424. package/src/module/workflow/workflow.module.ts +180 -180
  425. package/src/module/workflow-automation/SCHEDULING_GUIDE.md +145 -145
  426. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +43 -43
  427. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  428. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +40 -40
  429. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  430. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  431. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  432. package/src/module/workflow-automation/service/schedule-handler.service.ts +168 -168
  433. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +219 -224
  434. package/src/module/workflow-automation/service/workflow-automation.service.ts +515 -515
  435. package/src/module/workflow-automation/workflow-automation.module.ts +54 -54
  436. package/src/module/workflow-schedule/INSTALLATION.md +244 -244
  437. package/src/module/workflow-schedule/MULTI_PROJECT_GUIDE.md +196 -196
  438. package/src/module/workflow-schedule/README.md +422 -422
  439. package/src/module/workflow-schedule/constants/schedule.constants.ts +48 -48
  440. package/src/module/workflow-schedule/controller/workflow-schedule.controller.ts +255 -255
  441. package/src/module/workflow-schedule/docs/CLAUDE_CODE_GUIDE.md +510 -510
  442. package/src/module/workflow-schedule/docs/CLAUDE_CODE_PROMPT.md +362 -362
  443. package/src/module/workflow-schedule/docs/RUN_CLAUDE_CODE.sh +68 -68
  444. package/src/module/workflow-schedule/dto/create-schedule.dto.ts +147 -147
  445. package/src/module/workflow-schedule/dto/get-execution-logs.dto.ts +119 -119
  446. package/src/module/workflow-schedule/dto/update-schedule.dto.ts +96 -96
  447. package/src/module/workflow-schedule/entities/scheduled-workflow.entity.ts +148 -148
  448. package/src/module/workflow-schedule/entities/workflow-execution-log.entity.ts +154 -154
  449. package/src/module/workflow-schedule/interfaces/schedule-job-data.interface.ts +53 -53
  450. package/src/module/workflow-schedule/interfaces/workflow-schedule-options.interface.ts +12 -12
  451. package/src/module/workflow-schedule/processors/schedule.processor.ts +584 -584
  452. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +600 -600
  453. package/src/module/workflow-schedule/workflow-schedule.module.ts +67 -67
  454. package/src/resources/dev.properties.yaml +31 -31
  455. package/src/resources/local.properties.yaml +27 -27
  456. package/src/resources/properties.module.ts +12 -12
  457. package/src/resources/properties.yaml.ts +11 -11
  458. package/src/resources/uat.properties.yaml +31 -31
  459. package/src/table.config.ts +133 -133
  460. package/src/utils/dto/excel-data.dto.ts +14 -14
  461. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  462. package/src/utils/service/base64util.service.ts +18 -18
  463. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  464. package/src/utils/service/codeGenerator.service.ts +22 -22
  465. package/src/utils/service/dateUtil.service.ts +17 -17
  466. package/src/utils/service/encryptUtil.service.ts +97 -97
  467. package/src/utils/service/excel-helper.service.ts +72 -72
  468. package/src/utils/service/excelUtil.service.ts +15 -15
  469. package/src/utils/service/file-util.service.ts +11 -11
  470. package/src/utils/service/json-util.service.ts +23 -23
  471. package/src/utils/service/loggingUtil.service.ts +88 -88
  472. package/src/utils/service/reflection-helper.service.ts +62 -62
  473. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  474. package/src/utils/utils.module.ts +27 -27
  475. package/tsconfig.build.json +4 -4
  476. package/tsconfig.json +24 -24
  477. package/.vscode/extensions.json +0 -5
  478. package/dist/module/dev/dev.module.d.ts +0 -2
  479. package/dist/module/dev/dev.module.js +0 -25
  480. package/dist/module/dev/dev.module.js.map +0 -1
  481. package/dist/module/dev/service/dev.service.d.ts +0 -5
  482. package/dist/module/dev/service/dev.service.js +0 -25
  483. package/dist/module/dev/service/dev.service.js.map +0 -1
  484. package/src/module/dev/dev.module.ts +0 -12
  485. package/src/module/dev/service/dev.service.ts +0 -7
@@ -1,253 +1,253 @@
1
- import { get } from 'http';
2
- import { Injectable } from '@nestjs/common';
3
- import { InjectRepository } from '@nestjs/typeorm';
4
- import { Repository, DataSource, MoreThan } from 'typeorm';
5
- import { WorkflowLevelMappingEntity } from '../entity/workflow-level-mapping.entity';
6
- import { StageGroup } from '../entity/stage-group.entity';
7
- import { Stage } from '../entity/stage.entity';
8
- import { log } from 'console';
9
- import { UserData } from 'src/module/user/entity/user.entity';
10
- import { ReflectionHelper } from '../../../utils/service/reflection-helper.service';
11
-
12
- @Injectable()
13
- export class StageMovementRepository {
14
- constructor(
15
- @InjectRepository(WorkflowLevelMappingEntity)
16
- private readonly workflowLevelMappingRepo: Repository<WorkflowLevelMappingEntity>,
17
- @InjectRepository(StageGroup)
18
- private readonly stageGroupRepo: Repository<StageGroup>,
19
- @InjectRepository(Stage)
20
- private readonly stageRepo: Repository<Stage>,
21
- private readonly dataSource: DataSource,
22
- private readonly reflectionHelper: ReflectionHelper,
23
- ) {}
24
-
25
- async getFirstStage({
26
- loggedInUser,
27
- mapped_entity_type,
28
- mapped_entity_id,
29
- }: {
30
- loggedInUser: any;
31
- mapped_entity_type: string;
32
- mapped_entity_id: string | number;
33
- }): Promise<any | null> {
34
- // Try finding mapping at user's level
35
- let workflowLevelMapping = await this.workflowLevelMappingRepo.findOne({
36
- where: {
37
- mapped_level_type: loggedInUser.level_type,
38
- mapped_level_id: loggedInUser.level_id,
39
- },
40
- });
41
-
42
- // If not found, fallback to organization-level mapping
43
- if (!workflowLevelMapping) {
44
- workflowLevelMapping = await this.workflowLevelMappingRepo.findOne({
45
- where: {
46
- mapped_level_type: 'ORG',
47
- mapped_level_id: loggedInUser.organization_id,
48
- },
49
- });
50
- }
51
-
52
- // If still not found, return null
53
- if (!workflowLevelMapping) return null;
54
-
55
- // Find the stage group for this workflow
56
- const stageGroup = await this.stageGroupRepo.findOne({
57
- where: {
58
- workflow_id: workflowLevelMapping.workflow_id,
59
- },
60
- order: { id: 'ASC' }, // Ensure you get the earliest/first group if needed
61
- });
62
-
63
- if (!stageGroup) return null;
64
-
65
- // Find the first stage within this group
66
- const firstStage = await this.stageRepo.findOne({
67
- where: {
68
- stage_group_id: stageGroup.id,
69
- },
70
- order: { id: 'ASC' }, // Change ordering as per your "first" logic
71
- });
72
-
73
- if (!firstStage) return null;
74
-
75
- // Return comprehensive result
76
- return {
77
- mappingUsed: workflowLevelMapping,
78
- stageGroup,
79
- firstStage,
80
- };
81
- }
82
-
83
- // async getNextStage(
84
- // stageGroupId: number,
85
- // currentStageId: number,
86
- // ): Promise<any | null> {
87
- // // 1. Get current stage to find its sequence number
88
- // const currentStage = await this.stageRepo.findOne({
89
- // where: { id: currentStageId, stage_group_id: stageGroupId },
90
- // });
91
- // if (!currentStage) return null;
92
-
93
- // // 2. Find the next stage with sequence just after the current one
94
- // const nextStage = await this.stageRepo.findOne({
95
- // where: {
96
- // stage_group_id: stageGroupId,
97
- // sequence: MoreThan(currentStage.sequence),
98
- // },
99
- // order: { sequence: 'ASC' },
100
- // });
101
-
102
- // return nextStage || null;
103
- // }
104
-
105
- // async getNextStageGroup(
106
- // currentStageGroupId: number,
107
- // ): Promise<StageGroup | null> {
108
- // // 1. Get current stage group
109
- // const currentStageGroup = await this.stageGroupRepo.findOne({
110
- // where: { id: currentStageGroupId },
111
- // });
112
- // if (!currentStageGroup) return null;
113
- // // 2. Find the next stage group with a higher sequence
114
- // const nextStageGroup = await this.stageGroupRepo.findOne({
115
- // where: {
116
- // sequence: MoreThan(currentStageGroup.sequence),
117
- // },
118
- // order: { sequence: 'ASC' }, // Get the immediate next
119
- // });
120
- // return nextStageGroup || null;
121
- // }
122
-
123
- async getNextStage(
124
- stageGroupId: number,
125
- currentStageId: number,
126
- ): Promise<any | null> {
127
- const allStages = await this.stageRepo.find({
128
- where: { stage_group_id: stageGroupId },
129
- order: { sequence: 'ASC' },
130
- });
131
-
132
- if (currentStageId === 0) return allStages.length > 0 ? allStages[0] : null;
133
-
134
- const currentStage = allStages.find((s) => s.id == currentStageId);
135
- if (!currentStage) return null;
136
-
137
- // Filter for stages with a greater sequence, then pick the smallest one
138
- const higherStages = allStages
139
- .filter((s) => s.sequence > currentStage.sequence)
140
- .sort((a, b) => a.sequence - b.sequence);
141
-
142
- return higherStages.length > 0 ? higherStages[0] : null;
143
- }
144
-
145
- async getNextStageGroup(currentStageGroupId: number): Promise<any | null> {
146
- const currentStageGroup = await this.stageGroupRepo.findOne({
147
- where: { id: currentStageGroupId },
148
- });
149
- if (!currentStageGroup) return null;
150
-
151
- //get workflow id of current stage group
152
- const workflowId = currentStageGroup.workflow_id;
153
-
154
- // Find the next stage group with a higher sequence
155
- const nextStageGroup = await this.stageGroupRepo.findOne({
156
- where: {
157
- workflow_id: workflowId,
158
- sequence: MoreThan(currentStageGroup.sequence),
159
- },
160
- order: { sequence: 'ASC' }, // Get the immediate next
161
- });
162
-
163
- return nextStageGroup || null;
164
- }
165
-
166
- async getNextStageOrFirstOfNextGroup(
167
- stageGroupId: number,
168
- currentStageId: number,
169
- ): Promise<any | null> {
170
- // 1. Try to get the next stage in same group
171
- const nextStage = await this.getNextStage(stageGroupId, currentStageId);
172
- if (nextStage) return nextStage;
173
-
174
- // 2. No next stage. Try to get next stage group
175
- const nextStageGroup = await this.getNextStageGroup(stageGroupId);
176
- if (!nextStageGroup) return null;
177
-
178
- const nextStageGroupFirstStage = await this.getNextStage(
179
- nextStageGroup.id,
180
- 0,
181
- );
182
- return nextStageGroupFirstStage || null;
183
- }
184
-
185
- async getAllActionByStageId(stageId: number): Promise<any> {
186
-
187
- const actionRepo = this.reflectionHelper.getRepoService('ActionEntity');
188
- const result = await actionRepo
189
- .createQueryBuilder("a")
190
- .leftJoin(
191
- "frm_wf_stage_action_mapping",
192
- "m",
193
- "a.id = m.action_id::bigint"
194
- )
195
- .leftJoin(
196
- "frm_wf_action_category",
197
- "ac",
198
- "a.action_category::bigint = ac.id"
199
- )
200
- .where("m.stage_id::bigint = :stageId", { stageId: Number(stageId) })
201
- .select([
202
- "a.*", // select all columns from action table
203
- "m.id AS mapping_id",
204
- "m.stage_id",
205
- "ac.code AS action_category_code",
206
- ])
207
- .orderBy("a.sequence", "ASC")
208
- .getRawMany();
209
-
210
- // Use for..of with await instead of map
211
- const actionResourceMappingRepo = this.reflectionHelper.getRepoService('ActionResourcesMapping');
212
- for (const item of result) {
213
- if (item.action_category_code === 'SDFM') {
214
- const actionData = await actionResourceMappingRepo.findOne({
215
- where: {
216
- stg_act_mapping_id: item.mapping_id
217
- }
218
- })
219
-
220
-
221
- item.form_id = actionData?.form_id || null;
222
- }
223
- }
224
-
225
- return result;
226
- }
227
-
228
- async saveActionData(action: any, loggedInUser: UserData): Promise<any> {
229
- // Implement the logic to save action data
230
-
231
- if (action.length > 0) {
232
- for (const act of action) {
233
- await this.dataSource.query(
234
- `INSERT INTO frm_wf_action_data (stage_id, user_id, action_id) VALUES ($1, $2, $3)`,
235
- [act.stage_id, loggedInUser.id, act.id],
236
- );
237
- }
238
- }
239
- }
240
-
241
- async saveTaskData(actionData: any, loggedInUser: UserData): Promise<any> {
242
- // Implement the logic to save task data
243
-
244
- if (actionData.length > 0) {
245
- for (const action of actionData) {
246
- await this.dataSource.query(
247
- `INSERT INTO frm_wf_task_data (action_id, user_id) VALUES ($1, $2)`,
248
- [action.id, loggedInUser.id],
249
- );
250
- }
251
- }
252
- }
253
- }
1
+ import { get } from 'http';
2
+ import { Injectable } from '@nestjs/common';
3
+ import { InjectRepository } from '@nestjs/typeorm';
4
+ import { Repository, DataSource, MoreThan } from 'typeorm';
5
+ import { WorkflowLevelMappingEntity } from '../entity/workflow-level-mapping.entity';
6
+ import { StageGroup } from '../entity/stage-group.entity';
7
+ import { Stage } from '../entity/stage.entity';
8
+ import { log } from 'console';
9
+ import { UserData } from 'src/module/user/entity/user.entity';
10
+ import { ReflectionHelper } from '../../../utils/service/reflection-helper.service';
11
+
12
+ @Injectable()
13
+ export class StageMovementRepository {
14
+ constructor(
15
+ @InjectRepository(WorkflowLevelMappingEntity)
16
+ private readonly workflowLevelMappingRepo: Repository<WorkflowLevelMappingEntity>,
17
+ @InjectRepository(StageGroup)
18
+ private readonly stageGroupRepo: Repository<StageGroup>,
19
+ @InjectRepository(Stage)
20
+ private readonly stageRepo: Repository<Stage>,
21
+ private readonly dataSource: DataSource,
22
+ private readonly reflectionHelper: ReflectionHelper,
23
+ ) {}
24
+
25
+ async getFirstStage({
26
+ loggedInUser,
27
+ mapped_entity_type,
28
+ mapped_entity_id,
29
+ }: {
30
+ loggedInUser: any;
31
+ mapped_entity_type: string;
32
+ mapped_entity_id: string | number;
33
+ }): Promise<any | null> {
34
+ // Try finding mapping at user's level
35
+ let workflowLevelMapping = await this.workflowLevelMappingRepo.findOne({
36
+ where: {
37
+ mapped_level_type: loggedInUser.level_type,
38
+ mapped_level_id: loggedInUser.level_id,
39
+ },
40
+ });
41
+
42
+ // If not found, fallback to organization-level mapping
43
+ if (!workflowLevelMapping) {
44
+ workflowLevelMapping = await this.workflowLevelMappingRepo.findOne({
45
+ where: {
46
+ mapped_level_type: 'ORG',
47
+ mapped_level_id: loggedInUser.organization_id,
48
+ },
49
+ });
50
+ }
51
+
52
+ // If still not found, return null
53
+ if (!workflowLevelMapping) return null;
54
+
55
+ // Find the stage group for this workflow
56
+ const stageGroup = await this.stageGroupRepo.findOne({
57
+ where: {
58
+ workflow_id: workflowLevelMapping.workflow_id,
59
+ },
60
+ order: { id: 'ASC' }, // Ensure you get the earliest/first group if needed
61
+ });
62
+
63
+ if (!stageGroup) return null;
64
+
65
+ // Find the first stage within this group
66
+ const firstStage = await this.stageRepo.findOne({
67
+ where: {
68
+ stage_group_id: stageGroup.id,
69
+ },
70
+ order: { id: 'ASC' }, // Change ordering as per your "first" logic
71
+ });
72
+
73
+ if (!firstStage) return null;
74
+
75
+ // Return comprehensive result
76
+ return {
77
+ mappingUsed: workflowLevelMapping,
78
+ stageGroup,
79
+ firstStage,
80
+ };
81
+ }
82
+
83
+ // async getNextStage(
84
+ // stageGroupId: number,
85
+ // currentStageId: number,
86
+ // ): Promise<any | null> {
87
+ // // 1. Get current stage to find its sequence number
88
+ // const currentStage = await this.stageRepo.findOne({
89
+ // where: { id: currentStageId, stage_group_id: stageGroupId },
90
+ // });
91
+ // if (!currentStage) return null;
92
+
93
+ // // 2. Find the next stage with sequence just after the current one
94
+ // const nextStage = await this.stageRepo.findOne({
95
+ // where: {
96
+ // stage_group_id: stageGroupId,
97
+ // sequence: MoreThan(currentStage.sequence),
98
+ // },
99
+ // order: { sequence: 'ASC' },
100
+ // });
101
+
102
+ // return nextStage || null;
103
+ // }
104
+
105
+ // async getNextStageGroup(
106
+ // currentStageGroupId: number,
107
+ // ): Promise<StageGroup | null> {
108
+ // // 1. Get current stage group
109
+ // const currentStageGroup = await this.stageGroupRepo.findOne({
110
+ // where: { id: currentStageGroupId },
111
+ // });
112
+ // if (!currentStageGroup) return null;
113
+ // // 2. Find the next stage group with a higher sequence
114
+ // const nextStageGroup = await this.stageGroupRepo.findOne({
115
+ // where: {
116
+ // sequence: MoreThan(currentStageGroup.sequence),
117
+ // },
118
+ // order: { sequence: 'ASC' }, // Get the immediate next
119
+ // });
120
+ // return nextStageGroup || null;
121
+ // }
122
+
123
+ async getNextStage(
124
+ stageGroupId: number,
125
+ currentStageId: number,
126
+ ): Promise<any | null> {
127
+ const allStages = await this.stageRepo.find({
128
+ where: { stage_group_id: stageGroupId },
129
+ order: { sequence: 'ASC' },
130
+ });
131
+
132
+ if (currentStageId === 0) return allStages.length > 0 ? allStages[0] : null;
133
+
134
+ const currentStage = allStages.find((s) => s.id == currentStageId);
135
+ if (!currentStage) return null;
136
+
137
+ // Filter for stages with a greater sequence, then pick the smallest one
138
+ const higherStages = allStages
139
+ .filter((s) => s.sequence > currentStage.sequence)
140
+ .sort((a, b) => a.sequence - b.sequence);
141
+
142
+ return higherStages.length > 0 ? higherStages[0] : null;
143
+ }
144
+
145
+ async getNextStageGroup(currentStageGroupId: number): Promise<any | null> {
146
+ const currentStageGroup = await this.stageGroupRepo.findOne({
147
+ where: { id: currentStageGroupId },
148
+ });
149
+ if (!currentStageGroup) return null;
150
+
151
+ //get workflow id of current stage group
152
+ const workflowId = currentStageGroup.workflow_id;
153
+
154
+ // Find the next stage group with a higher sequence
155
+ const nextStageGroup = await this.stageGroupRepo.findOne({
156
+ where: {
157
+ workflow_id: workflowId,
158
+ sequence: MoreThan(currentStageGroup.sequence),
159
+ },
160
+ order: { sequence: 'ASC' }, // Get the immediate next
161
+ });
162
+
163
+ return nextStageGroup || null;
164
+ }
165
+
166
+ async getNextStageOrFirstOfNextGroup(
167
+ stageGroupId: number,
168
+ currentStageId: number,
169
+ ): Promise<any | null> {
170
+ // 1. Try to get the next stage in same group
171
+ const nextStage = await this.getNextStage(stageGroupId, currentStageId);
172
+ if (nextStage) return nextStage;
173
+
174
+ // 2. No next stage. Try to get next stage group
175
+ const nextStageGroup = await this.getNextStageGroup(stageGroupId);
176
+ if (!nextStageGroup) return null;
177
+
178
+ const nextStageGroupFirstStage = await this.getNextStage(
179
+ nextStageGroup.id,
180
+ 0,
181
+ );
182
+ return nextStageGroupFirstStage || null;
183
+ }
184
+
185
+ async getAllActionByStageId(stageId: number): Promise<any> {
186
+
187
+ const actionRepo = this.reflectionHelper.getRepoService('ActionEntity');
188
+ const result = await actionRepo
189
+ .createQueryBuilder("a")
190
+ .leftJoin(
191
+ "frm_wf_stage_action_mapping",
192
+ "m",
193
+ "a.id = m.action_id::bigint"
194
+ )
195
+ .leftJoin(
196
+ "frm_wf_action_category",
197
+ "ac",
198
+ "a.action_category::bigint = ac.id"
199
+ )
200
+ .where("m.stage_id::bigint = :stageId", { stageId: Number(stageId) })
201
+ .select([
202
+ "a.*", // select all columns from action table
203
+ "m.id AS mapping_id",
204
+ "m.stage_id",
205
+ "ac.code AS action_category_code",
206
+ ])
207
+ .orderBy("a.sequence", "ASC")
208
+ .getRawMany();
209
+
210
+ // Use for..of with await instead of map
211
+ const actionResourceMappingRepo = this.reflectionHelper.getRepoService('ActionResourcesMapping');
212
+ for (const item of result) {
213
+ if (item.action_category_code === 'SDFM') {
214
+ const actionData = await actionResourceMappingRepo.findOne({
215
+ where: {
216
+ stg_act_mapping_id: item.mapping_id
217
+ }
218
+ })
219
+
220
+
221
+ item.form_id = actionData?.form_id || null;
222
+ }
223
+ }
224
+
225
+ return result;
226
+ }
227
+
228
+ async saveActionData(action: any, loggedInUser: UserData): Promise<any> {
229
+ // Implement the logic to save action data
230
+
231
+ if (action.length > 0) {
232
+ for (const act of action) {
233
+ await this.dataSource.query(
234
+ `INSERT INTO frm_wf_action_data (stage_id, user_id, action_id) VALUES ($1, $2, $3)`,
235
+ [act.stage_id, loggedInUser.id, act.id],
236
+ );
237
+ }
238
+ }
239
+ }
240
+
241
+ async saveTaskData(actionData: any, loggedInUser: UserData): Promise<any> {
242
+ // Implement the logic to save task data
243
+
244
+ if (actionData.length > 0) {
245
+ for (const action of actionData) {
246
+ await this.dataSource.query(
247
+ `INSERT INTO frm_wf_task_data (action_id, user_id) VALUES ($1, $2)`,
248
+ [action.id, loggedInUser.id],
249
+ );
250
+ }
251
+ }
252
+ }
253
+ }