rez_core 3.1.134 → 3.1.136

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 (383) hide show
  1. package/.claude/settings.local.json +26 -0
  2. package/.idea/250218_nodejs_core.iml +9 -0
  3. package/.idea/codeStyles/Project.xml +59 -0
  4. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  5. package/.idea/copilot.data.migration.agent.xml +6 -0
  6. package/.idea/copilot.data.migration.ask.xml +6 -0
  7. package/.idea/copilot.data.migration.ask2agent.xml +6 -0
  8. package/.idea/copilot.data.migration.edit.xml +6 -0
  9. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  10. package/.idea/misc.xml +6 -0
  11. package/.idea/modules.xml +8 -0
  12. package/.idea/prettier.xml +6 -0
  13. package/.idea/vcs.xml +6 -0
  14. package/.prettierrc +3 -3
  15. package/README.md +99 -99
  16. package/dist/module/auth/guards/role.guard.js +3 -3
  17. package/dist/module/auth/services/auth.service.js +2 -2
  18. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  19. package/dist/module/filter/service/filter-evaluator.service.js +2 -2
  20. package/dist/module/filter/service/filter.service.js +7 -7
  21. package/dist/module/integration/examples/usage.example.js +9 -9
  22. package/dist/module/integration/service/integration.service.js +2 -1
  23. package/dist/module/integration/service/integration.service.js.map +1 -1
  24. package/dist/module/integration/service/wrapper.service.js +25 -25
  25. package/dist/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.js +1 -0
  26. package/dist/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.js.map +1 -1
  27. package/dist/module/listmaster/service/list-master-item.service.js +2 -2
  28. package/dist/module/listmaster/service/list-master.service.js +2 -2
  29. package/dist/module/mapper/service/field-mapper.service.js +4 -4
  30. package/dist/module/mapper/service/mapper.service.js +2 -2
  31. package/dist/module/meta/service/entity-dynamic.service.js +18 -18
  32. package/dist/module/meta/service/entity-list.service.js +3 -3
  33. package/dist/module/meta/service/entity-master.service.js +3 -3
  34. package/dist/module/meta/service/entity-relation.service.js +11 -11
  35. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  36. package/dist/module/meta/service/resolver.service.js +3 -3
  37. package/dist/module/module/repository/menu.repository.js +12 -12
  38. package/dist/module/notification/service/notification.service.js +12 -12
  39. package/dist/module/user/controller/login.controller.js +18 -18
  40. package/dist/module/user/service/role.service.js +4 -4
  41. package/dist/module/user/service/user-session.service.js +2 -2
  42. package/dist/module/workflow/repository/action.repository.js +16 -16
  43. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  44. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  45. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  46. package/dist/module/workflow/repository/stage-movement.repository.js +11 -11
  47. package/dist/module/workflow/repository/stage.repository.js +8 -8
  48. package/dist/module/workflow/service/action-template-mapping.service.js +10 -10
  49. package/dist/module/workflow/service/action.service.js +7 -7
  50. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  51. package/dist/module/workflow/service/stage-group.service.js +5 -5
  52. package/dist/module/workflow/service/stage.service.js +2 -2
  53. package/dist/module/workflow/service/task.service.js +33 -33
  54. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  55. package/dist/module/workflow/service/workflow-meta.service.js +50 -50
  56. package/dist/module/workflow/service/workflow.service.js +2 -2
  57. package/dist/tsconfig.build.tsbuildinfo +1 -1
  58. package/dist/utils/service/reflection-helper.service.js +2 -2
  59. package/docs/modules/event-driven-integration-design.md +91 -91
  60. package/docs/modules/integration.md +250 -250
  61. package/eslint.config.mjs +34 -34
  62. package/nest-cli.json +14 -14
  63. package/package.json +118 -118
  64. package/server.log +850 -0
  65. package/src/app.controller.ts +12 -12
  66. package/src/app.module.ts +49 -49
  67. package/src/app.service.ts +8 -8
  68. package/src/config/config.module.ts +18 -18
  69. package/src/config/database.config.ts +23 -23
  70. package/src/constant/global.constant.ts +67 -67
  71. package/src/core.module.ts +81 -81
  72. package/src/decorators/roles.decorator.ts +7 -7
  73. package/src/dtos/response.dto.ts +6 -6
  74. package/src/dtos/response.ts +5 -5
  75. package/src/index.ts +1 -1
  76. package/src/module/auth/auth.module.ts +49 -49
  77. package/src/module/auth/controller/auth.controller.ts +28 -28
  78. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  79. package/src/module/auth/guards/jwt.guard.ts +22 -22
  80. package/src/module/auth/guards/role.guard.ts +68 -68
  81. package/src/module/auth/services/auth.service.ts +50 -50
  82. package/src/module/auth/services/jwt.service.ts +11 -11
  83. package/src/module/auth/strategies/google.strategy.ts +54 -54
  84. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  85. package/src/module/auth/strategies/local.strategy.ts +13 -13
  86. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  87. package/src/module/dashboard/dashboard.module.ts +21 -21
  88. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  89. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  90. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  91. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  92. package/src/module/dev/dev.module.ts +12 -12
  93. package/src/module/dev/service/dev.service.ts +7 -7
  94. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  95. package/src/module/enterprise/enterprise.module.ts +30 -30
  96. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  97. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  98. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  99. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  100. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  101. package/src/module/enterprise/repository/school.repository.ts +282 -282
  102. package/src/module/enterprise/service/brand.service.ts +5 -5
  103. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  104. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  105. package/src/module/enterprise/service/organization.service.ts +145 -145
  106. package/src/module/filter/controller/filter.controller.ts +84 -84
  107. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  108. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  109. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  110. package/src/module/filter/filter.module.ts +31 -31
  111. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  112. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  113. package/src/module/filter/service/filter.service.ts +841 -841
  114. package/src/module/filter/service/saved-filter.service.ts +170 -170
  115. package/src/module/ics/controller/ics.controller.ts +21 -21
  116. package/src/module/ics/dto/ics.dto.ts +55 -55
  117. package/src/module/ics/ics.module.ts +13 -13
  118. package/src/module/ics/service/ics.service.ts +60 -60
  119. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  120. package/src/module/integration/controller/integration.controller.ts +662 -662
  121. package/src/module/integration/controller/wrapper.controller.ts +39 -39
  122. package/src/module/integration/dto/create-config.dto.ts +526 -526
  123. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  124. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  125. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  126. package/src/module/integration/entity/user-integration.entity.ts +70 -70
  127. package/src/module/integration/examples/usage.example.ts +338 -338
  128. package/src/module/integration/factories/base.factory.ts +7 -7
  129. package/src/module/integration/factories/email.factory.ts +49 -49
  130. package/src/module/integration/factories/integration.factory.ts +121 -121
  131. package/src/module/integration/factories/sms.factory.ts +51 -51
  132. package/src/module/integration/factories/telephone.factory.ts +41 -41
  133. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  134. package/src/module/integration/integration.module.ts +110 -110
  135. package/src/module/integration/service/calendar-event.service.ts +118 -118
  136. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  137. package/src/module/integration/service/integration-queue.service.ts +229 -229
  138. package/src/module/integration/service/integration.service.ts +2558 -2557
  139. package/src/module/integration/service/oauth.service.ts +224 -224
  140. package/src/module/integration/service/wrapper.service.ts +515 -515
  141. package/src/module/integration/strategies/email/gmail-api.strategy.ts +288 -288
  142. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  143. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  144. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +262 -262
  145. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  146. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  147. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  148. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  149. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  150. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  151. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  152. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -371
  153. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  154. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  155. package/src/module/layout/controller/layout.controller.ts +47 -47
  156. package/src/module/layout/entity/header-items.entity.ts +28 -28
  157. package/src/module/layout/entity/header-section.entity.ts +19 -19
  158. package/src/module/layout/layout.module.ts +21 -21
  159. package/src/module/layout/repository/header-items.repository.ts +18 -18
  160. package/src/module/layout/repository/header-section.repository.ts +22 -22
  161. package/src/module/layout/service/header-section.service.ts +25 -25
  162. package/src/module/layout_preference/controller/layout_preference.controller.ts +47 -47
  163. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  164. package/src/module/layout_preference/layout_preference.module.ts +18 -18
  165. package/src/module/layout_preference/repository/layout_preference.repository.ts +30 -30
  166. package/src/module/layout_preference/service/layout_preference.service.ts +172 -172
  167. package/src/module/lead/controller/lead.controller.ts +30 -30
  168. package/src/module/lead/lead.module.ts +14 -14
  169. package/src/module/lead/repository/lead.repository.ts +41 -41
  170. package/src/module/lead/service/lead.service.ts +54 -54
  171. package/src/module/listmaster/controller/list-master.controller.ts +143 -143
  172. package/src/module/listmaster/entity/list-master-items.entity.ts +41 -41
  173. package/src/module/listmaster/entity/list-master.entity.ts +32 -32
  174. package/src/module/listmaster/listmaster.module.ts +30 -30
  175. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  176. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  177. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  178. package/src/module/listmaster/service/list-master.service.ts +360 -360
  179. package/src/module/mapper/controller/field-mapper.controller.ts +69 -69
  180. package/src/module/mapper/controller/mapper.controller.ts +14 -14
  181. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  182. package/src/module/mapper/entity/field-lovs.entity.ts +20 -20
  183. package/src/module/mapper/entity/field-mapper.entity.ts +37 -37
  184. package/src/module/mapper/entity/mapper.entity.ts +17 -17
  185. package/src/module/mapper/mapper.module.ts +34 -34
  186. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  187. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  188. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  189. package/src/module/mapper/service/field-mapper.service.ts +223 -223
  190. package/src/module/mapper/service/mapper.service.ts +72 -72
  191. package/src/module/master/controller/master.controller.ts +74 -74
  192. package/src/module/master/service/master.service.ts +486 -486
  193. package/src/module/meta/controller/app-master.controller.ts +38 -38
  194. package/src/module/meta/controller/attribute-master.controller.ts +66 -66
  195. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  196. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  197. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  198. package/src/module/meta/controller/entity.controller.ts +385 -385
  199. package/src/module/meta/controller/media.controller.ts +82 -82
  200. package/src/module/meta/controller/meta.controller.ts +96 -96
  201. package/src/module/meta/controller/view-master.controller.ts +86 -86
  202. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  203. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  204. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  205. package/src/module/meta/entity/app-master.entity.ts +34 -34
  206. package/src/module/meta/entity/attribute-master.entity.ts +87 -87
  207. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  208. package/src/module/meta/entity/entity-master.entity.ts +78 -78
  209. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  210. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  211. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  212. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  213. package/src/module/meta/entity/media-data.entity.ts +32 -32
  214. package/src/module/meta/entity/preference.entity.ts +62 -62
  215. package/src/module/meta/entity/view-master.entity.ts +41 -41
  216. package/src/module/meta/entity.module.ts +156 -156
  217. package/src/module/meta/repository/app-master.repository.ts +20 -20
  218. package/src/module/meta/repository/attribute-master.repository.ts +110 -110
  219. package/src/module/meta/repository/entity-master.repository.ts +66 -66
  220. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  221. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  222. package/src/module/meta/repository/media-data.repository.ts +50 -50
  223. package/src/module/meta/repository/preference.repository.ts +20 -20
  224. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  225. package/src/module/meta/repository/view-master.repository.ts +42 -42
  226. package/src/module/meta/service/app-master.service.ts +37 -37
  227. package/src/module/meta/service/attribute-master.service.ts +117 -117
  228. package/src/module/meta/service/common.service.ts +9 -9
  229. package/src/module/meta/service/entity-dynamic.service.ts +762 -762
  230. package/src/module/meta/service/entity-list.service.ts +205 -205
  231. package/src/module/meta/service/entity-master.service.ts +164 -164
  232. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  233. package/src/module/meta/service/entity-relation.service.ts +69 -69
  234. package/src/module/meta/service/entity-service-impl.service.ts +524 -524
  235. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  236. package/src/module/meta/service/entity-table.service.ts +150 -150
  237. package/src/module/meta/service/entity-validation.service.ts +185 -185
  238. package/src/module/meta/service/entity.service.ts +67 -67
  239. package/src/module/meta/service/field-group.service.ts +103 -103
  240. package/src/module/meta/service/media-data.service.ts +140 -140
  241. package/src/module/meta/service/populate-meta.service.ts +174 -174
  242. package/src/module/meta/service/preference.service.ts +16 -16
  243. package/src/module/meta/service/resolver.service.ts +256 -256
  244. package/src/module/meta/service/section-master.service.ts +104 -104
  245. package/src/module/meta/service/update-form-json.service.ts +22 -22
  246. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  247. package/src/module/meta/service/view-master.service.ts +111 -111
  248. package/src/module/module/controller/menu.controller.ts +15 -15
  249. package/src/module/module/controller/module-access.controller.ts +132 -132
  250. package/src/module/module/entity/menu.entity.ts +43 -43
  251. package/src/module/module/entity/module-access.entity.ts +25 -25
  252. package/src/module/module/entity/module-action.entity.ts +17 -17
  253. package/src/module/module/entity/module.entity.ts +52 -52
  254. package/src/module/module/module.module.ts +42 -42
  255. package/src/module/module/repository/menu.repository.ts +184 -184
  256. package/src/module/module/repository/module-access.repository.ts +327 -327
  257. package/src/module/module/service/menu.service.ts +82 -82
  258. package/src/module/module/service/module-access.service.ts +209 -209
  259. package/src/module/notification/controller/notification.controller.ts +58 -58
  260. package/src/module/notification/controller/otp.controller.ts +117 -117
  261. package/src/module/notification/entity/notification.entity.ts +23 -23
  262. package/src/module/notification/entity/otp.entity.ts +28 -28
  263. package/src/module/notification/firebase-admin.config.ts +22 -22
  264. package/src/module/notification/notification.module.ts +69 -69
  265. package/src/module/notification/repository/otp.repository.ts +27 -27
  266. package/src/module/notification/service/email.service.ts +127 -127
  267. package/src/module/notification/service/notification.service.ts +138 -138
  268. package/src/module/notification/service/otp.service.ts +121 -121
  269. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  270. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  271. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  272. package/src/module/third-party-module/third-party.module.ts +12 -12
  273. package/src/module/user/controller/login.controller.ts +197 -197
  274. package/src/module/user/controller/user.controller.ts +40 -40
  275. package/src/module/user/dto/create-user.dto.ts +62 -62
  276. package/src/module/user/dto/update-user.dto.ts +4 -4
  277. package/src/module/user/entity/role.entity.ts +33 -33
  278. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  279. package/src/module/user/entity/user-session.entity.ts +61 -61
  280. package/src/module/user/entity/user.entity.ts +68 -68
  281. package/src/module/user/repository/role.repository.ts +96 -96
  282. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  283. package/src/module/user/repository/user.repository.ts +50 -50
  284. package/src/module/user/repository/userSession.repository.ts +33 -33
  285. package/src/module/user/service/login.service.ts +280 -280
  286. package/src/module/user/service/role.service.ts +189 -189
  287. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  288. package/src/module/user/service/user-session.service.ts +168 -168
  289. package/src/module/user/service/user.service.ts +353 -353
  290. package/src/module/user/user.module.ts +65 -65
  291. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  292. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  293. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  294. package/src/module/workflow/controller/action.controller.ts +95 -95
  295. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  296. package/src/module/workflow/controller/comm-template.controller.ts +34 -34
  297. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  298. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  299. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  300. package/src/module/workflow/controller/stage.controller.ts +50 -50
  301. package/src/module/workflow/controller/task.controller.ts +77 -77
  302. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  303. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  304. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  305. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  306. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  307. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  308. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  309. package/src/module/workflow/entity/action.entity.ts +50 -50
  310. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  311. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  312. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  313. package/src/module/workflow/entity/form-master.entity.ts +27 -27
  314. package/src/module/workflow/entity/form.entity.ts +25 -25
  315. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  316. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  317. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  318. package/src/module/workflow/entity/stage.entity.ts +20 -20
  319. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  320. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  321. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  322. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  323. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  324. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  325. package/src/module/workflow/repository/action-data.repository.ts +219 -219
  326. package/src/module/workflow/repository/action.repository.ts +277 -277
  327. package/src/module/workflow/repository/activity-log.repository.ts +121 -121
  328. package/src/module/workflow/repository/comm-template.repository.ts +142 -142
  329. package/src/module/workflow/repository/form-master.repository.ts +61 -61
  330. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  331. package/src/module/workflow/repository/stage-movement.repository.ts +227 -227
  332. package/src/module/workflow/repository/stage.repository.ts +172 -172
  333. package/src/module/workflow/repository/task.repository.ts +113 -113
  334. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  335. package/src/module/workflow/service/action-category.service.ts +33 -33
  336. package/src/module/workflow/service/action-data.service.ts +62 -62
  337. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  338. package/src/module/workflow/service/action-template-mapping.service.ts +55 -55
  339. package/src/module/workflow/service/action.service.ts +247 -247
  340. package/src/module/workflow/service/activity-log.service.ts +107 -107
  341. package/src/module/workflow/service/comm-template.service.ts +121 -121
  342. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  343. package/src/module/workflow/service/form-master.service.ts +35 -35
  344. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  345. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  346. package/src/module/workflow/service/stage-group.service.ts +300 -300
  347. package/src/module/workflow/service/stage.service.ts +199 -199
  348. package/src/module/workflow/service/task.service.ts +504 -504
  349. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  350. package/src/module/workflow/service/workflow-meta.service.ts +581 -581
  351. package/src/module/workflow/service/workflow.service.ts +205 -205
  352. package/src/module/workflow/workflow.module.ts +176 -176
  353. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +21 -21
  354. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  355. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +35 -35
  356. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  357. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  358. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  359. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  360. package/src/module/workflow-automation/service/workflow-automation.service.ts +343 -343
  361. package/src/module/workflow-automation/workflow-automation.module.ts +34 -34
  362. package/src/resources/dev.properties.yaml +30 -30
  363. package/src/resources/local.properties.yaml +23 -23
  364. package/src/resources/properties.module.ts +12 -12
  365. package/src/resources/properties.yaml.ts +11 -11
  366. package/src/resources/uat.properties.yaml +15 -15
  367. package/src/utils/dto/excel-data.dto.ts +14 -14
  368. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  369. package/src/utils/service/base64util.service.ts +18 -18
  370. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  371. package/src/utils/service/codeGenerator.service.ts +22 -22
  372. package/src/utils/service/dateUtil.service.ts +17 -17
  373. package/src/utils/service/encryptUtil.service.ts +97 -97
  374. package/src/utils/service/excel-helper.service.ts +72 -72
  375. package/src/utils/service/excelUtil.service.ts +15 -15
  376. package/src/utils/service/file-util.service.ts +11 -11
  377. package/src/utils/service/json-util.service.ts +23 -23
  378. package/src/utils/service/loggingUtil.service.ts +34 -34
  379. package/src/utils/service/reflection-helper.service.ts +62 -62
  380. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  381. package/src/utils/utils.module.ts +25 -25
  382. package/tsconfig.build.json +4 -4
  383. package/tsconfig.json +24 -24
@@ -1,280 +1,280 @@
1
- import { BadRequestException, Inject, Injectable } from '@nestjs/common';
2
- import { ConfigService } from '@nestjs/config';
3
- import { InjectRepository } from '@nestjs/typeorm';
4
- import {
5
- INVITATION_STATUS_ACCEPTED,
6
- STATUS_ACTIVE,
7
- } from 'src/constant/global.constant';
8
- import { OrganizationRepository } from 'src/module/enterprise/repository/organization.repository';
9
- import { ListMasterService } from 'src/module/listmaster/service/list-master.service';
10
- import { DataSource, Repository } from 'typeorm';
11
- import { EncryptUtilService } from '../../../utils/service/encryptUtil.service';
12
- import { Role } from '../entity/role.entity';
13
- import { UserRoleMapping } from '../entity/user-role-mapping.entity';
14
- import { UserData } from '../entity/user.entity';
15
- import { UserSessionService } from './user-session.service';
16
- import { UserService } from './user.service';
17
- import { JwtAuthService } from 'src/module/auth/services/jwt.service';
18
-
19
- @Injectable()
20
- export class LoginService {
21
- constructor(
22
- @Inject('UserService') private readonly userService: UserService,
23
- private userSessionService: UserSessionService,
24
- private configService: ConfigService,
25
- @InjectRepository(UserRoleMapping)
26
- private readonly userRoleMappingRepository: Repository<UserRoleMapping>,
27
- @InjectRepository(Role)
28
- private readonly roleRepo: Repository<Role>,
29
- private readonly dataSource: DataSource,
30
- private readonly organizationRepository: OrganizationRepository,
31
- @Inject('ListMasterService')
32
- private readonly listMasterService: ListMasterService,
33
- private readonly jwtAuthService: JwtAuthService,
34
- @InjectRepository(UserData)
35
- private readonly userRepository: Repository<UserData>,
36
- ) {}
37
-
38
- masterKey: string = this.configService.get('MASTER_KEY') || '';
39
- masterIv: string = this.configService.get('MASTER_IV') || '';
40
-
41
- async login(data: { email: string; password?: string; is_otp?: boolean }) {
42
- const { email, password, is_otp = false } = data;
43
-
44
- let organization;
45
-
46
-
47
- // 🔹 Step 2: Find the user by email + organization check
48
- const user = await this.userService.findByEmailId(email);
49
-
50
- if (!user || (organization && user.organization_id !== organization.id)) {
51
- throw new BadRequestException('User not found in organization.');
52
- }
53
-
54
- // 🔹 Step 3: Verify org status
55
- const userOrgData = await this.organizationRepository.findOrganizationById(
56
- user.organization_id,
57
- );
58
-
59
- const resolveStatus = await this.listMasterService.getResolvedListCode(
60
- STATUS_ACTIVE,
61
- user?.organization_id || 0,
62
- );
63
-
64
- if (
65
- user.status != resolveStatus.id ||
66
- userOrgData?.status != resolveStatus.id
67
- ) {
68
- throw new BadRequestException('User is inactive.');
69
- }
70
-
71
- // 🔹 Step 4: Verify password if not OTP
72
- if (!is_otp) {
73
- const encryptedPassword = EncryptUtilService.encryptGCM(
74
- password,
75
- this.masterKey,
76
- this.masterIv,
77
- );
78
-
79
- if (encryptedPassword !== user.password) {
80
- return {
81
- success: false,
82
- message: 'Oops! Your password is incorrect.',
83
- type: 'password',
84
- };
85
- }
86
- }
87
-
88
- // 🔹 Step 5: App access check
89
- const appcode = user.last_app_access;
90
-
91
- if (!user.last_app_access) {
92
- await this.userService.setDefaultLastAccess(user.id, appcode);
93
- }
94
-
95
- const roleMappings = await this.userRoleMappingRepository.find({
96
- where: { user_id: user.id, appcode },
97
- });
98
-
99
- if (!roleMappings.length) {
100
- throw new BadRequestException(
101
- 'User does not have any access mapped for this app.',
102
- );
103
- }
104
-
105
- // 🔹 Step 6: Resolve default access
106
- const defaultAccess = await this.getDefaultAccess(user, roleMappings);
107
-
108
- await this.userService.setLastLevelTypeAndId(
109
- user.id,
110
- defaultAccess.level_type,
111
- defaultAccess.level_id,
112
- defaultAccess.appcode,
113
- );
114
-
115
- const token = await this.userSessionService.createSession(
116
- user,
117
- defaultAccess.appcode,
118
- defaultAccess,
119
- );
120
-
121
- // 🔹 Step 7: Update first login + invitation status
122
- const resolvedInvitationStatus =
123
- await this.listMasterService.getResolvedListCode(
124
- INVITATION_STATUS_ACCEPTED,
125
- user?.organization_id || 0,
126
- );
127
-
128
- if (user.is_firstlogin === 1) {
129
- user.invitation_status = resolvedInvitationStatus.id;
130
- user.is_firstlogin = 0;
131
- const { password, ...userWithoutPassword } = user;
132
- await this.userService.updateEntity(userWithoutPassword, user);
133
- }
134
-
135
- // 🔹 Step 8: Return response
136
-
137
- const org = await this.organizationRepository.findOrganizationById(
138
- user.organization_id,
139
- );
140
- let slug: string;
141
- if (org) {
142
- slug = org.slug;
143
- } else {
144
- throw new BadRequestException();
145
- }
146
-
147
- return {
148
- success: true,
149
- accessToken: token,
150
- appcode: defaultAccess.appcode,
151
- level_type: defaultAccess.level_type,
152
- level_id: defaultAccess.level_id,
153
- slug: slug,
154
- };
155
- }
156
-
157
- async formLogin(body: any): Promise<any> {
158
- if (body) {
159
- const { entity_type, entity_id } = body;
160
-
161
- const entityData = await this.dataSource.query(
162
- `SELECT level_id, level_type, organization_id FROM ether_core.crm_lead where id = ${entity_id}`,
163
- );
164
-
165
- if (entityData.length > 0) {
166
- const level_id = entityData[0].level_id;
167
- const level_type = entityData[0].level_type;
168
- const organization_id = entityData[0].organization_id;
169
-
170
- const token = await this.jwtAuthService.generateJwt({
171
- level_id: level_id,
172
- level_type: level_type,
173
- organization_id: organization_id,
174
- });
175
-
176
- return {
177
- success: true,
178
- accessToken: token,
179
- };
180
- }
181
- }
182
- }
183
-
184
- private async getDefaultAccess(
185
- user: any,
186
- roleMappings: any[],
187
- ): Promise<{ level_type: string; level_id: string; appcode: string }> {
188
- const orgAccess = roleMappings.find((r) => r.level_type === 'ORG');
189
- const brnAccesses = roleMappings.filter((r) => r.level_type === 'BRN');
190
- const schAccesses = roleMappings.filter((r) => r.level_type === 'SCH');
191
-
192
- const validURM = roleMappings.find(
193
- (r) =>
194
- r.level_type === user.last_level_type &&
195
- r.level_id === user.last_level_id,
196
- );
197
-
198
- if (user.last_level_type && user.last_level_id && validURM) {
199
- return {
200
- level_type: user.last_level_type,
201
- level_id: user.last_level_id,
202
- appcode: user.last_app_access,
203
- };
204
- }
205
-
206
- if (orgAccess) {
207
- return {
208
- level_type: 'ORG',
209
- level_id: orgAccess.level_id,
210
- appcode: orgAccess.appcode,
211
- };
212
- }
213
-
214
- if (brnAccesses.length) {
215
- const brandId = brnAccesses[0].level_id;
216
-
217
- const rows = await this.dataSource.query(
218
- `SELECT id FROM eth_school_profile WHERE brand_id = ? ORDER BY id ASC LIMIT 1`,
219
- [brandId],
220
- );
221
-
222
- if (rows.length) {
223
- return {
224
- level_type: 'SCH',
225
- level_id: rows[0].id,
226
- appcode: brnAccesses[0].appcode,
227
- };
228
- } else {
229
- throw new BadRequestException(
230
- 'User has BRN access but no schools found under that brand.',
231
- );
232
- }
233
- }
234
-
235
- if (schAccesses.length) {
236
- return {
237
- level_type: 'SCH',
238
- level_id: schAccesses[0].level_id,
239
- appcode: schAccesses[0].appcode,
240
- };
241
- }
242
-
243
- throw new BadRequestException(
244
- 'User does not have ORG, BRN, or SCH access for this app.',
245
- );
246
- }
247
-
248
- async loginWithGoogle(data: {
249
- email: string;
250
- subdomain?: string;
251
- fcm_token?: string;
252
- ip?: string;
253
- browser?: string;
254
- os?: string;
255
- }) {
256
- const { email } = data;
257
- const user = await this.userService.findByEmailId(email);
258
-
259
- if (!user) {
260
- return new BadRequestException('User not found');
261
- }
262
-
263
- // Create session (Same as JWT login flow)
264
- return await this.login({
265
- email,
266
- is_otp: true,
267
- });
268
- }
269
-
270
- async logout(sessionKey: string) {
271
- const userSession =
272
- await this.userSessionService.findBySessionKey(sessionKey);
273
- if (userSession) {
274
- userSession.is_session_loggedout = 1;
275
- userSession.logout_time = new Date();
276
- await this.userSessionService.updateSession(userSession);
277
- return { message: 'Logged out successfully' };
278
- }
279
- }
280
- }
1
+ import { BadRequestException, Inject, Injectable } from '@nestjs/common';
2
+ import { ConfigService } from '@nestjs/config';
3
+ import { InjectRepository } from '@nestjs/typeorm';
4
+ import {
5
+ INVITATION_STATUS_ACCEPTED,
6
+ STATUS_ACTIVE,
7
+ } from 'src/constant/global.constant';
8
+ import { OrganizationRepository } from 'src/module/enterprise/repository/organization.repository';
9
+ import { ListMasterService } from 'src/module/listmaster/service/list-master.service';
10
+ import { DataSource, Repository } from 'typeorm';
11
+ import { EncryptUtilService } from '../../../utils/service/encryptUtil.service';
12
+ import { Role } from '../entity/role.entity';
13
+ import { UserRoleMapping } from '../entity/user-role-mapping.entity';
14
+ import { UserData } from '../entity/user.entity';
15
+ import { UserSessionService } from './user-session.service';
16
+ import { UserService } from './user.service';
17
+ import { JwtAuthService } from 'src/module/auth/services/jwt.service';
18
+
19
+ @Injectable()
20
+ export class LoginService {
21
+ constructor(
22
+ @Inject('UserService') private readonly userService: UserService,
23
+ private userSessionService: UserSessionService,
24
+ private configService: ConfigService,
25
+ @InjectRepository(UserRoleMapping)
26
+ private readonly userRoleMappingRepository: Repository<UserRoleMapping>,
27
+ @InjectRepository(Role)
28
+ private readonly roleRepo: Repository<Role>,
29
+ private readonly dataSource: DataSource,
30
+ private readonly organizationRepository: OrganizationRepository,
31
+ @Inject('ListMasterService')
32
+ private readonly listMasterService: ListMasterService,
33
+ private readonly jwtAuthService: JwtAuthService,
34
+ @InjectRepository(UserData)
35
+ private readonly userRepository: Repository<UserData>,
36
+ ) {}
37
+
38
+ masterKey: string = this.configService.get('MASTER_KEY') || '';
39
+ masterIv: string = this.configService.get('MASTER_IV') || '';
40
+
41
+ async login(data: { email: string; password?: string; is_otp?: boolean }) {
42
+ const { email, password, is_otp = false } = data;
43
+
44
+ let organization;
45
+
46
+
47
+ // 🔹 Step 2: Find the user by email + organization check
48
+ const user = await this.userService.findByEmailId(email);
49
+
50
+ if (!user || (organization && user.organization_id !== organization.id)) {
51
+ throw new BadRequestException('User not found in organization.');
52
+ }
53
+
54
+ // 🔹 Step 3: Verify org status
55
+ const userOrgData = await this.organizationRepository.findOrganizationById(
56
+ user.organization_id,
57
+ );
58
+
59
+ const resolveStatus = await this.listMasterService.getResolvedListCode(
60
+ STATUS_ACTIVE,
61
+ user?.organization_id || 0,
62
+ );
63
+
64
+ if (
65
+ user.status != resolveStatus.id ||
66
+ userOrgData?.status != resolveStatus.id
67
+ ) {
68
+ throw new BadRequestException('User is inactive.');
69
+ }
70
+
71
+ // 🔹 Step 4: Verify password if not OTP
72
+ if (!is_otp) {
73
+ const encryptedPassword = EncryptUtilService.encryptGCM(
74
+ password,
75
+ this.masterKey,
76
+ this.masterIv,
77
+ );
78
+
79
+ if (encryptedPassword !== user.password) {
80
+ return {
81
+ success: false,
82
+ message: 'Oops! Your password is incorrect.',
83
+ type: 'password',
84
+ };
85
+ }
86
+ }
87
+
88
+ // 🔹 Step 5: App access check
89
+ const appcode = user.last_app_access;
90
+
91
+ if (!user.last_app_access) {
92
+ await this.userService.setDefaultLastAccess(user.id, appcode);
93
+ }
94
+
95
+ const roleMappings = await this.userRoleMappingRepository.find({
96
+ where: { user_id: user.id, appcode },
97
+ });
98
+
99
+ if (!roleMappings.length) {
100
+ throw new BadRequestException(
101
+ 'User does not have any access mapped for this app.',
102
+ );
103
+ }
104
+
105
+ // 🔹 Step 6: Resolve default access
106
+ const defaultAccess = await this.getDefaultAccess(user, roleMappings);
107
+
108
+ await this.userService.setLastLevelTypeAndId(
109
+ user.id,
110
+ defaultAccess.level_type,
111
+ defaultAccess.level_id,
112
+ defaultAccess.appcode,
113
+ );
114
+
115
+ const token = await this.userSessionService.createSession(
116
+ user,
117
+ defaultAccess.appcode,
118
+ defaultAccess,
119
+ );
120
+
121
+ // 🔹 Step 7: Update first login + invitation status
122
+ const resolvedInvitationStatus =
123
+ await this.listMasterService.getResolvedListCode(
124
+ INVITATION_STATUS_ACCEPTED,
125
+ user?.organization_id || 0,
126
+ );
127
+
128
+ if (user.is_firstlogin === 1) {
129
+ user.invitation_status = resolvedInvitationStatus.id;
130
+ user.is_firstlogin = 0;
131
+ const { password, ...userWithoutPassword } = user;
132
+ await this.userService.updateEntity(userWithoutPassword, user);
133
+ }
134
+
135
+ // 🔹 Step 8: Return response
136
+
137
+ const org = await this.organizationRepository.findOrganizationById(
138
+ user.organization_id,
139
+ );
140
+ let slug: string;
141
+ if (org) {
142
+ slug = org.slug;
143
+ } else {
144
+ throw new BadRequestException();
145
+ }
146
+
147
+ return {
148
+ success: true,
149
+ accessToken: token,
150
+ appcode: defaultAccess.appcode,
151
+ level_type: defaultAccess.level_type,
152
+ level_id: defaultAccess.level_id,
153
+ slug: slug,
154
+ };
155
+ }
156
+
157
+ async formLogin(body: any): Promise<any> {
158
+ if (body) {
159
+ const { entity_type, entity_id } = body;
160
+
161
+ const entityData = await this.dataSource.query(
162
+ `SELECT level_id, level_type, organization_id FROM ether_core.crm_lead where id = ${entity_id}`,
163
+ );
164
+
165
+ if (entityData.length > 0) {
166
+ const level_id = entityData[0].level_id;
167
+ const level_type = entityData[0].level_type;
168
+ const organization_id = entityData[0].organization_id;
169
+
170
+ const token = await this.jwtAuthService.generateJwt({
171
+ level_id: level_id,
172
+ level_type: level_type,
173
+ organization_id: organization_id,
174
+ });
175
+
176
+ return {
177
+ success: true,
178
+ accessToken: token,
179
+ };
180
+ }
181
+ }
182
+ }
183
+
184
+ private async getDefaultAccess(
185
+ user: any,
186
+ roleMappings: any[],
187
+ ): Promise<{ level_type: string; level_id: string; appcode: string }> {
188
+ const orgAccess = roleMappings.find((r) => r.level_type === 'ORG');
189
+ const brnAccesses = roleMappings.filter((r) => r.level_type === 'BRN');
190
+ const schAccesses = roleMappings.filter((r) => r.level_type === 'SCH');
191
+
192
+ const validURM = roleMappings.find(
193
+ (r) =>
194
+ r.level_type === user.last_level_type &&
195
+ r.level_id === user.last_level_id,
196
+ );
197
+
198
+ if (user.last_level_type && user.last_level_id && validURM) {
199
+ return {
200
+ level_type: user.last_level_type,
201
+ level_id: user.last_level_id,
202
+ appcode: user.last_app_access,
203
+ };
204
+ }
205
+
206
+ if (orgAccess) {
207
+ return {
208
+ level_type: 'ORG',
209
+ level_id: orgAccess.level_id,
210
+ appcode: orgAccess.appcode,
211
+ };
212
+ }
213
+
214
+ if (brnAccesses.length) {
215
+ const brandId = brnAccesses[0].level_id;
216
+
217
+ const rows = await this.dataSource.query(
218
+ `SELECT id FROM eth_school_profile WHERE brand_id = ? ORDER BY id ASC LIMIT 1`,
219
+ [brandId],
220
+ );
221
+
222
+ if (rows.length) {
223
+ return {
224
+ level_type: 'SCH',
225
+ level_id: rows[0].id,
226
+ appcode: brnAccesses[0].appcode,
227
+ };
228
+ } else {
229
+ throw new BadRequestException(
230
+ 'User has BRN access but no schools found under that brand.',
231
+ );
232
+ }
233
+ }
234
+
235
+ if (schAccesses.length) {
236
+ return {
237
+ level_type: 'SCH',
238
+ level_id: schAccesses[0].level_id,
239
+ appcode: schAccesses[0].appcode,
240
+ };
241
+ }
242
+
243
+ throw new BadRequestException(
244
+ 'User does not have ORG, BRN, or SCH access for this app.',
245
+ );
246
+ }
247
+
248
+ async loginWithGoogle(data: {
249
+ email: string;
250
+ subdomain?: string;
251
+ fcm_token?: string;
252
+ ip?: string;
253
+ browser?: string;
254
+ os?: string;
255
+ }) {
256
+ const { email } = data;
257
+ const user = await this.userService.findByEmailId(email);
258
+
259
+ if (!user) {
260
+ return new BadRequestException('User not found');
261
+ }
262
+
263
+ // Create session (Same as JWT login flow)
264
+ return await this.login({
265
+ email,
266
+ is_otp: true,
267
+ });
268
+ }
269
+
270
+ async logout(sessionKey: string) {
271
+ const userSession =
272
+ await this.userSessionService.findBySessionKey(sessionKey);
273
+ if (userSession) {
274
+ userSession.is_session_loggedout = 1;
275
+ userSession.logout_time = new Date();
276
+ await this.userSessionService.updateSession(userSession);
277
+ return { message: 'Logged out successfully' };
278
+ }
279
+ }
280
+ }