rez_core 5.0.56 → 5.0.57

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 (424) hide show
  1. package/.claude/settings.local.json +26 -0
  2. package/.idea/250218_nodejs_core.iml +8 -11
  3. package/.idea/codeStyles/Project.xml +58 -58
  4. package/.idea/codeStyles/codeStyleConfig.xml +4 -4
  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 +1 -1
  10. package/.idea/misc.xml +6 -0
  11. package/.idea/modules.xml +7 -7
  12. package/.idea/prettier.xml +6 -0
  13. package/.idea/vcs.xml +5 -5
  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.js +2 -2
  18. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  19. package/dist/module/filter/service/filter-evaluator.service.js +2 -2
  20. package/dist/module/filter/service/filter.service.js +22 -22
  21. package/dist/module/integration/examples/usage.example.js +9 -9
  22. package/dist/module/integration/service/integration.service.js +1 -1
  23. package/dist/module/integration/service/wrapper.service.js +26 -26
  24. package/dist/module/listmaster/service/list-master-item.service.js +2 -2
  25. package/dist/module/mapper/service/field-mapper.service.js +4 -4
  26. package/dist/module/meta/repository/entity-attribute-update.repository.js +3 -3
  27. package/dist/module/meta/repository/entity-master.repository.js +6 -6
  28. package/dist/module/meta/service/entity-dynamic.service.js +44 -44
  29. package/dist/module/meta/service/entity-list.service.js +3 -3
  30. package/dist/module/meta/service/entity-relation.service.js +9 -9
  31. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  32. package/dist/module/meta/service/resolver.service.js +33 -33
  33. package/dist/module/module/repository/menu.repository.js +17 -17
  34. package/dist/module/notification/service/notification.service.js +10 -10
  35. package/dist/module/user/controller/login.controller.js +18 -18
  36. package/dist/module/user/service/role.service.js +4 -4
  37. package/dist/module/user/service/user-session.service.js +2 -2
  38. package/dist/module/workflow/repository/action.repository.js +20 -20
  39. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  40. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  41. package/dist/module/workflow/repository/stage-group.repository.js +20 -20
  42. package/dist/module/workflow/repository/stage-movement.repository.js +17 -17
  43. package/dist/module/workflow/repository/stage.repository.js +8 -8
  44. package/dist/module/workflow/service/action-template-mapping.service.js +13 -13
  45. package/dist/module/workflow/service/action.service.js +7 -7
  46. package/dist/module/workflow/service/entity-modification.service.js +2 -2
  47. package/dist/module/workflow/service/stage-group.service.js +2 -2
  48. package/dist/module/workflow/service/stage.service.js +2 -2
  49. package/dist/module/workflow/service/task.service.js +47 -56
  50. package/dist/module/workflow/service/task.service.js.map +1 -1
  51. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  52. package/dist/module/workflow/service/workflow-meta.service.js +26 -26
  53. package/dist/module/workflow/service/workflow.service.js +8 -3
  54. package/dist/module/workflow/service/workflow.service.js.map +1 -1
  55. package/dist/module/workflow-automation/service/schedule-handler.service.js +9 -9
  56. package/dist/module/workflow-schedule/processors/schedule.processor.js +4 -4
  57. package/dist/module/workflow-schedule/service/workflow-schedule.service.js +9 -9
  58. package/dist/tsconfig.build.tsbuildinfo +1 -1
  59. package/dist/utils/service/reflection-helper.service.js +2 -2
  60. package/docs/modules/event-driven-integration-design.md +91 -91
  61. package/docs/modules/integration.md +250 -250
  62. package/eslint.config.mjs +34 -34
  63. package/nest-cli.json +14 -14
  64. package/package.json +124 -124
  65. package/server.log +850 -0
  66. package/src/app.controller.ts +12 -12
  67. package/src/app.module.ts +66 -66
  68. package/src/app.service.ts +8 -8
  69. package/src/config/bull.config.ts +69 -69
  70. package/src/config/config.module.ts +17 -17
  71. package/src/config/database.config.ts +48 -48
  72. package/src/constant/global.constant.ts +67 -67
  73. package/src/core.module.ts +91 -91
  74. package/src/decorators/roles.decorator.ts +7 -7
  75. package/src/dtos/response.dto.ts +6 -6
  76. package/src/dtos/response.ts +5 -5
  77. package/src/index.ts +1 -1
  78. package/src/module/auth/auth.module.ts +49 -49
  79. package/src/module/auth/controller/auth.controller.ts +28 -28
  80. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  81. package/src/module/auth/guards/jwt.guard.ts +22 -22
  82. package/src/module/auth/guards/role.guard.ts +68 -68
  83. package/src/module/auth/services/auth.service.ts +50 -50
  84. package/src/module/auth/services/jwt.service.ts +11 -11
  85. package/src/module/auth/strategies/google.strategy.ts +54 -54
  86. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  87. package/src/module/auth/strategies/local.strategy.ts +13 -13
  88. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  89. package/src/module/dashboard/dashboard.module.ts +21 -21
  90. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  91. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  92. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  93. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  94. package/src/module/dev/dev.module.ts +12 -12
  95. package/src/module/dev/service/dev.service.ts +7 -7
  96. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  97. package/src/module/enterprise/enterprise.module.ts +30 -30
  98. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  99. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  100. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  101. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  102. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  103. package/src/module/enterprise/repository/school.repository.ts +278 -278
  104. package/src/module/enterprise/service/brand.service.ts +5 -5
  105. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  106. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  107. package/src/module/enterprise/service/organization.service.ts +145 -145
  108. package/src/module/entity_json/controller/entity_json.controller.ts +47 -47
  109. package/src/module/entity_json/entity/entityJson.entity.ts +39 -39
  110. package/src/module/entity_json/entity_json.module.ts +18 -18
  111. package/src/module/entity_json/service/entityJson.repository.ts +37 -37
  112. package/src/module/entity_json/service/entity_json.service.ts +234 -234
  113. package/src/module/filter/controller/filter.controller.ts +84 -84
  114. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  115. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  116. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  117. package/src/module/filter/filter.module.ts +31 -31
  118. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  119. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  120. package/src/module/filter/service/filter.service.ts +1239 -1239
  121. package/src/module/filter/service/saved-filter.service.ts +170 -170
  122. package/src/module/ics/controller/ics.controller.ts +21 -21
  123. package/src/module/ics/dto/ics.dto.ts +55 -55
  124. package/src/module/ics/ics.module.ts +13 -13
  125. package/src/module/ics/service/ics.service.ts +57 -57
  126. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  127. package/src/module/integration/controller/integration.controller.ts +662 -662
  128. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  129. package/src/module/integration/dto/create-config.dto.ts +526 -526
  130. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  131. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  132. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  133. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  134. package/src/module/integration/examples/usage.example.ts +338 -338
  135. package/src/module/integration/factories/base.factory.ts +7 -7
  136. package/src/module/integration/factories/email.factory.ts +49 -49
  137. package/src/module/integration/factories/integration.factory.ts +121 -121
  138. package/src/module/integration/factories/sms.factory.ts +51 -51
  139. package/src/module/integration/factories/telephone.factory.ts +41 -41
  140. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  141. package/src/module/integration/integration.module.ts +110 -110
  142. package/src/module/integration/service/calendar-event.service.ts +118 -118
  143. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  144. package/src/module/integration/service/integration-queue.service.ts +229 -229
  145. package/src/module/integration/service/integration.service.ts +2633 -2633
  146. package/src/module/integration/service/oauth.service.ts +224 -224
  147. package/src/module/integration/service/wrapper.service.ts +701 -701
  148. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  149. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  150. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  151. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  152. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  153. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  154. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  155. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  156. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  157. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  158. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  159. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  160. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  161. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  162. package/src/module/layout/controller/layout.controller.ts +47 -47
  163. package/src/module/layout/entity/header-items.entity.ts +28 -28
  164. package/src/module/layout/entity/header-section.entity.ts +19 -19
  165. package/src/module/layout/layout.module.ts +21 -21
  166. package/src/module/layout/repository/header-items.repository.ts +18 -18
  167. package/src/module/layout/repository/header-section.repository.ts +22 -22
  168. package/src/module/layout/service/header-section.service.ts +25 -25
  169. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  170. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  171. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  172. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  173. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  174. package/src/module/lead/controller/lead.controller.ts +30 -30
  175. package/src/module/lead/lead.module.ts +14 -14
  176. package/src/module/lead/repository/lead.repository.ts +41 -41
  177. package/src/module/lead/service/lead.service.ts +54 -54
  178. package/src/module/linked_attributes/controller/linked_attributes.controller.ts +37 -37
  179. package/src/module/linked_attributes/entity/linked_attribute.entity.ts +51 -51
  180. package/src/module/linked_attributes/linked_attributes.module.ts +16 -16
  181. package/src/module/linked_attributes/repository/linked_attribute.repository.ts +12 -12
  182. package/src/module/linked_attributes/service/linked_attributes.service.ts +75 -75
  183. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  184. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  185. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  186. package/src/module/listmaster/listmaster.module.ts +46 -46
  187. package/src/module/listmaster/repository/list-master-items.repository.ts +173 -173
  188. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  189. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  190. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  191. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  192. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  193. package/src/module/listmaster/service/list-master.service.ts +535 -535
  194. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  195. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  196. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  197. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  198. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  199. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  200. package/src/module/mapper/mapper.module.ts +35 -35
  201. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  202. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  203. package/src/module/mapper/repository/mapper.repository.ts +32 -32
  204. package/src/module/mapper/service/field-mapper.service.ts +271 -271
  205. package/src/module/mapper/service/mapper.service.ts +81 -81
  206. package/src/module/master/controller/master.controller.ts +74 -74
  207. package/src/module/master/service/master.service.ts +483 -483
  208. package/src/module/meta/controller/app-master.controller.ts +38 -38
  209. package/src/module/meta/controller/attribute-master.controller.ts +84 -84
  210. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  211. package/src/module/meta/controller/entity-master.controller.ts +41 -41
  212. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  213. package/src/module/meta/controller/entity.controller.ts +392 -392
  214. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  215. package/src/module/meta/controller/media.controller.ts +107 -107
  216. package/src/module/meta/controller/meta.controller.ts +96 -96
  217. package/src/module/meta/controller/view-master.controller.ts +86 -86
  218. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  219. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  220. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  221. package/src/module/meta/entity/app-master.entity.ts +34 -34
  222. package/src/module/meta/entity/attribute-master.entity.ts +92 -92
  223. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  224. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  225. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  226. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  227. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  228. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  229. package/src/module/meta/entity/media-data.entity.ts +32 -32
  230. package/src/module/meta/entity/preference.entity.ts +62 -62
  231. package/src/module/meta/entity/view-master.entity.ts +41 -41
  232. package/src/module/meta/entity.module.ts +166 -166
  233. package/src/module/meta/repository/app-master.repository.ts +20 -20
  234. package/src/module/meta/repository/attribute-master.repository.ts +138 -138
  235. package/src/module/meta/repository/entity-attribute-update.repository.ts +44 -44
  236. package/src/module/meta/repository/entity-master.repository.ts +111 -111
  237. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  238. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  239. package/src/module/meta/repository/media-data.repository.ts +50 -50
  240. package/src/module/meta/repository/preference.repository.ts +20 -20
  241. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  242. package/src/module/meta/repository/view-master.repository.ts +42 -42
  243. package/src/module/meta/service/app-master.service.ts +37 -37
  244. package/src/module/meta/service/attribute-master.service.ts +130 -130
  245. package/src/module/meta/service/common.service.ts +9 -9
  246. package/src/module/meta/service/entity-attribute-update.service.ts +28 -28
  247. package/src/module/meta/service/entity-dynamic.service.ts +821 -821
  248. package/src/module/meta/service/entity-list.service.ts +205 -205
  249. package/src/module/meta/service/entity-master.service.ts +171 -171
  250. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  251. package/src/module/meta/service/entity-relation.service.ts +87 -87
  252. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  253. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  254. package/src/module/meta/service/entity-table.service.ts +150 -150
  255. package/src/module/meta/service/entity-validation.service.ts +187 -187
  256. package/src/module/meta/service/entity.service.ts +67 -67
  257. package/src/module/meta/service/field-group.service.ts +103 -103
  258. package/src/module/meta/service/media-data.service.ts +507 -507
  259. package/src/module/meta/service/populate-meta.service.ts +222 -222
  260. package/src/module/meta/service/preference.service.ts +16 -16
  261. package/src/module/meta/service/resolver.service.ts +317 -317
  262. package/src/module/meta/service/section-master.service.ts +104 -104
  263. package/src/module/meta/service/update-form-json.service.ts +22 -22
  264. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  265. package/src/module/meta/service/view-master.service.ts +127 -127
  266. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  267. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  268. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  269. package/src/module/module/controller/menu.controller.ts +15 -15
  270. package/src/module/module/controller/module-access.controller.ts +134 -134
  271. package/src/module/module/entity/menu.entity.ts +43 -43
  272. package/src/module/module/entity/module-access.entity.ts +25 -25
  273. package/src/module/module/entity/module-action.entity.ts +17 -17
  274. package/src/module/module/entity/module.entity.ts +52 -52
  275. package/src/module/module/module.module.ts +42 -42
  276. package/src/module/module/repository/menu.repository.ts +191 -191
  277. package/src/module/module/repository/module-access.repository.ts +344 -344
  278. package/src/module/module/service/menu.service.ts +82 -82
  279. package/src/module/module/service/module-access.service.ts +195 -195
  280. package/src/module/notification/controller/notification.controller.ts +58 -58
  281. package/src/module/notification/controller/otp.controller.ts +117 -117
  282. package/src/module/notification/entity/notification.entity.ts +26 -26
  283. package/src/module/notification/entity/otp.entity.ts +28 -28
  284. package/src/module/notification/firebase-admin.config.ts +22 -22
  285. package/src/module/notification/notification.module.ts +69 -69
  286. package/src/module/notification/repository/otp.repository.ts +27 -27
  287. package/src/module/notification/service/email.service.ts +127 -127
  288. package/src/module/notification/service/notification.service.ts +160 -160
  289. package/src/module/notification/service/otp.service.ts +133 -133
  290. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  291. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  292. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  293. package/src/module/third-party-module/third-party.module.ts +12 -12
  294. package/src/module/user/controller/login.controller.ts +198 -198
  295. package/src/module/user/controller/user.controller.ts +40 -40
  296. package/src/module/user/dto/create-user.dto.ts +62 -62
  297. package/src/module/user/dto/update-user.dto.ts +4 -4
  298. package/src/module/user/entity/role.entity.ts +33 -33
  299. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  300. package/src/module/user/entity/user-session.entity.ts +73 -73
  301. package/src/module/user/entity/user.entity.ts +59 -59
  302. package/src/module/user/repository/role.repository.ts +96 -96
  303. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  304. package/src/module/user/repository/user.repository.ts +50 -50
  305. package/src/module/user/repository/userSession.repository.ts +33 -33
  306. package/src/module/user/service/login.service.ts +326 -326
  307. package/src/module/user/service/role.service.ts +189 -189
  308. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  309. package/src/module/user/service/user-session.service.ts +168 -168
  310. package/src/module/user/service/user.service.ts +368 -368
  311. package/src/module/user/user.module.ts +65 -65
  312. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  313. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  314. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  315. package/src/module/workflow/controller/action.controller.ts +111 -111
  316. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  317. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  318. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  319. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  320. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  321. package/src/module/workflow/controller/stage.controller.ts +50 -50
  322. package/src/module/workflow/controller/task.controller.ts +77 -77
  323. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  324. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  325. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  326. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  327. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  328. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  329. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  330. package/src/module/workflow/entity/action.entity.ts +53 -53
  331. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  332. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  333. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  334. package/src/module/workflow/entity/form.entity.ts +25 -25
  335. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  336. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  337. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  338. package/src/module/workflow/entity/stage.entity.ts +20 -20
  339. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  340. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  341. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  342. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  343. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  344. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  345. package/src/module/workflow/repository/action-data.repository.ts +334 -334
  346. package/src/module/workflow/repository/action.repository.ts +334 -334
  347. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  348. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  349. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  350. package/src/module/workflow/repository/stage-group.repository.ts +197 -197
  351. package/src/module/workflow/repository/stage-movement.repository.ts +246 -246
  352. package/src/module/workflow/repository/stage.repository.ts +172 -172
  353. package/src/module/workflow/repository/task.repository.ts +134 -134
  354. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  355. package/src/module/workflow/service/action-category.service.ts +33 -33
  356. package/src/module/workflow/service/action-data.service.ts +62 -62
  357. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  358. package/src/module/workflow/service/action-template-mapping.service.ts +131 -131
  359. package/src/module/workflow/service/action.service.ts +279 -279
  360. package/src/module/workflow/service/activity-log.service.ts +107 -107
  361. package/src/module/workflow/service/comm-template.service.ts +180 -180
  362. package/src/module/workflow/service/entity-modification.service.ts +61 -61
  363. package/src/module/workflow/service/form-master.service.ts +35 -35
  364. package/src/module/workflow/service/populate-workflow.service.ts +331 -331
  365. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  366. package/src/module/workflow/service/stage-group.service.ts +342 -342
  367. package/src/module/workflow/service/stage.service.ts +199 -199
  368. package/src/module/workflow/service/task.service.ts +540 -558
  369. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  370. package/src/module/workflow/service/workflow-meta.service.ts +654 -654
  371. package/src/module/workflow/service/workflow.service.ts +209 -205
  372. package/src/module/workflow/workflow.module.ts +180 -180
  373. package/src/module/workflow-automation/SCHEDULING_GUIDE.md +145 -145
  374. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +43 -43
  375. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  376. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +40 -40
  377. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  378. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  379. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  380. package/src/module/workflow-automation/service/schedule-handler.service.ts +168 -168
  381. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +224 -224
  382. package/src/module/workflow-automation/service/workflow-automation.service.ts +515 -515
  383. package/src/module/workflow-automation/workflow-automation.module.ts +54 -54
  384. package/src/module/workflow-schedule/INSTALLATION.md +244 -244
  385. package/src/module/workflow-schedule/MULTI_PROJECT_GUIDE.md +196 -196
  386. package/src/module/workflow-schedule/README.md +422 -422
  387. package/src/module/workflow-schedule/constants/schedule.constants.ts +48 -48
  388. package/src/module/workflow-schedule/controller/workflow-schedule.controller.ts +255 -255
  389. package/src/module/workflow-schedule/docs/CLAUDE_CODE_GUIDE.md +510 -510
  390. package/src/module/workflow-schedule/docs/CLAUDE_CODE_PROMPT.md +362 -362
  391. package/src/module/workflow-schedule/docs/RUN_CLAUDE_CODE.sh +68 -68
  392. package/src/module/workflow-schedule/dto/create-schedule.dto.ts +147 -147
  393. package/src/module/workflow-schedule/dto/get-execution-logs.dto.ts +119 -119
  394. package/src/module/workflow-schedule/dto/update-schedule.dto.ts +96 -96
  395. package/src/module/workflow-schedule/entities/scheduled-workflow.entity.ts +148 -148
  396. package/src/module/workflow-schedule/entities/workflow-execution-log.entity.ts +154 -154
  397. package/src/module/workflow-schedule/interfaces/schedule-job-data.interface.ts +53 -53
  398. package/src/module/workflow-schedule/interfaces/workflow-schedule-options.interface.ts +12 -12
  399. package/src/module/workflow-schedule/processors/schedule.processor.ts +584 -584
  400. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +600 -600
  401. package/src/module/workflow-schedule/workflow-schedule.module.ts +67 -67
  402. package/src/resources/dev.properties.yaml +31 -31
  403. package/src/resources/local.properties.yaml +27 -27
  404. package/src/resources/properties.module.ts +12 -12
  405. package/src/resources/properties.yaml.ts +11 -11
  406. package/src/resources/uat.properties.yaml +31 -31
  407. package/src/table.config.ts +133 -133
  408. package/src/utils/dto/excel-data.dto.ts +14 -14
  409. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  410. package/src/utils/service/base64util.service.ts +18 -18
  411. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  412. package/src/utils/service/codeGenerator.service.ts +22 -22
  413. package/src/utils/service/dateUtil.service.ts +17 -17
  414. package/src/utils/service/encryptUtil.service.ts +97 -97
  415. package/src/utils/service/excel-helper.service.ts +72 -72
  416. package/src/utils/service/excelUtil.service.ts +15 -15
  417. package/src/utils/service/file-util.service.ts +11 -11
  418. package/src/utils/service/json-util.service.ts +23 -23
  419. package/src/utils/service/loggingUtil.service.ts +88 -88
  420. package/src/utils/service/reflection-helper.service.ts +62 -62
  421. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  422. package/src/utils/utils.module.ts +27 -27
  423. package/tsconfig.build.json +4 -4
  424. package/tsconfig.json +24 -24
@@ -1,331 +1,331 @@
1
- import { create } from 'domain';
2
- import { CommTemplate } from './../entity/comm-template.entity';
3
- import { ActionCategory } from './../entity/action-category.entity';
4
- import { DataSource } from 'typeorm';
5
- import { PopulateMetaService } from './../../meta/service/populate-meta.service';
6
- import { Inject, Injectable } from '@nestjs/common';
7
- import { EntityServiceImpl } from 'src/module/meta/service/entity-service-impl.service';
8
- import { WorkflowService } from './workflow.service';
9
- import { UserData } from 'src/module/user/entity/user.entity';
10
- import { StageGroupService } from './stage-group.service';
11
- import { StageService } from './stage.service';
12
- import { ActionService } from './action.service';
13
-
14
- @Injectable()
15
- export class PopulateWorkflowService extends EntityServiceImpl {
16
- constructor(
17
- private readonly populateMetaService: PopulateMetaService,
18
- private readonly dataSource: DataSource,
19
- @Inject('WorkflowService')
20
- private readonly workflowService: WorkflowService,
21
- @Inject('StageGroupService')
22
- private readonly stageGroupService: StageGroupService,
23
- @Inject('StageService')
24
- private readonly stageService: StageService,
25
- @Inject('ActionService')
26
- private readonly actionService: ActionService,
27
- ) {
28
- super();
29
- }
30
-
31
- async populateWorkflowData(organization_id: number, loggedInUser: UserData) {
32
- const listMasterItemsRepo =
33
- this.reflectionHelper.getRepoService('ListMasterItems');
34
-
35
- if (!listMasterItemsRepo) return;
36
-
37
- // let statusRow = await this.dataSource.query(
38
- // `SELECT * FROM frm_list_master_items WHERE code='STATUS_ACTIVE' AND organization_id = $1`,
39
- // [organization_id],
40
- // );
41
-
42
- let statusRow = await listMasterItemsRepo.findOne({
43
- where: { code: 'STATUS_ACTIVE', organization_id: organization_id },
44
- });
45
-
46
- if (!statusRow) {
47
- statusRow = await listMasterItemsRepo.findOne({
48
- where: { code: 'STATUS_ACTIVE', organization_id: -1 },
49
- });
50
- }
51
-
52
- const statusValue = statusRow?.id;
53
-
54
- // template populate
55
- // Step 1: Fetch default frm_wf_comm_template
56
-
57
- const commTemplateRepo =
58
- this.reflectionHelper.getRepoService('CommTemplate');
59
-
60
- if (!commTemplateRepo) return;
61
-
62
- const defaultCommTemplates = await commTemplateRepo.find({
63
- where: {
64
- organization_id: -1,
65
- level_type: 'ORG',
66
- level_id: -1,
67
- },
68
- });
69
-
70
- if (defaultCommTemplates.length > 0) {
71
- // Step 2: Insert default communication templates for the new organization
72
- for (const template of defaultCommTemplates) {
73
- const { id, created_date, modified_date, ...rest } = template;
74
- await super.createEntity(
75
- {
76
- ...rest,
77
- organization_id,
78
- level_id: organization_id,
79
- entity_type: 'TEM',
80
- status: statusValue,
81
- created_date: new Date(),
82
- modified_date: new Date(),
83
- },
84
- loggedInUser,
85
- );
86
- }
87
- }
88
-
89
- const workflowTables = [
90
- {
91
- table: 'frm_wf_master',
92
- entityType: 'WRFW',
93
- service: 'workflowService',
94
- },
95
- {
96
- table: 'frm_wf_stage_group',
97
- entityType: 'WFSG',
98
- service: 'stageGroupService',
99
- },
100
- { table: 'frm_wf_stage', entityType: 'WFS', service: 'stageService' },
101
- { table: 'frm_wf_action', entityType: 'WFAC', service: 'actionService' },
102
- ];
103
-
104
- const workFlowRepo = this.reflectionHelper.getRepoService('Workflow');
105
- const stageGroupRepo = this.reflectionHelper.getRepoService('StageGroup');
106
- const stageRepo = this.reflectionHelper.getRepoService('Stage');
107
- const actionRepo = this.reflectionHelper.getRepoService('ActionEntity');
108
- const stageActionMappingRepo =
109
- this.reflectionHelper.getRepoService('StageActionMapping');
110
- const workflowLevelMappingRepo = this.reflectionHelper.getRepoService(
111
- 'WorkflowLevelMappingEntity',
112
- );
113
- const listMasterRepo =
114
- this.reflectionHelper.getRepoService('ListMasterData');
115
- const actionCategoryRepo =
116
- this.reflectionHelper.getRepoService('ActionCategory');
117
- const viewMasterRepo = this.reflectionHelper.getRepoService('ViewMaster');
118
-
119
- // Fetch all base data
120
- // const getAllFactoryData = async (table: { table: string }) =>
121
- // this.dataSource.query(
122
- // `SELECT * FROM ${table.table} WHERE organization_id = -1 AND level_type = 'ORG' AND level_id = -1`,
123
- // );
124
- // const factoryData = await Promise.all(
125
- // workflowTables.map(getAllFactoryData),
126
- // );
127
- // const [workflows, stageGroups, stages] = factoryData;
128
-
129
- // === 1. Workflow mapping
130
- const workflowIdMap: Record<number, number> = {};
131
-
132
- let transformRepo;
133
-
134
- transformRepo = workFlowRepo;
135
-
136
- const workflows = await transformRepo?.find({
137
- where: {
138
- organization_id: -1,
139
- level_type: 'ORG',
140
- level_id: -1,
141
- },
142
- });
143
- for (const row of workflows) {
144
- const { id, ...rest } = row;
145
- const newWf = await this.workflowService.createEntity(
146
- {
147
- ...rest,
148
- organization_id,
149
- level_id: organization_id,
150
- entity_type: 'WRFW',
151
- status: statusValue,
152
- },
153
- loggedInUser,
154
- );
155
-
156
- // adding new entry for workflow level mapping
157
-
158
- if (!workflowLevelMappingRepo) continue;
159
-
160
- await workflowLevelMappingRepo.create({
161
- workflow_id: newWf.id,
162
- mapped_level_id: organization_id.toString(),
163
- mapped_level_type: 'ORG',
164
- });
165
-
166
- workflowIdMap[id] = newWf.id;
167
- }
168
-
169
- // === 2. StageGroup mapping (and save workflow ref from template data!)
170
- const stageGroupIdMap: Record<number, number> = {};
171
- // Include mapping from old stageGroupId to old workflowId to help with stage->workflow logic later:
172
- const stageGroupToWorkflowMap: Record<number, number> = {};
173
-
174
- transformRepo = stageGroupRepo;
175
-
176
- const stageGroups = await transformRepo?.find({
177
- where: {
178
- organization_id: -1,
179
- level_type: 'ORG',
180
- level_id: -1,
181
- },
182
- });
183
-
184
- for (const row of stageGroups) {
185
- const { id, workflow_id, ...rest } = row;
186
- const newSg = await this.stageGroupService.createEntity(
187
- {
188
- ...rest,
189
- workflow_id: workflowIdMap[workflow_id],
190
- organization_id,
191
- level_id: organization_id,
192
- entity_type: 'WFSG',
193
- status: statusValue,
194
- },
195
- loggedInUser,
196
- );
197
- stageGroupIdMap[id] = newSg.id;
198
- stageGroupToWorkflowMap[id] = workflow_id;
199
- }
200
-
201
- // === 3. Stage mapping — point to stageGroup and workflow
202
- const stageIdMap: Record<number, number> = {};
203
- const stageToStageGroupMap: Record<number, number> = {};
204
-
205
- transformRepo = stageRepo;
206
- const stages = await transformRepo?.find({
207
- where: {
208
- organization_id: -1,
209
- level_type: 'ORG',
210
- level_id: -1,
211
- },
212
- });
213
-
214
- for (const row of stages) {
215
- const { id, stage_group_id, ...rest } = row;
216
- // Find the original parent workflow_id using the stageGroupToWorkflowMap
217
- const originalWorkflowId = stageGroupToWorkflowMap[stage_group_id];
218
- const newStage = await this.stageService.createEntity(
219
- {
220
- ...rest,
221
- stage_group_id: stageGroupIdMap[stage_group_id],
222
- workflow_id: workflowIdMap[originalWorkflowId], // New workflow id!
223
- organization_id,
224
- level_id: organization_id,
225
- entity_type: 'WFS',
226
- status: statusValue,
227
- },
228
- loggedInUser,
229
- );
230
- stageIdMap[id] = newStage.id;
231
- stageToStageGroupMap[id] = stage_group_id; // maintain
232
-
233
- // step 1 find old stage_id in stage_action_mapper and get all actions_ids
234
- // step 2 search action in frm_wf_action table with those action_ids
235
- // step 3 create new action with new stage_id and new workflow_id
236
- // step 4 save new action
237
-
238
- if (!stageActionMappingRepo) continue;
239
-
240
- const stageIds = await stageActionMappingRepo.find({
241
- where: {
242
- stage_id: id,
243
- },
244
- });
245
-
246
- const actionIds = stageIds.map((item) => item.action_id);
247
-
248
- let actions = [] as any[];
249
- if (actionIds.length > 0) {
250
- if (!actionRepo) continue;
251
-
252
- actions = await actionRepo?.findByIds(actionIds);
253
- } else {
254
- // No actions to query
255
- actions = [];
256
- }
257
-
258
- console.log(
259
- `Found ${actions.length} actions for stage ${id} in workflow ${originalWorkflowId}`,
260
- );
261
-
262
- // === 4. Action mapping — point to stage, stageGroup, workflow correctly
263
- for (const row of actions as any[]) {
264
- const { id, created_date, modified_date, workflow_id, ...rest } = row;
265
-
266
- const newWorkflowId = workflowIdMap[workflow_id];
267
-
268
- // Step 1: Get the code of the old is_mandatory field
269
-
270
- const [oldIsMandatory] = await listMasterItemsRepo.find({
271
- where: { id: rest.action_requirement },
272
- });
273
-
274
- // Step 2: Get all new 'ACRQ' list master items for the organization
275
-
276
- const newIsMandatoryList = await listMasterItemsRepo.find({
277
- where: { organization_id: organization_id, listtype: 'ACRQ' },
278
- });
279
-
280
- console.log(
281
- `Populating action for stage ${newStage.id} in workflow ${newWorkflowId}`,
282
- );
283
-
284
- console.log(`Old is_mandatory code: ${oldIsMandatory?.code}`);
285
- console.log(`New is_mandatory list:`, newIsMandatoryList);
286
-
287
- // Step 3: Find the matching new item with the same code
288
- const matchedNewMandatory = newIsMandatoryList.find(
289
- (item) => item.code === oldIsMandatory?.code,
290
- );
291
-
292
- console.log(`Matched new mandatory item:`, matchedNewMandatory);
293
-
294
- if (!actionCategoryRepo) continue;
295
-
296
- const formActionCategory = await actionCategoryRepo.find({
297
- where: { id: row.action_category, is_form: true },
298
- });
299
-
300
- //get view master form
301
-
302
- if (!viewMasterRepo) continue;
303
-
304
- const formViewMaster = await viewMasterRepo.find({
305
- where: { code: 'LEAD_FORM', organization_id: organization_id },
306
- });
307
-
308
- // Step 4: Use the matched new item's id (if found)
309
- await this.actionService.createEntity(
310
- {
311
- ...rest,
312
- stage_id: newStage.id,
313
- workflow_id: newWorkflowId,
314
- organization_id,
315
- action_requirement: matchedNewMandatory?.id ?? null,
316
- level_id: organization_id,
317
- entity_type: 'WFA',
318
- form: formActionCategory.length > 0 ? formViewMaster[0]?.id : null,
319
- status: statusValue,
320
- },
321
- loggedInUser,
322
- );
323
- }
324
- }
325
-
326
- return {
327
- message: 'Workflow data populated successfully',
328
- status: 'success',
329
- };
330
- }
331
- }
1
+ import { create } from 'domain';
2
+ import { CommTemplate } from './../entity/comm-template.entity';
3
+ import { ActionCategory } from './../entity/action-category.entity';
4
+ import { DataSource } from 'typeorm';
5
+ import { PopulateMetaService } from './../../meta/service/populate-meta.service';
6
+ import { Inject, Injectable } from '@nestjs/common';
7
+ import { EntityServiceImpl } from 'src/module/meta/service/entity-service-impl.service';
8
+ import { WorkflowService } from './workflow.service';
9
+ import { UserData } from 'src/module/user/entity/user.entity';
10
+ import { StageGroupService } from './stage-group.service';
11
+ import { StageService } from './stage.service';
12
+ import { ActionService } from './action.service';
13
+
14
+ @Injectable()
15
+ export class PopulateWorkflowService extends EntityServiceImpl {
16
+ constructor(
17
+ private readonly populateMetaService: PopulateMetaService,
18
+ private readonly dataSource: DataSource,
19
+ @Inject('WorkflowService')
20
+ private readonly workflowService: WorkflowService,
21
+ @Inject('StageGroupService')
22
+ private readonly stageGroupService: StageGroupService,
23
+ @Inject('StageService')
24
+ private readonly stageService: StageService,
25
+ @Inject('ActionService')
26
+ private readonly actionService: ActionService,
27
+ ) {
28
+ super();
29
+ }
30
+
31
+ async populateWorkflowData(organization_id: number, loggedInUser: UserData) {
32
+ const listMasterItemsRepo =
33
+ this.reflectionHelper.getRepoService('ListMasterItems');
34
+
35
+ if (!listMasterItemsRepo) return;
36
+
37
+ // let statusRow = await this.dataSource.query(
38
+ // `SELECT * FROM frm_list_master_items WHERE code='STATUS_ACTIVE' AND organization_id = $1`,
39
+ // [organization_id],
40
+ // );
41
+
42
+ let statusRow = await listMasterItemsRepo.findOne({
43
+ where: { code: 'STATUS_ACTIVE', organization_id: organization_id },
44
+ });
45
+
46
+ if (!statusRow) {
47
+ statusRow = await listMasterItemsRepo.findOne({
48
+ where: { code: 'STATUS_ACTIVE', organization_id: -1 },
49
+ });
50
+ }
51
+
52
+ const statusValue = statusRow?.id;
53
+
54
+ // template populate
55
+ // Step 1: Fetch default frm_wf_comm_template
56
+
57
+ const commTemplateRepo =
58
+ this.reflectionHelper.getRepoService('CommTemplate');
59
+
60
+ if (!commTemplateRepo) return;
61
+
62
+ const defaultCommTemplates = await commTemplateRepo.find({
63
+ where: {
64
+ organization_id: -1,
65
+ level_type: 'ORG',
66
+ level_id: -1,
67
+ },
68
+ });
69
+
70
+ if (defaultCommTemplates.length > 0) {
71
+ // Step 2: Insert default communication templates for the new organization
72
+ for (const template of defaultCommTemplates) {
73
+ const { id, created_date, modified_date, ...rest } = template;
74
+ await super.createEntity(
75
+ {
76
+ ...rest,
77
+ organization_id,
78
+ level_id: organization_id,
79
+ entity_type: 'TEM',
80
+ status: statusValue,
81
+ created_date: new Date(),
82
+ modified_date: new Date(),
83
+ },
84
+ loggedInUser,
85
+ );
86
+ }
87
+ }
88
+
89
+ const workflowTables = [
90
+ {
91
+ table: 'frm_wf_master',
92
+ entityType: 'WRFW',
93
+ service: 'workflowService',
94
+ },
95
+ {
96
+ table: 'frm_wf_stage_group',
97
+ entityType: 'WFSG',
98
+ service: 'stageGroupService',
99
+ },
100
+ { table: 'frm_wf_stage', entityType: 'WFS', service: 'stageService' },
101
+ { table: 'frm_wf_action', entityType: 'WFAC', service: 'actionService' },
102
+ ];
103
+
104
+ const workFlowRepo = this.reflectionHelper.getRepoService('Workflow');
105
+ const stageGroupRepo = this.reflectionHelper.getRepoService('StageGroup');
106
+ const stageRepo = this.reflectionHelper.getRepoService('Stage');
107
+ const actionRepo = this.reflectionHelper.getRepoService('ActionEntity');
108
+ const stageActionMappingRepo =
109
+ this.reflectionHelper.getRepoService('StageActionMapping');
110
+ const workflowLevelMappingRepo = this.reflectionHelper.getRepoService(
111
+ 'WorkflowLevelMappingEntity',
112
+ );
113
+ const listMasterRepo =
114
+ this.reflectionHelper.getRepoService('ListMasterData');
115
+ const actionCategoryRepo =
116
+ this.reflectionHelper.getRepoService('ActionCategory');
117
+ const viewMasterRepo = this.reflectionHelper.getRepoService('ViewMaster');
118
+
119
+ // Fetch all base data
120
+ // const getAllFactoryData = async (table: { table: string }) =>
121
+ // this.dataSource.query(
122
+ // `SELECT * FROM ${table.table} WHERE organization_id = -1 AND level_type = 'ORG' AND level_id = -1`,
123
+ // );
124
+ // const factoryData = await Promise.all(
125
+ // workflowTables.map(getAllFactoryData),
126
+ // );
127
+ // const [workflows, stageGroups, stages] = factoryData;
128
+
129
+ // === 1. Workflow mapping
130
+ const workflowIdMap: Record<number, number> = {};
131
+
132
+ let transformRepo;
133
+
134
+ transformRepo = workFlowRepo;
135
+
136
+ const workflows = await transformRepo?.find({
137
+ where: {
138
+ organization_id: -1,
139
+ level_type: 'ORG',
140
+ level_id: -1,
141
+ },
142
+ });
143
+ for (const row of workflows) {
144
+ const { id, ...rest } = row;
145
+ const newWf = await this.workflowService.createEntity(
146
+ {
147
+ ...rest,
148
+ organization_id,
149
+ level_id: organization_id,
150
+ entity_type: 'WRFW',
151
+ status: statusValue,
152
+ },
153
+ loggedInUser,
154
+ );
155
+
156
+ // adding new entry for workflow level mapping
157
+
158
+ if (!workflowLevelMappingRepo) continue;
159
+
160
+ await workflowLevelMappingRepo.create({
161
+ workflow_id: newWf.id,
162
+ mapped_level_id: organization_id.toString(),
163
+ mapped_level_type: 'ORG',
164
+ });
165
+
166
+ workflowIdMap[id] = newWf.id;
167
+ }
168
+
169
+ // === 2. StageGroup mapping (and save workflow ref from template data!)
170
+ const stageGroupIdMap: Record<number, number> = {};
171
+ // Include mapping from old stageGroupId to old workflowId to help with stage->workflow logic later:
172
+ const stageGroupToWorkflowMap: Record<number, number> = {};
173
+
174
+ transformRepo = stageGroupRepo;
175
+
176
+ const stageGroups = await transformRepo?.find({
177
+ where: {
178
+ organization_id: -1,
179
+ level_type: 'ORG',
180
+ level_id: -1,
181
+ },
182
+ });
183
+
184
+ for (const row of stageGroups) {
185
+ const { id, workflow_id, ...rest } = row;
186
+ const newSg = await this.stageGroupService.createEntity(
187
+ {
188
+ ...rest,
189
+ workflow_id: workflowIdMap[workflow_id],
190
+ organization_id,
191
+ level_id: organization_id,
192
+ entity_type: 'WFSG',
193
+ status: statusValue,
194
+ },
195
+ loggedInUser,
196
+ );
197
+ stageGroupIdMap[id] = newSg.id;
198
+ stageGroupToWorkflowMap[id] = workflow_id;
199
+ }
200
+
201
+ // === 3. Stage mapping — point to stageGroup and workflow
202
+ const stageIdMap: Record<number, number> = {};
203
+ const stageToStageGroupMap: Record<number, number> = {};
204
+
205
+ transformRepo = stageRepo;
206
+ const stages = await transformRepo?.find({
207
+ where: {
208
+ organization_id: -1,
209
+ level_type: 'ORG',
210
+ level_id: -1,
211
+ },
212
+ });
213
+
214
+ for (const row of stages) {
215
+ const { id, stage_group_id, ...rest } = row;
216
+ // Find the original parent workflow_id using the stageGroupToWorkflowMap
217
+ const originalWorkflowId = stageGroupToWorkflowMap[stage_group_id];
218
+ const newStage = await this.stageService.createEntity(
219
+ {
220
+ ...rest,
221
+ stage_group_id: stageGroupIdMap[stage_group_id],
222
+ workflow_id: workflowIdMap[originalWorkflowId], // New workflow id!
223
+ organization_id,
224
+ level_id: organization_id,
225
+ entity_type: 'WFS',
226
+ status: statusValue,
227
+ },
228
+ loggedInUser,
229
+ );
230
+ stageIdMap[id] = newStage.id;
231
+ stageToStageGroupMap[id] = stage_group_id; // maintain
232
+
233
+ // step 1 find old stage_id in stage_action_mapper and get all actions_ids
234
+ // step 2 search action in frm_wf_action table with those action_ids
235
+ // step 3 create new action with new stage_id and new workflow_id
236
+ // step 4 save new action
237
+
238
+ if (!stageActionMappingRepo) continue;
239
+
240
+ const stageIds = await stageActionMappingRepo.find({
241
+ where: {
242
+ stage_id: id,
243
+ },
244
+ });
245
+
246
+ const actionIds = stageIds.map((item) => item.action_id);
247
+
248
+ let actions = [] as any[];
249
+ if (actionIds.length > 0) {
250
+ if (!actionRepo) continue;
251
+
252
+ actions = await actionRepo?.findByIds(actionIds);
253
+ } else {
254
+ // No actions to query
255
+ actions = [];
256
+ }
257
+
258
+ console.log(
259
+ `Found ${actions.length} actions for stage ${id} in workflow ${originalWorkflowId}`,
260
+ );
261
+
262
+ // === 4. Action mapping — point to stage, stageGroup, workflow correctly
263
+ for (const row of actions as any[]) {
264
+ const { id, created_date, modified_date, workflow_id, ...rest } = row;
265
+
266
+ const newWorkflowId = workflowIdMap[workflow_id];
267
+
268
+ // Step 1: Get the code of the old is_mandatory field
269
+
270
+ const [oldIsMandatory] = await listMasterItemsRepo.find({
271
+ where: { id: rest.action_requirement },
272
+ });
273
+
274
+ // Step 2: Get all new 'ACRQ' list master items for the organization
275
+
276
+ const newIsMandatoryList = await listMasterItemsRepo.find({
277
+ where: { organization_id: organization_id, listtype: 'ACRQ' },
278
+ });
279
+
280
+ console.log(
281
+ `Populating action for stage ${newStage.id} in workflow ${newWorkflowId}`,
282
+ );
283
+
284
+ console.log(`Old is_mandatory code: ${oldIsMandatory?.code}`);
285
+ console.log(`New is_mandatory list:`, newIsMandatoryList);
286
+
287
+ // Step 3: Find the matching new item with the same code
288
+ const matchedNewMandatory = newIsMandatoryList.find(
289
+ (item) => item.code === oldIsMandatory?.code,
290
+ );
291
+
292
+ console.log(`Matched new mandatory item:`, matchedNewMandatory);
293
+
294
+ if (!actionCategoryRepo) continue;
295
+
296
+ const formActionCategory = await actionCategoryRepo.find({
297
+ where: { id: row.action_category, is_form: true },
298
+ });
299
+
300
+ //get view master form
301
+
302
+ if (!viewMasterRepo) continue;
303
+
304
+ const formViewMaster = await viewMasterRepo.find({
305
+ where: { code: 'LEAD_FORM', organization_id: organization_id },
306
+ });
307
+
308
+ // Step 4: Use the matched new item's id (if found)
309
+ await this.actionService.createEntity(
310
+ {
311
+ ...rest,
312
+ stage_id: newStage.id,
313
+ workflow_id: newWorkflowId,
314
+ organization_id,
315
+ action_requirement: matchedNewMandatory?.id ?? null,
316
+ level_id: organization_id,
317
+ entity_type: 'WFA',
318
+ form: formActionCategory.length > 0 ? formViewMaster[0]?.id : null,
319
+ status: statusValue,
320
+ },
321
+ loggedInUser,
322
+ );
323
+ }
324
+ }
325
+
326
+ return {
327
+ message: 'Workflow data populated successfully',
328
+ status: 'success',
329
+ };
330
+ }
331
+ }
@@ -1,5 +1,5 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { EntityServiceImpl } from 'src/module/meta/service/entity-service-impl.service';
3
-
4
- @Injectable()
5
- export class StageActionMappingService extends EntityServiceImpl {}
1
+ import { Injectable } from '@nestjs/common';
2
+ import { EntityServiceImpl } from 'src/module/meta/service/entity-service-impl.service';
3
+
4
+ @Injectable()
5
+ export class StageActionMappingService extends EntityServiceImpl {}