rez_core 5.0.84 → 5.0.86

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