rez_core 4.0.147 → 4.0.150

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 (482) hide show
  1. package/.prettierrc +3 -3
  2. package/README.md +99 -99
  3. package/dist/config/config.module.js +2 -2
  4. package/dist/config/config.module.js.map +1 -1
  5. package/dist/config/database.config.d.ts +1 -1
  6. package/dist/config/database.config.js +12 -15
  7. package/dist/config/database.config.js.map +1 -1
  8. package/dist/module/auth/guards/role.guard.js +3 -3
  9. package/dist/module/auth/services/auth.service.js +3 -3
  10. package/dist/module/auth/services/auth.service.js.map +1 -1
  11. package/dist/module/enterprise/entity/organization.entity.js +1 -1
  12. package/dist/module/enterprise/repository/school.repository.js +3 -3
  13. package/dist/module/enterprise/repository/school.repository.js.map +1 -1
  14. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  15. package/dist/module/filter/service/filter-evaluator.service.js +3 -3
  16. package/dist/module/filter/service/filter-evaluator.service.js.map +1 -1
  17. package/dist/module/filter/service/filter.service.js +23 -23
  18. package/dist/module/filter/service/filter.service.js.map +1 -1
  19. package/dist/module/integration/entity/integration-config.entity.js +6 -6
  20. package/dist/module/integration/entity/integration-config.entity.js.map +1 -1
  21. package/dist/module/integration/entity/integration-entity-mapper.entity.js +1 -1
  22. package/dist/module/integration/entity/integration-entity-mapper.entity.js.map +1 -1
  23. package/dist/module/integration/entity/integration-source.entity.js +4 -4
  24. package/dist/module/integration/entity/integration-source.entity.js.map +1 -1
  25. package/dist/module/integration/entity/user-integration.entity.js +4 -4
  26. package/dist/module/integration/entity/user-integration.entity.js.map +1 -1
  27. package/dist/module/integration/examples/usage.example.js +9 -9
  28. package/dist/module/integration/service/integration.service.js +1 -1
  29. package/dist/module/integration/service/wrapper.service.d.ts +3 -1
  30. package/dist/module/integration/service/wrapper.service.js +67 -65
  31. package/dist/module/integration/service/wrapper.service.js.map +1 -1
  32. package/dist/module/listmaster/entity/list-master-items.entity.js +3 -3
  33. package/dist/module/listmaster/entity/list-master-items.entity.js.map +1 -1
  34. package/dist/module/listmaster/entity/list-master.entity.js +4 -4
  35. package/dist/module/listmaster/entity/list-master.entity.js.map +1 -1
  36. package/dist/module/listmaster/service/list-master-item.service.js +3 -3
  37. package/dist/module/listmaster/service/list-master-item.service.js.map +1 -1
  38. package/dist/module/mapper/entity/field-mapper.entity.js +6 -6
  39. package/dist/module/mapper/entity/field-mapper.entity.js.map +1 -1
  40. package/dist/module/mapper/service/field-mapper.service.js +7 -7
  41. package/dist/module/mapper/service/field-mapper.service.js.map +1 -1
  42. package/dist/module/mapper/service/mapper.service.js +4 -4
  43. package/dist/module/mapper/service/mapper.service.js.map +1 -1
  44. package/dist/module/meta/entity/entity-master.entity.js +1 -1
  45. package/dist/module/meta/entity/entity-master.entity.js.map +1 -1
  46. package/dist/module/meta/entity/view-master.entity.js +1 -1
  47. package/dist/module/meta/entity/view-master.entity.js.map +1 -1
  48. package/dist/module/meta/repository/attribute-master.repository.js +2 -2
  49. package/dist/module/meta/repository/attribute-master.repository.js.map +1 -1
  50. package/dist/module/meta/repository/entity-master.repository.js +1 -1
  51. package/dist/module/meta/repository/entity-master.repository.js.map +1 -1
  52. package/dist/module/meta/service/attribute-master.service.js +1 -1
  53. package/dist/module/meta/service/attribute-master.service.js.map +1 -1
  54. package/dist/module/meta/service/entity-dynamic.service.js +27 -27
  55. package/dist/module/meta/service/entity-dynamic.service.js.map +1 -1
  56. package/dist/module/meta/service/entity-list.service.js +3 -3
  57. package/dist/module/meta/service/entity-master.service.js +4 -4
  58. package/dist/module/meta/service/entity-master.service.js.map +1 -1
  59. package/dist/module/meta/service/entity-relation.service.js +13 -13
  60. package/dist/module/meta/service/entity-relation.service.js.map +1 -1
  61. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  62. package/dist/module/meta/service/media-data.service.js +9 -9
  63. package/dist/module/meta/service/media-data.service.js.map +1 -1
  64. package/dist/module/meta/service/resolver.service.js +19 -19
  65. package/dist/module/meta/service/resolver.service.js.map +1 -1
  66. package/dist/module/module/repository/menu.repository.js +12 -12
  67. package/dist/module/notification/entity/otp.entity.js +1 -1
  68. package/dist/module/notification/entity/otp.entity.js.map +1 -1
  69. package/dist/module/notification/service/notification.service.js +9 -9
  70. package/dist/module/user/controller/login.controller.js +18 -18
  71. package/dist/module/user/entity/user-role-mapping.entity.js +1 -1
  72. package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
  73. package/dist/module/user/service/login.service.js +1 -1
  74. package/dist/module/user/service/login.service.js.map +1 -1
  75. package/dist/module/user/service/role.service.js +4 -4
  76. package/dist/module/user/service/user-session.service.js +4 -4
  77. package/dist/module/user/service/user-session.service.js.map +1 -1
  78. package/dist/module/workflow/entity/action-data.entity.js +1 -1
  79. package/dist/module/workflow/entity/action-data.entity.js.map +1 -1
  80. package/dist/module/workflow/entity/action.entity.js +1 -1
  81. package/dist/module/workflow/entity/action.entity.js.map +1 -1
  82. package/dist/module/workflow/entity/comm-template.entity.js +1 -1
  83. package/dist/module/workflow/entity/comm-template.entity.js.map +1 -1
  84. package/dist/module/workflow/entity/template-attach-mapper.entity.js +1 -1
  85. package/dist/module/workflow/entity/template-attach-mapper.entity.js.map +1 -1
  86. package/dist/module/workflow/repository/action-data.repository.js +4 -4
  87. package/dist/module/workflow/repository/action-data.repository.js.map +1 -1
  88. package/dist/module/workflow/repository/action.repository.js +21 -21
  89. package/dist/module/workflow/repository/action.repository.js.map +1 -1
  90. package/dist/module/workflow/repository/comm-template.repository.js +7 -7
  91. package/dist/module/workflow/repository/comm-template.repository.js.map +1 -1
  92. package/dist/module/workflow/repository/form-master.repository.js +3 -3
  93. package/dist/module/workflow/repository/form-master.repository.js.map +1 -1
  94. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  95. package/dist/module/workflow/repository/stage-movement.repository.js +17 -17
  96. package/dist/module/workflow/repository/stage-movement.repository.js.map +1 -1
  97. package/dist/module/workflow/repository/stage.repository.js +8 -8
  98. package/dist/module/workflow/repository/task.repository.d.ts +3 -1
  99. package/dist/module/workflow/repository/task.repository.js +8 -3
  100. package/dist/module/workflow/repository/task.repository.js.map +1 -1
  101. package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
  102. package/dist/module/workflow/service/action.service.js +13 -13
  103. package/dist/module/workflow/service/action.service.js.map +1 -1
  104. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  105. package/dist/module/workflow/service/populate-workflow.service.js +8 -8
  106. package/dist/module/workflow/service/populate-workflow.service.js.map +1 -1
  107. package/dist/module/workflow/service/stage-group.service.js +6 -6
  108. package/dist/module/workflow/service/stage-group.service.js.map +1 -1
  109. package/dist/module/workflow/service/stage.service.js +4 -4
  110. package/dist/module/workflow/service/stage.service.js.map +1 -1
  111. package/dist/module/workflow/service/task.service.js +39 -44
  112. package/dist/module/workflow/service/task.service.js.map +1 -1
  113. package/dist/module/workflow/service/workflow-list-master.service.js +16 -16
  114. package/dist/module/workflow/service/workflow-list-master.service.js.map +1 -1
  115. package/dist/module/workflow/service/workflow-meta.service.js +53 -51
  116. package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
  117. package/dist/module/workflow/service/workflow.service.js +5 -5
  118. package/dist/module/workflow/service/workflow.service.js.map +1 -1
  119. package/dist/module/workflow-automation/controller/workflow-automation.controller.d.ts +6 -0
  120. package/dist/module/workflow-automation/controller/workflow-automation.controller.js +16 -0
  121. package/dist/module/workflow-automation/controller/workflow-automation.controller.js.map +1 -1
  122. package/dist/module/workflow-automation/entity/workflow-automation.entity.d.ts +1 -0
  123. package/dist/module/workflow-automation/entity/workflow-automation.entity.js +4 -0
  124. package/dist/module/workflow-automation/entity/workflow-automation.entity.js.map +1 -1
  125. package/dist/module/workflow-automation/service/workflow-automation-engine.service.js +1 -1
  126. package/dist/module/workflow-automation/service/workflow-automation-engine.service.js.map +1 -1
  127. package/dist/module/workflow-automation/service/workflow-automation.service.d.ts +5 -0
  128. package/dist/module/workflow-automation/service/workflow-automation.service.js +45 -0
  129. package/dist/module/workflow-automation/service/workflow-automation.service.js.map +1 -1
  130. package/dist/tsconfig.build.tsbuildinfo +1 -1
  131. package/dist/utils/service/loggingUtil.service.d.ts +9 -2
  132. package/dist/utils/service/loggingUtil.service.js +65 -14
  133. package/dist/utils/service/loggingUtil.service.js.map +1 -1
  134. package/dist/utils/service/reflection-helper.service.js +3 -3
  135. package/dist/utils/service/reflection-helper.service.js.map +1 -1
  136. package/dist/utils/utils.module.js +2 -0
  137. package/dist/utils/utils.module.js.map +1 -1
  138. package/docs/modules/event-driven-integration-design.md +91 -91
  139. package/docs/modules/integration.md +250 -250
  140. package/eslint.config.mjs +34 -34
  141. package/nest-cli.json +14 -14
  142. package/package.json +119 -120
  143. package/src/app.controller.ts +12 -12
  144. package/src/app.module.ts +52 -52
  145. package/src/app.service.ts +8 -8
  146. package/src/config/config.module.ts +18 -17
  147. package/src/config/database.config.ts +23 -47
  148. package/src/constant/global.constant.ts +67 -67
  149. package/src/core.module.ts +81 -81
  150. package/src/decorators/roles.decorator.ts +7 -7
  151. package/src/dtos/response.dto.ts +6 -6
  152. package/src/dtos/response.ts +5 -5
  153. package/src/index.ts +1 -1
  154. package/src/module/auth/auth.module.ts +49 -49
  155. package/src/module/auth/controller/auth.controller.ts +28 -28
  156. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  157. package/src/module/auth/guards/jwt.guard.ts +22 -22
  158. package/src/module/auth/guards/role.guard.ts +68 -68
  159. package/src/module/auth/services/auth.service.ts +50 -50
  160. package/src/module/auth/services/jwt.service.ts +11 -11
  161. package/src/module/auth/strategies/google.strategy.ts +54 -54
  162. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  163. package/src/module/auth/strategies/local.strategy.ts +13 -13
  164. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  165. package/src/module/dashboard/dashboard.module.ts +21 -21
  166. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  167. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  168. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  169. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  170. package/src/module/dev/dev.module.ts +12 -12
  171. package/src/module/dev/service/dev.service.ts +7 -7
  172. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  173. package/src/module/enterprise/enterprise.module.ts +30 -30
  174. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  175. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  176. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  177. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  178. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  179. package/src/module/enterprise/repository/school.repository.ts +278 -278
  180. package/src/module/enterprise/service/brand.service.ts +5 -5
  181. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  182. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  183. package/src/module/enterprise/service/organization.service.ts +145 -145
  184. package/src/module/filter/controller/filter.controller.ts +84 -84
  185. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  186. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  187. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  188. package/src/module/filter/filter.module.ts +31 -31
  189. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  190. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  191. package/src/module/filter/service/filter.service.ts +1005 -1005
  192. package/src/module/filter/service/saved-filter.service.ts +170 -170
  193. package/src/module/ics/controller/ics.controller.ts +21 -21
  194. package/src/module/ics/dto/ics.dto.ts +55 -55
  195. package/src/module/ics/ics.module.ts +13 -13
  196. package/src/module/ics/service/ics.service.ts +57 -57
  197. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  198. package/src/module/integration/controller/integration.controller.ts +662 -662
  199. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  200. package/src/module/integration/dto/create-config.dto.ts +526 -526
  201. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  202. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  203. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  204. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  205. package/src/module/integration/examples/usage.example.ts +338 -338
  206. package/src/module/integration/factories/base.factory.ts +7 -7
  207. package/src/module/integration/factories/email.factory.ts +49 -49
  208. package/src/module/integration/factories/integration.factory.ts +121 -121
  209. package/src/module/integration/factories/sms.factory.ts +51 -51
  210. package/src/module/integration/factories/telephone.factory.ts +41 -41
  211. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  212. package/src/module/integration/integration.module.ts +110 -110
  213. package/src/module/integration/service/calendar-event.service.ts +118 -118
  214. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  215. package/src/module/integration/service/integration-queue.service.ts +229 -229
  216. package/src/module/integration/service/integration.service.ts +2633 -2633
  217. package/src/module/integration/service/oauth.service.ts +224 -224
  218. package/src/module/integration/service/wrapper.service.ts +700 -494
  219. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  220. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  221. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  222. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  223. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  224. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  225. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  226. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  227. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  228. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  229. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  230. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  231. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  232. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  233. package/src/module/layout/controller/layout.controller.ts +47 -47
  234. package/src/module/layout/entity/header-items.entity.ts +28 -28
  235. package/src/module/layout/entity/header-section.entity.ts +19 -19
  236. package/src/module/layout/layout.module.ts +21 -21
  237. package/src/module/layout/repository/header-items.repository.ts +18 -18
  238. package/src/module/layout/repository/header-section.repository.ts +22 -22
  239. package/src/module/layout/service/header-section.service.ts +25 -25
  240. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  241. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  242. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  243. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  244. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  245. package/src/module/lead/controller/lead.controller.ts +30 -30
  246. package/src/module/lead/lead.module.ts +14 -14
  247. package/src/module/lead/repository/lead.repository.ts +41 -41
  248. package/src/module/lead/service/lead.service.ts +54 -54
  249. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  250. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  251. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  252. package/src/module/listmaster/listmaster.module.ts +46 -46
  253. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  254. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  255. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  256. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  257. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  258. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  259. package/src/module/listmaster/service/list-master.service.ts +535 -535
  260. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  261. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  262. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  263. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  264. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  265. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  266. package/src/module/mapper/mapper.module.ts +34 -34
  267. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  268. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  269. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  270. package/src/module/mapper/service/field-mapper.service.ts +271 -266
  271. package/src/module/mapper/service/mapper.service.ts +79 -79
  272. package/src/module/master/controller/master.controller.ts +74 -74
  273. package/src/module/master/service/master.service.ts +483 -483
  274. package/src/module/meta/controller/app-master.controller.ts +38 -38
  275. package/src/module/meta/controller/attribute-master.controller.ts +66 -66
  276. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  277. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  278. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  279. package/src/module/meta/controller/entity.controller.ts +392 -392
  280. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  281. package/src/module/meta/controller/media.controller.ts +107 -107
  282. package/src/module/meta/controller/meta.controller.ts +96 -96
  283. package/src/module/meta/controller/view-master.controller.ts +86 -86
  284. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  285. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  286. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  287. package/src/module/meta/entity/app-master.entity.ts +34 -34
  288. package/src/module/meta/entity/attribute-master.entity.ts +89 -89
  289. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  290. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  291. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  292. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  293. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  294. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  295. package/src/module/meta/entity/media-data.entity.ts +32 -32
  296. package/src/module/meta/entity/preference.entity.ts +62 -62
  297. package/src/module/meta/entity/view-master.entity.ts +41 -41
  298. package/src/module/meta/entity.module.ts +158 -158
  299. package/src/module/meta/repository/app-master.repository.ts +20 -20
  300. package/src/module/meta/repository/attribute-master.repository.ts +118 -118
  301. package/src/module/meta/repository/entity-master.repository.ts +69 -69
  302. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  303. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  304. package/src/module/meta/repository/media-data.repository.ts +50 -50
  305. package/src/module/meta/repository/preference.repository.ts +20 -20
  306. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  307. package/src/module/meta/repository/view-master.repository.ts +42 -42
  308. package/src/module/meta/service/app-master.service.ts +37 -37
  309. package/src/module/meta/service/attribute-master.service.ts +126 -126
  310. package/src/module/meta/service/common.service.ts +9 -9
  311. package/src/module/meta/service/entity-dynamic.service.ts +819 -819
  312. package/src/module/meta/service/entity-list.service.ts +205 -205
  313. package/src/module/meta/service/entity-master.service.ts +169 -169
  314. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  315. package/src/module/meta/service/entity-relation.service.ts +69 -69
  316. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  317. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  318. package/src/module/meta/service/entity-table.service.ts +150 -150
  319. package/src/module/meta/service/entity-validation.service.ts +187 -187
  320. package/src/module/meta/service/entity.service.ts +67 -67
  321. package/src/module/meta/service/field-group.service.ts +103 -103
  322. package/src/module/meta/service/media-data.service.ts +507 -507
  323. package/src/module/meta/service/populate-meta.service.ts +193 -193
  324. package/src/module/meta/service/preference.service.ts +16 -16
  325. package/src/module/meta/service/resolver.service.ts +267 -267
  326. package/src/module/meta/service/section-master.service.ts +104 -104
  327. package/src/module/meta/service/update-form-json.service.ts +22 -22
  328. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  329. package/src/module/meta/service/view-master.service.ts +127 -127
  330. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  331. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  332. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  333. package/src/module/module/controller/menu.controller.ts +15 -15
  334. package/src/module/module/controller/module-access.controller.ts +134 -134
  335. package/src/module/module/entity/menu.entity.ts +43 -43
  336. package/src/module/module/entity/module-access.entity.ts +25 -25
  337. package/src/module/module/entity/module-action.entity.ts +17 -17
  338. package/src/module/module/entity/module.entity.ts +52 -52
  339. package/src/module/module/module.module.ts +42 -42
  340. package/src/module/module/repository/menu.repository.ts +184 -184
  341. package/src/module/module/repository/module-access.repository.ts +344 -344
  342. package/src/module/module/service/menu.service.ts +82 -82
  343. package/src/module/module/service/module-access.service.ts +209 -209
  344. package/src/module/notification/controller/notification.controller.ts +58 -58
  345. package/src/module/notification/controller/otp.controller.ts +117 -117
  346. package/src/module/notification/entity/notification.entity.ts +26 -26
  347. package/src/module/notification/entity/otp.entity.ts +28 -28
  348. package/src/module/notification/firebase-admin.config.ts +22 -22
  349. package/src/module/notification/notification.module.ts +69 -69
  350. package/src/module/notification/repository/otp.repository.ts +27 -27
  351. package/src/module/notification/service/email.service.ts +127 -127
  352. package/src/module/notification/service/notification.service.ts +163 -163
  353. package/src/module/notification/service/otp.service.ts +132 -132
  354. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  355. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  356. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  357. package/src/module/third-party-module/third-party.module.ts +12 -12
  358. package/src/module/user/controller/login.controller.ts +197 -197
  359. package/src/module/user/controller/user.controller.ts +40 -40
  360. package/src/module/user/dto/create-user.dto.ts +62 -62
  361. package/src/module/user/dto/update-user.dto.ts +4 -4
  362. package/src/module/user/entity/role.entity.ts +33 -33
  363. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  364. package/src/module/user/entity/user-session.entity.ts +73 -73
  365. package/src/module/user/entity/user.entity.ts +59 -59
  366. package/src/module/user/repository/role.repository.ts +96 -96
  367. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  368. package/src/module/user/repository/user.repository.ts +50 -50
  369. package/src/module/user/repository/userSession.repository.ts +33 -33
  370. package/src/module/user/service/login.service.ts +304 -304
  371. package/src/module/user/service/role.service.ts +189 -189
  372. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  373. package/src/module/user/service/user-session.service.ts +168 -168
  374. package/src/module/user/service/user.service.ts +365 -365
  375. package/src/module/user/user.module.ts +65 -65
  376. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  377. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  378. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  379. package/src/module/workflow/controller/action.controller.ts +111 -111
  380. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  381. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  382. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  383. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  384. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  385. package/src/module/workflow/controller/stage.controller.ts +50 -50
  386. package/src/module/workflow/controller/task.controller.ts +77 -77
  387. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  388. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  389. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  390. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  391. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  392. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  393. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  394. package/src/module/workflow/entity/action.entity.ts +50 -50
  395. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  396. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  397. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  398. package/src/module/workflow/entity/form.entity.ts +25 -25
  399. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  400. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  401. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  402. package/src/module/workflow/entity/stage.entity.ts +20 -20
  403. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  404. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  405. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  406. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  407. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  408. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  409. package/src/module/workflow/repository/action-data.repository.ts +333 -333
  410. package/src/module/workflow/repository/action.repository.ts +323 -323
  411. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  412. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  413. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  414. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  415. package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
  416. package/src/module/workflow/repository/stage.repository.ts +172 -172
  417. package/src/module/workflow/repository/task.repository.ts +134 -127
  418. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  419. package/src/module/workflow/service/action-category.service.ts +33 -33
  420. package/src/module/workflow/service/action-data.service.ts +62 -62
  421. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  422. package/src/module/workflow/service/action-template-mapping.service.ts +106 -106
  423. package/src/module/workflow/service/action.service.ts +279 -279
  424. package/src/module/workflow/service/activity-log.service.ts +107 -107
  425. package/src/module/workflow/service/comm-template.service.ts +180 -180
  426. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  427. package/src/module/workflow/service/form-master.service.ts +35 -35
  428. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  429. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  430. package/src/module/workflow/service/stage-group.service.ts +319 -319
  431. package/src/module/workflow/service/stage.service.ts +199 -199
  432. package/src/module/workflow/service/task.service.ts +547 -560
  433. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  434. package/src/module/workflow/service/workflow-meta.service.ts +654 -640
  435. package/src/module/workflow/service/workflow.service.ts +205 -205
  436. package/src/module/workflow/workflow.module.ts +176 -176
  437. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +43 -21
  438. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  439. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +38 -35
  440. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  441. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  442. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  443. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  444. package/src/module/workflow-automation/service/workflow-automation.service.ts +421 -347
  445. package/src/module/workflow-automation/workflow-automation.module.ts +34 -34
  446. package/src/resources/dev.properties.yaml +30 -31
  447. package/src/resources/local.properties.yaml +27 -27
  448. package/src/resources/properties.module.ts +12 -12
  449. package/src/resources/properties.yaml.ts +11 -11
  450. package/src/resources/uat.properties.yaml +31 -31
  451. package/src/table.config.ts +126 -126
  452. package/src/utils/dto/excel-data.dto.ts +14 -14
  453. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  454. package/src/utils/service/base64util.service.ts +18 -18
  455. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  456. package/src/utils/service/codeGenerator.service.ts +22 -22
  457. package/src/utils/service/dateUtil.service.ts +17 -17
  458. package/src/utils/service/encryptUtil.service.ts +97 -97
  459. package/src/utils/service/excel-helper.service.ts +72 -72
  460. package/src/utils/service/excelUtil.service.ts +15 -15
  461. package/src/utils/service/file-util.service.ts +11 -11
  462. package/src/utils/service/json-util.service.ts +23 -23
  463. package/src/utils/service/loggingUtil.service.ts +88 -34
  464. package/src/utils/service/reflection-helper.service.ts +62 -62
  465. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  466. package/src/utils/utils.module.ts +27 -25
  467. package/tsconfig.build.json +4 -4
  468. package/tsconfig.json +24 -24
  469. package/.claude/settings.local.json +0 -26
  470. package/.idea/250218_nodejs_core.iml +0 -9
  471. package/.idea/codeStyles/Project.xml +0 -59
  472. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  473. package/.idea/copilot.data.migration.agent.xml +0 -6
  474. package/.idea/copilot.data.migration.ask.xml +0 -6
  475. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  476. package/.idea/copilot.data.migration.edit.xml +0 -6
  477. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  478. package/.idea/misc.xml +0 -6
  479. package/.idea/modules.xml +0 -8
  480. package/.idea/prettier.xml +0 -6
  481. package/.idea/vcs.xml +0 -6
  482. package/server.log +0 -850
@@ -1,392 +1,392 @@
1
- import {
2
- BadRequestException,
3
- Body,
4
- Controller,
5
- Get,
6
- HttpCode,
7
- HttpStatus,
8
- Param,
9
- Post,
10
- Query,
11
- Res,
12
- Req,
13
- UseGuards,
14
- Inject,
15
- Request,
16
- InternalServerErrorException,
17
- NotFoundException,
18
- } from '@nestjs/common';
19
- import { EntityServiceImpl } from '../service/entity-service-impl.service';
20
- import { ReflectionHelper } from '../../../utils/service/reflection-helper.service';
21
- import { Response } from 'express';
22
- import { EntityMasterService } from '../service/entity-master.service';
23
- import { BaseEntity } from '../entity/base-entity.entity';
24
- import { JwtAuthGuard } from '../../auth/guards/jwt.guard';
25
- import * as fs from 'fs';
26
- import * as path from 'path';
27
- import { UserService } from '../../user/service/user.service';
28
- import { ENTITYTYPE_USER } from '../../../constant/global.constant';
29
- import { UserData } from '../../user/entity/user.entity';
30
- import { WorkflowAutomationEngineService } from 'src/module/workflow-automation/service/workflow-automation-engine.service';
31
-
32
- @UseGuards(JwtAuthGuard)
33
- @Controller('entity')
34
- export class EntityController {
35
- constructor(
36
- private entityService: EntityServiceImpl,
37
- private reflectionHelper: ReflectionHelper,
38
- private entityMasterService: EntityMasterService,
39
- private readonly workflowAutomationEngineService: WorkflowAutomationEngineService,
40
- ) {}
41
-
42
- @Get('getById/:id')
43
- // @Roles('USR', 'VIEW')
44
- async getById(
45
- @Param('id') id: number,
46
- @Req() req: Request & { user: any },
47
- @Query('entity_type') entityType?: string,
48
- ) {
49
- const loggedInUser = req.user.userData;
50
-
51
- if (!entityType) {
52
- throw new BadRequestException(
53
- 'Query parameter "entity_type" is required',
54
- );
55
- }
56
- const entityMaster = await this.entityMasterService.getEntityData(
57
- entityType,
58
- loggedInUser,
59
- );
60
-
61
- const entityService =
62
- await this.reflectionHelper.getBean<EntityServiceImpl>(
63
- entityMaster.entity_service,
64
- );
65
-
66
- if (entityService) {
67
- return await entityService.getEntityData(entityType, id, loggedInUser);
68
- }
69
- }
70
-
71
- @Get('getByCode/:code')
72
- async getDataByCode(
73
- @Param('code') code: string,
74
- @Req() req: Request & { user: any },
75
- @Query('entity_type') entityType?: string,
76
- ) {
77
- const loggedInUser = req.user.userData;
78
-
79
- if (!entityType) {
80
- throw new BadRequestException(
81
- 'Query parameter "entity_type" is required',
82
- );
83
- }
84
-
85
- const entityMaster = await this.entityMasterService.getEntityData(
86
- entityType,
87
- loggedInUser,
88
- );
89
-
90
- const entityService =
91
- await this.reflectionHelper.getBean<EntityServiceImpl>(
92
- entityMaster.entity_service,
93
- );
94
-
95
- if (entityService) {
96
- return await entityService.getEntityDataByCode(
97
- entityType,
98
- code,
99
- loggedInUser,
100
- );
101
- }
102
- }
103
-
104
- @Get('getResolvedById/:id')
105
- // @Roles('USR', 'VIEW')
106
- async getResolveDataById(
107
- @Param('id') id: number,
108
- @Req() req: Request & { user: any },
109
- @Query('entity_type') entityType?: string,
110
- ) {
111
- const loggedInUser = req.user.userData;
112
-
113
- if (!entityType) {
114
- throw new BadRequestException(
115
- 'Query parameter "entity_type" is required',
116
- );
117
- }
118
- const entityMaster = await this.entityMasterService.getEntityData(
119
- entityType,
120
- loggedInUser,
121
- );
122
-
123
- const entityService =
124
- await this.reflectionHelper.getBean<EntityServiceImpl>(
125
- entityMaster.entity_service,
126
- );
127
-
128
- if (entityService) {
129
- return await entityService.getResolvedEntityData(
130
- entityType,
131
- id,
132
- loggedInUser,
133
- );
134
- }
135
- }
136
-
137
- @Post('create')
138
- @HttpCode(200)
139
- async create(
140
- @Body() entityData: BaseEntity,
141
- @Query('entity_type') entityType: string,
142
- @Req() req: Request & { user: any },
143
- ) {
144
- const loggedInUser = req.user.userData;
145
- const appcode = loggedInUser.appcode;
146
-
147
- if (!entityType) {
148
- throw new BadRequestException(
149
- `Query parameter "entity_type" is required`,
150
- );
151
- }
152
-
153
- const entityMaster = await this.entityMasterService.getEntityData(
154
- entityType,
155
- loggedInUser,
156
- );
157
-
158
- const entityService =
159
- await this.reflectionHelper.getBean<EntityServiceImpl>(
160
- entityMaster.entity_service,
161
- );
162
-
163
- if (!entityService) {
164
- throw new InternalServerErrorException(
165
- `No service found for entity_type "${entityType}"`,
166
- );
167
- }
168
-
169
- // ✅ Create
170
- const savedData = await entityService.createEntity(
171
- entityData,
172
- loggedInUser as UserData,
173
- null,
174
- appcode,
175
- );
176
-
177
- // ✅ Run workflow automation (no preUpdateStates for CREATE)
178
- await this.workflowAutomationEngineService.handleEntityEvent(
179
- entityType,
180
- 'CREATE',
181
- savedData,
182
- loggedInUser,
183
- null,
184
- );
185
-
186
- return savedData;
187
- }
188
-
189
- @Post('update/:id')
190
- @HttpCode(200)
191
- async update(
192
- @Param('id') id: number,
193
- @Body() entityData: BaseEntity,
194
- @Query('entity_type') entityType: string,
195
- @Req() req: Request & { user: any },
196
- ) {
197
- const loggedInUser = req.user.userData;
198
-
199
- if (!entityType) {
200
- throw new BadRequestException(
201
- 'Query parameter "entity_type" is required',
202
- );
203
- }
204
-
205
- const entityMaster = await this.entityMasterService.getEntityData(
206
- entityType,
207
- loggedInUser,
208
- );
209
-
210
- const entityService =
211
- await this.reflectionHelper.getBean<EntityServiceImpl>(
212
- entityMaster.entity_service,
213
- );
214
-
215
- if (!entityService) {
216
- throw new InternalServerErrorException(
217
- `No service found for entity_type "${entityType}"`,
218
- );
219
- }
220
-
221
- // 1️⃣ Get old state
222
- const existingEntity = await entityService.getEntityData(
223
- entityType,
224
- id,
225
- loggedInUser,
226
- );
227
- if (!existingEntity) {
228
- throw new NotFoundException(`No entity found for id "${id}"`);
229
- }
230
-
231
- // 2️⃣ Pre-evaluate criteria
232
- const workflows = await this.workflowAutomationEngineService[
233
- 'wfService'
234
- ].getActiveRules(entityType, 'UPDATE', loggedInUser);
235
- const preUpdateStates: Record<number, boolean> = {};
236
- for (const wf of workflows) {
237
- preUpdateStates[wf.id] = await this.workflowAutomationEngineService[
238
- 'filterEvaluator'
239
- ].evaluateCriteria(
240
- entityType,
241
- wf.condition_filter_code,
242
- existingEntity.id,
243
- loggedInUser,
244
- );
245
- }
246
-
247
- // 3️⃣ Update
248
- const updatedData = await entityService.updateEntity(
249
- entityData,
250
- loggedInUser as UserData,
251
- );
252
-
253
- // 4️⃣ Run workflow automation (pass preUpdateStates)
254
- await this.workflowAutomationEngineService.handleEntityEvent(
255
- entityType,
256
- 'UPDATE',
257
- updatedData,
258
- loggedInUser,
259
- preUpdateStates,
260
- );
261
-
262
- return updatedData;
263
- }
264
-
265
- @Post('delete/:id')
266
- @HttpCode(200)
267
- async delete(
268
- @Param('id') id: number,
269
- @Query('entity_type') entityType: string,
270
- @Req() req: Request & { user: any },
271
- ) {
272
- const loggedInUser = req.user.userData;
273
-
274
- if (!entityType) {
275
- throw new BadRequestException(
276
- 'Query parameter "entity_type" is required',
277
- );
278
- }
279
-
280
- const entityMaster = await this.entityMasterService.getEntityData(
281
- entityType,
282
- loggedInUser,
283
- );
284
-
285
- const entityService =
286
- await this.reflectionHelper.getBean<EntityServiceImpl>(
287
- entityMaster.entity_service,
288
- );
289
-
290
- if (!entityService) {
291
- throw new InternalServerErrorException(
292
- `No service found for entity_type "${entityType}"`,
293
- );
294
- }
295
-
296
- const existingEntity = await entityService.getEntityData(
297
- entityType,
298
- id,
299
- loggedInUser,
300
- );
301
-
302
- if (!existingEntity) {
303
- throw new NotFoundException(`No entity found for id "${id}"`);
304
- }
305
-
306
- return await entityService.deleteEntity(entityType, id, loggedInUser);
307
- }
308
-
309
- @Post('getFilteredDataWithTabs/:entity_type')
310
- async getFilterDataWithTabs(
311
- @Param('entity_type') entityType: string,
312
- @Query('list_type') listType: string,
313
- @Res() res: Response,
314
- @Request() req,
315
- @Body() filters: Record<string, any> = {},
316
- @Query('sort_column') sortColumn?: string,
317
- @Query('sort_order') sortOrder?: string,
318
- @Query('page') page: number = 0,
319
- @Query('size') size: number = 1,
320
- @Query('tab_column') tabColumn?: string,
321
- @Query('tab_value') tabValue?: string,
322
- ) {
323
- const appcode = req.user.userData.appcode;
324
-
325
- return res
326
- .status(HttpStatus.OK)
327
- .json(
328
- await this.entityService.getFilterDataWithTabs(
329
- entityType,
330
- listType,
331
- filters,
332
- sortColumn,
333
- sortOrder,
334
- page,
335
- size,
336
- tabColumn,
337
- tabValue,
338
- appcode,
339
- ),
340
- );
341
- }
342
-
343
- @HttpCode(HttpStatus.OK)
344
- @Post('download-excel/:entity_type')
345
- @HttpCode(HttpStatus.OK)
346
- async downloadExcel(
347
- @Param('entity_type') entityType: string,
348
- @Query('list_entity_type') listEntityType: string,
349
- @Query('display_type') displayType: string,
350
- @Query('sample_export') sampleExport: boolean,
351
- @Query() filterCriteria: Record<string, any>,
352
- @Res() res: Response, // Express Response for file handling
353
- @Req() req: Request & { user: any },
354
- ) {
355
- try {
356
- const loggedInUser = req.user.userData;
357
-
358
- const filePath = await this.entityService.generateExcelReport(
359
- entityType,
360
- filterCriteria,
361
- listEntityType,
362
- displayType,
363
- sampleExport,
364
- loggedInUser,
365
- );
366
-
367
- if (!filePath || !fs.existsSync(filePath)) {
368
- return res.status(404).json({ message: 'File not found' });
369
- }
370
-
371
- res.setHeader(
372
- 'Content-Disposition',
373
- `attachment; filename=${path.basename(filePath)}`,
374
- );
375
- res.setHeader(
376
- 'Content-Type',
377
- 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
378
- );
379
-
380
- const fileStream = fs.createReadStream(filePath);
381
- fileStream.pipe(res);
382
-
383
- // Optional: Delete file after sending response
384
- fileStream.on('end', () => {
385
- fs.unlinkSync(filePath);
386
- });
387
- } catch (error) {
388
- console.error('Error downloading Excel file:', error);
389
- res.status(500).json({ message: 'Internal server error' });
390
- }
391
- }
392
- }
1
+ import {
2
+ BadRequestException,
3
+ Body,
4
+ Controller,
5
+ Get,
6
+ HttpCode,
7
+ HttpStatus,
8
+ Param,
9
+ Post,
10
+ Query,
11
+ Res,
12
+ Req,
13
+ UseGuards,
14
+ Inject,
15
+ Request,
16
+ InternalServerErrorException,
17
+ NotFoundException,
18
+ } from '@nestjs/common';
19
+ import { EntityServiceImpl } from '../service/entity-service-impl.service';
20
+ import { ReflectionHelper } from '../../../utils/service/reflection-helper.service';
21
+ import { Response } from 'express';
22
+ import { EntityMasterService } from '../service/entity-master.service';
23
+ import { BaseEntity } from '../entity/base-entity.entity';
24
+ import { JwtAuthGuard } from '../../auth/guards/jwt.guard';
25
+ import * as fs from 'fs';
26
+ import * as path from 'path';
27
+ import { UserService } from '../../user/service/user.service';
28
+ import { ENTITYTYPE_USER } from '../../../constant/global.constant';
29
+ import { UserData } from '../../user/entity/user.entity';
30
+ import { WorkflowAutomationEngineService } from 'src/module/workflow-automation/service/workflow-automation-engine.service';
31
+
32
+ @UseGuards(JwtAuthGuard)
33
+ @Controller('entity')
34
+ export class EntityController {
35
+ constructor(
36
+ private entityService: EntityServiceImpl,
37
+ private reflectionHelper: ReflectionHelper,
38
+ private entityMasterService: EntityMasterService,
39
+ private readonly workflowAutomationEngineService: WorkflowAutomationEngineService,
40
+ ) {}
41
+
42
+ @Get('getById/:id')
43
+ // @Roles('USR', 'VIEW')
44
+ async getById(
45
+ @Param('id') id: number,
46
+ @Req() req: Request & { user: any },
47
+ @Query('entity_type') entityType?: string,
48
+ ) {
49
+ const loggedInUser = req.user.userData;
50
+
51
+ if (!entityType) {
52
+ throw new BadRequestException(
53
+ 'Query parameter "entity_type" is required',
54
+ );
55
+ }
56
+ const entityMaster = await this.entityMasterService.getEntityData(
57
+ entityType,
58
+ loggedInUser,
59
+ );
60
+
61
+ const entityService =
62
+ await this.reflectionHelper.getBean<EntityServiceImpl>(
63
+ entityMaster.entity_service,
64
+ );
65
+
66
+ if (entityService) {
67
+ return await entityService.getEntityData(entityType, id, loggedInUser);
68
+ }
69
+ }
70
+
71
+ @Get('getByCode/:code')
72
+ async getDataByCode(
73
+ @Param('code') code: string,
74
+ @Req() req: Request & { user: any },
75
+ @Query('entity_type') entityType?: string,
76
+ ) {
77
+ const loggedInUser = req.user.userData;
78
+
79
+ if (!entityType) {
80
+ throw new BadRequestException(
81
+ 'Query parameter "entity_type" is required',
82
+ );
83
+ }
84
+
85
+ const entityMaster = await this.entityMasterService.getEntityData(
86
+ entityType,
87
+ loggedInUser,
88
+ );
89
+
90
+ const entityService =
91
+ await this.reflectionHelper.getBean<EntityServiceImpl>(
92
+ entityMaster.entity_service,
93
+ );
94
+
95
+ if (entityService) {
96
+ return await entityService.getEntityDataByCode(
97
+ entityType,
98
+ code,
99
+ loggedInUser,
100
+ );
101
+ }
102
+ }
103
+
104
+ @Get('getResolvedById/:id')
105
+ // @Roles('USR', 'VIEW')
106
+ async getResolveDataById(
107
+ @Param('id') id: number,
108
+ @Req() req: Request & { user: any },
109
+ @Query('entity_type') entityType?: string,
110
+ ) {
111
+ const loggedInUser = req.user.userData;
112
+
113
+ if (!entityType) {
114
+ throw new BadRequestException(
115
+ 'Query parameter "entity_type" is required',
116
+ );
117
+ }
118
+ const entityMaster = await this.entityMasterService.getEntityData(
119
+ entityType,
120
+ loggedInUser,
121
+ );
122
+
123
+ const entityService =
124
+ await this.reflectionHelper.getBean<EntityServiceImpl>(
125
+ entityMaster.entity_service,
126
+ );
127
+
128
+ if (entityService) {
129
+ return await entityService.getResolvedEntityData(
130
+ entityType,
131
+ id,
132
+ loggedInUser,
133
+ );
134
+ }
135
+ }
136
+
137
+ @Post('create')
138
+ @HttpCode(200)
139
+ async create(
140
+ @Body() entityData: BaseEntity,
141
+ @Query('entity_type') entityType: string,
142
+ @Req() req: Request & { user: any },
143
+ ) {
144
+ const loggedInUser = req.user.userData;
145
+ const appcode = loggedInUser.appcode;
146
+
147
+ if (!entityType) {
148
+ throw new BadRequestException(
149
+ `Query parameter "entity_type" is required`,
150
+ );
151
+ }
152
+
153
+ const entityMaster = await this.entityMasterService.getEntityData(
154
+ entityType,
155
+ loggedInUser,
156
+ );
157
+
158
+ const entityService =
159
+ await this.reflectionHelper.getBean<EntityServiceImpl>(
160
+ entityMaster.entity_service,
161
+ );
162
+
163
+ if (!entityService) {
164
+ throw new InternalServerErrorException(
165
+ `No service found for entity_type "${entityType}"`,
166
+ );
167
+ }
168
+
169
+ // ✅ Create
170
+ const savedData = await entityService.createEntity(
171
+ entityData,
172
+ loggedInUser as UserData,
173
+ null,
174
+ appcode,
175
+ );
176
+
177
+ // ✅ Run workflow automation (no preUpdateStates for CREATE)
178
+ await this.workflowAutomationEngineService.handleEntityEvent(
179
+ entityType,
180
+ 'CREATE',
181
+ savedData,
182
+ loggedInUser,
183
+ null,
184
+ );
185
+
186
+ return savedData;
187
+ }
188
+
189
+ @Post('update/:id')
190
+ @HttpCode(200)
191
+ async update(
192
+ @Param('id') id: number,
193
+ @Body() entityData: BaseEntity,
194
+ @Query('entity_type') entityType: string,
195
+ @Req() req: Request & { user: any },
196
+ ) {
197
+ const loggedInUser = req.user.userData;
198
+
199
+ if (!entityType) {
200
+ throw new BadRequestException(
201
+ 'Query parameter "entity_type" is required',
202
+ );
203
+ }
204
+
205
+ const entityMaster = await this.entityMasterService.getEntityData(
206
+ entityType,
207
+ loggedInUser,
208
+ );
209
+
210
+ const entityService =
211
+ await this.reflectionHelper.getBean<EntityServiceImpl>(
212
+ entityMaster.entity_service,
213
+ );
214
+
215
+ if (!entityService) {
216
+ throw new InternalServerErrorException(
217
+ `No service found for entity_type "${entityType}"`,
218
+ );
219
+ }
220
+
221
+ // 1️⃣ Get old state
222
+ const existingEntity = await entityService.getEntityData(
223
+ entityType,
224
+ id,
225
+ loggedInUser,
226
+ );
227
+ if (!existingEntity) {
228
+ throw new NotFoundException(`No entity found for id "${id}"`);
229
+ }
230
+
231
+ // 2️⃣ Pre-evaluate criteria
232
+ const workflows = await this.workflowAutomationEngineService[
233
+ 'wfService'
234
+ ].getActiveRules(entityType, 'UPDATE', loggedInUser);
235
+ const preUpdateStates: Record<number, boolean> = {};
236
+ for (const wf of workflows) {
237
+ preUpdateStates[wf.id] = await this.workflowAutomationEngineService[
238
+ 'filterEvaluator'
239
+ ].evaluateCriteria(
240
+ entityType,
241
+ wf.condition_filter_code,
242
+ existingEntity.id,
243
+ loggedInUser,
244
+ );
245
+ }
246
+
247
+ // 3️⃣ Update
248
+ const updatedData = await entityService.updateEntity(
249
+ entityData,
250
+ loggedInUser as UserData,
251
+ );
252
+
253
+ // 4️⃣ Run workflow automation (pass preUpdateStates)
254
+ await this.workflowAutomationEngineService.handleEntityEvent(
255
+ entityType,
256
+ 'UPDATE',
257
+ updatedData,
258
+ loggedInUser,
259
+ preUpdateStates,
260
+ );
261
+
262
+ return updatedData;
263
+ }
264
+
265
+ @Post('delete/:id')
266
+ @HttpCode(200)
267
+ async delete(
268
+ @Param('id') id: number,
269
+ @Query('entity_type') entityType: string,
270
+ @Req() req: Request & { user: any },
271
+ ) {
272
+ const loggedInUser = req.user.userData;
273
+
274
+ if (!entityType) {
275
+ throw new BadRequestException(
276
+ 'Query parameter "entity_type" is required',
277
+ );
278
+ }
279
+
280
+ const entityMaster = await this.entityMasterService.getEntityData(
281
+ entityType,
282
+ loggedInUser,
283
+ );
284
+
285
+ const entityService =
286
+ await this.reflectionHelper.getBean<EntityServiceImpl>(
287
+ entityMaster.entity_service,
288
+ );
289
+
290
+ if (!entityService) {
291
+ throw new InternalServerErrorException(
292
+ `No service found for entity_type "${entityType}"`,
293
+ );
294
+ }
295
+
296
+ const existingEntity = await entityService.getEntityData(
297
+ entityType,
298
+ id,
299
+ loggedInUser,
300
+ );
301
+
302
+ if (!existingEntity) {
303
+ throw new NotFoundException(`No entity found for id "${id}"`);
304
+ }
305
+
306
+ return await entityService.deleteEntity(entityType, id, loggedInUser);
307
+ }
308
+
309
+ @Post('getFilteredDataWithTabs/:entity_type')
310
+ async getFilterDataWithTabs(
311
+ @Param('entity_type') entityType: string,
312
+ @Query('list_type') listType: string,
313
+ @Res() res: Response,
314
+ @Request() req,
315
+ @Body() filters: Record<string, any> = {},
316
+ @Query('sort_column') sortColumn?: string,
317
+ @Query('sort_order') sortOrder?: string,
318
+ @Query('page') page: number = 0,
319
+ @Query('size') size: number = 1,
320
+ @Query('tab_column') tabColumn?: string,
321
+ @Query('tab_value') tabValue?: string,
322
+ ) {
323
+ const appcode = req.user.userData.appcode;
324
+
325
+ return res
326
+ .status(HttpStatus.OK)
327
+ .json(
328
+ await this.entityService.getFilterDataWithTabs(
329
+ entityType,
330
+ listType,
331
+ filters,
332
+ sortColumn,
333
+ sortOrder,
334
+ page,
335
+ size,
336
+ tabColumn,
337
+ tabValue,
338
+ appcode,
339
+ ),
340
+ );
341
+ }
342
+
343
+ @HttpCode(HttpStatus.OK)
344
+ @Post('download-excel/:entity_type')
345
+ @HttpCode(HttpStatus.OK)
346
+ async downloadExcel(
347
+ @Param('entity_type') entityType: string,
348
+ @Query('list_entity_type') listEntityType: string,
349
+ @Query('display_type') displayType: string,
350
+ @Query('sample_export') sampleExport: boolean,
351
+ @Query() filterCriteria: Record<string, any>,
352
+ @Res() res: Response, // Express Response for file handling
353
+ @Req() req: Request & { user: any },
354
+ ) {
355
+ try {
356
+ const loggedInUser = req.user.userData;
357
+
358
+ const filePath = await this.entityService.generateExcelReport(
359
+ entityType,
360
+ filterCriteria,
361
+ listEntityType,
362
+ displayType,
363
+ sampleExport,
364
+ loggedInUser,
365
+ );
366
+
367
+ if (!filePath || !fs.existsSync(filePath)) {
368
+ return res.status(404).json({ message: 'File not found' });
369
+ }
370
+
371
+ res.setHeader(
372
+ 'Content-Disposition',
373
+ `attachment; filename=${path.basename(filePath)}`,
374
+ );
375
+ res.setHeader(
376
+ 'Content-Type',
377
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
378
+ );
379
+
380
+ const fileStream = fs.createReadStream(filePath);
381
+ fileStream.pipe(res);
382
+
383
+ // Optional: Delete file after sending response
384
+ fileStream.on('end', () => {
385
+ fs.unlinkSync(filePath);
386
+ });
387
+ } catch (error) {
388
+ console.error('Error downloading Excel file:', error);
389
+ res.status(500).json({ message: 'Internal server error' });
390
+ }
391
+ }
392
+ }