rez_core 5.0.155 → 5.0.156

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 (411) hide show
  1. package/.claude/settings.local.json +26 -0
  2. package/.idea/250218_nodejs_core.iml +8 -11
  3. package/.idea/codeStyles/Project.xml +58 -58
  4. package/.idea/codeStyles/codeStyleConfig.xml +4 -4
  5. package/.idea/copilot.data.migration.agent.xml +6 -0
  6. package/.idea/copilot.data.migration.ask.xml +6 -0
  7. package/.idea/copilot.data.migration.ask2agent.xml +6 -0
  8. package/.idea/copilot.data.migration.edit.xml +6 -0
  9. package/.idea/inspectionProfiles/Project_Default.xml +1 -1
  10. package/.idea/misc.xml +6 -0
  11. package/.idea/modules.xml +7 -7
  12. package/.idea/prettier.xml +5 -5
  13. package/.idea/vcs.xml +5 -5
  14. package/.prettierrc +3 -3
  15. package/README.md +99 -99
  16. package/dist/module/auth/guards/role.guard.js +3 -3
  17. package/dist/module/filter/service/filter.service.js +20 -20
  18. package/dist/module/integration/examples/usage.example.js +9 -9
  19. package/dist/module/meta/entity.module.js +2 -0
  20. package/dist/module/meta/entity.module.js.map +1 -1
  21. package/dist/module/meta/repository/attribute-master.repository.js +8 -8
  22. package/dist/module/meta/repository/entity-relation.repository.d.ts +7 -0
  23. package/dist/module/meta/repository/entity-relation.repository.js +39 -0
  24. package/dist/module/meta/repository/entity-relation.repository.js.map +1 -0
  25. package/dist/module/meta/service/entity-dynamic.service.js +15 -15
  26. package/dist/module/meta/service/entity-list.service.js +2 -2
  27. package/dist/module/meta/service/entity-relation.service.d.ts +4 -1
  28. package/dist/module/meta/service/entity-relation.service.js +20 -14
  29. package/dist/module/meta/service/entity-relation.service.js.map +1 -1
  30. package/dist/module/meta/service/media-data.service.js +6 -6
  31. package/dist/module/meta/service/resolver.service.js +15 -15
  32. package/dist/module/module/repository/menu.repository.js +4 -4
  33. package/dist/module/notification/service/notification.service.js +6 -6
  34. package/dist/module/user/controller/login.controller.js +18 -18
  35. package/dist/module/workflow/repository/action.repository.js +2 -2
  36. package/dist/module/workflow/repository/stage.repository.js +8 -8
  37. package/dist/module/workflow/service/action-template-mapping.service.js +2 -2
  38. package/dist/module/workflow/service/action.service.js +5 -5
  39. package/dist/module/workflow/service/entity-modification.service.js +2 -2
  40. package/dist/module/workflow/service/task.service.js +8 -8
  41. package/dist/module/workflow-automation/service/schedule-handler.service.js +9 -9
  42. package/dist/tsconfig.build.tsbuildinfo +1 -1
  43. package/dist/utils/service/reflection-helper.service.js +2 -2
  44. package/docs/modules/event-driven-integration-design.md +91 -91
  45. package/docs/modules/integration.md +250 -250
  46. package/eslint.config.mjs +34 -34
  47. package/nest-cli.json +14 -14
  48. package/package.json +125 -125
  49. package/server.log +850 -0
  50. package/src/app.controller.ts +12 -12
  51. package/src/app.module.ts +68 -68
  52. package/src/app.service.ts +8 -8
  53. package/src/config/bull.config.ts +69 -69
  54. package/src/config/config.module.ts +17 -17
  55. package/src/config/database.config.ts +48 -48
  56. package/src/constant/global.constant.ts +67 -67
  57. package/src/core.module.ts +94 -94
  58. package/src/decorators/roles.decorator.ts +7 -7
  59. package/src/dtos/response.dto.ts +6 -6
  60. package/src/dtos/response.ts +5 -5
  61. package/src/index.ts +1 -1
  62. package/src/module/auth/auth.module.ts +49 -49
  63. package/src/module/auth/controller/auth.controller.ts +28 -28
  64. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  65. package/src/module/auth/guards/jwt.guard.ts +22 -22
  66. package/src/module/auth/guards/role.guard.ts +68 -68
  67. package/src/module/auth/services/auth.service.ts +56 -56
  68. package/src/module/auth/services/jwt.service.ts +11 -11
  69. package/src/module/auth/strategies/google.strategy.ts +54 -54
  70. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  71. package/src/module/auth/strategies/local.strategy.ts +13 -13
  72. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  73. package/src/module/dashboard/dashboard.module.ts +21 -21
  74. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  75. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  76. package/src/module/dashboard/repository/dashboard.repository.ts +51 -51
  77. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  78. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  79. package/src/module/enterprise/enterprise.module.ts +30 -30
  80. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  81. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  82. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  83. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  84. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  85. package/src/module/enterprise/repository/school.repository.ts +272 -272
  86. package/src/module/enterprise/service/brand.service.ts +5 -5
  87. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  88. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  89. package/src/module/enterprise/service/organization.service.ts +145 -145
  90. package/src/module/entity_json/controller/entity_json.controller.ts +47 -47
  91. package/src/module/entity_json/entity/entityJson.entity.ts +39 -39
  92. package/src/module/entity_json/entity_json.module.ts +18 -18
  93. package/src/module/entity_json/service/entityJson.repository.ts +37 -37
  94. package/src/module/entity_json/service/entity_json.service.ts +242 -242
  95. package/src/module/export/controller/export.controller.ts +83 -83
  96. package/src/module/export/export.module.ts +14 -14
  97. package/src/module/export/service/export.service.ts +105 -105
  98. package/src/module/filter/controller/filter.controller.ts +84 -84
  99. package/src/module/filter/dto/filter-request.dto.ts +39 -39
  100. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  101. package/src/module/filter/entity/saved-filter-master.entity.ts +32 -32
  102. package/src/module/filter/filter.module.ts +33 -33
  103. package/src/module/filter/repository/saved-filter.repository.ts +200 -200
  104. package/src/module/filter/repository/saved.filter-detail.repository.ts +19 -19
  105. package/src/module/filter/service/filter-evaluator.service.ts +82 -82
  106. package/src/module/filter/service/filter.service.ts +1317 -1317
  107. package/src/module/filter/service/saved-filter.service.ts +164 -164
  108. package/src/module/ics/controller/ics.controller.ts +21 -21
  109. package/src/module/ics/dto/ics.dto.ts +55 -55
  110. package/src/module/ics/ics.module.ts +13 -13
  111. package/src/module/ics/service/ics.service.ts +57 -57
  112. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  113. package/src/module/integration/controller/integration.controller.ts +662 -662
  114. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  115. package/src/module/integration/dto/create-config.dto.ts +526 -526
  116. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  117. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  118. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  119. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  120. package/src/module/integration/examples/usage.example.ts +338 -338
  121. package/src/module/integration/factories/base.factory.ts +7 -7
  122. package/src/module/integration/factories/email.factory.ts +49 -49
  123. package/src/module/integration/factories/integration.factory.ts +121 -121
  124. package/src/module/integration/factories/sms.factory.ts +51 -51
  125. package/src/module/integration/factories/telephone.factory.ts +41 -41
  126. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  127. package/src/module/integration/integration.module.ts +110 -110
  128. package/src/module/integration/service/calendar-event.service.ts +118 -118
  129. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  130. package/src/module/integration/service/integration-queue.service.ts +229 -229
  131. package/src/module/integration/service/integration.service.ts +2634 -2634
  132. package/src/module/integration/service/oauth.service.ts +224 -224
  133. package/src/module/integration/service/wrapper.service.ts +753 -753
  134. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  135. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  136. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  137. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  138. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  139. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  140. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  141. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  142. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  143. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  144. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  145. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  146. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  147. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  148. package/src/module/layout/controller/layout.controller.ts +47 -47
  149. package/src/module/layout/entity/header-items.entity.ts +28 -28
  150. package/src/module/layout/entity/header-section.entity.ts +19 -19
  151. package/src/module/layout/layout.module.ts +21 -21
  152. package/src/module/layout/repository/header-items.repository.ts +18 -18
  153. package/src/module/layout/repository/header-section.repository.ts +22 -22
  154. package/src/module/layout/service/header-section.service.ts +25 -25
  155. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  156. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  157. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  158. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  159. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  160. package/src/module/lead/controller/lead.controller.ts +30 -30
  161. package/src/module/lead/lead.module.ts +14 -14
  162. package/src/module/lead/repository/lead.repository.ts +41 -41
  163. package/src/module/lead/service/lead.service.ts +54 -54
  164. package/src/module/linked_attributes/controller/linked_attributes.controller.ts +37 -37
  165. package/src/module/linked_attributes/entity/linked_attribute.entity.ts +51 -51
  166. package/src/module/linked_attributes/linked_attributes.module.ts +16 -16
  167. package/src/module/linked_attributes/repository/linked_attribute.repository.ts +12 -12
  168. package/src/module/linked_attributes/service/linked_attributes.service.ts +75 -75
  169. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  170. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  171. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  172. package/src/module/listmaster/listmaster.module.ts +46 -46
  173. package/src/module/listmaster/repository/list-master-items.repository.ts +173 -173
  174. package/src/module/listmaster/repository/list-master.repository.ts +56 -56
  175. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  176. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  177. package/src/module/listmaster/service/list-master-item.service.ts +281 -281
  178. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  179. package/src/module/listmaster/service/list-master.service.ts +535 -535
  180. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  181. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  182. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  183. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  184. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  185. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  186. package/src/module/mapper/mapper.module.ts +35 -35
  187. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  188. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  189. package/src/module/mapper/repository/mapper.repository.ts +32 -32
  190. package/src/module/mapper/service/field-mapper.service.ts +269 -269
  191. package/src/module/mapper/service/mapper.service.ts +81 -81
  192. package/src/module/master/controller/master.controller.ts +74 -74
  193. package/src/module/master/service/master.service.ts +483 -483
  194. package/src/module/meta/controller/app-master.controller.ts +38 -38
  195. package/src/module/meta/controller/attribute-master.controller.ts +84 -84
  196. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  197. package/src/module/meta/controller/entity-master.controller.ts +41 -41
  198. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  199. package/src/module/meta/controller/entity.controller.ts +342 -342
  200. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  201. package/src/module/meta/controller/media.controller.ts +135 -135
  202. package/src/module/meta/controller/meta.controller.ts +96 -96
  203. package/src/module/meta/controller/view-master.controller.ts +86 -86
  204. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  205. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  206. package/src/module/meta/dto/entity-table.dto.ts +12 -12
  207. package/src/module/meta/entity/app-master.entity.ts +37 -37
  208. package/src/module/meta/entity/attribute-master.entity.ts +92 -92
  209. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  210. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  211. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  212. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  213. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  214. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  215. package/src/module/meta/entity/media-data.entity.ts +32 -32
  216. package/src/module/meta/entity/preference.entity.ts +62 -62
  217. package/src/module/meta/entity/view-master.entity.ts +41 -41
  218. package/src/module/meta/entity.module.ts +168 -166
  219. package/src/module/meta/repository/app-master.repository.ts +20 -20
  220. package/src/module/meta/repository/attribute-master.repository.ts +156 -156
  221. package/src/module/meta/repository/entity-attribute-update.repository.ts +48 -48
  222. package/src/module/meta/repository/entity-master.repository.ts +110 -110
  223. package/src/module/meta/repository/entity-relation.repository.ts +23 -0
  224. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  225. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  226. package/src/module/meta/repository/media-data.repository.ts +50 -50
  227. package/src/module/meta/repository/preference.repository.ts +20 -20
  228. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  229. package/src/module/meta/repository/view-master.repository.ts +42 -42
  230. package/src/module/meta/service/app-master.service.ts +37 -37
  231. package/src/module/meta/service/attribute-master.service.ts +130 -130
  232. package/src/module/meta/service/common.service.ts +9 -9
  233. package/src/module/meta/service/entity-attribute-update.service.ts +26 -26
  234. package/src/module/meta/service/entity-dynamic.service.ts +818 -818
  235. package/src/module/meta/service/entity-list.service.ts +201 -201
  236. package/src/module/meta/service/entity-master.service.ts +171 -171
  237. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  238. package/src/module/meta/service/entity-relation.service.ts +74 -69
  239. package/src/module/meta/service/entity-service-impl.service.ts +439 -439
  240. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  241. package/src/module/meta/service/entity-table.service.ts +157 -157
  242. package/src/module/meta/service/entity-validation.service.ts +187 -187
  243. package/src/module/meta/service/entity.service.ts +59 -59
  244. package/src/module/meta/service/field-group.service.ts +103 -103
  245. package/src/module/meta/service/media-data.service.ts +591 -591
  246. package/src/module/meta/service/populate-meta.service.ts +222 -222
  247. package/src/module/meta/service/preference.service.ts +16 -16
  248. package/src/module/meta/service/resolver.service.ts +291 -291
  249. package/src/module/meta/service/section-master.service.ts +104 -104
  250. package/src/module/meta/service/update-form-json.service.ts +22 -22
  251. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  252. package/src/module/meta/service/view-master.service.ts +127 -127
  253. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  254. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  255. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  256. package/src/module/module/controller/menu.controller.ts +15 -15
  257. package/src/module/module/controller/module-access.controller.ts +134 -134
  258. package/src/module/module/entity/menu.entity.ts +43 -43
  259. package/src/module/module/entity/module-access.entity.ts +25 -25
  260. package/src/module/module/entity/module-action.entity.ts +17 -17
  261. package/src/module/module/entity/module.entity.ts +52 -52
  262. package/src/module/module/module.module.ts +42 -42
  263. package/src/module/module/repository/menu.repository.ts +186 -186
  264. package/src/module/module/repository/module-access.repository.ts +344 -344
  265. package/src/module/module/service/menu.service.ts +82 -82
  266. package/src/module/module/service/module-access.service.ts +199 -199
  267. package/src/module/notification/controller/notification.controller.ts +58 -58
  268. package/src/module/notification/controller/otp.controller.ts +117 -117
  269. package/src/module/notification/entity/notification.entity.ts +26 -26
  270. package/src/module/notification/entity/otp.entity.ts +28 -28
  271. package/src/module/notification/firebase-admin.config.ts +22 -22
  272. package/src/module/notification/notification.module.ts +69 -69
  273. package/src/module/notification/repository/otp.repository.ts +27 -27
  274. package/src/module/notification/service/email.service.ts +127 -127
  275. package/src/module/notification/service/notification.service.ts +164 -164
  276. package/src/module/notification/service/otp.service.ts +133 -133
  277. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  278. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  279. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  280. package/src/module/third-party-module/third-party.module.ts +12 -12
  281. package/src/module/user/controller/login.controller.ts +198 -198
  282. package/src/module/user/controller/user.controller.ts +40 -40
  283. package/src/module/user/dto/create-user.dto.ts +62 -62
  284. package/src/module/user/dto/update-user.dto.ts +4 -4
  285. package/src/module/user/entity/role.entity.ts +33 -33
  286. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  287. package/src/module/user/entity/user-session.entity.ts +73 -73
  288. package/src/module/user/entity/user.entity.ts +59 -59
  289. package/src/module/user/repository/role.repository.ts +96 -96
  290. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  291. package/src/module/user/repository/user.repository.ts +50 -50
  292. package/src/module/user/repository/userSession.repository.ts +33 -33
  293. package/src/module/user/service/login.service.ts +326 -326
  294. package/src/module/user/service/role.service.ts +197 -197
  295. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  296. package/src/module/user/service/user-session.service.ts +200 -200
  297. package/src/module/user/service/user.service.ts +368 -368
  298. package/src/module/user/user.module.ts +65 -65
  299. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  300. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  301. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  302. package/src/module/workflow/controller/action.controller.ts +111 -111
  303. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  304. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  305. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  306. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  307. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  308. package/src/module/workflow/controller/stage.controller.ts +50 -50
  309. package/src/module/workflow/controller/task.controller.ts +77 -77
  310. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  311. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  312. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  313. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  314. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  315. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  316. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  317. package/src/module/workflow/entity/action.entity.ts +53 -53
  318. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  319. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  320. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  321. package/src/module/workflow/entity/form.entity.ts +25 -25
  322. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  323. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  324. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  325. package/src/module/workflow/entity/stage.entity.ts +20 -20
  326. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  327. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  328. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  329. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  330. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  331. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  332. package/src/module/workflow/repository/action-data.repository.ts +346 -346
  333. package/src/module/workflow/repository/action.repository.ts +339 -339
  334. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  335. package/src/module/workflow/repository/comm-template.repository.ts +157 -157
  336. package/src/module/workflow/repository/form-master.repository.ts +50 -50
  337. package/src/module/workflow/repository/stage-group.repository.ts +186 -186
  338. package/src/module/workflow/repository/stage-movement.repository.ts +257 -257
  339. package/src/module/workflow/repository/stage.repository.ts +160 -160
  340. package/src/module/workflow/repository/task.repository.ts +151 -151
  341. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  342. package/src/module/workflow/service/action-category.service.ts +33 -33
  343. package/src/module/workflow/service/action-data.service.ts +62 -62
  344. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  345. package/src/module/workflow/service/action-template-mapping.service.ts +140 -140
  346. package/src/module/workflow/service/action.service.ts +302 -302
  347. package/src/module/workflow/service/activity-log.service.ts +107 -107
  348. package/src/module/workflow/service/comm-template.service.ts +180 -180
  349. package/src/module/workflow/service/entity-modification.service.ts +61 -61
  350. package/src/module/workflow/service/form-master.service.ts +35 -35
  351. package/src/module/workflow/service/populate-workflow.service.ts +320 -320
  352. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  353. package/src/module/workflow/service/stage-group.service.ts +344 -344
  354. package/src/module/workflow/service/stage.service.ts +207 -207
  355. package/src/module/workflow/service/task.service.ts +550 -550
  356. package/src/module/workflow/service/workflow-list-master.service.ts +68 -68
  357. package/src/module/workflow/service/workflow-meta.service.ts +639 -639
  358. package/src/module/workflow/service/workflow.service.ts +213 -213
  359. package/src/module/workflow/workflow.module.ts +180 -180
  360. package/src/module/workflow-automation/SCHEDULING_GUIDE.md +145 -145
  361. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +43 -43
  362. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  363. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +40 -40
  364. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  365. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  366. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  367. package/src/module/workflow-automation/service/schedule-handler.service.ts +168 -168
  368. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +219 -219
  369. package/src/module/workflow-automation/service/workflow-automation.service.ts +515 -515
  370. package/src/module/workflow-automation/workflow-automation.module.ts +54 -54
  371. package/src/module/workflow-schedule/INSTALLATION.md +244 -244
  372. package/src/module/workflow-schedule/MULTI_PROJECT_GUIDE.md +196 -196
  373. package/src/module/workflow-schedule/README.md +422 -422
  374. package/src/module/workflow-schedule/constants/schedule.constants.ts +48 -48
  375. package/src/module/workflow-schedule/controller/workflow-schedule.controller.ts +255 -255
  376. package/src/module/workflow-schedule/docs/CLAUDE_CODE_GUIDE.md +510 -510
  377. package/src/module/workflow-schedule/docs/CLAUDE_CODE_PROMPT.md +362 -362
  378. package/src/module/workflow-schedule/docs/RUN_CLAUDE_CODE.sh +68 -68
  379. package/src/module/workflow-schedule/dto/create-schedule.dto.ts +147 -147
  380. package/src/module/workflow-schedule/dto/get-execution-logs.dto.ts +119 -119
  381. package/src/module/workflow-schedule/dto/update-schedule.dto.ts +96 -96
  382. package/src/module/workflow-schedule/entities/scheduled-workflow.entity.ts +148 -148
  383. package/src/module/workflow-schedule/entities/workflow-execution-log.entity.ts +154 -154
  384. package/src/module/workflow-schedule/interfaces/schedule-job-data.interface.ts +53 -53
  385. package/src/module/workflow-schedule/interfaces/workflow-schedule-options.interface.ts +12 -12
  386. package/src/module/workflow-schedule/processors/schedule.processor.ts +620 -620
  387. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +598 -598
  388. package/src/module/workflow-schedule/workflow-schedule.module.ts +67 -67
  389. package/src/resources/dev.properties.yaml +31 -31
  390. package/src/resources/local.properties.yaml +27 -27
  391. package/src/resources/properties.module.ts +12 -12
  392. package/src/resources/properties.yaml.ts +11 -11
  393. package/src/resources/uat.properties.yaml +31 -31
  394. package/src/table.config.ts +133 -133
  395. package/src/utils/dto/excel-data.dto.ts +14 -14
  396. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  397. package/src/utils/service/base64util.service.ts +18 -18
  398. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  399. package/src/utils/service/codeGenerator.service.ts +22 -22
  400. package/src/utils/service/dateUtil.service.ts +17 -17
  401. package/src/utils/service/encryptUtil.service.ts +97 -97
  402. package/src/utils/service/excel-helper.service.ts +72 -72
  403. package/src/utils/service/excelUtil.service.ts +15 -15
  404. package/src/utils/service/file-util.service.ts +11 -11
  405. package/src/utils/service/json-util.service.ts +23 -23
  406. package/src/utils/service/loggingUtil.service.ts +88 -88
  407. package/src/utils/service/reflection-helper.service.ts +62 -62
  408. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  409. package/src/utils/utils.module.ts +27 -27
  410. package/tsconfig.build.json +4 -4
  411. package/tsconfig.json +24 -24
@@ -1,439 +1,439 @@
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
- import { FilterRequestDto } from '../../filter/dto/filter-request.dto';
32
- import { FilterService } from '../../filter/service/filter.service';
33
-
34
- @Injectable()
35
- export class EntityServiceImpl implements EntityService<BaseEntity> {
36
- @Inject() protected readonly entityMasterService: EntityMasterService;
37
- @Inject()
38
- protected readonly entityTableColumnService: EntityTableColumnService;
39
- @Inject() protected readonly entityTableService: EntityTableService;
40
- @Inject() protected readonly reflectionHelper: ReflectionHelper;
41
- @Inject() protected readonly entityListService: EntityListService;
42
- @Inject() protected readonly loggingService: LoggingService;
43
- @Inject()
44
- protected readonly entityValidationService: EntityValidationService;
45
- @Inject(forwardRef(() => ResolverService))
46
- protected readonly resolverService: ResolverService;
47
-
48
- async createEntity(
49
- entityData: BaseEntity,
50
- loggedInUser: UserData | null,
51
- manager?: EntityManager | null,
52
- appcode?: string,
53
- ) {
54
- if (!entityData.entity_type) {
55
- throw new BadRequestException(`EntityType is missing`);
56
- }
57
- const entityMaster = await this.entityMasterService.getEntityData(
58
- entityData.entity_type,
59
- loggedInUser,
60
- );
61
-
62
- const validationErrors =
63
- await this.entityValidationService.validateEntityData(
64
- entityData,
65
- entityMaster,
66
- loggedInUser,
67
- );
68
- console.log('Validation Errors:', validationErrors); // Debug log
69
- if (validationErrors && validationErrors.length > 0) {
70
- return {
71
- success: false,
72
- message: 'Validation failed',
73
- errors: validationErrors,
74
- };
75
- }
76
-
77
- const repo = manager
78
- ? manager.getRepository(entityMaster.entity_data_class) // <-- Use transaction-safe repo
79
- : this.reflectionHelper.getRepoService(entityMaster.entity_data_class);
80
-
81
- if (!repo) {
82
- throw new Error(
83
- `Repository service not found for entityType: ${entityData.entity_type}`,
84
- );
85
- }
86
-
87
- if (!entityData.code && loggedInUser) {
88
- let maxSeqNo = await this.getMaxSequenceNumber(
89
- entityData.entity_type,
90
- entityData.parent_id,
91
- entityData.parent_type,
92
- loggedInUser,
93
- );
94
- maxSeqNo = Number(maxSeqNo) + 1;
95
- entityData.code = entityData.entity_type + maxSeqNo;
96
- }
97
-
98
- // const resolveStatus = await this.listMasterService.getResolvedListCode(
99
- // STATUS_ACTIVE,
100
- // loggedInUser?.organization_id || 0,
101
- // );
102
-
103
- const listMasterItemsRepo = this.reflectionHelper.getRepoService('ListMasterItems');
104
- const statusList = await listMasterItemsRepo.findOne({
105
- where: {
106
- code: STATUS_ACTIVE,
107
- organization_id: loggedInUser?.organization_id || 0
108
- },
109
- select: ['id']
110
- })
111
-
112
- console.log('Status List:', statusList); // Debug log
113
- console.log(
114
- `status_code,${STATUS_ACTIVE},statusList, ${loggedInUser?.organization_id}`,
115
- ); // Debug log
116
-
117
- entityData.created_date = new Date();
118
- if (loggedInUser) {
119
- entityData.created_by = loggedInUser.id;
120
- if (!entityData.organization_id)
121
- entityData.organization_id = loggedInUser.organization_id;
122
- if (!entityData.enterprise_id)
123
- entityData.enterprise_id = loggedInUser.enterprise_id;
124
- if (!entityData.level_type)
125
- entityData.level_type = loggedInUser.level_type;
126
- if (!entityData.level_id) entityData.level_id = loggedInUser.level_id;
127
- if (!entityData.status) entityData.status = statusList.id;
128
- }
129
-
130
- let savedData = repo.save(entityData);
131
-
132
- return savedData;
133
- }
134
-
135
- async deleteEntity(entityType: string, entityId: number, loggedInUser) {
136
- const entityMaster = await this.entityMasterService.getEntityData(
137
- entityType,
138
- loggedInUser,
139
- );
140
-
141
- const repoService = this.reflectionHelper.getRepoService(
142
- entityMaster.entity_data_class,
143
- );
144
- if (!repoService) {
145
- throw new Error(
146
- `Repository service not found for entityType: ${entityType}`,
147
- );
148
- }
149
-
150
- const entityData = await repoService.findOne({ where: { id: entityId } });
151
-
152
- if (!entityData) {
153
- throw new Error(`Entity not found for entityType: ${entityType}`);
154
- }
155
-
156
- await repoService.delete(entityId);
157
-
158
- return {
159
- success: true,
160
- message: `Entity with id ${entityId} deleted successfully.`,
161
- };
162
- }
163
-
164
- async findByCode(
165
- entityType: string,
166
- code: string,
167
- loggedInUser,
168
- ): Promise<BaseEntity> {
169
- const entityData = await this.entityMasterService.getEntityData(
170
- entityType,
171
- loggedInUser,
172
- );
173
-
174
- const repoService = this.reflectionHelper.getRepoService(
175
- entityData.entity_data_class,
176
- );
177
- if (!repoService) {
178
- throw new Error(
179
- `Repository service not found for entityType: ${entityType}`,
180
- );
181
- }
182
- const result = await repoService?.findOne({ where: { code: code } });
183
-
184
- if (!result) {
185
- throw new Error(`Entity not found for entityType: ${entityType}`);
186
- }
187
- return result;
188
- }
189
-
190
- async getEntityData(
191
- entityType: string,
192
- id: number,
193
- loggedInUser,
194
- ): Promise<any> {
195
- const entityData = await this.entityMasterService.getEntityData(
196
- entityType,
197
- loggedInUser,
198
- );
199
-
200
- const repoService = this.reflectionHelper.getRepoService(
201
- entityData.entity_data_class,
202
- );
203
- if (!repoService) {
204
- throw new Error(
205
- `Repository service not found for entityType: ${entityType}`,
206
- );
207
- }
208
- return await repoService.findOne({ where: { id: id } });
209
- }
210
-
211
- async getEntityDataAll(
212
- entityType: string,
213
- type: {},
214
- loggedInUser: UserData,
215
- ): Promise<BaseEntity[] | null> {
216
- const entityData = await this.entityMasterService.getEntityData(
217
- entityType,
218
- loggedInUser,
219
- );
220
-
221
- const repoService = this.reflectionHelper.getRepoService(
222
- entityData.entity_data_class,
223
- );
224
- if (!repoService) {
225
- throw new Error(
226
- `Repository service not found for entityType: ${entityType}`,
227
- );
228
- }
229
- return await repoService.find({ where: type });
230
- }
231
-
232
- async getEntityDataByCode(
233
- entityType: string,
234
- code: string,
235
- loggedInUser: UserData,
236
- ): Promise<BaseEntity | null> {
237
- const entityData = await this.entityMasterService.getEntityData(
238
- entityType,
239
- loggedInUser,
240
- );
241
-
242
- const repoService = this.reflectionHelper.getRepoService(
243
- entityData.entity_data_class,
244
- );
245
- if (!repoService) {
246
- throw new BadRequestException(
247
- `Repository service not found for entityType: ${entityType}`,
248
- );
249
- }
250
- const data = await repoService.findOne({ where: { code: code } });
251
-
252
- if (!data) {
253
- throw new NotFoundException(`Data not found for Code: ${code}`);
254
- }
255
- return data;
256
- }
257
-
258
- async getEntityList(
259
- entityType: string,
260
- filters: Record<string, any> = {},
261
- loggedInUser: UserData,
262
- ): Promise<BaseEntity[]> {
263
- const entityData = await this.entityMasterService.getEntityData(
264
- entityType,
265
- loggedInUser,
266
- );
267
- const repoService = this.reflectionHelper.getRepoService(
268
- entityData.entity_data_class,
269
- );
270
-
271
- if (!repoService) {
272
- throw new Error(
273
- `Repository service not found for entityType: ${entityType}`,
274
- );
275
- }
276
-
277
- const result = await repoService.find({
278
- where: filters,
279
- });
280
-
281
- return result;
282
- }
283
-
284
- async updateEntity(
285
- entityData: BaseEntity,
286
- loggedInUser: UserData,
287
- appcode?: string,
288
- ) {
289
- const entityMaster = await this.entityMasterService.getEntityData(
290
- entityData.entity_type,
291
- loggedInUser,
292
- );
293
-
294
- const validationErrors =
295
- await this.entityValidationService.validateEntityData(
296
- entityData,
297
- entityMaster,
298
- loggedInUser,
299
- );
300
- console.log('Validation Errors For Update:', validationErrors); // Debug log
301
- if (validationErrors && validationErrors.length > 0) {
302
- return {
303
- success: false,
304
- message: 'Validation failed',
305
- errors: validationErrors,
306
- };
307
- }
308
-
309
- const repoService = this.reflectionHelper.getRepoService(
310
- entityMaster.entity_data_class,
311
- );
312
- if (!repoService) {
313
- throw new Error(
314
- `Repository service not found for entityType: ${entityData.entity_type}`,
315
- );
316
- }
317
-
318
- entityData.modified_date = new Date();
319
- if (loggedInUser) {
320
- entityData.modified_by = loggedInUser.id;
321
- if (!entityData.organization_id && entityData.entity_type !== 'ORG')
322
- entityData.organization_id = loggedInUser.organization_id;
323
- if (!entityData.enterprise_id)
324
- entityData.enterprise_id = loggedInUser.enterprise_id;
325
- }
326
- await repoService.update(entityData.id, entityData);
327
- return await repoService.findOne({ where: { id: entityData.id } });
328
- }
329
-
330
- async getFilterDataWithTabs(
331
- entityType: string,
332
- listType: string,
333
- filters: Record<string, any>,
334
- sortColumn: string | undefined,
335
- sortOrder: string | undefined,
336
- pageNumber: number,
337
- pageSize: number,
338
- tabColumn?: string,
339
- tabValue?: string,
340
- appcode?: string,
341
- ): Promise<EntityListData> {
342
- return await this.entityListService.getFilterDataWithTabs(
343
- entityType,
344
- listType,
345
- filters,
346
- sortColumn,
347
- sortOrder,
348
- pageNumber,
349
- pageSize,
350
- tabColumn,
351
- tabValue,
352
- appcode,
353
- );
354
- }
355
-
356
- private async getMaxSequenceNumber(
357
- entityType: string,
358
- parentId: number,
359
- parentType: string,
360
- loggedInUser: UserData,
361
- ): Promise<number> {
362
- let tableName: string;
363
- let repo;
364
- if (ENTITYTYPE_ENTITYMASTER === entityType) {
365
- tableName = 'frm_entity_master';
366
- repo = this.reflectionHelper.getRepoService('EntityMaster');
367
- } else {
368
- const entityMaster = await this.entityMasterService.getEntityData(
369
- entityType,
370
- loggedInUser,
371
- );
372
- repo = this.reflectionHelper.getRepoService(entityMaster.entity_data_class);
373
-
374
- }
375
- return await this.entityListService.getMaxSequenceNumber(
376
- repo,
377
- parentType,
378
- parentId,
379
- );
380
- }
381
-
382
- async getSingleResolvedData(
383
- loggedInUser: UserData,
384
- entityData: any,
385
- entityType: string,
386
- ): Promise<any> {
387
- return this.resolverService.getResolvedData(
388
- loggedInUser,
389
- entityData,
390
- entityType,
391
- );
392
- }
393
-
394
- async getResolvedEntityData(
395
- entityType: string,
396
- entityId: number,
397
- loggedInUser: UserData,
398
- ): Promise<any> {
399
- const entityData = await this.entityMasterService.getEntityData(
400
- entityType,
401
- loggedInUser,
402
- );
403
-
404
- const repoService = this.reflectionHelper.getRepoService(
405
- entityData.entity_data_class,
406
- );
407
-
408
- if (!repoService) {
409
- throw new Error(
410
- `Repository service not found for entityType: ${entityType}`,
411
- );
412
- }
413
- const data = await repoService.findOne({ where: { id: entityId } });
414
-
415
- return this.resolverService.getResolvedData(loggedInUser, data, entityType);
416
- }
417
-
418
- async getResolvedEntityDataByDataSource(
419
- entityType: string,
420
- entityId: number,
421
- loggedInUser: UserData,
422
- ): Promise<any> {
423
- const entityData = await this.entityMasterService.getEntityData(
424
- entityType,
425
- loggedInUser,
426
- );
427
-
428
- if (!entityData.data_source) {
429
- throw new Error('Database table name is missing in entity master.');
430
- }
431
-
432
- const data = await this.reflectionHelper.getEntityData(
433
- entityId,
434
- entityData.data_source,
435
- );
436
-
437
- return this.resolverService.getResolvedData(loggedInUser, data, entityType);
438
- }
439
- }
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
+ import { FilterRequestDto } from '../../filter/dto/filter-request.dto';
32
+ import { FilterService } from '../../filter/service/filter.service';
33
+
34
+ @Injectable()
35
+ export class EntityServiceImpl implements EntityService<BaseEntity> {
36
+ @Inject() protected readonly entityMasterService: EntityMasterService;
37
+ @Inject()
38
+ protected readonly entityTableColumnService: EntityTableColumnService;
39
+ @Inject() protected readonly entityTableService: EntityTableService;
40
+ @Inject() protected readonly reflectionHelper: ReflectionHelper;
41
+ @Inject() protected readonly entityListService: EntityListService;
42
+ @Inject() protected readonly loggingService: LoggingService;
43
+ @Inject()
44
+ protected readonly entityValidationService: EntityValidationService;
45
+ @Inject(forwardRef(() => ResolverService))
46
+ protected readonly resolverService: ResolverService;
47
+
48
+ async createEntity(
49
+ entityData: BaseEntity,
50
+ loggedInUser: UserData | null,
51
+ manager?: EntityManager | null,
52
+ appcode?: string,
53
+ ) {
54
+ if (!entityData.entity_type) {
55
+ throw new BadRequestException(`EntityType is missing`);
56
+ }
57
+ const entityMaster = await this.entityMasterService.getEntityData(
58
+ entityData.entity_type,
59
+ loggedInUser,
60
+ );
61
+
62
+ const validationErrors =
63
+ await this.entityValidationService.validateEntityData(
64
+ entityData,
65
+ entityMaster,
66
+ loggedInUser,
67
+ );
68
+ console.log('Validation Errors:', validationErrors); // Debug log
69
+ if (validationErrors && validationErrors.length > 0) {
70
+ return {
71
+ success: false,
72
+ message: 'Validation failed',
73
+ errors: validationErrors,
74
+ };
75
+ }
76
+
77
+ const repo = manager
78
+ ? manager.getRepository(entityMaster.entity_data_class) // <-- Use transaction-safe repo
79
+ : this.reflectionHelper.getRepoService(entityMaster.entity_data_class);
80
+
81
+ if (!repo) {
82
+ throw new Error(
83
+ `Repository service not found for entityType: ${entityData.entity_type}`,
84
+ );
85
+ }
86
+
87
+ if (!entityData.code && loggedInUser) {
88
+ let maxSeqNo = await this.getMaxSequenceNumber(
89
+ entityData.entity_type,
90
+ entityData.parent_id,
91
+ entityData.parent_type,
92
+ loggedInUser,
93
+ );
94
+ maxSeqNo = Number(maxSeqNo) + 1;
95
+ entityData.code = entityData.entity_type + maxSeqNo;
96
+ }
97
+
98
+ // const resolveStatus = await this.listMasterService.getResolvedListCode(
99
+ // STATUS_ACTIVE,
100
+ // loggedInUser?.organization_id || 0,
101
+ // );
102
+
103
+ const listMasterItemsRepo = this.reflectionHelper.getRepoService('ListMasterItems');
104
+ const statusList = await listMasterItemsRepo.findOne({
105
+ where: {
106
+ code: STATUS_ACTIVE,
107
+ organization_id: loggedInUser?.organization_id || 0
108
+ },
109
+ select: ['id']
110
+ })
111
+
112
+ console.log('Status List:', statusList); // Debug log
113
+ console.log(
114
+ `status_code,${STATUS_ACTIVE},statusList, ${loggedInUser?.organization_id}`,
115
+ ); // Debug log
116
+
117
+ entityData.created_date = new Date();
118
+ if (loggedInUser) {
119
+ entityData.created_by = loggedInUser.id;
120
+ if (!entityData.organization_id)
121
+ entityData.organization_id = loggedInUser.organization_id;
122
+ if (!entityData.enterprise_id)
123
+ entityData.enterprise_id = loggedInUser.enterprise_id;
124
+ if (!entityData.level_type)
125
+ entityData.level_type = loggedInUser.level_type;
126
+ if (!entityData.level_id) entityData.level_id = loggedInUser.level_id;
127
+ if (!entityData.status) entityData.status = statusList.id;
128
+ }
129
+
130
+ let savedData = repo.save(entityData);
131
+
132
+ return savedData;
133
+ }
134
+
135
+ async deleteEntity(entityType: string, entityId: number, loggedInUser) {
136
+ const entityMaster = await this.entityMasterService.getEntityData(
137
+ entityType,
138
+ loggedInUser,
139
+ );
140
+
141
+ const repoService = this.reflectionHelper.getRepoService(
142
+ entityMaster.entity_data_class,
143
+ );
144
+ if (!repoService) {
145
+ throw new Error(
146
+ `Repository service not found for entityType: ${entityType}`,
147
+ );
148
+ }
149
+
150
+ const entityData = await repoService.findOne({ where: { id: entityId } });
151
+
152
+ if (!entityData) {
153
+ throw new Error(`Entity not found for entityType: ${entityType}`);
154
+ }
155
+
156
+ await repoService.delete(entityId);
157
+
158
+ return {
159
+ success: true,
160
+ message: `Entity with id ${entityId} deleted successfully.`,
161
+ };
162
+ }
163
+
164
+ async findByCode(
165
+ entityType: string,
166
+ code: string,
167
+ loggedInUser,
168
+ ): Promise<BaseEntity> {
169
+ const entityData = await this.entityMasterService.getEntityData(
170
+ entityType,
171
+ loggedInUser,
172
+ );
173
+
174
+ const repoService = this.reflectionHelper.getRepoService(
175
+ entityData.entity_data_class,
176
+ );
177
+ if (!repoService) {
178
+ throw new Error(
179
+ `Repository service not found for entityType: ${entityType}`,
180
+ );
181
+ }
182
+ const result = await repoService?.findOne({ where: { code: code } });
183
+
184
+ if (!result) {
185
+ throw new Error(`Entity not found for entityType: ${entityType}`);
186
+ }
187
+ return result;
188
+ }
189
+
190
+ async getEntityData(
191
+ entityType: string,
192
+ id: number,
193
+ loggedInUser,
194
+ ): Promise<any> {
195
+ const entityData = await this.entityMasterService.getEntityData(
196
+ entityType,
197
+ loggedInUser,
198
+ );
199
+
200
+ const repoService = this.reflectionHelper.getRepoService(
201
+ entityData.entity_data_class,
202
+ );
203
+ if (!repoService) {
204
+ throw new Error(
205
+ `Repository service not found for entityType: ${entityType}`,
206
+ );
207
+ }
208
+ return await repoService.findOne({ where: { id: id } });
209
+ }
210
+
211
+ async getEntityDataAll(
212
+ entityType: string,
213
+ type: {},
214
+ loggedInUser: UserData,
215
+ ): Promise<BaseEntity[] | null> {
216
+ const entityData = await this.entityMasterService.getEntityData(
217
+ entityType,
218
+ loggedInUser,
219
+ );
220
+
221
+ const repoService = this.reflectionHelper.getRepoService(
222
+ entityData.entity_data_class,
223
+ );
224
+ if (!repoService) {
225
+ throw new Error(
226
+ `Repository service not found for entityType: ${entityType}`,
227
+ );
228
+ }
229
+ return await repoService.find({ where: type });
230
+ }
231
+
232
+ async getEntityDataByCode(
233
+ entityType: string,
234
+ code: string,
235
+ loggedInUser: UserData,
236
+ ): Promise<BaseEntity | null> {
237
+ const entityData = await this.entityMasterService.getEntityData(
238
+ entityType,
239
+ loggedInUser,
240
+ );
241
+
242
+ const repoService = this.reflectionHelper.getRepoService(
243
+ entityData.entity_data_class,
244
+ );
245
+ if (!repoService) {
246
+ throw new BadRequestException(
247
+ `Repository service not found for entityType: ${entityType}`,
248
+ );
249
+ }
250
+ const data = await repoService.findOne({ where: { code: code } });
251
+
252
+ if (!data) {
253
+ throw new NotFoundException(`Data not found for Code: ${code}`);
254
+ }
255
+ return data;
256
+ }
257
+
258
+ async getEntityList(
259
+ entityType: string,
260
+ filters: Record<string, any> = {},
261
+ loggedInUser: UserData,
262
+ ): Promise<BaseEntity[]> {
263
+ const entityData = await this.entityMasterService.getEntityData(
264
+ entityType,
265
+ loggedInUser,
266
+ );
267
+ const repoService = this.reflectionHelper.getRepoService(
268
+ entityData.entity_data_class,
269
+ );
270
+
271
+ if (!repoService) {
272
+ throw new Error(
273
+ `Repository service not found for entityType: ${entityType}`,
274
+ );
275
+ }
276
+
277
+ const result = await repoService.find({
278
+ where: filters,
279
+ });
280
+
281
+ return result;
282
+ }
283
+
284
+ async updateEntity(
285
+ entityData: BaseEntity,
286
+ loggedInUser: UserData,
287
+ appcode?: string,
288
+ ) {
289
+ const entityMaster = await this.entityMasterService.getEntityData(
290
+ entityData.entity_type,
291
+ loggedInUser,
292
+ );
293
+
294
+ const validationErrors =
295
+ await this.entityValidationService.validateEntityData(
296
+ entityData,
297
+ entityMaster,
298
+ loggedInUser,
299
+ );
300
+ console.log('Validation Errors For Update:', validationErrors); // Debug log
301
+ if (validationErrors && validationErrors.length > 0) {
302
+ return {
303
+ success: false,
304
+ message: 'Validation failed',
305
+ errors: validationErrors,
306
+ };
307
+ }
308
+
309
+ const repoService = this.reflectionHelper.getRepoService(
310
+ entityMaster.entity_data_class,
311
+ );
312
+ if (!repoService) {
313
+ throw new Error(
314
+ `Repository service not found for entityType: ${entityData.entity_type}`,
315
+ );
316
+ }
317
+
318
+ entityData.modified_date = new Date();
319
+ if (loggedInUser) {
320
+ entityData.modified_by = loggedInUser.id;
321
+ if (!entityData.organization_id && entityData.entity_type !== 'ORG')
322
+ entityData.organization_id = loggedInUser.organization_id;
323
+ if (!entityData.enterprise_id)
324
+ entityData.enterprise_id = loggedInUser.enterprise_id;
325
+ }
326
+ await repoService.update(entityData.id, entityData);
327
+ return await repoService.findOne({ where: { id: entityData.id } });
328
+ }
329
+
330
+ async getFilterDataWithTabs(
331
+ entityType: string,
332
+ listType: string,
333
+ filters: Record<string, any>,
334
+ sortColumn: string | undefined,
335
+ sortOrder: string | undefined,
336
+ pageNumber: number,
337
+ pageSize: number,
338
+ tabColumn?: string,
339
+ tabValue?: string,
340
+ appcode?: string,
341
+ ): Promise<EntityListData> {
342
+ return await this.entityListService.getFilterDataWithTabs(
343
+ entityType,
344
+ listType,
345
+ filters,
346
+ sortColumn,
347
+ sortOrder,
348
+ pageNumber,
349
+ pageSize,
350
+ tabColumn,
351
+ tabValue,
352
+ appcode,
353
+ );
354
+ }
355
+
356
+ private async getMaxSequenceNumber(
357
+ entityType: string,
358
+ parentId: number,
359
+ parentType: string,
360
+ loggedInUser: UserData,
361
+ ): Promise<number> {
362
+ let tableName: string;
363
+ let repo;
364
+ if (ENTITYTYPE_ENTITYMASTER === entityType) {
365
+ tableName = 'frm_entity_master';
366
+ repo = this.reflectionHelper.getRepoService('EntityMaster');
367
+ } else {
368
+ const entityMaster = await this.entityMasterService.getEntityData(
369
+ entityType,
370
+ loggedInUser,
371
+ );
372
+ repo = this.reflectionHelper.getRepoService(entityMaster.entity_data_class);
373
+
374
+ }
375
+ return await this.entityListService.getMaxSequenceNumber(
376
+ repo,
377
+ parentType,
378
+ parentId,
379
+ );
380
+ }
381
+
382
+ async getSingleResolvedData(
383
+ loggedInUser: UserData,
384
+ entityData: any,
385
+ entityType: string,
386
+ ): Promise<any> {
387
+ return this.resolverService.getResolvedData(
388
+ loggedInUser,
389
+ entityData,
390
+ entityType,
391
+ );
392
+ }
393
+
394
+ async getResolvedEntityData(
395
+ entityType: string,
396
+ entityId: number,
397
+ loggedInUser: UserData,
398
+ ): Promise<any> {
399
+ const entityData = await this.entityMasterService.getEntityData(
400
+ entityType,
401
+ loggedInUser,
402
+ );
403
+
404
+ const repoService = this.reflectionHelper.getRepoService(
405
+ entityData.entity_data_class,
406
+ );
407
+
408
+ if (!repoService) {
409
+ throw new Error(
410
+ `Repository service not found for entityType: ${entityType}`,
411
+ );
412
+ }
413
+ const data = await repoService.findOne({ where: { id: entityId } });
414
+
415
+ return this.resolverService.getResolvedData(loggedInUser, data, entityType);
416
+ }
417
+
418
+ async getResolvedEntityDataByDataSource(
419
+ entityType: string,
420
+ entityId: number,
421
+ loggedInUser: UserData,
422
+ ): Promise<any> {
423
+ const entityData = await this.entityMasterService.getEntityData(
424
+ entityType,
425
+ loggedInUser,
426
+ );
427
+
428
+ if (!entityData.data_source) {
429
+ throw new Error('Database table name is missing in entity master.');
430
+ }
431
+
432
+ const data = await this.reflectionHelper.getEntityData(
433
+ entityId,
434
+ entityData.data_source,
435
+ );
436
+
437
+ return this.resolverService.getResolvedData(loggedInUser, data, entityType);
438
+ }
439
+ }