rez_core 5.0.169 → 5.0.172

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