rez_core 4.0.88 → 4.0.91

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 (385) 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.js +2 -2
  12. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  13. package/dist/module/filter/service/filter-evaluator.service.js +2 -2
  14. package/dist/module/filter/service/filter.service.js +32 -23
  15. package/dist/module/filter/service/filter.service.js.map +1 -1
  16. package/dist/module/integration/examples/usage.example.js +9 -9
  17. package/dist/module/integration/service/integration.service.js +10 -1
  18. package/dist/module/integration/service/integration.service.js.map +1 -1
  19. package/dist/module/integration/service/wrapper.service.js +25 -25
  20. package/dist/module/listmaster/service/list-master-item.service.js +2 -2
  21. package/dist/module/mapper/service/field-mapper.service.js +4 -4
  22. package/dist/module/mapper/service/mapper.service.js +2 -2
  23. package/dist/module/meta/service/entity-dynamic.service.js +18 -18
  24. package/dist/module/meta/service/entity-list.service.js +3 -3
  25. package/dist/module/meta/service/entity-master.service.js +3 -3
  26. package/dist/module/meta/service/entity-relation.service.js +11 -11
  27. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  28. package/dist/module/meta/service/resolver.service.js +3 -3
  29. package/dist/module/module/repository/menu.repository.js +12 -12
  30. package/dist/module/notification/service/notification.service.js +9 -9
  31. package/dist/module/user/controller/login.controller.js +18 -18
  32. package/dist/module/user/service/role.service.js +4 -4
  33. package/dist/module/user/service/user-session.service.js +2 -2
  34. package/dist/module/workflow/repository/action.repository.js +20 -20
  35. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  36. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  37. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  38. package/dist/module/workflow/repository/stage-movement.repository.js +15 -15
  39. package/dist/module/workflow/repository/stage.repository.js +8 -8
  40. package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
  41. package/dist/module/workflow/service/action.service.js +7 -7
  42. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  43. package/dist/module/workflow/service/stage-group.service.js +2 -2
  44. package/dist/module/workflow/service/stage.service.js +2 -2
  45. package/dist/module/workflow/service/task.service.js +28 -28
  46. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  47. package/dist/module/workflow/service/workflow-meta.service.js +35 -35
  48. package/dist/module/workflow/service/workflow.service.js +2 -2
  49. package/dist/tsconfig.build.tsbuildinfo +1 -1
  50. package/dist/utils/service/reflection-helper.service.js +2 -2
  51. package/docs/modules/event-driven-integration-design.md +91 -91
  52. package/docs/modules/integration.md +250 -250
  53. package/eslint.config.mjs +34 -34
  54. package/nest-cli.json +14 -14
  55. package/package.json +118 -118
  56. package/src/app.controller.ts +12 -12
  57. package/src/app.module.ts +49 -49
  58. package/src/app.service.ts +8 -8
  59. package/src/config/config.module.ts +18 -18
  60. package/src/config/database.config.ts +23 -23
  61. package/src/constant/global.constant.ts +67 -67
  62. package/src/core.module.ts +81 -81
  63. package/src/decorators/roles.decorator.ts +7 -7
  64. package/src/dtos/response.dto.ts +6 -6
  65. package/src/dtos/response.ts +5 -5
  66. package/src/index.ts +1 -1
  67. package/src/module/auth/auth.module.ts +49 -49
  68. package/src/module/auth/controller/auth.controller.ts +28 -28
  69. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  70. package/src/module/auth/guards/jwt.guard.ts +22 -22
  71. package/src/module/auth/guards/role.guard.ts +68 -68
  72. package/src/module/auth/services/auth.service.ts +50 -50
  73. package/src/module/auth/services/jwt.service.ts +11 -11
  74. package/src/module/auth/strategies/google.strategy.ts +54 -54
  75. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  76. package/src/module/auth/strategies/local.strategy.ts +13 -13
  77. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  78. package/src/module/dashboard/dashboard.module.ts +21 -21
  79. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  80. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  81. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  82. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  83. package/src/module/dev/dev.module.ts +12 -12
  84. package/src/module/dev/service/dev.service.ts +7 -7
  85. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  86. package/src/module/enterprise/enterprise.module.ts +30 -30
  87. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  88. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  89. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  90. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  91. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  92. package/src/module/enterprise/repository/school.repository.ts +278 -278
  93. package/src/module/enterprise/service/brand.service.ts +5 -5
  94. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  95. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  96. package/src/module/enterprise/service/organization.service.ts +145 -145
  97. package/src/module/filter/controller/filter.controller.ts +84 -84
  98. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  99. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  100. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  101. package/src/module/filter/filter.module.ts +31 -31
  102. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  103. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  104. package/src/module/filter/service/filter.service.ts +941 -930
  105. package/src/module/filter/service/saved-filter.service.ts +170 -170
  106. package/src/module/ics/controller/ics.controller.ts +21 -21
  107. package/src/module/ics/dto/ics.dto.ts +55 -55
  108. package/src/module/ics/ics.module.ts +13 -13
  109. package/src/module/ics/service/ics.service.ts +57 -57
  110. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  111. package/src/module/integration/controller/integration.controller.ts +662 -662
  112. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  113. package/src/module/integration/dto/create-config.dto.ts +526 -526
  114. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  115. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  116. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  117. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  118. package/src/module/integration/examples/usage.example.ts +338 -338
  119. package/src/module/integration/factories/base.factory.ts +7 -7
  120. package/src/module/integration/factories/email.factory.ts +49 -49
  121. package/src/module/integration/factories/integration.factory.ts +121 -121
  122. package/src/module/integration/factories/sms.factory.ts +51 -51
  123. package/src/module/integration/factories/telephone.factory.ts +41 -41
  124. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  125. package/src/module/integration/integration.module.ts +110 -110
  126. package/src/module/integration/service/calendar-event.service.ts +118 -118
  127. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  128. package/src/module/integration/service/integration-queue.service.ts +229 -229
  129. package/src/module/integration/service/integration.service.ts +2633 -2621
  130. package/src/module/integration/service/oauth.service.ts +224 -224
  131. package/src/module/integration/service/wrapper.service.ts +499 -499
  132. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  133. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  134. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  135. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  136. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  137. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  138. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  139. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  140. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  141. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  142. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  143. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  144. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  145. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  146. package/src/module/layout/controller/layout.controller.ts +47 -47
  147. package/src/module/layout/entity/header-items.entity.ts +28 -28
  148. package/src/module/layout/entity/header-section.entity.ts +19 -19
  149. package/src/module/layout/layout.module.ts +21 -21
  150. package/src/module/layout/repository/header-items.repository.ts +18 -18
  151. package/src/module/layout/repository/header-section.repository.ts +22 -22
  152. package/src/module/layout/service/header-section.service.ts +25 -25
  153. package/src/module/layout_preference/controller/layout_preference.controller.ts +47 -47
  154. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  155. package/src/module/layout_preference/layout_preference.module.ts +18 -18
  156. package/src/module/layout_preference/repository/layout_preference.repository.ts +30 -30
  157. package/src/module/layout_preference/service/layout_preference.service.ts +172 -172
  158. package/src/module/lead/controller/lead.controller.ts +30 -30
  159. package/src/module/lead/lead.module.ts +14 -14
  160. package/src/module/lead/repository/lead.repository.ts +41 -41
  161. package/src/module/lead/service/lead.service.ts +54 -54
  162. package/src/module/listmaster/controller/list-master.controller.ts +187 -187
  163. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  164. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  165. package/src/module/listmaster/listmaster.module.ts +44 -44
  166. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  167. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  168. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  169. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  170. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  171. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  172. package/src/module/listmaster/service/list-master.service.ts +442 -442
  173. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  174. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  175. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  176. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  177. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  178. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  179. package/src/module/mapper/mapper.module.ts +34 -34
  180. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  181. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  182. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  183. package/src/module/mapper/service/field-mapper.service.ts +266 -266
  184. package/src/module/mapper/service/mapper.service.ts +79 -79
  185. package/src/module/master/controller/master.controller.ts +74 -74
  186. package/src/module/master/service/master.service.ts +483 -483
  187. package/src/module/meta/controller/app-master.controller.ts +38 -38
  188. package/src/module/meta/controller/attribute-master.controller.ts +66 -66
  189. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  190. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  191. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  192. package/src/module/meta/controller/entity.controller.ts +392 -392
  193. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  194. package/src/module/meta/controller/media.controller.ts +107 -107
  195. package/src/module/meta/controller/meta.controller.ts +96 -96
  196. package/src/module/meta/controller/view-master.controller.ts +86 -86
  197. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  198. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  199. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  200. package/src/module/meta/entity/app-master.entity.ts +34 -34
  201. package/src/module/meta/entity/attribute-master.entity.ts +89 -89
  202. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  203. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  204. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  205. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  206. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  207. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  208. package/src/module/meta/entity/media-data.entity.ts +32 -32
  209. package/src/module/meta/entity/preference.entity.ts +62 -62
  210. package/src/module/meta/entity/view-master.entity.ts +41 -41
  211. package/src/module/meta/entity.module.ts +158 -158
  212. package/src/module/meta/repository/app-master.repository.ts +20 -20
  213. package/src/module/meta/repository/attribute-master.repository.ts +110 -110
  214. package/src/module/meta/repository/entity-master.repository.ts +69 -69
  215. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  216. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  217. package/src/module/meta/repository/media-data.repository.ts +50 -50
  218. package/src/module/meta/repository/preference.repository.ts +20 -20
  219. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  220. package/src/module/meta/repository/view-master.repository.ts +42 -42
  221. package/src/module/meta/service/app-master.service.ts +37 -37
  222. package/src/module/meta/service/attribute-master.service.ts +117 -117
  223. package/src/module/meta/service/common.service.ts +9 -9
  224. package/src/module/meta/service/entity-dynamic.service.ts +824 -824
  225. package/src/module/meta/service/entity-list.service.ts +205 -205
  226. package/src/module/meta/service/entity-master.service.ts +169 -169
  227. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  228. package/src/module/meta/service/entity-relation.service.ts +69 -69
  229. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  230. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  231. package/src/module/meta/service/entity-table.service.ts +150 -150
  232. package/src/module/meta/service/entity-validation.service.ts +187 -187
  233. package/src/module/meta/service/entity.service.ts +67 -67
  234. package/src/module/meta/service/field-group.service.ts +103 -103
  235. package/src/module/meta/service/media-data.service.ts +507 -507
  236. package/src/module/meta/service/populate-meta.service.ts +193 -193
  237. package/src/module/meta/service/preference.service.ts +16 -16
  238. package/src/module/meta/service/resolver.service.ts +267 -267
  239. package/src/module/meta/service/section-master.service.ts +104 -104
  240. package/src/module/meta/service/update-form-json.service.ts +22 -22
  241. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  242. package/src/module/meta/service/view-master.service.ts +127 -127
  243. package/src/module/module/controller/menu.controller.ts +15 -15
  244. package/src/module/module/controller/module-access.controller.ts +134 -134
  245. package/src/module/module/entity/menu.entity.ts +43 -43
  246. package/src/module/module/entity/module-access.entity.ts +25 -25
  247. package/src/module/module/entity/module-action.entity.ts +17 -17
  248. package/src/module/module/entity/module.entity.ts +52 -52
  249. package/src/module/module/module.module.ts +42 -42
  250. package/src/module/module/repository/menu.repository.ts +184 -184
  251. package/src/module/module/repository/module-access.repository.ts +344 -344
  252. package/src/module/module/service/menu.service.ts +82 -82
  253. package/src/module/module/service/module-access.service.ts +209 -209
  254. package/src/module/notification/controller/notification.controller.ts +58 -58
  255. package/src/module/notification/controller/otp.controller.ts +117 -117
  256. package/src/module/notification/entity/notification.entity.ts +26 -26
  257. package/src/module/notification/entity/otp.entity.ts +28 -28
  258. package/src/module/notification/firebase-admin.config.ts +22 -22
  259. package/src/module/notification/notification.module.ts +69 -69
  260. package/src/module/notification/repository/otp.repository.ts +27 -27
  261. package/src/module/notification/service/email.service.ts +127 -127
  262. package/src/module/notification/service/notification.service.ts +163 -163
  263. package/src/module/notification/service/otp.service.ts +132 -132
  264. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  265. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  266. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  267. package/src/module/third-party-module/third-party.module.ts +12 -12
  268. package/src/module/user/controller/login.controller.ts +197 -197
  269. package/src/module/user/controller/user.controller.ts +40 -40
  270. package/src/module/user/dto/create-user.dto.ts +62 -62
  271. package/src/module/user/dto/update-user.dto.ts +4 -4
  272. package/src/module/user/entity/role.entity.ts +33 -33
  273. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  274. package/src/module/user/entity/user-session.entity.ts +73 -73
  275. package/src/module/user/entity/user.entity.ts +59 -59
  276. package/src/module/user/repository/role.repository.ts +96 -96
  277. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  278. package/src/module/user/repository/user.repository.ts +50 -50
  279. package/src/module/user/repository/userSession.repository.ts +33 -33
  280. package/src/module/user/service/login.service.ts +284 -284
  281. package/src/module/user/service/role.service.ts +189 -189
  282. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  283. package/src/module/user/service/user-session.service.ts +168 -168
  284. package/src/module/user/service/user.service.ts +365 -365
  285. package/src/module/user/user.module.ts +65 -65
  286. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  287. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  288. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  289. package/src/module/workflow/controller/action.controller.ts +111 -111
  290. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  291. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  292. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  293. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  294. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  295. package/src/module/workflow/controller/stage.controller.ts +50 -50
  296. package/src/module/workflow/controller/task.controller.ts +77 -77
  297. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  298. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  299. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  300. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  301. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  302. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  303. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  304. package/src/module/workflow/entity/action.entity.ts +50 -50
  305. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  306. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  307. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  308. package/src/module/workflow/entity/form.entity.ts +25 -25
  309. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  310. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  311. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  312. package/src/module/workflow/entity/stage.entity.ts +20 -20
  313. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  314. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  315. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  316. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  317. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  318. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  319. package/src/module/workflow/repository/action-data.repository.ts +323 -323
  320. package/src/module/workflow/repository/action.repository.ts +323 -323
  321. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  322. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  323. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  324. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  325. package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
  326. package/src/module/workflow/repository/stage.repository.ts +172 -172
  327. package/src/module/workflow/repository/task.repository.ts +127 -127
  328. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  329. package/src/module/workflow/service/action-category.service.ts +33 -33
  330. package/src/module/workflow/service/action-data.service.ts +62 -62
  331. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  332. package/src/module/workflow/service/action-template-mapping.service.ts +104 -104
  333. package/src/module/workflow/service/action.service.ts +279 -279
  334. package/src/module/workflow/service/activity-log.service.ts +107 -107
  335. package/src/module/workflow/service/comm-template.service.ts +180 -180
  336. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  337. package/src/module/workflow/service/form-master.service.ts +35 -35
  338. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  339. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  340. package/src/module/workflow/service/stage-group.service.ts +319 -319
  341. package/src/module/workflow/service/stage.service.ts +199 -199
  342. package/src/module/workflow/service/task.service.ts +560 -560
  343. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  344. package/src/module/workflow/service/workflow-meta.service.ts +640 -640
  345. package/src/module/workflow/service/workflow.service.ts +205 -205
  346. package/src/module/workflow/workflow.module.ts +174 -174
  347. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +21 -21
  348. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  349. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +35 -35
  350. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  351. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  352. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  353. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  354. package/src/module/workflow-automation/service/workflow-automation.service.ts +347 -347
  355. package/src/module/workflow-automation/workflow-automation.module.ts +34 -34
  356. package/src/resources/dev.properties.yaml +30 -30
  357. package/src/resources/local.properties.yaml +27 -27
  358. package/src/resources/properties.module.ts +12 -12
  359. package/src/resources/properties.yaml.ts +11 -11
  360. package/src/resources/uat.properties.yaml +31 -31
  361. package/src/table.config.ts +126 -126
  362. package/src/utils/dto/excel-data.dto.ts +14 -14
  363. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  364. package/src/utils/service/base64util.service.ts +18 -18
  365. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  366. package/src/utils/service/codeGenerator.service.ts +22 -22
  367. package/src/utils/service/dateUtil.service.ts +17 -17
  368. package/src/utils/service/encryptUtil.service.ts +97 -97
  369. package/src/utils/service/excel-helper.service.ts +72 -72
  370. package/src/utils/service/excelUtil.service.ts +15 -15
  371. package/src/utils/service/file-util.service.ts +11 -11
  372. package/src/utils/service/json-util.service.ts +23 -23
  373. package/src/utils/service/loggingUtil.service.ts +34 -34
  374. package/src/utils/service/reflection-helper.service.ts +62 -62
  375. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  376. package/src/utils/utils.module.ts +25 -25
  377. package/tsconfig.build.json +4 -4
  378. package/tsconfig.json +24 -24
  379. package/.claude/settings.local.json +0 -26
  380. package/.idea/copilot.data.migration.agent.xml +0 -6
  381. package/.idea/copilot.data.migration.ask.xml +0 -6
  382. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  383. package/.idea/copilot.data.migration.edit.xml +0 -6
  384. package/.idea/misc.xml +0 -6
  385. package/server.log +0 -850
@@ -1,323 +1,323 @@
1
- import { BadRequestException, Injectable } from '@nestjs/common';
2
- import { InjectRepository } from '@nestjs/typeorm';
3
- import { ActionDataEntity } from '../entity/action-data.entity';
4
- import { DataSource, LessThan, Repository } from 'typeorm';
5
- import { UserData } from 'src/module/user/entity/user.entity';
6
- import { TaskDataEntity } from '../entity/task-data.entity';
7
- import { EntityServiceImpl } from 'src/module/meta/service/entity-service-impl.service';
8
- import { FORM_STATUS_TO_BE_SENT } from 'src/constant/global.constant';
9
- import { ConfigService } from '@nestjs/config';
10
- import axios from 'axios';
11
-
12
- @Injectable()
13
- export class ActionDataRepository extends EntityServiceImpl {
14
- constructor(
15
- @InjectRepository(ActionDataEntity)
16
- private readonly actionDataRepo: Repository<ActionDataEntity>,
17
- private readonly dataSource: DataSource,
18
- // @InjectRepository(FormDataEntity)
19
- // private readonly formRepo: Repository<FormDataEntity>,
20
- @InjectRepository(TaskDataEntity)
21
- private readonly TaskRepository: Repository<TaskDataEntity>,
22
- private readonly configService: ConfigService,
23
- ) {
24
- super();
25
- }
26
-
27
- async saveActionData(
28
- action: any,
29
- loggedInUser: UserData,
30
- mapped_entity_id,
31
- mapped_entity_type,
32
- ): Promise<any> {
33
- if (!action?.length) return;
34
-
35
- // Find the action with the lowest sequence
36
- const minSequence = Math.min(...action.map((a) => a.sequence));
37
-
38
- if (action.length > 0) {
39
- for (const act of action) {
40
- const is_mandatory = await this.dataSource.query(
41
- `SELECT code FROM frm_list_master_items WHERE id = ? and organization_id = ? LIMIT 1;`,
42
- [act.action_requirement, loggedInUser.organization_id],
43
- );
44
- const isFirst = act.sequence == minSequence;
45
- const actionData = this.actionDataRepo.create({
46
- stage_id: act.stage_id,
47
- user_id: loggedInUser.id,
48
- action_id: act.id,
49
- sequence: act.sequence,
50
- name: act.name,
51
- organization_id: loggedInUser.organization_id,
52
- mapped_entity_id,
53
- mapped_entity_type,
54
- is_current: isFirst ? 'Y' : null,
55
- start_time: isFirst ? new Date() : null,
56
- is_mandatory: is_mandatory[0]?.code === 'mandatory' ? true : false,
57
- category: act?.action_category_code,
58
- } as ActionDataEntity);
59
- await this.actionDataRepo.save(actionData);
60
-
61
- // SEND ANY FORM
62
- // if the action_category_code is 'SDFM', create a entry in crm_lead_form table
63
- if (act?.action_category_code === 'SDFM') {
64
- const dynamicFormURL = await this.generateFormURL(
65
- mapped_entity_type,
66
- mapped_entity_id,
67
- act.form_id,
68
- loggedInUser,
69
- );
70
-
71
- const viewMaster = await super.getEntityData(
72
- 'VMS',
73
- Number(act.form_id),
74
- loggedInUser,
75
- );
76
-
77
- const now = new Date();
78
- const istOffset = 5.5 * 60; // IST is UTC +5:30 in minutes
79
- const istDate = new Date(now.getTime() + istOffset * 60 * 1000);
80
-
81
- const data = {
82
- entity_type: 'LFRM',
83
- name: viewMaster?.name,
84
- stage_id: act.stage_id,
85
- mapped_entity_type,
86
- mapped_entity_id,
87
- view_id: act.form_id,
88
- form_url: dynamicFormURL,
89
- status: FORM_STATUS_TO_BE_SENT,
90
- action_id: act.id,
91
- created_date: istDate,
92
- };
93
-
94
- const createdEntity = await super.createEntity(
95
- data as any,
96
- loggedInUser,
97
- );
98
- // THEN INSERT SDFM IN RELATION TASK TABLE
99
-
100
- let relationData = await this.dataSource.query(
101
- `SELECT * FROM frm_entity_relation WHERE source_entity_type = ? AND target_entity_type = ?`,
102
- [createdEntity.mapped_entity_type, createdEntity.entity_type],
103
- );
104
-
105
- if (relationData) {
106
- await this.dataSource.query(
107
- `INSERT INTO frm_entity_relation_data (organization_id, source_entity_id, source_entity_type, target_entity_id, target_entity_type, relation_type) VALUES (?, ?, ?, ?, ?,?)`,
108
- [
109
- loggedInUser.organization_id,
110
- createdEntity.mapped_entity_id,
111
- createdEntity.mapped_entity_type,
112
- createdEntity.id,
113
- createdEntity.entity_type,
114
- relationData[0]?.relation_type,
115
- ],
116
- );
117
- }
118
- }
119
- }
120
- }
121
- }
122
-
123
- async updateActionStatus(
124
- loggedInUser: UserData,
125
- mapped_entity_type: string,
126
- mapped_entity_id: number,
127
- stage_id: number,
128
- action_id: number,
129
- ): Promise<any> {
130
- const actionData = await this.actionDataRepo.findOne({
131
- where: {
132
- mapped_entity_type,
133
- mapped_entity_id,
134
- stage_id,
135
- action_id,
136
- },
137
- });
138
-
139
- if (!actionData) return;
140
-
141
- actionData.end_time = new Date();
142
- actionData.modified_by = loggedInUser.id;
143
- actionData.modified_date = new Date();
144
- actionData.is_done = true;
145
- actionData.is_current = 'N'; // Mark as not current
146
-
147
- // Save the updated action
148
- await this.actionDataRepo.update(actionData.id, actionData);
149
-
150
- // NOW, ACTIVATE THE NEXT ACTION (moveNextActionData logic here)
151
- // Find next sequence action for the same entity/stage
152
- const allActionData = await this.actionDataRepo.find({
153
- where: { mapped_entity_type, mapped_entity_id, stage_id },
154
- order: { sequence: 'ASC' },
155
- });
156
-
157
- // Find the action with the next higher sequence number
158
- const nextAction = allActionData.find(
159
- (a) => a.sequence > actionData.sequence,
160
- );
161
- if (nextAction && nextAction.is_current !== 'Y') {
162
- nextAction.is_current = 'Y';
163
- nextAction.start_time = new Date();
164
- nextAction.modified_by = loggedInUser.id;
165
- nextAction.modified_date = new Date();
166
- await this.actionDataRepo.update(nextAction.id, nextAction);
167
- }
168
-
169
- // Optionally return both for audit
170
- return { finished: actionData, activated: nextAction ?? null };
171
- }
172
-
173
- async resubmitAction(
174
- organization_id: number,
175
- mapped_entity_type: string,
176
- mapped_entity_id: number,
177
- stage_id: number,
178
- action_id: number,
179
- ) {
180
- // Get the current active action
181
- const currentAction = await this.actionDataRepo.findOne({
182
- where: {
183
- organization_id,
184
- stage_id,
185
- mapped_entity_id,
186
- mapped_entity_type,
187
- action_id,
188
- is_current: 'Y',
189
- },
190
- });
191
-
192
- if (!currentAction) {
193
- // skip
194
- return;
195
- }
196
-
197
- // Find the immediate previous action in the sequence
198
- const previousAction = await this.actionDataRepo.findOne({
199
- where: {
200
- organization_id,
201
- stage_id,
202
- mapped_entity_id,
203
- mapped_entity_type,
204
- sequence: LessThan(currentAction.sequence),
205
- },
206
- order: { sequence: 'DESC' }, // immediate previous
207
- });
208
-
209
- if (!previousAction) {
210
- // no previous action means we cannot resubmit
211
- return;
212
- }
213
-
214
- // Unset current action
215
- currentAction.is_current = null as any;
216
- currentAction.modified_date = new Date();
217
- currentAction.modified_by = organization_id;
218
- currentAction.start_time = null as any;
219
- currentAction.resubmit_count = (currentAction.resubmit_count ?? 0) + 1;
220
-
221
- await this.actionDataRepo.update(currentAction.id, currentAction);
222
-
223
- // Mark previous action as current again
224
- previousAction.is_current = 'Y';
225
- previousAction.modified_date = new Date();
226
- previousAction.modified_by = organization_id;
227
- previousAction.end_time = null as any; // Reset end time
228
- previousAction.is_done = false;
229
- await this.actionDataRepo.update(previousAction.id, previousAction);
230
-
231
- // reverse the status of tasks for the previous action
232
- const tasksForPrevAction = await this.TaskRepository.find({
233
- where: {
234
- action_id: String(previousAction.action_id),
235
- mapped_entity_type,
236
- mapped_entity_id,
237
- stage_id: String(previousAction.stage_id),
238
- is_done: true,
239
- },
240
- });
241
-
242
- if (tasksForPrevAction.length > 0) {
243
- for (const task of tasksForPrevAction) {
244
- task.modified_date = new Date();
245
- task.is_done = false;
246
-
247
- // Reset status (optional: set to something like 'pending' if needed)
248
- const pendingListMasterItemId = await this.dataSource.query(
249
- `SELECT id FROM frm_list_master_items WHERE code = 'in_progress' AND organization_id = ? AND listtype = 'TKST' LIMIT 1;`,
250
- [organization_id],
251
- );
252
- task.status = pendingListMasterItemId[0]?.id ?? task.status;
253
-
254
- await this.TaskRepository.update(task.id, task);
255
- }
256
- }
257
-
258
- return {
259
- message: 'Action resubmitted successfully',
260
- revertedTo: previousAction,
261
- updated: currentAction,
262
- };
263
- }
264
-
265
- // method to dynamically generate form URL
266
- async generateFormURL(
267
- mapped_entity_type: string,
268
- mapped_entity_id: number,
269
- view_id: number,
270
- loggedInUser: any,
271
- ) {
272
- let organizationData;
273
-
274
- try {
275
- const baseUrl = this.configService.get<string>('REDIRECT_BE_URL');
276
-
277
- // Prepare query params
278
- const queryParams = new URLSearchParams({
279
- loggedInUser: JSON.stringify(loggedInUser),
280
- }).toString();
281
-
282
- const { level_id } = loggedInUser;
283
-
284
- const url = `${baseUrl}/organization/public/${level_id}?entity_type=ORGP&${queryParams}`;
285
-
286
- const response = await axios.get(url);
287
-
288
- organizationData = response.data;
289
-
290
- // The API response is likely a JSON object, not an array
291
- } catch (error) {
292
- console.error('Internal Entity API call failed:', error.message);
293
- }
294
-
295
- const org_slug = organizationData[0]?.slug;
296
-
297
- // fetch required var from config or env
298
- const profile = this.configService.get('PROFILE');
299
- const baseUrl = this.configService.get('BASE_URL');
300
- const domainUrl = this.configService.get('DOMAIN_URL');
301
-
302
- if (!profile || !baseUrl || !domainUrl) {
303
- throw new BadRequestException(
304
- `Configuration variable missing for form URL generation`,
305
- );
306
- }
307
-
308
- let finalBaseUrl: string;
309
-
310
- if (profile === 'DEV' || profile === 'STAGING') {
311
- finalBaseUrl = baseUrl;
312
- } else if (profile === 'UAT' || profile === 'PREPROD') {
313
- // fetch org_slug from DB if needed
314
- finalBaseUrl = `https://${org_slug}.${domainUrl}`;
315
- } else {
316
- finalBaseUrl = baseUrl;
317
- }
318
-
319
- const formURL = `${finalBaseUrl}/form/${mapped_entity_type}/${mapped_entity_id}/${view_id}`;
320
-
321
- return formURL;
322
- }
323
- }
1
+ import { BadRequestException, Injectable } from '@nestjs/common';
2
+ import { InjectRepository } from '@nestjs/typeorm';
3
+ import { ActionDataEntity } from '../entity/action-data.entity';
4
+ import { DataSource, LessThan, Repository } from 'typeorm';
5
+ import { UserData } from 'src/module/user/entity/user.entity';
6
+ import { TaskDataEntity } from '../entity/task-data.entity';
7
+ import { EntityServiceImpl } from 'src/module/meta/service/entity-service-impl.service';
8
+ import { FORM_STATUS_TO_BE_SENT } from 'src/constant/global.constant';
9
+ import { ConfigService } from '@nestjs/config';
10
+ import axios from 'axios';
11
+
12
+ @Injectable()
13
+ export class ActionDataRepository extends EntityServiceImpl {
14
+ constructor(
15
+ @InjectRepository(ActionDataEntity)
16
+ private readonly actionDataRepo: Repository<ActionDataEntity>,
17
+ private readonly dataSource: DataSource,
18
+ // @InjectRepository(FormDataEntity)
19
+ // private readonly formRepo: Repository<FormDataEntity>,
20
+ @InjectRepository(TaskDataEntity)
21
+ private readonly TaskRepository: Repository<TaskDataEntity>,
22
+ private readonly configService: ConfigService,
23
+ ) {
24
+ super();
25
+ }
26
+
27
+ async saveActionData(
28
+ action: any,
29
+ loggedInUser: UserData,
30
+ mapped_entity_id,
31
+ mapped_entity_type,
32
+ ): Promise<any> {
33
+ if (!action?.length) return;
34
+
35
+ // Find the action with the lowest sequence
36
+ const minSequence = Math.min(...action.map((a) => a.sequence));
37
+
38
+ if (action.length > 0) {
39
+ for (const act of action) {
40
+ const is_mandatory = await this.dataSource.query(
41
+ `SELECT code FROM frm_list_master_items WHERE id = ? and organization_id = ? LIMIT 1;`,
42
+ [act.action_requirement, loggedInUser.organization_id],
43
+ );
44
+ const isFirst = act.sequence == minSequence;
45
+ const actionData = this.actionDataRepo.create({
46
+ stage_id: act.stage_id,
47
+ user_id: loggedInUser.id,
48
+ action_id: act.id,
49
+ sequence: act.sequence,
50
+ name: act.name,
51
+ organization_id: loggedInUser.organization_id,
52
+ mapped_entity_id,
53
+ mapped_entity_type,
54
+ is_current: isFirst ? 'Y' : null,
55
+ start_time: isFirst ? new Date() : null,
56
+ is_mandatory: is_mandatory[0]?.code === 'mandatory' ? true : false,
57
+ category: act?.action_category_code,
58
+ } as ActionDataEntity);
59
+ await this.actionDataRepo.save(actionData);
60
+
61
+ // SEND ANY FORM
62
+ // if the action_category_code is 'SDFM', create a entry in crm_lead_form table
63
+ if (act?.action_category_code === 'SDFM') {
64
+ const dynamicFormURL = await this.generateFormURL(
65
+ mapped_entity_type,
66
+ mapped_entity_id,
67
+ act.form_id,
68
+ loggedInUser,
69
+ );
70
+
71
+ const viewMaster = await super.getEntityData(
72
+ 'VMS',
73
+ Number(act.form_id),
74
+ loggedInUser,
75
+ );
76
+
77
+ const now = new Date();
78
+ const istOffset = 5.5 * 60; // IST is UTC +5:30 in minutes
79
+ const istDate = new Date(now.getTime() + istOffset * 60 * 1000);
80
+
81
+ const data = {
82
+ entity_type: 'LFRM',
83
+ name: viewMaster?.name,
84
+ stage_id: act.stage_id,
85
+ mapped_entity_type,
86
+ mapped_entity_id,
87
+ view_id: act.form_id,
88
+ form_url: dynamicFormURL,
89
+ status: FORM_STATUS_TO_BE_SENT,
90
+ action_id: act.id,
91
+ created_date: istDate,
92
+ };
93
+
94
+ const createdEntity = await super.createEntity(
95
+ data as any,
96
+ loggedInUser,
97
+ );
98
+ // THEN INSERT SDFM IN RELATION TASK TABLE
99
+
100
+ let relationData = await this.dataSource.query(
101
+ `SELECT * FROM frm_entity_relation WHERE source_entity_type = ? AND target_entity_type = ?`,
102
+ [createdEntity.mapped_entity_type, createdEntity.entity_type],
103
+ );
104
+
105
+ if (relationData) {
106
+ await this.dataSource.query(
107
+ `INSERT INTO frm_entity_relation_data (organization_id, source_entity_id, source_entity_type, target_entity_id, target_entity_type, relation_type) VALUES (?, ?, ?, ?, ?,?)`,
108
+ [
109
+ loggedInUser.organization_id,
110
+ createdEntity.mapped_entity_id,
111
+ createdEntity.mapped_entity_type,
112
+ createdEntity.id,
113
+ createdEntity.entity_type,
114
+ relationData[0]?.relation_type,
115
+ ],
116
+ );
117
+ }
118
+ }
119
+ }
120
+ }
121
+ }
122
+
123
+ async updateActionStatus(
124
+ loggedInUser: UserData,
125
+ mapped_entity_type: string,
126
+ mapped_entity_id: number,
127
+ stage_id: number,
128
+ action_id: number,
129
+ ): Promise<any> {
130
+ const actionData = await this.actionDataRepo.findOne({
131
+ where: {
132
+ mapped_entity_type,
133
+ mapped_entity_id,
134
+ stage_id,
135
+ action_id,
136
+ },
137
+ });
138
+
139
+ if (!actionData) return;
140
+
141
+ actionData.end_time = new Date();
142
+ actionData.modified_by = loggedInUser.id;
143
+ actionData.modified_date = new Date();
144
+ actionData.is_done = true;
145
+ actionData.is_current = 'N'; // Mark as not current
146
+
147
+ // Save the updated action
148
+ await this.actionDataRepo.update(actionData.id, actionData);
149
+
150
+ // NOW, ACTIVATE THE NEXT ACTION (moveNextActionData logic here)
151
+ // Find next sequence action for the same entity/stage
152
+ const allActionData = await this.actionDataRepo.find({
153
+ where: { mapped_entity_type, mapped_entity_id, stage_id },
154
+ order: { sequence: 'ASC' },
155
+ });
156
+
157
+ // Find the action with the next higher sequence number
158
+ const nextAction = allActionData.find(
159
+ (a) => a.sequence > actionData.sequence,
160
+ );
161
+ if (nextAction && nextAction.is_current !== 'Y') {
162
+ nextAction.is_current = 'Y';
163
+ nextAction.start_time = new Date();
164
+ nextAction.modified_by = loggedInUser.id;
165
+ nextAction.modified_date = new Date();
166
+ await this.actionDataRepo.update(nextAction.id, nextAction);
167
+ }
168
+
169
+ // Optionally return both for audit
170
+ return { finished: actionData, activated: nextAction ?? null };
171
+ }
172
+
173
+ async resubmitAction(
174
+ organization_id: number,
175
+ mapped_entity_type: string,
176
+ mapped_entity_id: number,
177
+ stage_id: number,
178
+ action_id: number,
179
+ ) {
180
+ // Get the current active action
181
+ const currentAction = await this.actionDataRepo.findOne({
182
+ where: {
183
+ organization_id,
184
+ stage_id,
185
+ mapped_entity_id,
186
+ mapped_entity_type,
187
+ action_id,
188
+ is_current: 'Y',
189
+ },
190
+ });
191
+
192
+ if (!currentAction) {
193
+ // skip
194
+ return;
195
+ }
196
+
197
+ // Find the immediate previous action in the sequence
198
+ const previousAction = await this.actionDataRepo.findOne({
199
+ where: {
200
+ organization_id,
201
+ stage_id,
202
+ mapped_entity_id,
203
+ mapped_entity_type,
204
+ sequence: LessThan(currentAction.sequence),
205
+ },
206
+ order: { sequence: 'DESC' }, // immediate previous
207
+ });
208
+
209
+ if (!previousAction) {
210
+ // no previous action means we cannot resubmit
211
+ return;
212
+ }
213
+
214
+ // Unset current action
215
+ currentAction.is_current = null as any;
216
+ currentAction.modified_date = new Date();
217
+ currentAction.modified_by = organization_id;
218
+ currentAction.start_time = null as any;
219
+ currentAction.resubmit_count = (currentAction.resubmit_count ?? 0) + 1;
220
+
221
+ await this.actionDataRepo.update(currentAction.id, currentAction);
222
+
223
+ // Mark previous action as current again
224
+ previousAction.is_current = 'Y';
225
+ previousAction.modified_date = new Date();
226
+ previousAction.modified_by = organization_id;
227
+ previousAction.end_time = null as any; // Reset end time
228
+ previousAction.is_done = false;
229
+ await this.actionDataRepo.update(previousAction.id, previousAction);
230
+
231
+ // reverse the status of tasks for the previous action
232
+ const tasksForPrevAction = await this.TaskRepository.find({
233
+ where: {
234
+ action_id: String(previousAction.action_id),
235
+ mapped_entity_type,
236
+ mapped_entity_id,
237
+ stage_id: String(previousAction.stage_id),
238
+ is_done: true,
239
+ },
240
+ });
241
+
242
+ if (tasksForPrevAction.length > 0) {
243
+ for (const task of tasksForPrevAction) {
244
+ task.modified_date = new Date();
245
+ task.is_done = false;
246
+
247
+ // Reset status (optional: set to something like 'pending' if needed)
248
+ const pendingListMasterItemId = await this.dataSource.query(
249
+ `SELECT id FROM frm_list_master_items WHERE code = 'in_progress' AND organization_id = ? AND listtype = 'TKST' LIMIT 1;`,
250
+ [organization_id],
251
+ );
252
+ task.status = pendingListMasterItemId[0]?.id ?? task.status;
253
+
254
+ await this.TaskRepository.update(task.id, task);
255
+ }
256
+ }
257
+
258
+ return {
259
+ message: 'Action resubmitted successfully',
260
+ revertedTo: previousAction,
261
+ updated: currentAction,
262
+ };
263
+ }
264
+
265
+ // method to dynamically generate form URL
266
+ async generateFormURL(
267
+ mapped_entity_type: string,
268
+ mapped_entity_id: number,
269
+ view_id: number,
270
+ loggedInUser: any,
271
+ ) {
272
+ let organizationData;
273
+
274
+ try {
275
+ const baseUrl = this.configService.get<string>('REDIRECT_BE_URL');
276
+
277
+ // Prepare query params
278
+ const queryParams = new URLSearchParams({
279
+ loggedInUser: JSON.stringify(loggedInUser),
280
+ }).toString();
281
+
282
+ const { level_id } = loggedInUser;
283
+
284
+ const url = `${baseUrl}/organization/public/${level_id}?entity_type=ORGP&${queryParams}`;
285
+
286
+ const response = await axios.get(url);
287
+
288
+ organizationData = response.data;
289
+
290
+ // The API response is likely a JSON object, not an array
291
+ } catch (error) {
292
+ console.error('Internal Entity API call failed:', error.message);
293
+ }
294
+
295
+ const org_slug = organizationData[0]?.slug;
296
+
297
+ // fetch required var from config or env
298
+ const profile = this.configService.get('PROFILE');
299
+ const baseUrl = this.configService.get('BASE_URL');
300
+ const domainUrl = this.configService.get('DOMAIN_URL');
301
+
302
+ if (!profile || !baseUrl || !domainUrl) {
303
+ throw new BadRequestException(
304
+ `Configuration variable missing for form URL generation`,
305
+ );
306
+ }
307
+
308
+ let finalBaseUrl: string;
309
+
310
+ if (profile === 'DEV' || profile === 'STAGING') {
311
+ finalBaseUrl = baseUrl;
312
+ } else if (profile === 'UAT' || profile === 'PREPROD') {
313
+ // fetch org_slug from DB if needed
314
+ finalBaseUrl = `https://${org_slug}.${domainUrl}`;
315
+ } else {
316
+ finalBaseUrl = baseUrl;
317
+ }
318
+
319
+ const formURL = `${finalBaseUrl}/form/${mapped_entity_type}/${mapped_entity_id}/${view_id}`;
320
+
321
+ return formURL;
322
+ }
323
+ }