rez_core 4.0.178 → 4.0.180

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 (606) hide show
  1. package/.claude/settings.local.json +26 -0
  2. package/.idea/250218_nodejs_core.iml +9 -0
  3. package/.idea/codeStyles/Project.xml +59 -0
  4. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  5. package/.idea/copilot.data.migration.agent.xml +6 -0
  6. package/.idea/copilot.data.migration.ask.xml +6 -0
  7. package/.idea/copilot.data.migration.ask2agent.xml +6 -0
  8. package/.idea/copilot.data.migration.edit.xml +6 -0
  9. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  10. package/.idea/misc.xml +6 -0
  11. package/.idea/modules.xml +8 -0
  12. package/.idea/prettier.xml +6 -0
  13. package/.idea/vcs.xml +6 -0
  14. package/.prettierrc +3 -3
  15. package/README.md +99 -99
  16. package/dist/app.module.js +0 -9
  17. package/dist/app.module.js.map +1 -1
  18. package/dist/config/config.module.js +2 -2
  19. package/dist/config/config.module.js.map +1 -1
  20. package/dist/config/database.config.d.ts +1 -1
  21. package/dist/config/database.config.js +16 -12
  22. package/dist/config/database.config.js.map +1 -1
  23. package/dist/core.module.d.ts +1 -1
  24. package/dist/core.module.js +7 -10
  25. package/dist/core.module.js.map +1 -1
  26. package/dist/main.js +1 -1
  27. package/dist/main.js.map +1 -1
  28. package/dist/module/auth/guards/role.guard.js +3 -3
  29. package/dist/module/auth/services/auth.service.js +3 -3
  30. package/dist/module/auth/services/auth.service.js.map +1 -1
  31. package/dist/module/enterprise/entity/organization.entity.js +1 -1
  32. package/dist/module/enterprise/repository/school.repository.js +3 -3
  33. package/dist/module/enterprise/repository/school.repository.js.map +1 -1
  34. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  35. package/dist/module/filter/service/filter-evaluator.service.js +3 -3
  36. package/dist/module/filter/service/filter-evaluator.service.js.map +1 -1
  37. package/dist/module/filter/service/filter.service.d.ts +4 -1
  38. package/dist/module/filter/service/filter.service.js +69 -39
  39. package/dist/module/filter/service/filter.service.js.map +1 -1
  40. package/dist/module/integration/entity/integration-config.entity.js +6 -6
  41. package/dist/module/integration/entity/integration-config.entity.js.map +1 -1
  42. package/dist/module/integration/entity/integration-entity-mapper.entity.js +1 -1
  43. package/dist/module/integration/entity/integration-entity-mapper.entity.js.map +1 -1
  44. package/dist/module/integration/entity/integration-source.entity.js +4 -4
  45. package/dist/module/integration/entity/integration-source.entity.js.map +1 -1
  46. package/dist/module/integration/entity/user-integration.entity.js +4 -4
  47. package/dist/module/integration/entity/user-integration.entity.js.map +1 -1
  48. package/dist/module/integration/examples/usage.example.js +9 -9
  49. package/dist/module/integration/service/integration.service.js +1 -1
  50. package/dist/module/integration/service/wrapper.service.d.ts +1 -3
  51. package/dist/module/integration/service/wrapper.service.js +65 -67
  52. package/dist/module/integration/service/wrapper.service.js.map +1 -1
  53. package/dist/module/listmaster/entity/list-master-items.entity.js +3 -3
  54. package/dist/module/listmaster/entity/list-master-items.entity.js.map +1 -1
  55. package/dist/module/listmaster/entity/list-master.entity.js +4 -4
  56. package/dist/module/listmaster/entity/list-master.entity.js.map +1 -1
  57. package/dist/module/listmaster/service/list-master-item.service.js +3 -3
  58. package/dist/module/listmaster/service/list-master-item.service.js.map +1 -1
  59. package/dist/module/mapper/entity/field-mapper.entity.js +6 -6
  60. package/dist/module/mapper/entity/field-mapper.entity.js.map +1 -1
  61. package/dist/module/mapper/service/field-mapper.service.js +7 -7
  62. package/dist/module/mapper/service/field-mapper.service.js.map +1 -1
  63. package/dist/module/mapper/service/mapper.service.js +4 -4
  64. package/dist/module/mapper/service/mapper.service.js.map +1 -1
  65. package/dist/module/meta/controller/attribute-master.controller.d.ts +1 -4
  66. package/dist/module/meta/controller/attribute-master.controller.js +2 -15
  67. package/dist/module/meta/controller/attribute-master.controller.js.map +1 -1
  68. package/dist/module/meta/entity/app-master.entity.d.ts +2 -2
  69. package/dist/module/meta/entity/app-master.entity.js +4 -4
  70. package/dist/module/meta/entity/entity-master.entity.js +1 -1
  71. package/dist/module/meta/entity/entity-master.entity.js.map +1 -1
  72. package/dist/module/meta/entity/view-master.entity.js +1 -1
  73. package/dist/module/meta/entity/view-master.entity.js.map +1 -1
  74. package/dist/module/meta/entity.module.js +0 -7
  75. package/dist/module/meta/entity.module.js.map +1 -1
  76. package/dist/module/meta/repository/attribute-master.repository.js +2 -2
  77. package/dist/module/meta/repository/attribute-master.repository.js.map +1 -1
  78. package/dist/module/meta/repository/entity-master.repository.js +2 -2
  79. package/dist/module/meta/repository/entity-master.repository.js.map +1 -1
  80. package/dist/module/meta/service/attribute-master.service.js +1 -1
  81. package/dist/module/meta/service/attribute-master.service.js.map +1 -1
  82. package/dist/module/meta/service/entity-dynamic.service.js +27 -27
  83. package/dist/module/meta/service/entity-dynamic.service.js.map +1 -1
  84. package/dist/module/meta/service/entity-list.service.js +3 -3
  85. package/dist/module/meta/service/entity-master.service.js +4 -4
  86. package/dist/module/meta/service/entity-master.service.js.map +1 -1
  87. package/dist/module/meta/service/entity-relation.service.js +13 -13
  88. package/dist/module/meta/service/entity-relation.service.js.map +1 -1
  89. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  90. package/dist/module/meta/service/media-data.service.js +9 -9
  91. package/dist/module/meta/service/media-data.service.js.map +1 -1
  92. package/dist/module/meta/service/resolver.service.js +19 -19
  93. package/dist/module/meta/service/resolver.service.js.map +1 -1
  94. package/dist/module/module/repository/menu.repository.js +12 -12
  95. package/dist/module/module/service/module-access.service.js +1 -1
  96. package/dist/module/module/service/module-access.service.js.map +1 -1
  97. package/dist/module/notification/entity/otp.entity.js +1 -1
  98. package/dist/module/notification/entity/otp.entity.js.map +1 -1
  99. package/dist/module/notification/service/notification.service.js +9 -9
  100. package/dist/module/user/controller/login.controller.js +18 -18
  101. package/dist/module/user/entity/user-role-mapping.entity.js +1 -1
  102. package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
  103. package/dist/module/user/service/login.service.js +1 -1
  104. package/dist/module/user/service/login.service.js.map +1 -1
  105. package/dist/module/user/service/role.service.js +4 -4
  106. package/dist/module/user/service/user-session.service.js +4 -4
  107. package/dist/module/user/service/user-session.service.js.map +1 -1
  108. package/dist/module/workflow/entity/action-category.entity.d.ts +1 -1
  109. package/dist/module/workflow/entity/action-category.entity.js +1 -1
  110. package/dist/module/workflow/entity/action-data.entity.js +1 -1
  111. package/dist/module/workflow/entity/action-data.entity.js.map +1 -1
  112. package/dist/module/workflow/entity/action.entity.d.ts +0 -1
  113. package/dist/module/workflow/entity/action.entity.js +1 -5
  114. package/dist/module/workflow/entity/action.entity.js.map +1 -1
  115. package/dist/module/workflow/entity/comm-template.entity.js +1 -1
  116. package/dist/module/workflow/entity/comm-template.entity.js.map +1 -1
  117. package/dist/module/workflow/entity/template-attach-mapper.entity.js +1 -1
  118. package/dist/module/workflow/entity/template-attach-mapper.entity.js.map +1 -1
  119. package/dist/module/workflow/repository/action-data.repository.js +4 -5
  120. package/dist/module/workflow/repository/action-data.repository.js.map +1 -1
  121. package/dist/module/workflow/repository/action.repository.js +21 -21
  122. package/dist/module/workflow/repository/action.repository.js.map +1 -1
  123. package/dist/module/workflow/repository/comm-template.repository.js +7 -7
  124. package/dist/module/workflow/repository/comm-template.repository.js.map +1 -1
  125. package/dist/module/workflow/repository/form-master.repository.js +3 -3
  126. package/dist/module/workflow/repository/form-master.repository.js.map +1 -1
  127. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  128. package/dist/module/workflow/repository/stage-movement.repository.js +17 -17
  129. package/dist/module/workflow/repository/stage-movement.repository.js.map +1 -1
  130. package/dist/module/workflow/repository/stage.repository.js +8 -8
  131. package/dist/module/workflow/repository/task.repository.d.ts +1 -3
  132. package/dist/module/workflow/repository/task.repository.js +5 -10
  133. package/dist/module/workflow/repository/task.repository.js.map +1 -1
  134. package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
  135. package/dist/module/workflow/service/action.service.js +13 -13
  136. package/dist/module/workflow/service/action.service.js.map +1 -1
  137. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  138. package/dist/module/workflow/service/populate-workflow.service.js +8 -8
  139. package/dist/module/workflow/service/populate-workflow.service.js.map +1 -1
  140. package/dist/module/workflow/service/stage-group.service.js +6 -6
  141. package/dist/module/workflow/service/stage-group.service.js.map +1 -1
  142. package/dist/module/workflow/service/stage.service.js +4 -4
  143. package/dist/module/workflow/service/stage.service.js.map +1 -1
  144. package/dist/module/workflow/service/task.service.js +54 -68
  145. package/dist/module/workflow/service/task.service.js.map +1 -1
  146. package/dist/module/workflow/service/workflow-list-master.service.js +16 -16
  147. package/dist/module/workflow/service/workflow-list-master.service.js.map +1 -1
  148. package/dist/module/workflow/service/workflow-meta.service.js +51 -53
  149. package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
  150. package/dist/module/workflow/service/workflow.service.js +5 -5
  151. package/dist/module/workflow/service/workflow.service.js.map +1 -1
  152. package/dist/module/workflow-automation/controller/workflow-automation.controller.d.ts +0 -6
  153. package/dist/module/workflow-automation/controller/workflow-automation.controller.js +0 -16
  154. package/dist/module/workflow-automation/controller/workflow-automation.controller.js.map +1 -1
  155. package/dist/module/workflow-automation/entity/workflow-automation-action.entity.d.ts +1 -1
  156. package/dist/module/workflow-automation/entity/workflow-automation-action.entity.js +1 -1
  157. package/dist/module/workflow-automation/entity/workflow-automation.entity.d.ts +0 -2
  158. package/dist/module/workflow-automation/entity/workflow-automation.entity.js +0 -8
  159. package/dist/module/workflow-automation/entity/workflow-automation.entity.js.map +1 -1
  160. package/dist/module/workflow-automation/service/workflow-automation-engine.service.d.ts +1 -1
  161. package/dist/module/workflow-automation/service/workflow-automation-engine.service.js +1 -1
  162. package/dist/module/workflow-automation/service/workflow-automation-engine.service.js.map +1 -1
  163. package/dist/module/workflow-automation/service/workflow-automation.service.d.ts +1 -13
  164. package/dist/module/workflow-automation/service/workflow-automation.service.js +6 -115
  165. package/dist/module/workflow-automation/service/workflow-automation.service.js.map +1 -1
  166. package/dist/module/workflow-automation/workflow-automation.module.js +1 -14
  167. package/dist/module/workflow-automation/workflow-automation.module.js.map +1 -1
  168. package/dist/table.config.js +1 -5
  169. package/dist/table.config.js.map +1 -1
  170. package/dist/tsconfig.build.tsbuildinfo +1 -1
  171. package/dist/utils/service/loggingUtil.service.d.ts +2 -9
  172. package/dist/utils/service/loggingUtil.service.js +14 -65
  173. package/dist/utils/service/loggingUtil.service.js.map +1 -1
  174. package/dist/utils/service/reflection-helper.service.js +3 -3
  175. package/dist/utils/service/reflection-helper.service.js.map +1 -1
  176. package/dist/utils/utils.module.js +0 -2
  177. package/dist/utils/utils.module.js.map +1 -1
  178. package/docs/modules/event-driven-integration-design.md +91 -91
  179. package/docs/modules/integration.md +250 -250
  180. package/eslint.config.mjs +34 -34
  181. package/nest-cli.json +14 -14
  182. package/package.json +120 -124
  183. package/server.log +850 -0
  184. package/src/app.controller.ts +12 -12
  185. package/src/app.module.ts +52 -62
  186. package/src/app.service.ts +8 -8
  187. package/src/config/config.module.ts +17 -18
  188. package/src/config/database.config.ts +48 -23
  189. package/src/constant/global.constant.ts +67 -67
  190. package/src/core.module.ts +81 -88
  191. package/src/decorators/roles.decorator.ts +7 -7
  192. package/src/dtos/response.dto.ts +6 -6
  193. package/src/dtos/response.ts +5 -5
  194. package/src/index.ts +1 -1
  195. package/src/module/auth/auth.module.ts +49 -49
  196. package/src/module/auth/controller/auth.controller.ts +28 -28
  197. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  198. package/src/module/auth/guards/jwt.guard.ts +22 -22
  199. package/src/module/auth/guards/role.guard.ts +68 -68
  200. package/src/module/auth/services/auth.service.ts +50 -50
  201. package/src/module/auth/services/jwt.service.ts +11 -11
  202. package/src/module/auth/strategies/google.strategy.ts +54 -54
  203. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  204. package/src/module/auth/strategies/local.strategy.ts +13 -13
  205. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  206. package/src/module/dashboard/dashboard.module.ts +21 -21
  207. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  208. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  209. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  210. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  211. package/src/module/dev/dev.module.ts +12 -12
  212. package/src/module/dev/service/dev.service.ts +7 -7
  213. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  214. package/src/module/enterprise/enterprise.module.ts +30 -30
  215. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  216. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  217. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  218. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  219. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  220. package/src/module/enterprise/repository/school.repository.ts +278 -278
  221. package/src/module/enterprise/service/brand.service.ts +5 -5
  222. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  223. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  224. package/src/module/enterprise/service/organization.service.ts +145 -145
  225. package/src/module/filter/controller/filter.controller.ts +84 -84
  226. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  227. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  228. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  229. package/src/module/filter/filter.module.ts +31 -31
  230. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  231. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  232. package/src/module/filter/service/filter.service.ts +1053 -1005
  233. package/src/module/filter/service/saved-filter.service.ts +170 -170
  234. package/src/module/ics/controller/ics.controller.ts +21 -21
  235. package/src/module/ics/dto/ics.dto.ts +55 -55
  236. package/src/module/ics/ics.module.ts +13 -13
  237. package/src/module/ics/service/ics.service.ts +57 -57
  238. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  239. package/src/module/integration/controller/integration.controller.ts +662 -662
  240. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  241. package/src/module/integration/dto/create-config.dto.ts +526 -526
  242. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  243. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  244. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  245. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  246. package/src/module/integration/examples/usage.example.ts +338 -338
  247. package/src/module/integration/factories/base.factory.ts +7 -7
  248. package/src/module/integration/factories/email.factory.ts +49 -49
  249. package/src/module/integration/factories/integration.factory.ts +121 -121
  250. package/src/module/integration/factories/sms.factory.ts +51 -51
  251. package/src/module/integration/factories/telephone.factory.ts +41 -41
  252. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  253. package/src/module/integration/integration.module.ts +110 -110
  254. package/src/module/integration/service/calendar-event.service.ts +118 -118
  255. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  256. package/src/module/integration/service/integration-queue.service.ts +229 -229
  257. package/src/module/integration/service/integration.service.ts +2633 -2633
  258. package/src/module/integration/service/oauth.service.ts +224 -224
  259. package/src/module/integration/service/wrapper.service.ts +494 -700
  260. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  261. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  262. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  263. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  264. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  265. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  266. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  267. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  268. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  269. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  270. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  271. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  272. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  273. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  274. package/src/module/layout/controller/layout.controller.ts +47 -47
  275. package/src/module/layout/entity/header-items.entity.ts +28 -28
  276. package/src/module/layout/entity/header-section.entity.ts +19 -19
  277. package/src/module/layout/layout.module.ts +21 -21
  278. package/src/module/layout/repository/header-items.repository.ts +18 -18
  279. package/src/module/layout/repository/header-section.repository.ts +22 -22
  280. package/src/module/layout/service/header-section.service.ts +25 -25
  281. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  282. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  283. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  284. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  285. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  286. package/src/module/lead/controller/lead.controller.ts +30 -30
  287. package/src/module/lead/lead.module.ts +14 -14
  288. package/src/module/lead/repository/lead.repository.ts +41 -41
  289. package/src/module/lead/service/lead.service.ts +54 -54
  290. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  291. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  292. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  293. package/src/module/listmaster/listmaster.module.ts +46 -46
  294. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  295. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  296. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  297. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  298. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  299. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  300. package/src/module/listmaster/service/list-master.service.ts +535 -535
  301. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  302. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  303. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  304. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  305. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  306. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  307. package/src/module/mapper/mapper.module.ts +34 -34
  308. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  309. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  310. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  311. package/src/module/mapper/service/field-mapper.service.ts +266 -271
  312. package/src/module/mapper/service/mapper.service.ts +79 -79
  313. package/src/module/master/controller/master.controller.ts +74 -74
  314. package/src/module/master/service/master.service.ts +483 -483
  315. package/src/module/meta/controller/app-master.controller.ts +38 -38
  316. package/src/module/meta/controller/attribute-master.controller.ts +66 -74
  317. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  318. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  319. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  320. package/src/module/meta/controller/entity.controller.ts +392 -392
  321. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  322. package/src/module/meta/controller/media.controller.ts +107 -107
  323. package/src/module/meta/controller/meta.controller.ts +96 -96
  324. package/src/module/meta/controller/view-master.controller.ts +86 -86
  325. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  326. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  327. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  328. package/src/module/meta/entity/app-master.entity.ts +34 -34
  329. package/src/module/meta/entity/attribute-master.entity.ts +89 -89
  330. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  331. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  332. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  333. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  334. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  335. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  336. package/src/module/meta/entity/media-data.entity.ts +32 -32
  337. package/src/module/meta/entity/preference.entity.ts +62 -62
  338. package/src/module/meta/entity/view-master.entity.ts +41 -41
  339. package/src/module/meta/entity.module.ts +158 -166
  340. package/src/module/meta/repository/app-master.repository.ts +20 -20
  341. package/src/module/meta/repository/attribute-master.repository.ts +118 -118
  342. package/src/module/meta/repository/entity-master.repository.ts +69 -69
  343. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  344. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  345. package/src/module/meta/repository/media-data.repository.ts +50 -50
  346. package/src/module/meta/repository/preference.repository.ts +20 -20
  347. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  348. package/src/module/meta/repository/view-master.repository.ts +42 -42
  349. package/src/module/meta/service/app-master.service.ts +37 -37
  350. package/src/module/meta/service/attribute-master.service.ts +126 -126
  351. package/src/module/meta/service/common.service.ts +9 -9
  352. package/src/module/meta/service/entity-dynamic.service.ts +819 -819
  353. package/src/module/meta/service/entity-list.service.ts +205 -205
  354. package/src/module/meta/service/entity-master.service.ts +169 -169
  355. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  356. package/src/module/meta/service/entity-relation.service.ts +69 -69
  357. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  358. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  359. package/src/module/meta/service/entity-table.service.ts +150 -150
  360. package/src/module/meta/service/entity-validation.service.ts +187 -187
  361. package/src/module/meta/service/entity.service.ts +67 -67
  362. package/src/module/meta/service/field-group.service.ts +103 -103
  363. package/src/module/meta/service/media-data.service.ts +507 -507
  364. package/src/module/meta/service/populate-meta.service.ts +193 -193
  365. package/src/module/meta/service/preference.service.ts +16 -16
  366. package/src/module/meta/service/resolver.service.ts +267 -267
  367. package/src/module/meta/service/section-master.service.ts +104 -104
  368. package/src/module/meta/service/update-form-json.service.ts +22 -22
  369. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  370. package/src/module/meta/service/view-master.service.ts +127 -127
  371. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  372. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  373. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  374. package/src/module/module/controller/menu.controller.ts +15 -15
  375. package/src/module/module/controller/module-access.controller.ts +134 -134
  376. package/src/module/module/entity/menu.entity.ts +43 -43
  377. package/src/module/module/entity/module-access.entity.ts +25 -25
  378. package/src/module/module/entity/module-action.entity.ts +17 -17
  379. package/src/module/module/entity/module.entity.ts +52 -52
  380. package/src/module/module/module.module.ts +42 -42
  381. package/src/module/module/repository/menu.repository.ts +184 -184
  382. package/src/module/module/repository/module-access.repository.ts +344 -344
  383. package/src/module/module/service/menu.service.ts +82 -82
  384. package/src/module/module/service/module-access.service.ts +207 -209
  385. package/src/module/notification/controller/notification.controller.ts +58 -58
  386. package/src/module/notification/controller/otp.controller.ts +117 -117
  387. package/src/module/notification/entity/notification.entity.ts +26 -26
  388. package/src/module/notification/entity/otp.entity.ts +28 -28
  389. package/src/module/notification/firebase-admin.config.ts +22 -22
  390. package/src/module/notification/notification.module.ts +69 -69
  391. package/src/module/notification/repository/otp.repository.ts +27 -27
  392. package/src/module/notification/service/email.service.ts +127 -127
  393. package/src/module/notification/service/notification.service.ts +163 -163
  394. package/src/module/notification/service/otp.service.ts +132 -132
  395. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  396. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  397. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  398. package/src/module/third-party-module/third-party.module.ts +12 -12
  399. package/src/module/user/controller/login.controller.ts +197 -197
  400. package/src/module/user/controller/user.controller.ts +40 -40
  401. package/src/module/user/dto/create-user.dto.ts +62 -62
  402. package/src/module/user/dto/update-user.dto.ts +4 -4
  403. package/src/module/user/entity/role.entity.ts +33 -33
  404. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  405. package/src/module/user/entity/user-session.entity.ts +73 -73
  406. package/src/module/user/entity/user.entity.ts +59 -59
  407. package/src/module/user/repository/role.repository.ts +96 -96
  408. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  409. package/src/module/user/repository/user.repository.ts +50 -50
  410. package/src/module/user/repository/userSession.repository.ts +33 -33
  411. package/src/module/user/service/login.service.ts +304 -304
  412. package/src/module/user/service/role.service.ts +189 -189
  413. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  414. package/src/module/user/service/user-session.service.ts +168 -168
  415. package/src/module/user/service/user.service.ts +365 -365
  416. package/src/module/user/user.module.ts +65 -65
  417. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  418. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  419. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  420. package/src/module/workflow/controller/action.controller.ts +111 -111
  421. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  422. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  423. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  424. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  425. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  426. package/src/module/workflow/controller/stage.controller.ts +50 -50
  427. package/src/module/workflow/controller/task.controller.ts +77 -77
  428. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  429. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  430. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  431. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  432. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  433. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  434. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  435. package/src/module/workflow/entity/action.entity.ts +50 -53
  436. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  437. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  438. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  439. package/src/module/workflow/entity/form.entity.ts +25 -25
  440. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  441. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  442. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  443. package/src/module/workflow/entity/stage.entity.ts +20 -20
  444. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  445. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  446. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  447. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  448. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  449. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  450. package/src/module/workflow/repository/action-data.repository.ts +333 -334
  451. package/src/module/workflow/repository/action.repository.ts +323 -323
  452. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  453. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  454. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  455. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  456. package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
  457. package/src/module/workflow/repository/stage.repository.ts +172 -172
  458. package/src/module/workflow/repository/task.repository.ts +126 -134
  459. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  460. package/src/module/workflow/service/action-category.service.ts +33 -33
  461. package/src/module/workflow/service/action-data.service.ts +62 -62
  462. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  463. package/src/module/workflow/service/action-template-mapping.service.ts +106 -106
  464. package/src/module/workflow/service/action.service.ts +279 -279
  465. package/src/module/workflow/service/activity-log.service.ts +107 -107
  466. package/src/module/workflow/service/comm-template.service.ts +180 -180
  467. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  468. package/src/module/workflow/service/form-master.service.ts +35 -35
  469. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  470. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  471. package/src/module/workflow/service/stage-group.service.ts +319 -319
  472. package/src/module/workflow/service/stage.service.ts +199 -199
  473. package/src/module/workflow/service/task.service.ts +560 -569
  474. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  475. package/src/module/workflow/service/workflow-meta.service.ts +640 -654
  476. package/src/module/workflow/service/workflow.service.ts +205 -205
  477. package/src/module/workflow/workflow.module.ts +176 -176
  478. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +21 -43
  479. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  480. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +35 -40
  481. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  482. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  483. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  484. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  485. package/src/module/workflow-automation/service/workflow-automation.service.ts +347 -508
  486. package/src/module/workflow-automation/workflow-automation.module.ts +34 -47
  487. package/src/resources/dev.properties.yaml +31 -30
  488. package/src/resources/local.properties.yaml +27 -27
  489. package/src/resources/properties.module.ts +12 -12
  490. package/src/resources/properties.yaml.ts +11 -11
  491. package/src/resources/uat.properties.yaml +31 -31
  492. package/src/table.config.ts +126 -130
  493. package/src/utils/dto/excel-data.dto.ts +14 -14
  494. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  495. package/src/utils/service/base64util.service.ts +18 -18
  496. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  497. package/src/utils/service/codeGenerator.service.ts +22 -22
  498. package/src/utils/service/dateUtil.service.ts +17 -17
  499. package/src/utils/service/encryptUtil.service.ts +97 -97
  500. package/src/utils/service/excel-helper.service.ts +72 -72
  501. package/src/utils/service/excelUtil.service.ts +15 -15
  502. package/src/utils/service/file-util.service.ts +11 -11
  503. package/src/utils/service/json-util.service.ts +23 -23
  504. package/src/utils/service/loggingUtil.service.ts +34 -88
  505. package/src/utils/service/reflection-helper.service.ts +62 -62
  506. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  507. package/src/utils/utils.module.ts +25 -27
  508. package/tsconfig.build.json +4 -4
  509. package/tsconfig.json +24 -24
  510. package/dist/config/bull.config.d.ts +0 -10
  511. package/dist/config/bull.config.js +0 -66
  512. package/dist/config/bull.config.js.map +0 -1
  513. package/dist/module/entity_json/controller/entity_json.controller.d.ts +0 -8
  514. package/dist/module/entity_json/controller/entity_json.controller.js +0 -42
  515. package/dist/module/entity_json/controller/entity_json.controller.js.map +0 -1
  516. package/dist/module/entity_json/entity_json.module.d.ts +0 -2
  517. package/dist/module/entity_json/entity_json.module.js +0 -26
  518. package/dist/module/entity_json/entity_json.module.js.map +0 -1
  519. package/dist/module/entity_json/service/entity_json.service.d.ts +0 -7
  520. package/dist/module/entity_json/service/entity_json.service.js +0 -80
  521. package/dist/module/entity_json/service/entity_json.service.js.map +0 -1
  522. package/dist/module/linked_attributes/controller/linked_attributes.controller.d.ts +0 -5
  523. package/dist/module/linked_attributes/controller/linked_attributes.controller.js +0 -29
  524. package/dist/module/linked_attributes/controller/linked_attributes.controller.js.map +0 -1
  525. package/dist/module/linked_attributes/entity/linked_attribute.entity.d.ts +0 -9
  526. package/dist/module/linked_attributes/entity/linked_attribute.entity.js +0 -70
  527. package/dist/module/linked_attributes/entity/linked_attribute.entity.js.map +0 -1
  528. package/dist/module/linked_attributes/linked_attributes.module.d.ts +0 -2
  529. package/dist/module/linked_attributes/linked_attributes.module.js +0 -29
  530. package/dist/module/linked_attributes/linked_attributes.module.js.map +0 -1
  531. package/dist/module/linked_attributes/repository/linked_attribute.repository.d.ts +0 -6
  532. package/dist/module/linked_attributes/repository/linked_attribute.repository.js +0 -31
  533. package/dist/module/linked_attributes/repository/linked_attribute.repository.js.map +0 -1
  534. package/dist/module/linked_attributes/service/linked_attributes.service.d.ts +0 -5
  535. package/dist/module/linked_attributes/service/linked_attributes.service.js +0 -34
  536. package/dist/module/linked_attributes/service/linked_attributes.service.js.map +0 -1
  537. package/dist/module/meta/repository/entity-attribute-update.repository.d.ts +0 -6
  538. package/dist/module/meta/repository/entity-attribute-update.repository.js +0 -44
  539. package/dist/module/meta/repository/entity-attribute-update.repository.js.map +0 -1
  540. package/dist/module/meta/service/entity-attribute-update.service.d.ts +0 -7
  541. package/dist/module/meta/service/entity-attribute-update.service.js +0 -36
  542. package/dist/module/meta/service/entity-attribute-update.service.js.map +0 -1
  543. package/dist/module/workflow-automation/service/schedule-handler.service.d.ts +0 -16
  544. package/dist/module/workflow-automation/service/schedule-handler.service.js +0 -109
  545. package/dist/module/workflow-automation/service/schedule-handler.service.js.map +0 -1
  546. package/dist/module/workflow-schedule/constants/schedule.constants.d.ts +0 -27
  547. package/dist/module/workflow-schedule/constants/schedule.constants.js +0 -31
  548. package/dist/module/workflow-schedule/constants/schedule.constants.js.map +0 -1
  549. package/dist/module/workflow-schedule/controller/workflow-schedule.controller.d.ts +0 -83
  550. package/dist/module/workflow-schedule/controller/workflow-schedule.controller.js +0 -220
  551. package/dist/module/workflow-schedule/controller/workflow-schedule.controller.js.map +0 -1
  552. package/dist/module/workflow-schedule/dto/create-schedule.dto.d.ts +0 -32
  553. package/dist/module/workflow-schedule/dto/create-schedule.dto.js +0 -163
  554. package/dist/module/workflow-schedule/dto/create-schedule.dto.js.map +0 -1
  555. package/dist/module/workflow-schedule/dto/get-execution-logs.dto.d.ts +0 -35
  556. package/dist/module/workflow-schedule/dto/get-execution-logs.dto.js +0 -124
  557. package/dist/module/workflow-schedule/dto/get-execution-logs.dto.js.map +0 -1
  558. package/dist/module/workflow-schedule/dto/update-schedule.dto.d.ts +0 -19
  559. package/dist/module/workflow-schedule/dto/update-schedule.dto.js +0 -106
  560. package/dist/module/workflow-schedule/dto/update-schedule.dto.js.map +0 -1
  561. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.d.ts +0 -30
  562. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.js +0 -113
  563. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.js.map +0 -1
  564. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.d.ts +0 -34
  565. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.js +0 -118
  566. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.js.map +0 -1
  567. package/dist/module/workflow-schedule/interfaces/schedule-job-data.interface.d.ts +0 -44
  568. package/dist/module/workflow-schedule/interfaces/schedule-job-data.interface.js +0 -3
  569. package/dist/module/workflow-schedule/interfaces/schedule-job-data.interface.js.map +0 -1
  570. package/dist/module/workflow-schedule/processors/schedule.processor.d.ts +0 -31
  571. package/dist/module/workflow-schedule/processors/schedule.processor.js +0 -409
  572. package/dist/module/workflow-schedule/processors/schedule.processor.js.map +0 -1
  573. package/dist/module/workflow-schedule/service/workflow-schedule.service.d.ts +0 -44
  574. package/dist/module/workflow-schedule/service/workflow-schedule.service.js +0 -434
  575. package/dist/module/workflow-schedule/service/workflow-schedule.service.js.map +0 -1
  576. package/dist/module/workflow-schedule/workflow-schedule.module.d.ts +0 -2
  577. package/dist/module/workflow-schedule/workflow-schedule.module.js +0 -44
  578. package/dist/module/workflow-schedule/workflow-schedule.module.js.map +0 -1
  579. package/src/config/bull.config.ts +0 -69
  580. package/src/module/entity_json/controller/entity_json.controller.ts +0 -21
  581. package/src/module/entity_json/entity_json.module.ts +0 -13
  582. package/src/module/entity_json/service/entity_json.service.ts +0 -88
  583. package/src/module/linked_attributes/controller/linked_attributes.controller.ts +0 -10
  584. package/src/module/linked_attributes/entity/linked_attribute.entity.ts +0 -48
  585. package/src/module/linked_attributes/linked_attributes.module.ts +0 -16
  586. package/src/module/linked_attributes/repository/linked_attribute.repository.ts +0 -12
  587. package/src/module/linked_attributes/service/linked_attributes.service.ts +0 -22
  588. package/src/module/meta/repository/entity-attribute-update.repository.ts +0 -44
  589. package/src/module/meta/service/entity-attribute-update.service.ts +0 -29
  590. package/src/module/workflow-automation/service/schedule-handler.service.ts +0 -150
  591. package/src/module/workflow-schedule/INSTALLATION.md +0 -244
  592. package/src/module/workflow-schedule/README.md +0 -422
  593. package/src/module/workflow-schedule/constants/schedule.constants.ts +0 -48
  594. package/src/module/workflow-schedule/controller/workflow-schedule.controller.ts +0 -255
  595. package/src/module/workflow-schedule/docs/CLAUDE_CODE_GUIDE.md +0 -510
  596. package/src/module/workflow-schedule/docs/CLAUDE_CODE_PROMPT.md +0 -362
  597. package/src/module/workflow-schedule/docs/RUN_CLAUDE_CODE.sh +0 -68
  598. package/src/module/workflow-schedule/dto/create-schedule.dto.ts +0 -147
  599. package/src/module/workflow-schedule/dto/get-execution-logs.dto.ts +0 -119
  600. package/src/module/workflow-schedule/dto/update-schedule.dto.ts +0 -96
  601. package/src/module/workflow-schedule/entities/scheduled-workflow.entity.ts +0 -148
  602. package/src/module/workflow-schedule/entities/workflow-execution-log.entity.ts +0 -154
  603. package/src/module/workflow-schedule/interfaces/schedule-job-data.interface.ts +0 -53
  604. package/src/module/workflow-schedule/processors/schedule.processor.ts +0 -584
  605. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +0 -600
  606. package/src/module/workflow-schedule/workflow-schedule.module.ts +0 -43
@@ -1,525 +1,525 @@
1
- import { EntityService } from './entity.service';
2
- import {
3
- BadRequestException,
4
- forwardRef,
5
- Inject,
6
- Injectable,
7
- NotFoundException,
8
- } from '@nestjs/common';
9
- import { UserData } from '../../user/entity/user.entity';
10
- import { EntityMasterService } from './entity-master.service';
11
- import { ReflectionHelper } from '../../../utils/service/reflection-helper.service';
12
- import { BaseEntity } from '../entity/base-entity.entity';
13
- import { LoggingService } from '../../../utils/service/loggingUtil.service';
14
- import { EntityListData } from '../dto/entity-list-data.dto';
15
- import { EntityListService } from './entity-list.service';
16
- import { EntityManager } from 'typeorm';
17
- import { ExcelData } from '../../../utils/dto/excel-data.dto';
18
- import * as fs from 'fs';
19
- import * as path from 'path';
20
- import { ExcelHelper } from '../../../utils/service/excel-helper.service';
21
- import { ExcelsheetData } from '../../../utils/dto/excelsheet-data.dto';
22
- import { EntityTableService } from './entity-table.service';
23
- import { EntityTableColumnService } from './entity-table-column.service';
24
- import {
25
- ENTITYTYPE_ENTITYMASTER,
26
- STATUS_ACTIVE,
27
- } from '../../../constant/global.constant';
28
- import { EntityValidationService } from './entity-validation.service';
29
- import { AttributeMasterService } from './attribute-master.service';
30
- import { ResolverService } from './resolver.service';
31
-
32
- @Injectable()
33
- export class EntityServiceImpl implements EntityService<BaseEntity> {
34
- @Inject() protected readonly entityMasterService: EntityMasterService;
35
- @Inject()
36
- protected readonly entityTableColumnService: EntityTableColumnService;
37
- @Inject() protected readonly entityTableService: EntityTableService;
38
- @Inject() protected readonly reflectionHelper: ReflectionHelper;
39
- @Inject() protected readonly entityListService: EntityListService;
40
- @Inject() protected readonly loggingService: LoggingService;
41
- @Inject()
42
- protected readonly entityValidationService: EntityValidationService;
43
- protected readonly attributeMasterService: AttributeMasterService;
44
- @Inject(forwardRef(() => ResolverService))
45
- protected readonly resolverService: ResolverService;
46
-
47
- async createEntity(
48
- entityData: BaseEntity,
49
- loggedInUser: UserData | null,
50
- manager?: EntityManager | null,
51
- appcode?: string,
52
- ) {
53
- if (!entityData.entity_type) {
54
- throw new BadRequestException(`EntityType is missing`);
55
- }
56
- const entityMaster = await this.entityMasterService.getEntityData(
57
- entityData.entity_type,
58
- loggedInUser,
59
- );
60
-
61
- const validationErrors =
62
- await this.entityValidationService.validateEntityData(
63
- entityData,
64
- entityMaster,
65
- loggedInUser,
66
- );
67
- console.log('Validation Errors:', validationErrors); // Debug log
68
- if (validationErrors && validationErrors.length > 0) {
69
- return {
70
- success: false,
71
- message: 'Validation failed',
72
- errors: validationErrors,
73
- };
74
- }
75
-
76
- const repo = manager
77
- ? manager.getRepository(entityMaster.entity_data_class) // <-- Use transaction-safe repo
78
- : this.reflectionHelper.getRepoService(entityMaster.entity_data_class);
79
-
80
- if (!repo) {
81
- throw new Error(
82
- `Repository service not found for entityType: ${entityData.entity_type}`,
83
- );
84
- }
85
-
86
- if (!entityData.code && loggedInUser) {
87
- let maxSeqNo = await this.getMaxSequenceNumber(
88
- entityData.entity_type,
89
- entityData.parent_id,
90
- entityData.parent_type,
91
- loggedInUser,
92
- );
93
- maxSeqNo = Number(maxSeqNo) + 1;
94
- entityData.code = entityData.entity_type + maxSeqNo;
95
- }
96
-
97
- // const resolveStatus = await this.listMasterService.getResolvedListCode(
98
- // STATUS_ACTIVE,
99
- // loggedInUser?.organization_id || 0,
100
- // );
101
-
102
- const statusList = await repo.query(
103
- `SELECT id
104
- FROM frm_list_master_items
105
- WHERE code = ?
106
- AND organization_id = ?`,
107
- [STATUS_ACTIVE, loggedInUser?.organization_id || -1],
108
- );
109
-
110
- console.log('Status List:', statusList); // Debug log
111
- console.log(
112
- `status_code,${STATUS_ACTIVE},statusList, ${loggedInUser?.organization_id}`,
113
- ); // Debug log
114
-
115
- entityData.created_date = new Date();
116
- if (loggedInUser) {
117
- entityData.created_by = loggedInUser.id;
118
- if (!entityData.organization_id)
119
- entityData.organization_id = loggedInUser.organization_id;
120
- if (!entityData.enterprise_id)
121
- entityData.enterprise_id = loggedInUser.enterprise_id;
122
- if (!entityData.level_type)
123
- entityData.level_type = loggedInUser.level_type;
124
- if (!entityData.level_id) entityData.level_id = loggedInUser.level_id;
125
- if (!entityData.status) entityData.status = statusList[0].id;
126
- }
127
-
128
- let savedData = repo.save(entityData);
129
-
130
- return savedData;
131
- }
132
-
133
- async deleteEntity(entityType: string, entityId: number, loggedInUser) {
134
- const entityMaster = await this.entityMasterService.getEntityData(
135
- entityType,
136
- loggedInUser,
137
- );
138
-
139
- const repoService = this.reflectionHelper.getRepoService(
140
- entityMaster.entity_data_class,
141
- );
142
- if (!repoService) {
143
- throw new Error(
144
- `Repository service not found for entityType: ${entityType}`,
145
- );
146
- }
147
-
148
- const entityData = await repoService.findOne({ where: { id: entityId } });
149
-
150
- if (!entityData) {
151
- throw new Error(`Entity not found for entityType: ${entityType}`);
152
- }
153
-
154
- await repoService.delete(entityId);
155
-
156
- return {
157
- success: true,
158
- message: `Entity with id ${entityId} deleted successfully.`,
159
- };
160
- }
161
-
162
- async findByCode(
163
- entityType: string,
164
- code: string,
165
- loggedInUser,
166
- ): Promise<BaseEntity> {
167
- const entityData = await this.entityMasterService.getEntityData(
168
- entityType,
169
- loggedInUser,
170
- );
171
-
172
- const repoService = this.reflectionHelper.getRepoService(
173
- entityData.entity_data_class,
174
- );
175
- if (!repoService) {
176
- throw new Error(
177
- `Repository service not found for entityType: ${entityType}`,
178
- );
179
- }
180
- const result = await repoService?.findOne({ where: { code: code } });
181
-
182
- if (!result) {
183
- throw new Error(`Entity not found for entityType: ${entityType}`);
184
- }
185
- return result;
186
- }
187
-
188
- async getEntityData(
189
- entityType: string,
190
- id: number,
191
- loggedInUser,
192
- ): Promise<any> {
193
- const entityData = await this.entityMasterService.getEntityData(
194
- entityType,
195
- loggedInUser,
196
- );
197
-
198
- const repoService = this.reflectionHelper.getRepoService(
199
- entityData.entity_data_class,
200
- );
201
- if (!repoService) {
202
- throw new Error(
203
- `Repository service not found for entityType: ${entityType}`,
204
- );
205
- }
206
- return await repoService.findOne({ where: { id: id } });
207
- }
208
-
209
- async getEntityDataAll(
210
- entityType: string,
211
- type: {},
212
- loggedInUser: UserData,
213
- ): Promise<BaseEntity[] | null> {
214
- const entityData = await this.entityMasterService.getEntityData(
215
- entityType,
216
- loggedInUser,
217
- );
218
-
219
- const repoService = this.reflectionHelper.getRepoService(
220
- entityData.entity_data_class,
221
- );
222
- if (!repoService) {
223
- throw new Error(
224
- `Repository service not found for entityType: ${entityType}`,
225
- );
226
- }
227
- return await repoService.find({ where: type });
228
- }
229
-
230
- async getEntityDataByCode(
231
- entityType: string,
232
- code: string,
233
- loggedInUser: UserData,
234
- ): Promise<BaseEntity | null> {
235
- const entityData = await this.entityMasterService.getEntityData(
236
- entityType,
237
- loggedInUser,
238
- );
239
-
240
- const repoService = this.reflectionHelper.getRepoService(
241
- entityData.entity_data_class,
242
- );
243
- if (!repoService) {
244
- throw new BadRequestException(
245
- `Repository service not found for entityType: ${entityType}`,
246
- );
247
- }
248
- const data = await repoService.findOne({ where: { code: code } });
249
-
250
- if (!data) {
251
- throw new NotFoundException(`Data not found for Code: ${code}`);
252
- }
253
- return data;
254
- }
255
-
256
- async getEntityList(
257
- entityType: string,
258
- filters: Record<string, any> = {},
259
- loggedInUser: UserData,
260
- ): Promise<BaseEntity[]> {
261
- const entityData = await this.entityMasterService.getEntityData(
262
- entityType,
263
- loggedInUser,
264
- );
265
- const repoService = this.reflectionHelper.getRepoService(
266
- entityData.entity_data_class,
267
- );
268
-
269
- if (!repoService) {
270
- throw new Error(
271
- `Repository service not found for entityType: ${entityType}`,
272
- );
273
- }
274
-
275
- const result = await repoService.find({
276
- where: filters,
277
- });
278
-
279
- return result;
280
- }
281
-
282
- async updateEntity(
283
- entityData: BaseEntity,
284
- loggedInUser: UserData,
285
- appcode?: string,
286
- ) {
287
- const entityMaster = await this.entityMasterService.getEntityData(
288
- entityData.entity_type,
289
- loggedInUser,
290
- );
291
-
292
- const validationErrors =
293
- await this.entityValidationService.validateEntityData(
294
- entityData,
295
- entityMaster,
296
- loggedInUser,
297
- );
298
- console.log('Validation Errors For Update:', validationErrors); // Debug log
299
- if (validationErrors && validationErrors.length > 0) {
300
- return {
301
- success: false,
302
- message: 'Validation failed',
303
- errors: validationErrors,
304
- };
305
- }
306
-
307
- const repoService = this.reflectionHelper.getRepoService(
308
- entityMaster.entity_data_class,
309
- );
310
- if (!repoService) {
311
- throw new Error(
312
- `Repository service not found for entityType: ${entityData.entity_type}`,
313
- );
314
- }
315
-
316
- entityData.modified_date = new Date();
317
- if (loggedInUser) {
318
- entityData.modified_by = loggedInUser.id;
319
- if (!entityData.organization_id && entityData.entity_type !== 'ORG')
320
- entityData.organization_id = loggedInUser.organization_id;
321
- if (!entityData.enterprise_id)
322
- entityData.enterprise_id = loggedInUser.enterprise_id;
323
- }
324
- await repoService.update(entityData.id, entityData);
325
- return await repoService.findOne({ where: { id: entityData.id } });
326
- }
327
-
328
- async getFilterDataWithTabs(
329
- entityType: string,
330
- listType: string,
331
- filters: Record<string, any>,
332
- sortColumn: string | undefined,
333
- sortOrder: string | undefined,
334
- pageNumber: number,
335
- pageSize: number,
336
- tabColumn?: string,
337
- tabValue?: string,
338
- appcode?: string,
339
- ): Promise<EntityListData> {
340
- return await this.entityListService.getFilterDataWithTabs(
341
- entityType,
342
- listType,
343
- filters,
344
- sortColumn,
345
- sortOrder,
346
- pageNumber,
347
- pageSize,
348
- tabColumn,
349
- tabValue,
350
- appcode,
351
- );
352
- }
353
-
354
- async generateExcelReport(
355
- entityType: string,
356
- filterCriteria: Record<string, any>,
357
- listEntityType: string,
358
- displayType: string,
359
- sampleExport: boolean,
360
- loggedInUser: UserData,
361
- ): Promise<string | null> {
362
- let fileName: string;
363
- try {
364
- const excelData = new ExcelData();
365
- await this.populateExcelData(
366
- excelData,
367
- entityType,
368
- filterCriteria,
369
- listEntityType,
370
- displayType,
371
- sampleExport,
372
- loggedInUser,
373
- );
374
-
375
- const modifiedDate = new Date().toISOString().replace(/[-T:.Z]/g, '');
376
- const tempDir = path.join(__dirname, '../../temp');
377
- if (!fs.existsSync(tempDir)) {
378
- fs.mkdirSync(tempDir, { recursive: true });
379
- }
380
- fileName = path.join(tempDir, `export_${modifiedDate}.xlsx`);
381
- excelData.filePath = fileName;
382
- ExcelHelper.writeExcel(excelData);
383
- } catch (error) {
384
- throw error;
385
- }
386
- return fileName;
387
- }
388
-
389
- private async populateExcelData(
390
- excelData: ExcelData,
391
- entityType: string,
392
- filterCriteria: Record<string, any>,
393
- listEntityType: string,
394
- displayType: string,
395
- sampleExport: boolean,
396
- loggedInUser: UserData,
397
- ) {
398
- const entityTable =
399
- await this.entityTableService.findByEntityTypeAndListTypeAndDisplayType(
400
- entityType,
401
- listEntityType,
402
- displayType,
403
- loggedInUser.organization_id,
404
- );
405
- const sheet: ExcelsheetData = {
406
- sheetName: entityTable?.data_source || 'sheet',
407
- headers: [],
408
- rowList: [],
409
- };
410
-
411
- if (entityTable) {
412
- const entityTableColumnList =
413
- await this.entityTableColumnService.findByParentIdAndParentType(
414
- entityTable.id,
415
- entityTable.entity_type,
416
- loggedInUser.organization_id,
417
- );
418
-
419
- sheet.headers = entityTableColumnList.map((col) => col.name);
420
- const attributeList = entityTableColumnList.map(
421
- (col) => col.attribute_key,
422
- );
423
-
424
- let filteredList: any[] = [];
425
- if (!sampleExport) {
426
- filteredList = await this.entityListService.getFilteredList(
427
- entityTable,
428
- filterCriteria,
429
- undefined,
430
- undefined,
431
- undefined,
432
- undefined,
433
- );
434
- }
435
-
436
- sheet.rowList = filteredList.map((item) =>
437
- attributeList.map((attr) =>
438
- item[attr] !== undefined ? item[attr] : null,
439
- ),
440
- );
441
- excelData.addSheet(sheet);
442
- }
443
- }
444
-
445
- private async getMaxSequenceNumber(
446
- entityType: string,
447
- parentId: number,
448
- parentType: string,
449
- loggedInUser: UserData,
450
- ): Promise<number> {
451
- let tableName: string;
452
- if (ENTITYTYPE_ENTITYMASTER === entityType) {
453
- tableName = 'frm_entity_master';
454
- } else {
455
- const entityMaster = await this.entityMasterService.getEntityData(
456
- entityType,
457
- loggedInUser,
458
- );
459
- tableName = entityMaster.db_table_name;
460
- }
461
- return await this.entityListService.getMaxSequenceNumber(
462
- tableName,
463
- parentType,
464
- parentId,
465
- );
466
- }
467
-
468
- async getSingleResolvedData(
469
- loggedInUser: UserData,
470
- entityData: any,
471
- entityType: string,
472
- ): Promise<any> {
473
- return this.resolverService.getResolvedData(
474
- loggedInUser,
475
- entityData,
476
- entityType,
477
- );
478
- }
479
-
480
- async getResolvedEntityData(
481
- entityType: string,
482
- entityId: number,
483
- loggedInUser: UserData,
484
- ): Promise<any> {
485
- const entityData = await this.entityMasterService.getEntityData(
486
- entityType,
487
- loggedInUser,
488
- );
489
-
490
- const repoService = this.reflectionHelper.getRepoService(
491
- entityData.entity_data_class,
492
- );
493
-
494
- if (!repoService) {
495
- throw new Error(
496
- `Repository service not found for entityType: ${entityType}`,
497
- );
498
- }
499
- const data = await repoService.findOne({ where: { id: entityId } });
500
-
501
- return this.resolverService.getResolvedData(loggedInUser, data, entityType);
502
- }
503
-
504
- async getResolvedEntityDataByDataSource(
505
- entityType: string,
506
- entityId: number,
507
- loggedInUser: UserData,
508
- ): Promise<any> {
509
- const entityData = await this.entityMasterService.getEntityData(
510
- entityType,
511
- loggedInUser,
512
- );
513
-
514
- if (!entityData.data_source) {
515
- throw new Error('Database table name is missing in entity master.');
516
- }
517
-
518
- const data = await this.reflectionHelper.getEntityData(
519
- entityId,
520
- entityData.data_source,
521
- );
522
-
523
- return this.resolverService.getResolvedData(loggedInUser, data, entityType);
524
- }
525
- }
1
+ import { EntityService } from './entity.service';
2
+ import {
3
+ BadRequestException,
4
+ forwardRef,
5
+ Inject,
6
+ Injectable,
7
+ NotFoundException,
8
+ } from '@nestjs/common';
9
+ import { UserData } from '../../user/entity/user.entity';
10
+ import { EntityMasterService } from './entity-master.service';
11
+ import { ReflectionHelper } from '../../../utils/service/reflection-helper.service';
12
+ import { BaseEntity } from '../entity/base-entity.entity';
13
+ import { LoggingService } from '../../../utils/service/loggingUtil.service';
14
+ import { EntityListData } from '../dto/entity-list-data.dto';
15
+ import { EntityListService } from './entity-list.service';
16
+ import { EntityManager } from 'typeorm';
17
+ import { ExcelData } from '../../../utils/dto/excel-data.dto';
18
+ import * as fs from 'fs';
19
+ import * as path from 'path';
20
+ import { ExcelHelper } from '../../../utils/service/excel-helper.service';
21
+ import { ExcelsheetData } from '../../../utils/dto/excelsheet-data.dto';
22
+ import { EntityTableService } from './entity-table.service';
23
+ import { EntityTableColumnService } from './entity-table-column.service';
24
+ import {
25
+ ENTITYTYPE_ENTITYMASTER,
26
+ STATUS_ACTIVE,
27
+ } from '../../../constant/global.constant';
28
+ import { EntityValidationService } from './entity-validation.service';
29
+ import { AttributeMasterService } from './attribute-master.service';
30
+ import { ResolverService } from './resolver.service';
31
+
32
+ @Injectable()
33
+ export class EntityServiceImpl implements EntityService<BaseEntity> {
34
+ @Inject() protected readonly entityMasterService: EntityMasterService;
35
+ @Inject()
36
+ protected readonly entityTableColumnService: EntityTableColumnService;
37
+ @Inject() protected readonly entityTableService: EntityTableService;
38
+ @Inject() protected readonly reflectionHelper: ReflectionHelper;
39
+ @Inject() protected readonly entityListService: EntityListService;
40
+ @Inject() protected readonly loggingService: LoggingService;
41
+ @Inject()
42
+ protected readonly entityValidationService: EntityValidationService;
43
+ protected readonly attributeMasterService: AttributeMasterService;
44
+ @Inject(forwardRef(() => ResolverService))
45
+ protected readonly resolverService: ResolverService;
46
+
47
+ async createEntity(
48
+ entityData: BaseEntity,
49
+ loggedInUser: UserData | null,
50
+ manager?: EntityManager | null,
51
+ appcode?: string,
52
+ ) {
53
+ if (!entityData.entity_type) {
54
+ throw new BadRequestException(`EntityType is missing`);
55
+ }
56
+ const entityMaster = await this.entityMasterService.getEntityData(
57
+ entityData.entity_type,
58
+ loggedInUser,
59
+ );
60
+
61
+ const validationErrors =
62
+ await this.entityValidationService.validateEntityData(
63
+ entityData,
64
+ entityMaster,
65
+ loggedInUser,
66
+ );
67
+ console.log('Validation Errors:', validationErrors); // Debug log
68
+ if (validationErrors && validationErrors.length > 0) {
69
+ return {
70
+ success: false,
71
+ message: 'Validation failed',
72
+ errors: validationErrors,
73
+ };
74
+ }
75
+
76
+ const repo = manager
77
+ ? manager.getRepository(entityMaster.entity_data_class) // <-- Use transaction-safe repo
78
+ : this.reflectionHelper.getRepoService(entityMaster.entity_data_class);
79
+
80
+ if (!repo) {
81
+ throw new Error(
82
+ `Repository service not found for entityType: ${entityData.entity_type}`,
83
+ );
84
+ }
85
+
86
+ if (!entityData.code && loggedInUser) {
87
+ let maxSeqNo = await this.getMaxSequenceNumber(
88
+ entityData.entity_type,
89
+ entityData.parent_id,
90
+ entityData.parent_type,
91
+ loggedInUser,
92
+ );
93
+ maxSeqNo = Number(maxSeqNo) + 1;
94
+ entityData.code = entityData.entity_type + maxSeqNo;
95
+ }
96
+
97
+ // const resolveStatus = await this.listMasterService.getResolvedListCode(
98
+ // STATUS_ACTIVE,
99
+ // loggedInUser?.organization_id || 0,
100
+ // );
101
+
102
+ const statusList = await repo.query(
103
+ `SELECT id
104
+ FROM frm_list_master_items
105
+ WHERE code = ?
106
+ AND organization_id = ?`,
107
+ [STATUS_ACTIVE, loggedInUser?.organization_id || -1],
108
+ );
109
+
110
+ console.log('Status List:', statusList); // Debug log
111
+ console.log(
112
+ `status_code,${STATUS_ACTIVE},statusList, ${loggedInUser?.organization_id}`,
113
+ ); // Debug log
114
+
115
+ entityData.created_date = new Date();
116
+ if (loggedInUser) {
117
+ entityData.created_by = loggedInUser.id;
118
+ if (!entityData.organization_id)
119
+ entityData.organization_id = loggedInUser.organization_id;
120
+ if (!entityData.enterprise_id)
121
+ entityData.enterprise_id = loggedInUser.enterprise_id;
122
+ if (!entityData.level_type)
123
+ entityData.level_type = loggedInUser.level_type;
124
+ if (!entityData.level_id) entityData.level_id = loggedInUser.level_id;
125
+ if (!entityData.status) entityData.status = statusList[0].id;
126
+ }
127
+
128
+ let savedData = repo.save(entityData);
129
+
130
+ return savedData;
131
+ }
132
+
133
+ async deleteEntity(entityType: string, entityId: number, loggedInUser) {
134
+ const entityMaster = await this.entityMasterService.getEntityData(
135
+ entityType,
136
+ loggedInUser,
137
+ );
138
+
139
+ const repoService = this.reflectionHelper.getRepoService(
140
+ entityMaster.entity_data_class,
141
+ );
142
+ if (!repoService) {
143
+ throw new Error(
144
+ `Repository service not found for entityType: ${entityType}`,
145
+ );
146
+ }
147
+
148
+ const entityData = await repoService.findOne({ where: { id: entityId } });
149
+
150
+ if (!entityData) {
151
+ throw new Error(`Entity not found for entityType: ${entityType}`);
152
+ }
153
+
154
+ await repoService.delete(entityId);
155
+
156
+ return {
157
+ success: true,
158
+ message: `Entity with id ${entityId} deleted successfully.`,
159
+ };
160
+ }
161
+
162
+ async findByCode(
163
+ entityType: string,
164
+ code: string,
165
+ loggedInUser,
166
+ ): Promise<BaseEntity> {
167
+ const entityData = await this.entityMasterService.getEntityData(
168
+ entityType,
169
+ loggedInUser,
170
+ );
171
+
172
+ const repoService = this.reflectionHelper.getRepoService(
173
+ entityData.entity_data_class,
174
+ );
175
+ if (!repoService) {
176
+ throw new Error(
177
+ `Repository service not found for entityType: ${entityType}`,
178
+ );
179
+ }
180
+ const result = await repoService?.findOne({ where: { code: code } });
181
+
182
+ if (!result) {
183
+ throw new Error(`Entity not found for entityType: ${entityType}`);
184
+ }
185
+ return result;
186
+ }
187
+
188
+ async getEntityData(
189
+ entityType: string,
190
+ id: number,
191
+ loggedInUser,
192
+ ): Promise<any> {
193
+ const entityData = await this.entityMasterService.getEntityData(
194
+ entityType,
195
+ loggedInUser,
196
+ );
197
+
198
+ const repoService = this.reflectionHelper.getRepoService(
199
+ entityData.entity_data_class,
200
+ );
201
+ if (!repoService) {
202
+ throw new Error(
203
+ `Repository service not found for entityType: ${entityType}`,
204
+ );
205
+ }
206
+ return await repoService.findOne({ where: { id: id } });
207
+ }
208
+
209
+ async getEntityDataAll(
210
+ entityType: string,
211
+ type: {},
212
+ loggedInUser: UserData,
213
+ ): Promise<BaseEntity[] | null> {
214
+ const entityData = await this.entityMasterService.getEntityData(
215
+ entityType,
216
+ loggedInUser,
217
+ );
218
+
219
+ const repoService = this.reflectionHelper.getRepoService(
220
+ entityData.entity_data_class,
221
+ );
222
+ if (!repoService) {
223
+ throw new Error(
224
+ `Repository service not found for entityType: ${entityType}`,
225
+ );
226
+ }
227
+ return await repoService.find({ where: type });
228
+ }
229
+
230
+ async getEntityDataByCode(
231
+ entityType: string,
232
+ code: string,
233
+ loggedInUser: UserData,
234
+ ): Promise<BaseEntity | null> {
235
+ const entityData = await this.entityMasterService.getEntityData(
236
+ entityType,
237
+ loggedInUser,
238
+ );
239
+
240
+ const repoService = this.reflectionHelper.getRepoService(
241
+ entityData.entity_data_class,
242
+ );
243
+ if (!repoService) {
244
+ throw new BadRequestException(
245
+ `Repository service not found for entityType: ${entityType}`,
246
+ );
247
+ }
248
+ const data = await repoService.findOne({ where: { code: code } });
249
+
250
+ if (!data) {
251
+ throw new NotFoundException(`Data not found for Code: ${code}`);
252
+ }
253
+ return data;
254
+ }
255
+
256
+ async getEntityList(
257
+ entityType: string,
258
+ filters: Record<string, any> = {},
259
+ loggedInUser: UserData,
260
+ ): Promise<BaseEntity[]> {
261
+ const entityData = await this.entityMasterService.getEntityData(
262
+ entityType,
263
+ loggedInUser,
264
+ );
265
+ const repoService = this.reflectionHelper.getRepoService(
266
+ entityData.entity_data_class,
267
+ );
268
+
269
+ if (!repoService) {
270
+ throw new Error(
271
+ `Repository service not found for entityType: ${entityType}`,
272
+ );
273
+ }
274
+
275
+ const result = await repoService.find({
276
+ where: filters,
277
+ });
278
+
279
+ return result;
280
+ }
281
+
282
+ async updateEntity(
283
+ entityData: BaseEntity,
284
+ loggedInUser: UserData,
285
+ appcode?: string,
286
+ ) {
287
+ const entityMaster = await this.entityMasterService.getEntityData(
288
+ entityData.entity_type,
289
+ loggedInUser,
290
+ );
291
+
292
+ const validationErrors =
293
+ await this.entityValidationService.validateEntityData(
294
+ entityData,
295
+ entityMaster,
296
+ loggedInUser,
297
+ );
298
+ console.log('Validation Errors For Update:', validationErrors); // Debug log
299
+ if (validationErrors && validationErrors.length > 0) {
300
+ return {
301
+ success: false,
302
+ message: 'Validation failed',
303
+ errors: validationErrors,
304
+ };
305
+ }
306
+
307
+ const repoService = this.reflectionHelper.getRepoService(
308
+ entityMaster.entity_data_class,
309
+ );
310
+ if (!repoService) {
311
+ throw new Error(
312
+ `Repository service not found for entityType: ${entityData.entity_type}`,
313
+ );
314
+ }
315
+
316
+ entityData.modified_date = new Date();
317
+ if (loggedInUser) {
318
+ entityData.modified_by = loggedInUser.id;
319
+ if (!entityData.organization_id && entityData.entity_type !== 'ORG')
320
+ entityData.organization_id = loggedInUser.organization_id;
321
+ if (!entityData.enterprise_id)
322
+ entityData.enterprise_id = loggedInUser.enterprise_id;
323
+ }
324
+ await repoService.update(entityData.id, entityData);
325
+ return await repoService.findOne({ where: { id: entityData.id } });
326
+ }
327
+
328
+ async getFilterDataWithTabs(
329
+ entityType: string,
330
+ listType: string,
331
+ filters: Record<string, any>,
332
+ sortColumn: string | undefined,
333
+ sortOrder: string | undefined,
334
+ pageNumber: number,
335
+ pageSize: number,
336
+ tabColumn?: string,
337
+ tabValue?: string,
338
+ appcode?: string,
339
+ ): Promise<EntityListData> {
340
+ return await this.entityListService.getFilterDataWithTabs(
341
+ entityType,
342
+ listType,
343
+ filters,
344
+ sortColumn,
345
+ sortOrder,
346
+ pageNumber,
347
+ pageSize,
348
+ tabColumn,
349
+ tabValue,
350
+ appcode,
351
+ );
352
+ }
353
+
354
+ async generateExcelReport(
355
+ entityType: string,
356
+ filterCriteria: Record<string, any>,
357
+ listEntityType: string,
358
+ displayType: string,
359
+ sampleExport: boolean,
360
+ loggedInUser: UserData,
361
+ ): Promise<string | null> {
362
+ let fileName: string;
363
+ try {
364
+ const excelData = new ExcelData();
365
+ await this.populateExcelData(
366
+ excelData,
367
+ entityType,
368
+ filterCriteria,
369
+ listEntityType,
370
+ displayType,
371
+ sampleExport,
372
+ loggedInUser,
373
+ );
374
+
375
+ const modifiedDate = new Date().toISOString().replace(/[-T:.Z]/g, '');
376
+ const tempDir = path.join(__dirname, '../../temp');
377
+ if (!fs.existsSync(tempDir)) {
378
+ fs.mkdirSync(tempDir, { recursive: true });
379
+ }
380
+ fileName = path.join(tempDir, `export_${modifiedDate}.xlsx`);
381
+ excelData.filePath = fileName;
382
+ ExcelHelper.writeExcel(excelData);
383
+ } catch (error) {
384
+ throw error;
385
+ }
386
+ return fileName;
387
+ }
388
+
389
+ private async populateExcelData(
390
+ excelData: ExcelData,
391
+ entityType: string,
392
+ filterCriteria: Record<string, any>,
393
+ listEntityType: string,
394
+ displayType: string,
395
+ sampleExport: boolean,
396
+ loggedInUser: UserData,
397
+ ) {
398
+ const entityTable =
399
+ await this.entityTableService.findByEntityTypeAndListTypeAndDisplayType(
400
+ entityType,
401
+ listEntityType,
402
+ displayType,
403
+ loggedInUser.organization_id,
404
+ );
405
+ const sheet: ExcelsheetData = {
406
+ sheetName: entityTable?.data_source || 'sheet',
407
+ headers: [],
408
+ rowList: [],
409
+ };
410
+
411
+ if (entityTable) {
412
+ const entityTableColumnList =
413
+ await this.entityTableColumnService.findByParentIdAndParentType(
414
+ entityTable.id,
415
+ entityTable.entity_type,
416
+ loggedInUser.organization_id,
417
+ );
418
+
419
+ sheet.headers = entityTableColumnList.map((col) => col.name);
420
+ const attributeList = entityTableColumnList.map(
421
+ (col) => col.attribute_key,
422
+ );
423
+
424
+ let filteredList: any[] = [];
425
+ if (!sampleExport) {
426
+ filteredList = await this.entityListService.getFilteredList(
427
+ entityTable,
428
+ filterCriteria,
429
+ undefined,
430
+ undefined,
431
+ undefined,
432
+ undefined,
433
+ );
434
+ }
435
+
436
+ sheet.rowList = filteredList.map((item) =>
437
+ attributeList.map((attr) =>
438
+ item[attr] !== undefined ? item[attr] : null,
439
+ ),
440
+ );
441
+ excelData.addSheet(sheet);
442
+ }
443
+ }
444
+
445
+ private async getMaxSequenceNumber(
446
+ entityType: string,
447
+ parentId: number,
448
+ parentType: string,
449
+ loggedInUser: UserData,
450
+ ): Promise<number> {
451
+ let tableName: string;
452
+ if (ENTITYTYPE_ENTITYMASTER === entityType) {
453
+ tableName = 'frm_entity_master';
454
+ } else {
455
+ const entityMaster = await this.entityMasterService.getEntityData(
456
+ entityType,
457
+ loggedInUser,
458
+ );
459
+ tableName = entityMaster.db_table_name;
460
+ }
461
+ return await this.entityListService.getMaxSequenceNumber(
462
+ tableName,
463
+ parentType,
464
+ parentId,
465
+ );
466
+ }
467
+
468
+ async getSingleResolvedData(
469
+ loggedInUser: UserData,
470
+ entityData: any,
471
+ entityType: string,
472
+ ): Promise<any> {
473
+ return this.resolverService.getResolvedData(
474
+ loggedInUser,
475
+ entityData,
476
+ entityType,
477
+ );
478
+ }
479
+
480
+ async getResolvedEntityData(
481
+ entityType: string,
482
+ entityId: number,
483
+ loggedInUser: UserData,
484
+ ): Promise<any> {
485
+ const entityData = await this.entityMasterService.getEntityData(
486
+ entityType,
487
+ loggedInUser,
488
+ );
489
+
490
+ const repoService = this.reflectionHelper.getRepoService(
491
+ entityData.entity_data_class,
492
+ );
493
+
494
+ if (!repoService) {
495
+ throw new Error(
496
+ `Repository service not found for entityType: ${entityType}`,
497
+ );
498
+ }
499
+ const data = await repoService.findOne({ where: { id: entityId } });
500
+
501
+ return this.resolverService.getResolvedData(loggedInUser, data, entityType);
502
+ }
503
+
504
+ async getResolvedEntityDataByDataSource(
505
+ entityType: string,
506
+ entityId: number,
507
+ loggedInUser: UserData,
508
+ ): Promise<any> {
509
+ const entityData = await this.entityMasterService.getEntityData(
510
+ entityType,
511
+ loggedInUser,
512
+ );
513
+
514
+ if (!entityData.data_source) {
515
+ throw new Error('Database table name is missing in entity master.');
516
+ }
517
+
518
+ const data = await this.reflectionHelper.getEntityData(
519
+ entityId,
520
+ entityData.data_source,
521
+ );
522
+
523
+ return this.resolverService.getResolvedData(loggedInUser, data, entityType);
524
+ }
525
+ }