rez_core 6.5.58 → 6.5.61

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 (436) hide show
  1. package/dist/app.module.js +3 -5
  2. package/dist/app.module.js.map +1 -1
  3. package/dist/core.module.js +38 -63
  4. package/dist/core.module.js.map +1 -1
  5. package/dist/migrations/1732612800000-AddEntityJsonGinIndex.d.ts +6 -0
  6. package/dist/migrations/1732612800000-AddEntityJsonGinIndex.js +32 -0
  7. package/dist/migrations/1732612800000-AddEntityJsonGinIndex.js.map +1 -0
  8. package/dist/module/auth/strategies/jwt.strategy.d.ts +1 -2
  9. package/dist/module/auth/strategies/jwt.strategy.js +2 -3
  10. package/dist/module/auth/strategies/jwt.strategy.js.map +1 -1
  11. package/dist/module/dashboard/dashboard.module.js +1 -1
  12. package/dist/module/dashboard/dashboard.module.js.map +1 -1
  13. package/dist/module/dashboard/service/dashboard.service.js +2 -1
  14. package/dist/module/dashboard/service/dashboard.service.js.map +1 -1
  15. package/dist/module/enterprise/controller/organization.controller.d.ts +4 -12
  16. package/dist/module/enterprise/controller/organization.controller.js +8 -64
  17. package/dist/module/enterprise/controller/organization.controller.js.map +1 -1
  18. package/dist/module/enterprise/enterprise.module.js +15 -10
  19. package/dist/module/enterprise/enterprise.module.js.map +1 -1
  20. package/dist/module/enterprise/entity/enterprise.entity.d.ts +3 -1
  21. package/dist/module/enterprise/entity/enterprise.entity.js +12 -4
  22. package/dist/module/enterprise/entity/enterprise.entity.js.map +1 -1
  23. package/dist/module/enterprise/entity/organization-app-mapping.entity.d.ts +1 -6
  24. package/dist/module/enterprise/entity/organization-app-mapping.entity.js +4 -21
  25. package/dist/module/enterprise/entity/organization-app-mapping.entity.js.map +1 -1
  26. package/dist/module/enterprise/entity/organization.entity.d.ts +17 -3
  27. package/dist/module/enterprise/entity/organization.entity.js +73 -11
  28. package/dist/module/enterprise/entity/organization.entity.js.map +1 -1
  29. package/dist/module/enterprise/repository/enterprise.repository.d.ts +2 -4
  30. package/dist/module/enterprise/repository/enterprise.repository.js +4 -19
  31. package/dist/module/enterprise/repository/enterprise.repository.js.map +1 -1
  32. package/dist/module/enterprise/service/brand.service.d.ts +3 -0
  33. package/dist/module/enterprise/service/brand.service.js +17 -0
  34. package/dist/module/enterprise/service/brand.service.js.map +1 -1
  35. package/dist/module/enterprise/service/enterprise.service.d.ts +2 -2
  36. package/dist/module/enterprise/service/enterprise.service.js +4 -6
  37. package/dist/module/enterprise/service/enterprise.service.js.map +1 -1
  38. package/dist/module/enterprise/service/organization.service.d.ts +6 -6
  39. package/dist/module/enterprise/service/organization.service.js +27 -109
  40. package/dist/module/enterprise/service/organization.service.js.map +1 -1
  41. package/dist/module/entity_json/controller/entity_json.controller.d.ts +2 -9
  42. package/dist/module/entity_json/controller/entity_json.controller.js.map +1 -1
  43. package/dist/module/entity_json/entity/entityJson.entity.d.ts +2 -1
  44. package/dist/module/entity_json/entity/entityJson.entity.js +5 -1
  45. package/dist/module/entity_json/entity/entityJson.entity.js.map +1 -1
  46. package/dist/module/entity_json/entity_json.module.js +7 -2
  47. package/dist/module/entity_json/entity_json.module.js.map +1 -1
  48. package/dist/module/entity_json/service/entity_json.service.d.ts +2 -10
  49. package/dist/module/entity_json/service/entity_json.service.js +101 -25
  50. package/dist/module/entity_json/service/entity_json.service.js.map +1 -1
  51. package/dist/module/filter/controller/filter.controller.d.ts +12 -0
  52. package/dist/module/filter/controller/filter.controller.js +1 -1
  53. package/dist/module/filter/controller/filter.controller.js.map +1 -1
  54. package/dist/module/filter/filter.module.js +11 -2
  55. package/dist/module/filter/filter.module.js.map +1 -1
  56. package/dist/module/filter/service/filter.service.d.ts +38 -2
  57. package/dist/module/filter/service/filter.service.js +43 -50
  58. package/dist/module/filter/service/filter.service.js.map +1 -1
  59. package/dist/module/filter/service/flatjson-filter.service.d.ts +32 -0
  60. package/dist/module/filter/service/flatjson-filter.service.js +632 -0
  61. package/dist/module/filter/service/flatjson-filter.service.js.map +1 -0
  62. package/dist/module/filter/service/saved-filter.service.d.ts +3 -2
  63. package/dist/module/filter/service/saved-filter.service.js +14 -18
  64. package/dist/module/filter/service/saved-filter.service.js.map +1 -1
  65. package/dist/module/integration/service/integration.service.d.ts +1 -0
  66. package/dist/module/integration/service/integration.service.js +2 -1
  67. package/dist/module/integration/service/integration.service.js.map +1 -1
  68. package/dist/module/integration/service/wrapper.service.js +1 -0
  69. package/dist/module/integration/service/wrapper.service.js.map +1 -1
  70. package/dist/module/layout/controller/layout.controller.d.ts +3 -1
  71. package/dist/module/layout/controller/layout.controller.js +7 -3
  72. package/dist/module/layout/controller/layout.controller.js.map +1 -1
  73. package/dist/module/layout/entity/header-section.entity.d.ts +2 -0
  74. package/dist/module/layout/entity/header-section.entity.js +8 -0
  75. package/dist/module/layout/entity/header-section.entity.js.map +1 -1
  76. package/dist/module/layout/layout.module.js +2 -1
  77. package/dist/module/layout/layout.module.js.map +1 -1
  78. package/dist/module/layout/repository/header-section.repository.d.ts +1 -0
  79. package/dist/module/layout/repository/header-section.repository.js +5 -0
  80. package/dist/module/layout/repository/header-section.repository.js.map +1 -1
  81. package/dist/module/layout/service/header-section.service.d.ts +1 -1
  82. package/dist/module/layout/service/header-section.service.js +1 -1
  83. package/dist/module/layout/service/header-section.service.js.map +1 -1
  84. package/dist/module/linked_attributes/controller/linked_attributes.controller.d.ts +41 -0
  85. package/dist/module/linked_attributes/controller/linked_attributes.controller.js +90 -0
  86. package/dist/module/linked_attributes/controller/linked_attributes.controller.js.map +1 -1
  87. package/dist/module/linked_attributes/dto/create-linked-attribute-smart.dto.d.ts +13 -0
  88. package/dist/module/linked_attributes/dto/create-linked-attribute-smart.dto.js +64 -0
  89. package/dist/module/linked_attributes/dto/create-linked-attribute-smart.dto.js.map +1 -0
  90. package/dist/module/linked_attributes/linked_attributes.module.js +8 -1
  91. package/dist/module/linked_attributes/linked_attributes.module.js.map +1 -1
  92. package/dist/module/linked_attributes/service/linked_attributes.service.d.ts +65 -1
  93. package/dist/module/linked_attributes/service/linked_attributes.service.js +287 -2
  94. package/dist/module/linked_attributes/service/linked_attributes.service.js.map +1 -1
  95. package/dist/module/listmaster/service/list-master.service.js +8 -1
  96. package/dist/module/listmaster/service/list-master.service.js.map +1 -1
  97. package/dist/module/meta/controller/app-master.controller.js.map +1 -0
  98. package/dist/module/meta/controller/attribute-master.controller.d.ts +3 -0
  99. package/dist/module/meta/controller/attribute-master.controller.js +12 -0
  100. package/dist/module/meta/controller/attribute-master.controller.js.map +1 -1
  101. package/dist/module/meta/controller/meta.controller.d.ts +6 -1
  102. package/dist/module/meta/controller/meta.controller.js +19 -1
  103. package/dist/module/meta/controller/meta.controller.js.map +1 -1
  104. package/dist/module/meta/entity/app-master.entity.d.ts +13 -0
  105. package/dist/module/{app_master → meta}/entity/app-master.entity.js +12 -30
  106. package/dist/module/meta/entity/app-master.entity.js.map +1 -0
  107. package/dist/module/meta/entity/entity-master.entity.d.ts +1 -0
  108. package/dist/module/meta/entity/entity-master.entity.js +8 -1
  109. package/dist/module/meta/entity/entity-master.entity.js.map +1 -1
  110. package/dist/module/meta/entity.module.js +14 -3
  111. package/dist/module/meta/entity.module.js.map +1 -1
  112. package/dist/module/{app_master → meta}/repository/app-master.repository.d.ts +2 -2
  113. package/dist/module/{app_master → meta}/repository/app-master.repository.js +4 -4
  114. package/dist/module/meta/repository/app-master.repository.js.map +1 -0
  115. package/dist/module/meta/service/app-master.service.js.map +1 -0
  116. package/dist/module/meta/service/attribute-master.service.d.ts +6 -1
  117. package/dist/module/meta/service/attribute-master.service.js +22 -2
  118. package/dist/module/meta/service/attribute-master.service.js.map +1 -1
  119. package/dist/module/meta/service/entity-master.service.js +1 -0
  120. package/dist/module/meta/service/entity-master.service.js.map +1 -1
  121. package/dist/module/meta/service/entity-relation.service.d.ts +4 -3
  122. package/dist/module/meta/service/entity-relation.service.js +10 -4
  123. package/dist/module/meta/service/entity-relation.service.js.map +1 -1
  124. package/dist/module/meta/service/entity-service-impl.service.d.ts +1 -1
  125. package/dist/module/meta/service/entity-service-impl.service.js +14 -10
  126. package/dist/module/meta/service/entity-service-impl.service.js.map +1 -1
  127. package/dist/module/meta/service/entity-table.service.d.ts +5 -4
  128. package/dist/module/meta/service/entity-table.service.js +45 -24
  129. package/dist/module/meta/service/entity-table.service.js.map +1 -1
  130. package/dist/module/meta/service/populate-meta.service.d.ts +13 -0
  131. package/dist/module/{enterprise → meta}/service/populate-meta.service.js +8 -2
  132. package/dist/module/meta/service/populate-meta.service.js.map +1 -0
  133. package/dist/module/meta/service/resolver.service.d.ts +1 -1
  134. package/dist/module/meta/service/resolver.service.js +6 -3
  135. package/dist/module/meta/service/resolver.service.js.map +1 -1
  136. package/dist/module/module/controller/module-access.controller.d.ts +4 -3
  137. package/dist/module/module/controller/module-access.controller.js +8 -13
  138. package/dist/module/module/controller/module-access.controller.js.map +1 -1
  139. package/dist/module/module/entity/menu.entity.d.ts +3 -6
  140. package/dist/module/module/entity/menu.entity.js +10 -19
  141. package/dist/module/module/entity/menu.entity.js.map +1 -1
  142. package/dist/module/module/entity/module-access.entity.d.ts +1 -15
  143. package/dist/module/module/entity/module-access.entity.js +3 -49
  144. package/dist/module/module/entity/module-access.entity.js.map +1 -1
  145. package/dist/module/module/entity/module-action.entity.d.ts +2 -4
  146. package/dist/module/module/entity/module-action.entity.js +6 -11
  147. package/dist/module/module/entity/module-action.entity.js.map +1 -1
  148. package/dist/module/module/entity/module.entity.d.ts +5 -3
  149. package/dist/module/module/entity/module.entity.js +18 -8
  150. package/dist/module/module/entity/module.entity.js.map +1 -1
  151. package/dist/module/module/module.module.d.ts +1 -1
  152. package/dist/module/module/module.module.js +7 -5
  153. package/dist/module/module/module.module.js.map +1 -1
  154. package/dist/module/module/repository/menu.repository.d.ts +3 -3
  155. package/dist/module/module/repository/menu.repository.js +27 -38
  156. package/dist/module/module/repository/menu.repository.js.map +1 -1
  157. package/dist/module/module/repository/module-access.repository.d.ts +6 -6
  158. package/dist/module/module/repository/module-access.repository.js +50 -100
  159. package/dist/module/module/repository/module-access.repository.js.map +1 -1
  160. package/dist/module/module/service/menu.service.d.ts +4 -2
  161. package/dist/module/module/service/menu.service.js +10 -7
  162. package/dist/module/module/service/menu.service.js.map +1 -1
  163. package/dist/module/module/service/module-access.service.d.ts +10 -7
  164. package/dist/module/module/service/module-access.service.js +24 -22
  165. package/dist/module/module/service/module-access.service.js.map +1 -1
  166. package/dist/module/notification/entity/notification.entity.d.ts +2 -17
  167. package/dist/module/notification/entity/notification.entity.js +2 -68
  168. package/dist/module/notification/entity/notification.entity.js.map +1 -1
  169. package/dist/module/notification/notification.module.js +4 -3
  170. package/dist/module/notification/notification.module.js.map +1 -1
  171. package/dist/module/notification/service/email.service.d.ts +0 -1
  172. package/dist/module/notification/service/email.service.js +0 -14
  173. package/dist/module/notification/service/email.service.js.map +1 -1
  174. package/dist/module/notification/service/notification.service.d.ts +3 -1
  175. package/dist/module/notification/service/notification.service.js +5 -2
  176. package/dist/module/notification/service/notification.service.js.map +1 -1
  177. package/dist/module/notification/service/otp.service.d.ts +2 -2
  178. package/dist/module/notification/service/otp.service.js +5 -4
  179. package/dist/module/notification/service/otp.service.js.map +1 -1
  180. package/dist/module/user/controller/login.controller.d.ts +3 -1
  181. package/dist/module/user/controller/login.controller.js +6 -2
  182. package/dist/module/user/controller/login.controller.js.map +1 -1
  183. package/dist/module/user/controller/user.controller.d.ts +2 -0
  184. package/dist/module/user/controller/user.controller.js +13 -0
  185. package/dist/module/user/controller/user.controller.js.map +1 -1
  186. package/dist/module/user/dto/create-user.dto.d.ts +3 -6
  187. package/dist/module/user/dto/create-user.dto.js +11 -17
  188. package/dist/module/user/dto/create-user.dto.js.map +1 -1
  189. package/dist/module/user/entity/role.entity.d.ts +6 -18
  190. package/dist/module/user/entity/role.entity.js +19 -64
  191. package/dist/module/user/entity/role.entity.js.map +1 -1
  192. package/dist/module/user/entity/user-role-mapping.entity.d.ts +0 -10
  193. package/dist/module/user/entity/user-role-mapping.entity.js +1 -33
  194. package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
  195. package/dist/module/user/entity/user-session.entity.d.ts +2 -0
  196. package/dist/module/user/entity/user-session.entity.js +20 -2
  197. package/dist/module/user/entity/user-session.entity.js.map +1 -1
  198. package/dist/module/user/entity/user.entity.d.ts +5 -17
  199. package/dist/module/user/entity/user.entity.js +15 -61
  200. package/dist/module/user/entity/user.entity.js.map +1 -1
  201. package/dist/module/user/repository/role.repository.d.ts +2 -7
  202. package/dist/module/user/repository/role.repository.js +8 -23
  203. package/dist/module/user/repository/role.repository.js.map +1 -1
  204. package/dist/module/user/repository/user-role-mapping.repository.d.ts +0 -1
  205. package/dist/module/user/repository/user-role-mapping.repository.js +0 -3
  206. package/dist/module/user/repository/user-role-mapping.repository.js.map +1 -1
  207. package/dist/module/user/repository/user.repository.d.ts +2 -5
  208. package/dist/module/user/repository/user.repository.js +7 -26
  209. package/dist/module/user/repository/user.repository.js.map +1 -1
  210. package/dist/module/user/repository/userSession.repository.d.ts +0 -1
  211. package/dist/module/user/repository/userSession.repository.js +0 -3
  212. package/dist/module/user/repository/userSession.repository.js.map +1 -1
  213. package/dist/module/user/service/login.service.d.ts +5 -3
  214. package/dist/module/user/service/login.service.js +42 -43
  215. package/dist/module/user/service/login.service.js.map +1 -1
  216. package/dist/module/user/service/role.service.d.ts +11 -24
  217. package/dist/module/user/service/role.service.js +40 -54
  218. package/dist/module/user/service/role.service.js.map +1 -1
  219. package/dist/module/user/service/user-role-mapping.service.d.ts +0 -2
  220. package/dist/module/user/service/user-role-mapping.service.js +0 -6
  221. package/dist/module/user/service/user-role-mapping.service.js.map +1 -1
  222. package/dist/module/user/service/user-session.service.d.ts +4 -3
  223. package/dist/module/user/service/user-session.service.js +11 -10
  224. package/dist/module/user/service/user-session.service.js.map +1 -1
  225. package/dist/module/user/service/user.service.d.ts +22 -33
  226. package/dist/module/user/service/user.service.js +58 -66
  227. package/dist/module/user/service/user.service.js.map +1 -1
  228. package/dist/module/user/user.module.js +7 -2
  229. package/dist/module/user/user.module.js.map +1 -1
  230. package/dist/module/workflow/repository/action-data.repository.d.ts +1 -1
  231. package/dist/module/workflow/repository/action-data.repository.js +8 -6
  232. package/dist/module/workflow/repository/action-data.repository.js.map +1 -1
  233. package/dist/module/workflow/repository/action.repository.d.ts +1 -1
  234. package/dist/module/workflow/repository/action.repository.js +10 -10
  235. package/dist/module/workflow/repository/action.repository.js.map +1 -1
  236. package/dist/module/workflow/repository/form-master.repository.d.ts +1 -1
  237. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  238. package/dist/module/workflow/repository/form-master.repository.js.map +1 -1
  239. package/dist/module/workflow/service/action-data.service.js +2 -1
  240. package/dist/module/workflow/service/action-data.service.js.map +1 -1
  241. package/dist/module/workflow/service/action.service.js +2 -2
  242. package/dist/module/workflow/service/action.service.js.map +1 -1
  243. package/dist/module/workflow/service/comm-template.service.js +2 -0
  244. package/dist/module/workflow/service/comm-template.service.js.map +1 -1
  245. package/dist/module/workflow/service/entity-modification.service.js +1 -0
  246. package/dist/module/workflow/service/entity-modification.service.js.map +1 -1
  247. package/dist/module/workflow/service/form-master.service.js +2 -2
  248. package/dist/module/workflow/service/form-master.service.js.map +1 -1
  249. package/dist/module/workflow/service/populate-workflow.service.d.ts +1 -1
  250. package/dist/module/workflow/service/populate-workflow.service.js +1 -1
  251. package/dist/module/workflow/service/populate-workflow.service.js.map +1 -1
  252. package/dist/module/workflow/service/task.service.js +3 -0
  253. package/dist/module/workflow/service/task.service.js.map +1 -1
  254. package/dist/module/workflow/service/workflow-meta.service.js +7 -2
  255. package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
  256. package/dist/module/workflow/service/workflow.service.js +2 -2
  257. package/dist/module/workflow/service/workflow.service.js.map +1 -1
  258. package/dist/module/workflow/workflow.module.js +0 -2
  259. package/dist/module/workflow/workflow.module.js.map +1 -1
  260. package/dist/module/workflow-automation/service/workflow-automation.service.js +6 -11
  261. package/dist/module/workflow-automation/service/workflow-automation.service.js.map +1 -1
  262. package/dist/module/workflow-automation/workflow-automation.module.js +1 -3
  263. package/dist/module/workflow-automation/workflow-automation.module.js.map +1 -1
  264. package/dist/module/workflow-schedule/service/workflow-schedule.service.js +2 -0
  265. package/dist/module/workflow-schedule/service/workflow-schedule.service.js.map +1 -1
  266. package/dist/table.config.d.ts +5 -3
  267. package/dist/table.config.js +3 -3
  268. package/dist/table.config.js.map +1 -1
  269. package/dist/tsconfig.build.tsbuildinfo +1 -1
  270. package/package.json +2 -2
  271. package/src/app.module.ts +5 -7
  272. package/src/core.module.ts +44 -58
  273. package/src/migrations/1732612800000-AddEntityJsonGinIndex.ts +41 -0
  274. package/src/module/auth/strategies/jwt.strategy.ts +2 -4
  275. package/src/module/dashboard/dashboard.module.ts +3 -3
  276. package/src/module/dashboard/service/dashboard.service.ts +2 -1
  277. package/src/module/enterprise/controller/organization.controller.ts +4 -60
  278. package/src/module/enterprise/enterprise.module.ts +18 -16
  279. package/src/module/enterprise/entity/enterprise.entity.ts +11 -5
  280. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +4 -18
  281. package/src/module/enterprise/entity/organization.entity.ts +58 -11
  282. package/src/module/enterprise/repository/enterprise.repository.ts +4 -26
  283. package/src/module/enterprise/service/brand.service.ts +5 -75
  284. package/src/module/enterprise/service/enterprise.service.ts +4 -12
  285. package/src/module/enterprise/service/organization.service.ts +28 -151
  286. package/src/module/entity_json/controller/entity_json.controller.ts +13 -0
  287. package/src/module/entity_json/docs/FlatJson_Filterin_System.md +2804 -0
  288. package/src/module/entity_json/entity/entityJson.entity.ts +4 -1
  289. package/src/module/entity_json/entity_json.module.ts +9 -5
  290. package/src/module/entity_json/service/entity_json.service.ts +237 -51
  291. package/src/module/filter/controller/filter.controller.ts +1 -3
  292. package/src/module/filter/filter.module.ts +12 -3
  293. package/src/module/filter/service/filter.service.ts +130 -73
  294. package/src/module/filter/service/flatjson-filter.service.ts +903 -0
  295. package/src/module/filter/service/saved-filter.service.ts +16 -26
  296. package/src/module/filter/test/flatjson-filter.service.spec.ts +415 -0
  297. package/src/module/integration/service/integration.service.ts +6 -2
  298. package/src/module/integration/service/wrapper.service.ts +1 -0
  299. package/src/module/layout/controller/layout.controller.ts +8 -1
  300. package/src/module/layout/entity/header-section.entity.ts +6 -0
  301. package/src/module/layout/layout.module.ts +1 -1
  302. package/src/module/layout/repository/header-section.repository.ts +6 -0
  303. package/src/module/layout/service/header-section.service.ts +1 -1
  304. package/src/module/linked_attributes/controller/linked_attributes.controller.ts +100 -0
  305. package/src/module/linked_attributes/dto/create-linked-attribute-smart.dto.ts +54 -0
  306. package/src/module/linked_attributes/linked_attributes.module.ts +9 -2
  307. package/src/module/linked_attributes/service/linked_attributes.service.ts +578 -3
  308. package/src/module/linked_attributes/test/linked-attributes.service.spec.ts +244 -0
  309. package/src/module/listmaster/service/list-master.service.ts +9 -1
  310. package/src/module/meta/controller/attribute-master.controller.ts +12 -0
  311. package/src/module/meta/controller/meta.controller.ts +25 -3
  312. package/src/module/{app_master → meta}/entity/app-master.entity.ts +9 -22
  313. package/src/module/meta/entity/entity-master.entity.ts +9 -3
  314. package/src/module/meta/entity.module.ts +20 -6
  315. package/src/module/{app_master → meta}/repository/app-master.repository.ts +3 -3
  316. package/src/module/meta/service/attribute-master.service.ts +31 -1
  317. package/src/module/meta/service/entity-master.service.ts +1 -0
  318. package/src/module/meta/service/entity-relation.service.ts +10 -6
  319. package/src/module/meta/service/entity-service-impl.service.ts +14 -19
  320. package/src/module/meta/service/entity-table.service.ts +82 -68
  321. package/src/module/meta/service/entity.service.ts +0 -1
  322. package/src/module/{enterprise → meta}/service/populate-meta.service.ts +5 -2
  323. package/src/module/meta/service/resolver.service.ts +4 -0
  324. package/src/module/module/controller/module-access.controller.ts +9 -14
  325. package/src/module/module/entity/menu.entity.ts +10 -18
  326. package/src/module/module/entity/module-access.entity.ts +3 -40
  327. package/src/module/module/entity/module-action.entity.ts +6 -10
  328. package/src/module/module/entity/module.entity.ts +14 -7
  329. package/src/module/module/module.module.ts +3 -2
  330. package/src/module/module/repository/menu.repository.ts +29 -43
  331. package/src/module/module/repository/module-access.repository.ts +62 -110
  332. package/src/module/module/service/menu.service.ts +9 -7
  333. package/src/module/module/service/module-access.service.ts +34 -22
  334. package/src/module/notification/entity/notification.entity.ts +3 -53
  335. package/src/module/notification/notification.module.ts +5 -6
  336. package/src/module/notification/service/email.service.ts +1 -16
  337. package/src/module/notification/service/notification.service.ts +1 -0
  338. package/src/module/notification/service/otp.service.ts +5 -16
  339. package/src/module/user/controller/login.controller.ts +8 -7
  340. package/src/module/user/controller/user.controller.ts +9 -0
  341. package/src/module/user/dto/create-user.dto.ts +6 -19
  342. package/src/module/user/entity/role.entity.ts +16 -59
  343. package/src/module/user/entity/user-role-mapping.entity.ts +3 -29
  344. package/src/module/user/entity/user-session.entity.ts +19 -3
  345. package/src/module/user/entity/user.entity.ts +13 -48
  346. package/src/module/user/repository/role.repository.ts +12 -32
  347. package/src/module/user/repository/user-role-mapping.repository.ts +1 -5
  348. package/src/module/user/repository/user.repository.ts +9 -36
  349. package/src/module/user/repository/userSession.repository.ts +1 -5
  350. package/src/module/user/service/login.service.ts +51 -47
  351. package/src/module/user/service/role.service.ts +63 -64
  352. package/src/module/user/service/user-role-mapping.service.ts +1 -23
  353. package/src/module/user/service/user-session.service.ts +11 -14
  354. package/src/module/user/service/user.service.ts +95 -76
  355. package/src/module/user/user.module.ts +5 -4
  356. package/src/module/workflow/repository/action-data.repository.ts +8 -6
  357. package/src/module/workflow/repository/action.repository.ts +11 -11
  358. package/src/module/workflow/repository/form-master.repository.ts +2 -2
  359. package/src/module/workflow/service/action-data.service.ts +2 -3
  360. package/src/module/workflow/service/action.service.ts +2 -2
  361. package/src/module/workflow/service/comm-template.service.ts +2 -0
  362. package/src/module/workflow/service/entity-modification.service.ts +1 -0
  363. package/src/module/workflow/service/form-master.service.ts +2 -2
  364. package/src/module/workflow/service/populate-workflow.service.ts +1 -1
  365. package/src/module/workflow/service/task.service.ts +3 -0
  366. package/src/module/workflow/service/workflow-meta.service.ts +7 -2
  367. package/src/module/workflow/service/workflow.service.ts +2 -2
  368. package/src/module/workflow/workflow.module.ts +0 -2
  369. package/src/module/workflow-automation/service/workflow-automation.service.ts +7 -19
  370. package/src/module/workflow-automation/workflow-automation.module.ts +3 -4
  371. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +2 -0
  372. package/src/resources/dev.properties.yaml +2 -2
  373. package/src/table.config.ts +3 -3
  374. package/.claude/settings.local.json +0 -26
  375. package/.idea/250218_nodejs_core.iml +0 -9
  376. package/.idea/codeStyles/Project.xml +0 -59
  377. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  378. package/.idea/copilot.data.migration.agent.xml +0 -6
  379. package/.idea/copilot.data.migration.ask.xml +0 -6
  380. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  381. package/.idea/copilot.data.migration.edit.xml +0 -6
  382. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  383. package/.idea/misc.xml +0 -6
  384. package/.idea/modules.xml +0 -8
  385. package/.idea/prettier.xml +0 -6
  386. package/.idea/vcs.xml +0 -6
  387. package/dist/constant/status.constant.d.ts +0 -4
  388. package/dist/constant/status.constant.js +0 -9
  389. package/dist/constant/status.constant.js.map +0 -1
  390. package/dist/module/app_master/app-master.module.d.ts +0 -2
  391. package/dist/module/app_master/app-master.module.js +0 -28
  392. package/dist/module/app_master/app-master.module.js.map +0 -1
  393. package/dist/module/app_master/controller/app-master.controller.js.map +0 -1
  394. package/dist/module/app_master/entity/app-master.entity.d.ts +0 -17
  395. package/dist/module/app_master/entity/app-master.entity.js.map +0 -1
  396. package/dist/module/app_master/repository/app-master.repository.js.map +0 -1
  397. package/dist/module/app_master/service/app-master.service.js.map +0 -1
  398. package/dist/module/enterprise/controller/enterprise.controller.d.ts +0 -12
  399. package/dist/module/enterprise/controller/enterprise.controller.js +0 -57
  400. package/dist/module/enterprise/controller/enterprise.controller.js.map +0 -1
  401. package/dist/module/enterprise/controller/meta.controller.d.ts +0 -9
  402. package/dist/module/enterprise/controller/meta.controller.js +0 -43
  403. package/dist/module/enterprise/controller/meta.controller.js.map +0 -1
  404. package/dist/module/enterprise/service/brand-profile.service.d.ts +0 -0
  405. package/dist/module/enterprise/service/brand-profile.service.js +0 -1
  406. package/dist/module/enterprise/service/brand-profile.service.js.map +0 -1
  407. package/dist/module/enterprise/service/populate-meta.service.d.ts +0 -9
  408. package/dist/module/enterprise/service/populate-meta.service.js.map +0 -1
  409. package/dist/module/enterprise/service/school.service.d.ts +0 -0
  410. package/dist/module/enterprise/service/school.service.js +0 -1
  411. package/dist/module/enterprise/service/school.service.js.map +0 -1
  412. package/dist/module/preference_master/entity/preference.entity.d.ts +0 -9
  413. package/dist/module/preference_master/entity/preference.entity.js +0 -48
  414. package/dist/module/preference_master/entity/preference.entity.js.map +0 -1
  415. package/dist/module/preference_master/preference.service.d.ts +0 -8
  416. package/dist/module/preference_master/preference.service.js +0 -31
  417. package/dist/module/preference_master/preference.service.js.map +0 -1
  418. package/dist/module/preference_master/repo/preference.repository.d.ts +0 -8
  419. package/dist/module/preference_master/repo/preference.repository.js +0 -48
  420. package/dist/module/preference_master/repo/preference.repository.js.map +0 -1
  421. package/server.log +0 -850
  422. package/src/constant/status.constant.ts +0 -4
  423. package/src/module/app_master/app-master.module.ts +0 -15
  424. package/src/module/enterprise/controller/enterprise.controller.ts +0 -40
  425. package/src/module/enterprise/controller/meta.controller.ts +0 -23
  426. package/src/module/enterprise/service/brand-profile.service.ts +0 -10
  427. package/src/module/enterprise/service/school.service.ts +0 -5
  428. package/src/module/preference_master/entity/preference.entity.ts +0 -25
  429. package/src/module/preference_master/preference.service.ts +0 -27
  430. package/src/module/preference_master/repo/preference.repository.ts +0 -36
  431. /package/dist/module/{app_master → meta}/controller/app-master.controller.d.ts +0 -0
  432. /package/dist/module/{app_master → meta}/controller/app-master.controller.js +0 -0
  433. /package/dist/module/{app_master → meta}/service/app-master.service.d.ts +0 -0
  434. /package/dist/module/{app_master → meta}/service/app-master.service.js +0 -0
  435. /package/src/module/{app_master → meta}/controller/app-master.controller.ts +0 -0
  436. /package/src/module/{app_master → meta}/service/app-master.service.ts +0 -0
@@ -17,7 +17,7 @@ export class MenuRepository extends Repository<MenuData> {
17
17
  super(MenuData, dataSource.createEntityManager());
18
18
  }
19
19
 
20
- async getUserRoles(userId: number, app_id: number): Promise<number[]> {
20
+ async getUserRoles(userId: number, appcode: string): Promise<number[]> {
21
21
  const userRoleMappingRepo =
22
22
  this.reflectionHelper.getRepoService('UserRoleMapping');
23
23
 
@@ -26,7 +26,7 @@ export class MenuRepository extends Repository<MenuData> {
26
26
  .innerJoin('sso_role', 'role', 'role.id = urm.role_id')
27
27
  .select('urm.role_id', 'role_id')
28
28
  .where('urm.user_id = :userId', { userId })
29
- .andWhere('role.app_id = :app_id', { app_id })
29
+ .andWhere('role.appcode = :appcode', { appcode })
30
30
  .getRawMany();
31
31
 
32
32
  return roles.map((r) => r.role_id);
@@ -34,65 +34,61 @@ export class MenuRepository extends Repository<MenuData> {
34
34
 
35
35
  async getAccessibleModules(
36
36
  roleIds: number[],
37
- appcode: string,
38
- ): Promise<number[]> {
37
+ appCode: string,
38
+ ): Promise<string[]> {
39
+ const roleRepo = this.reflectionHelper.getRepoService('Role');
40
+
41
+ const roleCodes = await roleRepo
42
+ .createQueryBuilder('role')
43
+ .select('role.code', 'code')
44
+ .where('role.id IN (:...roleIds)', { roleIds })
45
+ .getRawMany();
39
46
 
40
- const appMasterRepo = this.reflectionHelper.getRepoService('AppMaster');
41
- const appMaster = await appMasterRepo.findOne({
42
- where: {
43
- code: appcode
44
- }
45
- });
47
+ const codes = roleCodes.map((r) => r.code);
48
+
49
+ if (codes.length === 0) return [];
46
50
 
47
51
  const modules = await this.moduleAccessRepo
48
52
  .createQueryBuilder('moduleAccess')
49
- .select('moduleAccess.module_id')
50
- .where('moduleAccess.role_id IN (:...roleIds)', { roleIds })
53
+ .select('moduleAccess.module_code')
54
+ .where('moduleAccess.role_code IN (:...codes)', { codes })
51
55
  .andWhere('moduleAccess.access_flag > 0')
52
- .andWhere('moduleAccess.app_id = :app_id', { app_id: appMaster.id })
56
+ .andWhere('LOWER(moduleAccess.appcode) = LOWER(:appCode)', { appCode })
53
57
  .getMany();
54
58
 
55
- return Array.from(new Set(modules.map((module) => module.module_id)));
59
+ return Array.from(new Set(modules.map((module) => module.module_code)));
56
60
  }
57
61
 
58
62
  /**
59
63
  * ✅ FIXED: Use this.createQueryBuilder() instead of this.menuData.createQueryBuilder()
60
64
  */
61
65
  async getMenuItems(
62
- modules: number[],
66
+ moduleCodes: string[],
63
67
  appcode: string,
64
68
  levelType: string,
65
69
  ) {
66
- const appMasterRepo = this.reflectionHelper.getRepoService('AppMaster');
67
-
68
- const appMaster = await appMasterRepo.findOne({
69
- where: {
70
- code: appcode
71
- }
72
- })
73
-
74
70
  return await this.menuData
75
71
  .createQueryBuilder('menu')
76
72
  .leftJoin(
77
73
  'sso_module',
78
74
  'module',
79
75
  `
80
- menu.module_id = module.id
81
- AND menu.app_id = module.app_id
76
+ menu.module_code = module.module_code
77
+ AND LOWER(menu.appcode) = LOWER(module.appcode)
82
78
  AND menu.level_type = module.level_type
83
79
  `,
84
80
  )
85
- .where('menu.module_id IN (:...modules)', { modules: modules })
86
- .andWhere('menu.app_id = :app_id', { app_id: appMaster.id })
81
+ .where('menu.module_code IN (:...moduleCodes)', { moduleCodes })
82
+ .andWhere('LOWER(menu.appcode) = LOWER(:appcode)', { appcode })
87
83
  .andWhere('menu.level_type = :levelType', { levelType })
88
84
  .andWhere('menu.ui_visible = 1')
89
85
  .select([
90
86
  'menu.*',
91
- 'module.module_code AS module_code',
92
87
  'module.component_name AS component',
93
88
  'module.title AS title',
94
89
  'module.entity_type AS entity_type',
95
- 'module.type AS type'
90
+ 'module.type AS type',
91
+ 'module.ui_config AS ui_config',
96
92
  ])
97
93
  .getRawMany();
98
94
  }
@@ -103,14 +99,6 @@ export class MenuRepository extends Repository<MenuData> {
103
99
  levelType: string,
104
100
  levelId: number,
105
101
  ): Promise<number[]> {
106
- const appMasterRepo = this.reflectionHelper.getRepoService('AppMaster');
107
-
108
- const appMaster = await appMasterRepo.findOne({
109
- where: {
110
- code: appcode
111
- }
112
- })
113
-
114
102
  const repo = this.reflectionHelper.getRepoService('UserRoleMapping');
115
103
 
116
104
  if (userId) {
@@ -126,9 +114,7 @@ export class MenuRepository extends Repository<MenuData> {
126
114
  const getUserUrm = await repo.findOne({
127
115
  where: {
128
116
  user_id: userId,
129
- app: {
130
- code: appcode
131
- },
117
+ appcode: appcode,
132
118
  },
133
119
  });
134
120
 
@@ -149,7 +135,7 @@ export class MenuRepository extends Repository<MenuData> {
149
135
  .where('urm.user_id = :userId', { userId: userId })
150
136
  .andWhere('urm.level_type = :levelType', { levelType })
151
137
  .andWhere('urm.level_id = :levelId', { levelId: levelId })
152
- .andWhere('role.app_id = :app_id', { app_id: appMaster.id })
138
+ .andWhere('role.appcode = :appcode', { appcode })
153
139
  .getRawMany();
154
140
 
155
141
  if (roles.length) return roles.map((r) => r.urm_role_id);
@@ -174,7 +160,7 @@ export class MenuRepository extends Repository<MenuData> {
174
160
  .where('urm.user_id = :userId', { userId })
175
161
  .andWhere('urm.level_type = :levelType', { levelType: 'BRN' })
176
162
  .andWhere('urm.level_id = :levelId', { levelId: brandId })
177
- .andWhere('role.app_id = :app_id', { app_id: appMaster.id })
163
+ .andWhere('role.appcode = :appcode', { appcode })
178
164
  .getRawMany();
179
165
 
180
166
  if (roles.length) return roles.map((r) => r.urm_role_id);
@@ -188,7 +174,7 @@ export class MenuRepository extends Repository<MenuData> {
188
174
  .where('urm.user_id = :userId', { userId })
189
175
  .andWhere('urm.level_type = :levelType', { levelType: 'ORG' })
190
176
  .andWhere('urm.level_id = :levelId', { levelId: orgId })
191
- .andWhere('role.app_id = :app_id', { app_id: appMaster.id })
177
+ .andWhere('role.appcode = :appcode', { appcode })
192
178
  .getRawMany();
193
179
 
194
180
  if (roles.length) return roles.map((r) => r.urm_role_id);
@@ -1,26 +1,28 @@
1
1
  import { BadRequestException, Injectable } from '@nestjs/common';
2
2
  import { InjectRepository } from '@nestjs/typeorm';
3
- import { In, IsNull, Not, Or, Repository } from 'typeorm';
3
+ import { In, Not, Repository, IsNull, DataSource } from 'typeorm';
4
4
  import { Role } from 'src/module/user/entity/role.entity';
5
5
  import { ModuleAccess } from '../entity/module-access.entity';
6
6
  import { ModuleAction } from '../entity/module-action.entity';
7
7
  import { ModuleData } from '../entity/module.entity';
8
- import { ReflectionHelper } from '../../../utils/service/reflection-helper.service';
9
8
 
10
9
  @Injectable()
11
10
  export class ModuleAccessRepository {
12
11
  constructor(
13
12
  @InjectRepository(Role)
14
13
  private readonly roleRepo: Repository<Role>,
14
+
15
15
  @InjectRepository(ModuleData)
16
16
  private readonly moduleRepo: Repository<ModuleData>,
17
+
17
18
  @InjectRepository(ModuleAccess)
18
19
  private readonly moduleAccessRepo: Repository<ModuleAccess>,
20
+
19
21
  @InjectRepository(ModuleAction)
20
22
  private readonly moduleActionRepo: Repository<ModuleAction>,
21
- private readonly reflectionHelper: ReflectionHelper,
22
- ) {
23
- }
23
+
24
+ private readonly dataSource: DataSource,
25
+ ) {}
24
26
 
25
27
  async getRoles({
26
28
  appcode,
@@ -31,25 +33,24 @@ export class ModuleAccessRepository {
31
33
  level_type?: string;
32
34
  level_id?: number;
33
35
  }) {
34
- const where: any = {
35
- app: {
36
- code: appcode,
37
- },
38
- is_factory: Or(IsNull(), Not(1)), // 👈 include NULL and exclude factory roles
39
- };
36
+ const query = this.dataSource
37
+ .createQueryBuilder()
38
+ .select('*')
39
+ .from('sso_role', 'role')
40
+ .where('role.appcode = :appcode', { appcode })
41
+ .andWhere('(role.is_factory IS NULL OR role.is_factory != 1)');
40
42
 
41
43
  if (level_type) {
42
- where.level_type = level_type;
44
+ query.andWhere('role.level_type = :level_type', { level_type });
43
45
  }
44
46
 
45
47
  if (level_id !== undefined) {
46
- where.level_id = String(level_id);
48
+ query.andWhere('role.level_id = :level_id', {
49
+ level_id: String(level_id),
50
+ });
47
51
  }
48
52
 
49
- const roles = await this.roleRepo.find({
50
- where,
51
- select: ['id', 'name'], // keep returned data same as your mapping
52
- });
53
+ const roles = await query.getRawMany(); // use getRawMany since you're selecting from a raw table
53
54
 
54
55
  return roles.map((role) => ({
55
56
  label: role.name,
@@ -67,21 +68,11 @@ export class ModuleAccessRepository {
67
68
  let modules: any[];
68
69
  if (loggedInUser.level_type == 'SCH') {
69
70
  modules = await this.moduleRepo.find({
70
- where: {
71
- module_level: 'MAINMOD',
72
- app: {
73
- code: appcode,
74
- },
75
- level_type: 'SCH',
76
- },
71
+ where: { module_level: 'MAINMOD', appcode, level_type: 'SCH' },
77
72
  });
78
73
  } else {
79
74
  modules = await this.moduleRepo.find({
80
- where: {
81
- module_level: 'MAINMOD', app: {
82
- code: appcode,
83
- },
84
- },
75
+ where: { module_level: 'MAINMOD', appcode },
85
76
  });
86
77
  }
87
78
 
@@ -114,77 +105,53 @@ export class ModuleAccessRepository {
114
105
  roles = await this.roleRepo.find({
115
106
  where: {
116
107
  id: In(fetchedRoleIds),
117
- app: {
118
- code: appcode,
119
- },
108
+ appcode,
120
109
  },
121
110
  });
122
111
  } else {
123
112
  roles = await this.roleRepo.find({
124
113
  where: {
125
114
  id: In(roleIds.map((id) => Number(id))),
126
- app: {
127
- code: appcode,
128
- },
115
+ appcode,
129
116
  },
130
117
  });
131
118
  }
132
119
 
133
120
  if (!roles.length) return [];
134
121
 
122
+ const roleCodes = roles.map((role) => role.code);
123
+
135
124
  const moduleAccesses = await this.moduleAccessRepo.find({
136
125
  where: {
137
- role_id: In(roles.map((role) => role.id)),
138
- app: {
139
- code: appcode,
140
- },
141
- level_type: levelType,
142
- },
143
- relations: {
144
- app: true,
145
- module: true,
126
+ role_code: In(roleCodes),
127
+ appcode,
146
128
  },
147
129
  });
148
130
 
149
131
  return roles.map((role) => ({
150
- role_id: role.id,
132
+ role_code: role.code,
151
133
  name: role.name,
152
134
  permission: moduleAccesses
153
- .filter((access) => access.role_id === role.id)
135
+ .filter((access) => access.role_code === role.code)
154
136
  .map((access) => ({
155
137
  action: access.action_type,
156
138
  access: access.access_flag,
157
- module_id: access.module_id,
139
+ code: access.module_code,
158
140
  level_type: access.level_type,
159
- app_id: access.app_id,
160
- code: access?.module?.module_code,
161
- appcode: access.app.code,
141
+ appcode: access.appcode,
162
142
  })),
163
143
  }));
164
144
  }
165
145
 
166
146
  async getAllModulesByLevel(mainModIds: string[], appcode: string, levelType) {
167
-
168
- const appMasterRepo = this.reflectionHelper.getRepoService('AppMaster');
169
- // TODO Permissions not getting populated
170
- const appMaster = await appMasterRepo.find({
171
- where: {
172
- code: appcode,
173
- },
174
- });
175
-
176
- if (!appMaster) {
177
- return {};
178
- }
179
-
180
147
  const mainModules =
181
148
  mainModIds.length === 1 && mainModIds[0] === '-1'
182
149
  ? await this.moduleRepo.find({
183
- where: { module_level: 'MAINMOD', app_id: appMaster[0].id },
184
- })
150
+ where: { module_level: 'MAINMOD', appcode },
151
+ })
185
152
  : await this.moduleRepo.find({
186
- where: { id: In(mainModIds), module_level: 'MAINMOD', app: { code: appcode } },
187
- });
153
+ where: { id: In(mainModIds), module_level: 'MAINMOD', appcode },
154
+ });
188
155
 
189
156
  if (!mainModules.length) return {};
190
157
 
@@ -198,7 +165,7 @@ export class ModuleAccessRepository {
198
165
  .join(' OR '),
199
166
  Object.fromEntries(wbsCodes.map((code) => [`code${code}`, `${code}%`])),
200
167
  )
201
- .andWhere('module.app_id = :app_id', { app_id: appMaster[0].id })
168
+ .andWhere('module.appcode = :appcode', { appcode })
202
169
  .andWhere('module.module_code != :excludedCode', {
203
170
  excludedCode: 'all_organization_adm_org',
204
171
  })
@@ -208,27 +175,28 @@ export class ModuleAccessRepository {
208
175
  (mod) => mod.module_code != 'all_organization_adm_org',
209
176
  );
210
177
 
211
- const modules = allModules.map((m) => m.id);
178
+ const moduleCodes = allModules.map((m) => m.module_code);
212
179
 
213
180
  const allActions = await this.moduleActionRepo.find({
214
- where: {
215
- module_id: In(modules),
216
- }
217
- })
181
+ where: { module_code: In(moduleCodes) },
182
+ });
218
183
 
219
184
  // Map actions by module_code with VIEW action first
220
185
  const actionMap = allActions.reduce(
221
186
  (acc, action) => {
222
- if (!acc[action?.module_id]) acc[action?.module_id] = [];
187
+ if (!acc[action.module_code]) acc[action.module_code] = [];
188
+
223
189
  const actionItem = {
224
- action: action.action_code,
190
+ action: action.action_type,
225
191
  name: action.action_name,
226
192
  };
227
- if (action.action_code === 'VIEW') {
228
- acc[action?.module_id].unshift(actionItem); // ➕ Add VIEW at start
193
+
194
+ if (action.action_type === 'VIEW') {
195
+ acc[action.module_code].unshift(actionItem); // ➕ Add VIEW at start
229
196
  } else {
230
- acc[action?.module_id].push(actionItem); // ➕ Add others at end
197
+ acc[action.module_code].push(actionItem); // ➕ Add others at end
231
198
  }
199
+
232
200
  return acc;
233
201
  },
234
202
  {} as Record<string, { action: string; name: string }[]>,
@@ -247,13 +215,12 @@ export class ModuleAccessRepository {
247
215
  (mod) =>
248
216
  mod.wbs_code.startsWith(`${parentWbs}.`) &&
249
217
  mod.wbs_code.split('.').length ===
250
- parentWbs.split('.').length + 1,
218
+ parentWbs.split('.').length + 1,
251
219
  )
252
220
  .map((mod) => ({
253
221
  name: mod.name,
254
- module_id: mod.id,
255
222
  code: mod.module_code,
256
- permission: actionMap[mod.id] || [],
223
+ permission: actionMap[mod.module_code] || [],
257
224
  submod: buildHierarchy(mod.wbs_code),
258
225
  }));
259
226
 
@@ -261,9 +228,8 @@ export class ModuleAccessRepository {
261
228
  .filter((mod) => mod.level_type === lvl)
262
229
  .map((mod) => ({
263
230
  name: mod.name,
264
- module_id: mod.id,
265
231
  code: mod.module_code,
266
- permission: actionMap[mod.id] || [],
232
+ permission: actionMap[mod.module_code] || [],
267
233
  submod: buildHierarchy(mod.wbs_code),
268
234
  }));
269
235
 
@@ -288,16 +254,10 @@ export class ModuleAccessRepository {
288
254
  for (const access of accessList) {
289
255
  const existing = await this.moduleAccessRepo.findOne({
290
256
  where: {
291
- role: {
292
- code: access.role_code,
293
- },
294
- module: {
295
- module_code: access.module_code,
296
- },
257
+ role_code: access.role_code,
258
+ module_code: access.module_code,
297
259
  action_type: access.action_type,
298
- app: {
299
- code: access.appcode,
300
- },
260
+ appcode: access.appcode,
301
261
  level_type: access.level_type,
302
262
  },
303
263
  });
@@ -307,7 +267,7 @@ export class ModuleAccessRepository {
307
267
  await this.moduleAccessRepo.save(existing);
308
268
  } else {
309
269
  await this.moduleAccessRepo.save(
310
- this.moduleAccessRepo.create(access),
270
+ await this.moduleAccessRepo.create(access),
311
271
  );
312
272
  }
313
273
  }
@@ -325,10 +285,13 @@ export class ModuleAccessRepository {
325
285
 
326
286
  if (!module) throw new BadRequestException('Module not found');
327
287
 
288
+ const roles = await this.roleRepo.find({ where: { id: In(roleIds) } });
289
+ const roleCodes = roles.map((role) => role.code);
290
+
328
291
  const actions = await this.moduleAccessRepo.find({
329
292
  where: {
330
- module_id: module.id,
331
- role_id: In(roleIds),
293
+ module_code: moduleCode,
294
+ role_code: In(roleCodes),
332
295
  access_flag: 1,
333
296
  },
334
297
  });
@@ -338,18 +301,16 @@ export class ModuleAccessRepository {
338
301
  return {
339
302
  entity_type: module.entity_type,
340
303
  title: module.title,
304
+ ui_config: module.ui_config || {},
341
305
  action: uniqueActions,
342
306
  };
343
307
  }
344
-
345
308
  async getModuleAccessByRoles(roleIds: number[], appcode: string) {
346
309
  // Step 1: Get role codes from sso_role
347
310
  const roles = await this.roleRepo.find({
348
311
  where: {
349
312
  id: In(roleIds),
350
- app: {
351
- code: appcode,
352
- },
313
+ appcode,
353
314
  },
354
315
  select: ['id', 'code'],
355
316
  });
@@ -357,27 +318,18 @@ export class ModuleAccessRepository {
357
318
  const roleCodes = roles.map((r) => r.code);
358
319
  if (!roleCodes.length) return [];
359
320
 
360
- const appMasterRepo = this.reflectionHelper.getRepoService('AppMaster');
361
- const appMaster = await appMasterRepo.findOne({
362
- where: {
363
- code: appcode,
364
- },
365
- });
366
-
367
321
  // Step 2: Fetch full access data
368
322
  const accessRecords = await this.moduleAccessRepo
369
323
  .createQueryBuilder('access')
370
324
  .select([
371
- 'access.module_id AS module_id',
372
- 'm.module_code AS module_code',
325
+ 'access.module_code AS module_code',
373
326
  'access.action_type AS action_type',
374
327
  'access.access_flag AS access_flag',
375
328
  'access.level_type AS level_type',
376
329
  'access.appcode AS appcode',
377
330
  ])
378
- .innerJoin('sso_module', 'm', 'm.id = access.module_id')
379
331
  .where('access.role_code IN (:...roleCodes)', { roleCodes })
380
- .andWhere('access.app_id = :app_id', { app_id: appMaster.id })
332
+ .andWhere('access.appcode = :appcode', { appcode })
381
333
  .getRawMany();
382
334
 
383
335
  // Step 3: Format output
@@ -1,13 +1,15 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
  import { MenuRepository } from '../repository/menu.repository';
3
3
  import { MenuData } from '../entity/menu.entity';
4
+ import { DataSource } from 'typeorm';
5
+ import { UserRoleMapping } from 'src/module/user/entity/user-role-mapping.entity';
4
6
 
5
7
  @Injectable()
6
8
  export class MenuService {
7
9
  constructor(
8
10
  private readonly menuRepository: MenuRepository,
9
- ) {
10
- }
11
+ private readonly datasource: DataSource,
12
+ ) {}
11
13
 
12
14
  /**
13
15
  * Fetch and construct menu hierarchy for a given user.
@@ -28,15 +30,15 @@ export class MenuService {
28
30
  if (!roleCodes.length) return { menu: [] };
29
31
 
30
32
  // Step 2: Get accessible modules
31
- const modules = await this.menuRepository.getAccessibleModules(
33
+ const moduleCodes = await this.menuRepository.getAccessibleModules(
32
34
  roleCodes,
33
35
  appcode,
34
36
  );
35
- if (!modules.length) return { menu: [] };
37
+ if (!moduleCodes.length) return { menu: [] };
36
38
 
37
39
  // Step 3: Get menu items for the given level type
38
40
  const menuItems = await this.menuRepository.getMenuItems(
39
- modules,
41
+ moduleCodes,
40
42
  appcode,
41
43
  levelType,
42
44
  );
@@ -74,7 +76,7 @@ export class MenuService {
74
76
  }
75
77
 
76
78
  // get user roles
77
- async getUserRoles(userId: number, app_id: number): Promise<any> {
78
- return this.menuRepository.getUserRoles(userId, app_id);
79
+ async getUserRoles(userId: number, appcode: string): Promise<any> {
80
+ return this.menuRepository.getUserRoles(userId, appcode);
79
81
  }
80
82
  }
@@ -1,21 +1,27 @@
1
- import { BadRequestException, Injectable } from '@nestjs/common';
1
+ import { BadRequestException, Inject, Injectable } from '@nestjs/common';
2
2
  import { ModuleAccessRepository } from '../repository/module-access.repository';
3
- import { IsNull, Not, Or, Repository } from 'typeorm';
3
+ import { RoleRepository } from 'src/module/user/repository/role.repository';
4
+ import { RoleService } from '../../user/service/role.service';
5
+ import {
6
+ ENTITYTYPE_ROLE,
7
+ STATUS_INACTIVE,
8
+ } from '../../../constant/global.constant';
9
+ import { Role } from '../../user/entity/role.entity';
10
+ import { DataSource, EntityManager } from 'typeorm';
4
11
  import { UserData } from 'src/module/user/entity/user.entity';
5
12
  import { MenuRepository } from '../repository/menu.repository';
13
+ import { ListMasterService } from 'src/module/listmaster/service/list-master.service';
6
14
  import { ReflectionHelper } from '../../../utils/service/reflection-helper.service';
7
- import { Role } from '../../user/entity/role.entity';
8
- import { InjectRepository } from '@nestjs/typeorm';
9
- import { StatusConstant } from '../../../constant/status.constant';
10
15
 
11
16
  @Injectable()
12
17
  export class ModuleAccessService {
13
18
  constructor(
14
19
  private readonly moduleAccessRepository: ModuleAccessRepository,
15
20
  private readonly menuRepository: MenuRepository,
21
+ private readonly dataSource: DataSource,
22
+ @Inject('ListMasterService')
23
+ private readonly listMasterService: ListMasterService,
16
24
  private readonly reflectionHelper: ReflectionHelper,
17
- @InjectRepository(Role)
18
- private readonly roleRepo: Repository<Role>
19
25
  ) {
20
26
  }
21
27
 
@@ -36,26 +42,25 @@ export class ModuleAccessService {
36
42
  level_id?: number;
37
43
  include?: boolean;
38
44
  }) {
45
+ const query = this.dataSource
46
+ .createQueryBuilder()
47
+ .select('*')
48
+ .from('sso_role', 'role')
49
+ .where('role.appcode = :appcode', { appcode });
39
50
 
40
- const where: any = {
41
- app: {
42
- code: appcode
43
- }
44
- };
45
-
51
+ // Only add this condition if `include` is false (exclude factory roles)
46
52
  if (!include) {
47
- where.is_factory = Or(IsNull(), Not(1));
53
+ query.andWhere('(role.is_factory IS NULL OR role.is_factory != 1)');
48
54
  }
49
55
 
50
56
  if (level_type && level_id) {
51
- where.level_type = level_type;
52
- where.level_id = String(level_id);
57
+ query.andWhere('role.level_type = :level_type', { level_type });
58
+ query.andWhere('role.level_id = :level_id', {
59
+ level_id: String(level_id),
60
+ });
53
61
  }
54
62
 
55
- const roles = await this.roleRepo.find({
56
- where,
57
- });
58
-
63
+ const roles = await query.getRawMany();
59
64
 
60
65
  return roles.map((role) => ({
61
66
  label: role.name,
@@ -83,7 +88,7 @@ export class ModuleAccessService {
83
88
  levelType: string,
84
89
  ): Promise<Record<string, any[]>> {
85
90
  if (!appcode) {
86
- throw new BadRequestException('App code is required');
91
+ throw new BadRequestException('Appcode is required');
87
92
  }
88
93
 
89
94
  return this.moduleAccessRepository.getAllModulesByLevel(
@@ -128,11 +133,13 @@ export class ModuleAccessService {
128
133
  appcode,
129
134
  level_type,
130
135
  level_id,
136
+ enterprise_id,
131
137
  }: {
132
138
  userId: number;
133
139
  appcode: string;
134
140
  level_type: string;
135
141
  level_id: number;
142
+ enterprise_id: number;
136
143
  }) {
137
144
  // Step 1: Resolve roles
138
145
  const roleCodes = await this.menuRepository.resolveUserRoles(
@@ -165,7 +172,12 @@ export class ModuleAccessService {
165
172
  },
166
173
  });
167
174
 
168
- if (!school || school.status === StatusConstant.INACTIVE) {
175
+ const resolveStatus = await this.listMasterService.getResolvedListCode(
176
+ STATUS_INACTIVE,
177
+ enterprise_id || 0,
178
+ );
179
+
180
+ if (!school || school.status === resolveStatus.id) {
169
181
  // Return only VIEW permissions
170
182
  return allPermissions.filter((perm) => perm.action === 'VIEW');
171
183
  }