rez_core 4.0.97 → 4.0.98

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