rez_core 7.1.1 → 7.1.2

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