rez_core 5.0.61 → 5.0.62

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/.prettierrc +3 -3
  2. package/.vscode/extensions.json +5 -0
  3. package/README.md +99 -99
  4. package/dist/module/auth/guards/role.guard.js +3 -3
  5. package/dist/module/auth/services/auth.service.js +2 -2
  6. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  7. package/dist/module/filter/service/filter-evaluator.service.js +2 -2
  8. package/dist/module/filter/service/filter.service.js +22 -22
  9. package/dist/module/integration/examples/usage.example.js +9 -9
  10. package/dist/module/integration/service/integration.service.js +1 -1
  11. package/dist/module/integration/service/wrapper.service.js +26 -26
  12. package/dist/module/listmaster/service/list-master-item.service.js +2 -2
  13. package/dist/module/mapper/service/field-mapper.service.js +4 -4
  14. package/dist/module/meta/repository/entity-attribute-update.repository.js +3 -3
  15. package/dist/module/meta/repository/entity-master.repository.js +6 -6
  16. package/dist/module/meta/service/entity-dynamic.service.js +44 -44
  17. package/dist/module/meta/service/entity-list.service.js +3 -3
  18. package/dist/module/meta/service/entity-relation.service.js +9 -9
  19. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  20. package/dist/module/meta/service/resolver.service.js +33 -33
  21. package/dist/module/module/repository/menu.repository.js +17 -17
  22. package/dist/module/notification/service/notification.service.js +10 -10
  23. package/dist/module/user/controller/login.controller.js +18 -18
  24. package/dist/module/user/service/role.service.js +4 -4
  25. package/dist/module/user/service/user-session.service.js +2 -2
  26. package/dist/module/workflow/repository/action.repository.js +20 -20
  27. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  28. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  29. package/dist/module/workflow/repository/stage-group.repository.js +20 -20
  30. package/dist/module/workflow/repository/stage-movement.repository.js +17 -17
  31. package/dist/module/workflow/repository/stage.repository.js +8 -8
  32. package/dist/module/workflow/service/action-template-mapping.service.js +13 -13
  33. package/dist/module/workflow/service/action.service.js +7 -7
  34. package/dist/module/workflow/service/entity-modification.service.js +2 -2
  35. package/dist/module/workflow/service/populate-workflow.service.js +1 -1
  36. package/dist/module/workflow/service/populate-workflow.service.js.map +1 -1
  37. package/dist/module/workflow/service/stage-group.service.js +2 -2
  38. package/dist/module/workflow/service/stage.service.js +2 -2
  39. package/dist/module/workflow/service/task.service.js +18 -18
  40. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  41. package/dist/module/workflow/service/workflow-meta.service.js +26 -26
  42. package/dist/module/workflow-automation/service/schedule-handler.service.js +9 -9
  43. package/dist/module/workflow-schedule/processors/schedule.processor.js +4 -4
  44. package/dist/module/workflow-schedule/service/workflow-schedule.service.js +9 -9
  45. package/dist/tsconfig.build.tsbuildinfo +1 -1
  46. package/dist/utils/service/reflection-helper.service.js +2 -2
  47. package/docs/modules/event-driven-integration-design.md +91 -91
  48. package/docs/modules/integration.md +250 -250
  49. package/eslint.config.mjs +34 -34
  50. package/nest-cli.json +14 -14
  51. package/package.json +124 -124
  52. package/src/app.controller.ts +12 -12
  53. package/src/app.module.ts +66 -66
  54. package/src/app.service.ts +8 -8
  55. package/src/config/bull.config.ts +69 -69
  56. package/src/config/config.module.ts +17 -17
  57. package/src/config/database.config.ts +48 -48
  58. package/src/constant/global.constant.ts +67 -67
  59. package/src/core.module.ts +91 -91
  60. package/src/decorators/roles.decorator.ts +7 -7
  61. package/src/dtos/response.dto.ts +6 -6
  62. package/src/dtos/response.ts +5 -5
  63. package/src/index.ts +1 -1
  64. package/src/module/auth/auth.module.ts +49 -49
  65. package/src/module/auth/controller/auth.controller.ts +28 -28
  66. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  67. package/src/module/auth/guards/jwt.guard.ts +22 -22
  68. package/src/module/auth/guards/role.guard.ts +68 -68
  69. package/src/module/auth/services/auth.service.ts +50 -50
  70. package/src/module/auth/services/jwt.service.ts +11 -11
  71. package/src/module/auth/strategies/google.strategy.ts +54 -54
  72. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  73. package/src/module/auth/strategies/local.strategy.ts +13 -13
  74. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  75. package/src/module/dashboard/dashboard.module.ts +21 -21
  76. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  77. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  78. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  79. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  80. package/src/module/dev/dev.module.ts +12 -12
  81. package/src/module/dev/service/dev.service.ts +7 -7
  82. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  83. package/src/module/enterprise/enterprise.module.ts +30 -30
  84. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  85. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  86. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  87. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  88. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  89. package/src/module/enterprise/repository/school.repository.ts +278 -278
  90. package/src/module/enterprise/service/brand.service.ts +5 -5
  91. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  92. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  93. package/src/module/enterprise/service/organization.service.ts +145 -145
  94. package/src/module/entity_json/controller/entity_json.controller.ts +47 -47
  95. package/src/module/entity_json/entity/entityJson.entity.ts +39 -39
  96. package/src/module/entity_json/entity_json.module.ts +18 -18
  97. package/src/module/entity_json/service/entityJson.repository.ts +37 -37
  98. package/src/module/entity_json/service/entity_json.service.ts +234 -234
  99. package/src/module/filter/controller/filter.controller.ts +84 -84
  100. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  101. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  102. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  103. package/src/module/filter/filter.module.ts +31 -31
  104. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  105. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  106. package/src/module/filter/service/filter.service.ts +1239 -1239
  107. package/src/module/filter/service/saved-filter.service.ts +170 -170
  108. package/src/module/ics/controller/ics.controller.ts +21 -21
  109. package/src/module/ics/dto/ics.dto.ts +55 -55
  110. package/src/module/ics/ics.module.ts +13 -13
  111. package/src/module/ics/service/ics.service.ts +57 -57
  112. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  113. package/src/module/integration/controller/integration.controller.ts +662 -662
  114. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  115. package/src/module/integration/dto/create-config.dto.ts +526 -526
  116. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  117. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  118. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  119. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  120. package/src/module/integration/examples/usage.example.ts +338 -338
  121. package/src/module/integration/factories/base.factory.ts +7 -7
  122. package/src/module/integration/factories/email.factory.ts +49 -49
  123. package/src/module/integration/factories/integration.factory.ts +121 -121
  124. package/src/module/integration/factories/sms.factory.ts +51 -51
  125. package/src/module/integration/factories/telephone.factory.ts +41 -41
  126. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  127. package/src/module/integration/integration.module.ts +110 -110
  128. package/src/module/integration/service/calendar-event.service.ts +118 -118
  129. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  130. package/src/module/integration/service/integration-queue.service.ts +229 -229
  131. package/src/module/integration/service/integration.service.ts +2633 -2633
  132. package/src/module/integration/service/oauth.service.ts +224 -224
  133. package/src/module/integration/service/wrapper.service.ts +701 -701
  134. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  135. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  136. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  137. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  138. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  139. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  140. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  141. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  142. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  143. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  144. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  145. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  146. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  147. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  148. package/src/module/layout/controller/layout.controller.ts +47 -47
  149. package/src/module/layout/entity/header-items.entity.ts +28 -28
  150. package/src/module/layout/entity/header-section.entity.ts +19 -19
  151. package/src/module/layout/layout.module.ts +21 -21
  152. package/src/module/layout/repository/header-items.repository.ts +18 -18
  153. package/src/module/layout/repository/header-section.repository.ts +22 -22
  154. package/src/module/layout/service/header-section.service.ts +25 -25
  155. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  156. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  157. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  158. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  159. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  160. package/src/module/lead/controller/lead.controller.ts +30 -30
  161. package/src/module/lead/lead.module.ts +14 -14
  162. package/src/module/lead/repository/lead.repository.ts +41 -41
  163. package/src/module/lead/service/lead.service.ts +54 -54
  164. package/src/module/linked_attributes/controller/linked_attributes.controller.ts +37 -37
  165. package/src/module/linked_attributes/entity/linked_attribute.entity.ts +51 -51
  166. package/src/module/linked_attributes/linked_attributes.module.ts +16 -16
  167. package/src/module/linked_attributes/repository/linked_attribute.repository.ts +12 -12
  168. package/src/module/linked_attributes/service/linked_attributes.service.ts +75 -75
  169. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  170. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  171. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  172. package/src/module/listmaster/listmaster.module.ts +46 -46
  173. package/src/module/listmaster/repository/list-master-items.repository.ts +173 -173
  174. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  175. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  176. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  177. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  178. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  179. package/src/module/listmaster/service/list-master.service.ts +535 -535
  180. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  181. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  182. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  183. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  184. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  185. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  186. package/src/module/mapper/mapper.module.ts +35 -35
  187. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  188. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  189. package/src/module/mapper/repository/mapper.repository.ts +32 -32
  190. package/src/module/mapper/service/field-mapper.service.ts +271 -271
  191. package/src/module/mapper/service/mapper.service.ts +81 -81
  192. package/src/module/master/controller/master.controller.ts +74 -74
  193. package/src/module/master/service/master.service.ts +483 -483
  194. package/src/module/meta/controller/app-master.controller.ts +38 -38
  195. package/src/module/meta/controller/attribute-master.controller.ts +84 -84
  196. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  197. package/src/module/meta/controller/entity-master.controller.ts +41 -41
  198. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  199. package/src/module/meta/controller/entity.controller.ts +392 -392
  200. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  201. package/src/module/meta/controller/media.controller.ts +107 -107
  202. package/src/module/meta/controller/meta.controller.ts +96 -96
  203. package/src/module/meta/controller/view-master.controller.ts +86 -86
  204. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  205. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  206. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  207. package/src/module/meta/entity/app-master.entity.ts +34 -34
  208. package/src/module/meta/entity/attribute-master.entity.ts +92 -92
  209. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  210. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  211. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  212. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  213. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  214. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  215. package/src/module/meta/entity/media-data.entity.ts +32 -32
  216. package/src/module/meta/entity/preference.entity.ts +62 -62
  217. package/src/module/meta/entity/view-master.entity.ts +41 -41
  218. package/src/module/meta/entity.module.ts +166 -166
  219. package/src/module/meta/repository/app-master.repository.ts +20 -20
  220. package/src/module/meta/repository/attribute-master.repository.ts +138 -138
  221. package/src/module/meta/repository/entity-attribute-update.repository.ts +44 -44
  222. package/src/module/meta/repository/entity-master.repository.ts +111 -111
  223. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  224. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  225. package/src/module/meta/repository/media-data.repository.ts +50 -50
  226. package/src/module/meta/repository/preference.repository.ts +20 -20
  227. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  228. package/src/module/meta/repository/view-master.repository.ts +42 -42
  229. package/src/module/meta/service/app-master.service.ts +37 -37
  230. package/src/module/meta/service/attribute-master.service.ts +130 -130
  231. package/src/module/meta/service/common.service.ts +9 -9
  232. package/src/module/meta/service/entity-attribute-update.service.ts +28 -28
  233. package/src/module/meta/service/entity-dynamic.service.ts +821 -821
  234. package/src/module/meta/service/entity-list.service.ts +205 -205
  235. package/src/module/meta/service/entity-master.service.ts +171 -171
  236. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  237. package/src/module/meta/service/entity-relation.service.ts +87 -87
  238. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  239. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  240. package/src/module/meta/service/entity-table.service.ts +150 -150
  241. package/src/module/meta/service/entity-validation.service.ts +187 -187
  242. package/src/module/meta/service/entity.service.ts +67 -67
  243. package/src/module/meta/service/field-group.service.ts +103 -103
  244. package/src/module/meta/service/media-data.service.ts +507 -507
  245. package/src/module/meta/service/populate-meta.service.ts +222 -222
  246. package/src/module/meta/service/preference.service.ts +16 -16
  247. package/src/module/meta/service/resolver.service.ts +317 -317
  248. package/src/module/meta/service/section-master.service.ts +104 -104
  249. package/src/module/meta/service/update-form-json.service.ts +22 -22
  250. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  251. package/src/module/meta/service/view-master.service.ts +127 -127
  252. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  253. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  254. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  255. package/src/module/module/controller/menu.controller.ts +15 -15
  256. package/src/module/module/controller/module-access.controller.ts +134 -134
  257. package/src/module/module/entity/menu.entity.ts +43 -43
  258. package/src/module/module/entity/module-access.entity.ts +25 -25
  259. package/src/module/module/entity/module-action.entity.ts +17 -17
  260. package/src/module/module/entity/module.entity.ts +52 -52
  261. package/src/module/module/module.module.ts +42 -42
  262. package/src/module/module/repository/menu.repository.ts +191 -191
  263. package/src/module/module/repository/module-access.repository.ts +344 -344
  264. package/src/module/module/service/menu.service.ts +82 -82
  265. package/src/module/module/service/module-access.service.ts +195 -195
  266. package/src/module/notification/controller/notification.controller.ts +58 -58
  267. package/src/module/notification/controller/otp.controller.ts +117 -117
  268. package/src/module/notification/entity/notification.entity.ts +26 -26
  269. package/src/module/notification/entity/otp.entity.ts +28 -28
  270. package/src/module/notification/firebase-admin.config.ts +22 -22
  271. package/src/module/notification/notification.module.ts +69 -69
  272. package/src/module/notification/repository/otp.repository.ts +27 -27
  273. package/src/module/notification/service/email.service.ts +127 -127
  274. package/src/module/notification/service/notification.service.ts +160 -160
  275. package/src/module/notification/service/otp.service.ts +133 -133
  276. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  277. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  278. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  279. package/src/module/third-party-module/third-party.module.ts +12 -12
  280. package/src/module/user/controller/login.controller.ts +198 -198
  281. package/src/module/user/controller/user.controller.ts +40 -40
  282. package/src/module/user/dto/create-user.dto.ts +62 -62
  283. package/src/module/user/dto/update-user.dto.ts +4 -4
  284. package/src/module/user/entity/role.entity.ts +33 -33
  285. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  286. package/src/module/user/entity/user-session.entity.ts +73 -73
  287. package/src/module/user/entity/user.entity.ts +59 -59
  288. package/src/module/user/repository/role.repository.ts +96 -96
  289. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  290. package/src/module/user/repository/user.repository.ts +50 -50
  291. package/src/module/user/repository/userSession.repository.ts +33 -33
  292. package/src/module/user/service/login.service.ts +326 -326
  293. package/src/module/user/service/role.service.ts +189 -189
  294. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  295. package/src/module/user/service/user-session.service.ts +168 -168
  296. package/src/module/user/service/user.service.ts +368 -368
  297. package/src/module/user/user.module.ts +65 -65
  298. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  299. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  300. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  301. package/src/module/workflow/controller/action.controller.ts +111 -111
  302. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  303. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  304. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  305. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  306. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  307. package/src/module/workflow/controller/stage.controller.ts +50 -50
  308. package/src/module/workflow/controller/task.controller.ts +77 -77
  309. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  310. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  311. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  312. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  313. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  314. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  315. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  316. package/src/module/workflow/entity/action.entity.ts +53 -53
  317. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  318. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  319. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  320. package/src/module/workflow/entity/form.entity.ts +25 -25
  321. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  322. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  323. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  324. package/src/module/workflow/entity/stage.entity.ts +20 -20
  325. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  326. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  327. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  328. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  329. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  330. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  331. package/src/module/workflow/repository/action-data.repository.ts +334 -334
  332. package/src/module/workflow/repository/action.repository.ts +334 -334
  333. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  334. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  335. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  336. package/src/module/workflow/repository/stage-group.repository.ts +197 -197
  337. package/src/module/workflow/repository/stage-movement.repository.ts +246 -246
  338. package/src/module/workflow/repository/stage.repository.ts +172 -172
  339. package/src/module/workflow/repository/task.repository.ts +134 -134
  340. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  341. package/src/module/workflow/service/action-category.service.ts +33 -33
  342. package/src/module/workflow/service/action-data.service.ts +62 -62
  343. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  344. package/src/module/workflow/service/action-template-mapping.service.ts +131 -131
  345. package/src/module/workflow/service/action.service.ts +279 -279
  346. package/src/module/workflow/service/activity-log.service.ts +107 -107
  347. package/src/module/workflow/service/comm-template.service.ts +180 -180
  348. package/src/module/workflow/service/entity-modification.service.ts +61 -61
  349. package/src/module/workflow/service/form-master.service.ts +35 -35
  350. package/src/module/workflow/service/populate-workflow.service.ts +331 -331
  351. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  352. package/src/module/workflow/service/stage-group.service.ts +342 -342
  353. package/src/module/workflow/service/stage.service.ts +199 -199
  354. package/src/module/workflow/service/task.service.ts +540 -540
  355. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  356. package/src/module/workflow/service/workflow-meta.service.ts +654 -654
  357. package/src/module/workflow/service/workflow.service.ts +209 -209
  358. package/src/module/workflow/workflow.module.ts +180 -180
  359. package/src/module/workflow-automation/SCHEDULING_GUIDE.md +145 -145
  360. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +43 -43
  361. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  362. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +40 -40
  363. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  364. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  365. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  366. package/src/module/workflow-automation/service/schedule-handler.service.ts +168 -168
  367. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +224 -224
  368. package/src/module/workflow-automation/service/workflow-automation.service.ts +515 -515
  369. package/src/module/workflow-automation/workflow-automation.module.ts +54 -54
  370. package/src/module/workflow-schedule/INSTALLATION.md +244 -244
  371. package/src/module/workflow-schedule/MULTI_PROJECT_GUIDE.md +196 -196
  372. package/src/module/workflow-schedule/README.md +422 -422
  373. package/src/module/workflow-schedule/constants/schedule.constants.ts +48 -48
  374. package/src/module/workflow-schedule/controller/workflow-schedule.controller.ts +255 -255
  375. package/src/module/workflow-schedule/docs/CLAUDE_CODE_GUIDE.md +510 -510
  376. package/src/module/workflow-schedule/docs/CLAUDE_CODE_PROMPT.md +362 -362
  377. package/src/module/workflow-schedule/docs/RUN_CLAUDE_CODE.sh +68 -68
  378. package/src/module/workflow-schedule/dto/create-schedule.dto.ts +147 -147
  379. package/src/module/workflow-schedule/dto/get-execution-logs.dto.ts +119 -119
  380. package/src/module/workflow-schedule/dto/update-schedule.dto.ts +96 -96
  381. package/src/module/workflow-schedule/entities/scheduled-workflow.entity.ts +148 -148
  382. package/src/module/workflow-schedule/entities/workflow-execution-log.entity.ts +154 -154
  383. package/src/module/workflow-schedule/interfaces/schedule-job-data.interface.ts +53 -53
  384. package/src/module/workflow-schedule/interfaces/workflow-schedule-options.interface.ts +12 -12
  385. package/src/module/workflow-schedule/processors/schedule.processor.ts +584 -584
  386. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +600 -600
  387. package/src/module/workflow-schedule/workflow-schedule.module.ts +67 -67
  388. package/src/resources/dev.properties.yaml +31 -31
  389. package/src/resources/local.properties.yaml +27 -27
  390. package/src/resources/properties.module.ts +12 -12
  391. package/src/resources/properties.yaml.ts +11 -11
  392. package/src/resources/uat.properties.yaml +31 -31
  393. package/src/table.config.ts +133 -133
  394. package/src/utils/dto/excel-data.dto.ts +14 -14
  395. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  396. package/src/utils/service/base64util.service.ts +18 -18
  397. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  398. package/src/utils/service/codeGenerator.service.ts +22 -22
  399. package/src/utils/service/dateUtil.service.ts +17 -17
  400. package/src/utils/service/encryptUtil.service.ts +97 -97
  401. package/src/utils/service/excel-helper.service.ts +72 -72
  402. package/src/utils/service/excelUtil.service.ts +15 -15
  403. package/src/utils/service/file-util.service.ts +11 -11
  404. package/src/utils/service/json-util.service.ts +23 -23
  405. package/src/utils/service/loggingUtil.service.ts +88 -88
  406. package/src/utils/service/reflection-helper.service.ts +62 -62
  407. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  408. package/src/utils/utils.module.ts +27 -27
  409. package/tsconfig.build.json +4 -4
  410. package/tsconfig.json +24 -24
  411. package/.claude/settings.local.json +0 -26
  412. package/.idea/250218_nodejs_core.iml +0 -9
  413. package/.idea/codeStyles/Project.xml +0 -59
  414. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  415. package/.idea/copilot.data.migration.agent.xml +0 -6
  416. package/.idea/copilot.data.migration.ask.xml +0 -6
  417. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  418. package/.idea/copilot.data.migration.edit.xml +0 -6
  419. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  420. package/.idea/misc.xml +0 -6
  421. package/.idea/modules.xml +0 -8
  422. package/.idea/prettier.xml +0 -6
  423. package/.idea/vcs.xml +0 -6
  424. package/server.log +0 -850
@@ -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: Number(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 {}