rez_core 4.0.88 → 4.0.90

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/.prettierrc +3 -3
  2. package/README.md +99 -99
  3. package/dist/module/auth/guards/role.guard.js +3 -3
  4. package/dist/module/auth/services/auth.service.js +2 -2
  5. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  6. package/dist/module/filter/service/filter-evaluator.service.js +2 -2
  7. package/dist/module/filter/service/filter.service.js +32 -23
  8. package/dist/module/filter/service/filter.service.js.map +1 -1
  9. package/dist/module/integration/examples/usage.example.js +9 -9
  10. package/dist/module/integration/service/integration.service.js +1 -1
  11. package/dist/module/integration/service/wrapper.service.js +25 -25
  12. package/dist/module/listmaster/service/list-master-item.service.js +2 -2
  13. package/dist/module/mapper/service/field-mapper.service.js +4 -4
  14. package/dist/module/mapper/service/mapper.service.js +2 -2
  15. package/dist/module/meta/service/entity-dynamic.service.js +18 -18
  16. package/dist/module/meta/service/entity-list.service.js +3 -3
  17. package/dist/module/meta/service/entity-master.service.js +3 -3
  18. package/dist/module/meta/service/entity-relation.service.js +11 -11
  19. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  20. package/dist/module/meta/service/resolver.service.js +3 -3
  21. package/dist/module/module/repository/menu.repository.js +12 -12
  22. package/dist/module/notification/service/notification.service.js +9 -9
  23. package/dist/module/user/controller/login.controller.js +18 -18
  24. package/dist/module/user/service/role.service.js +4 -4
  25. package/dist/module/user/service/user-session.service.js +2 -2
  26. package/dist/module/workflow/repository/action.repository.js +20 -20
  27. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  28. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  29. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  30. package/dist/module/workflow/repository/stage-movement.repository.js +15 -15
  31. package/dist/module/workflow/repository/stage.repository.js +8 -8
  32. package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
  33. package/dist/module/workflow/service/action.service.js +7 -7
  34. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  35. package/dist/module/workflow/service/stage-group.service.js +2 -2
  36. package/dist/module/workflow/service/stage.service.js +2 -2
  37. package/dist/module/workflow/service/task.service.js +28 -28
  38. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  39. package/dist/module/workflow/service/workflow-meta.service.js +35 -35
  40. package/dist/module/workflow/service/workflow.service.js +2 -2
  41. package/dist/tsconfig.build.tsbuildinfo +1 -1
  42. package/dist/utils/service/reflection-helper.service.js +2 -2
  43. package/docs/modules/event-driven-integration-design.md +91 -91
  44. package/docs/modules/integration.md +250 -250
  45. package/eslint.config.mjs +34 -34
  46. package/nest-cli.json +14 -14
  47. package/package.json +118 -118
  48. package/src/app.controller.ts +12 -12
  49. package/src/app.module.ts +49 -49
  50. package/src/app.service.ts +8 -8
  51. package/src/config/config.module.ts +18 -18
  52. package/src/config/database.config.ts +23 -23
  53. package/src/constant/global.constant.ts +67 -67
  54. package/src/core.module.ts +81 -81
  55. package/src/decorators/roles.decorator.ts +7 -7
  56. package/src/dtos/response.dto.ts +6 -6
  57. package/src/dtos/response.ts +5 -5
  58. package/src/index.ts +1 -1
  59. package/src/module/auth/auth.module.ts +49 -49
  60. package/src/module/auth/controller/auth.controller.ts +28 -28
  61. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  62. package/src/module/auth/guards/jwt.guard.ts +22 -22
  63. package/src/module/auth/guards/role.guard.ts +68 -68
  64. package/src/module/auth/services/auth.service.ts +50 -50
  65. package/src/module/auth/services/jwt.service.ts +11 -11
  66. package/src/module/auth/strategies/google.strategy.ts +54 -54
  67. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  68. package/src/module/auth/strategies/local.strategy.ts +13 -13
  69. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  70. package/src/module/dashboard/dashboard.module.ts +21 -21
  71. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  72. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  73. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  74. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  75. package/src/module/dev/dev.module.ts +12 -12
  76. package/src/module/dev/service/dev.service.ts +7 -7
  77. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  78. package/src/module/enterprise/enterprise.module.ts +30 -30
  79. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  80. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  81. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  82. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  83. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  84. package/src/module/enterprise/repository/school.repository.ts +278 -278
  85. package/src/module/enterprise/service/brand.service.ts +5 -5
  86. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  87. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  88. package/src/module/enterprise/service/organization.service.ts +145 -145
  89. package/src/module/filter/controller/filter.controller.ts +84 -84
  90. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  91. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  92. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  93. package/src/module/filter/filter.module.ts +31 -31
  94. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  95. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  96. package/src/module/filter/service/filter.service.ts +941 -930
  97. package/src/module/filter/service/saved-filter.service.ts +170 -170
  98. package/src/module/ics/controller/ics.controller.ts +21 -21
  99. package/src/module/ics/dto/ics.dto.ts +55 -55
  100. package/src/module/ics/ics.module.ts +13 -13
  101. package/src/module/ics/service/ics.service.ts +57 -57
  102. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  103. package/src/module/integration/controller/integration.controller.ts +662 -662
  104. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  105. package/src/module/integration/dto/create-config.dto.ts +526 -526
  106. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  107. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  108. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  109. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  110. package/src/module/integration/examples/usage.example.ts +338 -338
  111. package/src/module/integration/factories/base.factory.ts +7 -7
  112. package/src/module/integration/factories/email.factory.ts +49 -49
  113. package/src/module/integration/factories/integration.factory.ts +121 -121
  114. package/src/module/integration/factories/sms.factory.ts +51 -51
  115. package/src/module/integration/factories/telephone.factory.ts +41 -41
  116. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  117. package/src/module/integration/integration.module.ts +110 -110
  118. package/src/module/integration/service/calendar-event.service.ts +118 -118
  119. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  120. package/src/module/integration/service/integration-queue.service.ts +229 -229
  121. package/src/module/integration/service/integration.service.ts +2621 -2621
  122. package/src/module/integration/service/oauth.service.ts +224 -224
  123. package/src/module/integration/service/wrapper.service.ts +499 -499
  124. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  125. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  126. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  127. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  128. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  129. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  130. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  131. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  132. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  133. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  134. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  135. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  136. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  137. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  138. package/src/module/layout/controller/layout.controller.ts +47 -47
  139. package/src/module/layout/entity/header-items.entity.ts +28 -28
  140. package/src/module/layout/entity/header-section.entity.ts +19 -19
  141. package/src/module/layout/layout.module.ts +21 -21
  142. package/src/module/layout/repository/header-items.repository.ts +18 -18
  143. package/src/module/layout/repository/header-section.repository.ts +22 -22
  144. package/src/module/layout/service/header-section.service.ts +25 -25
  145. package/src/module/layout_preference/controller/layout_preference.controller.ts +47 -47
  146. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  147. package/src/module/layout_preference/layout_preference.module.ts +18 -18
  148. package/src/module/layout_preference/repository/layout_preference.repository.ts +30 -30
  149. package/src/module/layout_preference/service/layout_preference.service.ts +172 -172
  150. package/src/module/lead/controller/lead.controller.ts +30 -30
  151. package/src/module/lead/lead.module.ts +14 -14
  152. package/src/module/lead/repository/lead.repository.ts +41 -41
  153. package/src/module/lead/service/lead.service.ts +54 -54
  154. package/src/module/listmaster/controller/list-master.controller.ts +187 -187
  155. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  156. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  157. package/src/module/listmaster/listmaster.module.ts +44 -44
  158. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  159. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  160. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  161. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  162. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  163. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  164. package/src/module/listmaster/service/list-master.service.ts +442 -442
  165. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  166. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  167. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  168. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  169. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  170. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  171. package/src/module/mapper/mapper.module.ts +34 -34
  172. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  173. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  174. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  175. package/src/module/mapper/service/field-mapper.service.ts +266 -266
  176. package/src/module/mapper/service/mapper.service.ts +79 -79
  177. package/src/module/master/controller/master.controller.ts +74 -74
  178. package/src/module/master/service/master.service.ts +483 -483
  179. package/src/module/meta/controller/app-master.controller.ts +38 -38
  180. package/src/module/meta/controller/attribute-master.controller.ts +66 -66
  181. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  182. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  183. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  184. package/src/module/meta/controller/entity.controller.ts +392 -392
  185. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  186. package/src/module/meta/controller/media.controller.ts +107 -107
  187. package/src/module/meta/controller/meta.controller.ts +96 -96
  188. package/src/module/meta/controller/view-master.controller.ts +86 -86
  189. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  190. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  191. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  192. package/src/module/meta/entity/app-master.entity.ts +34 -34
  193. package/src/module/meta/entity/attribute-master.entity.ts +89 -89
  194. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  195. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  196. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  197. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  198. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  199. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  200. package/src/module/meta/entity/media-data.entity.ts +32 -32
  201. package/src/module/meta/entity/preference.entity.ts +62 -62
  202. package/src/module/meta/entity/view-master.entity.ts +41 -41
  203. package/src/module/meta/entity.module.ts +158 -158
  204. package/src/module/meta/repository/app-master.repository.ts +20 -20
  205. package/src/module/meta/repository/attribute-master.repository.ts +110 -110
  206. package/src/module/meta/repository/entity-master.repository.ts +69 -69
  207. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  208. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  209. package/src/module/meta/repository/media-data.repository.ts +50 -50
  210. package/src/module/meta/repository/preference.repository.ts +20 -20
  211. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  212. package/src/module/meta/repository/view-master.repository.ts +42 -42
  213. package/src/module/meta/service/app-master.service.ts +37 -37
  214. package/src/module/meta/service/attribute-master.service.ts +117 -117
  215. package/src/module/meta/service/common.service.ts +9 -9
  216. package/src/module/meta/service/entity-dynamic.service.ts +824 -824
  217. package/src/module/meta/service/entity-list.service.ts +205 -205
  218. package/src/module/meta/service/entity-master.service.ts +169 -169
  219. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  220. package/src/module/meta/service/entity-relation.service.ts +69 -69
  221. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  222. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  223. package/src/module/meta/service/entity-table.service.ts +150 -150
  224. package/src/module/meta/service/entity-validation.service.ts +187 -187
  225. package/src/module/meta/service/entity.service.ts +67 -67
  226. package/src/module/meta/service/field-group.service.ts +103 -103
  227. package/src/module/meta/service/media-data.service.ts +507 -507
  228. package/src/module/meta/service/populate-meta.service.ts +193 -193
  229. package/src/module/meta/service/preference.service.ts +16 -16
  230. package/src/module/meta/service/resolver.service.ts +267 -267
  231. package/src/module/meta/service/section-master.service.ts +104 -104
  232. package/src/module/meta/service/update-form-json.service.ts +22 -22
  233. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  234. package/src/module/meta/service/view-master.service.ts +127 -127
  235. package/src/module/module/controller/menu.controller.ts +15 -15
  236. package/src/module/module/controller/module-access.controller.ts +134 -134
  237. package/src/module/module/entity/menu.entity.ts +43 -43
  238. package/src/module/module/entity/module-access.entity.ts +25 -25
  239. package/src/module/module/entity/module-action.entity.ts +17 -17
  240. package/src/module/module/entity/module.entity.ts +52 -52
  241. package/src/module/module/module.module.ts +42 -42
  242. package/src/module/module/repository/menu.repository.ts +184 -184
  243. package/src/module/module/repository/module-access.repository.ts +344 -344
  244. package/src/module/module/service/menu.service.ts +82 -82
  245. package/src/module/module/service/module-access.service.ts +209 -209
  246. package/src/module/notification/controller/notification.controller.ts +58 -58
  247. package/src/module/notification/controller/otp.controller.ts +117 -117
  248. package/src/module/notification/entity/notification.entity.ts +26 -26
  249. package/src/module/notification/entity/otp.entity.ts +28 -28
  250. package/src/module/notification/firebase-admin.config.ts +22 -22
  251. package/src/module/notification/notification.module.ts +69 -69
  252. package/src/module/notification/repository/otp.repository.ts +27 -27
  253. package/src/module/notification/service/email.service.ts +127 -127
  254. package/src/module/notification/service/notification.service.ts +163 -163
  255. package/src/module/notification/service/otp.service.ts +132 -132
  256. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  257. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  258. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  259. package/src/module/third-party-module/third-party.module.ts +12 -12
  260. package/src/module/user/controller/login.controller.ts +197 -197
  261. package/src/module/user/controller/user.controller.ts +40 -40
  262. package/src/module/user/dto/create-user.dto.ts +62 -62
  263. package/src/module/user/dto/update-user.dto.ts +4 -4
  264. package/src/module/user/entity/role.entity.ts +33 -33
  265. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  266. package/src/module/user/entity/user-session.entity.ts +73 -73
  267. package/src/module/user/entity/user.entity.ts +59 -59
  268. package/src/module/user/repository/role.repository.ts +96 -96
  269. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  270. package/src/module/user/repository/user.repository.ts +50 -50
  271. package/src/module/user/repository/userSession.repository.ts +33 -33
  272. package/src/module/user/service/login.service.ts +284 -284
  273. package/src/module/user/service/role.service.ts +189 -189
  274. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  275. package/src/module/user/service/user-session.service.ts +168 -168
  276. package/src/module/user/service/user.service.ts +365 -365
  277. package/src/module/user/user.module.ts +65 -65
  278. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  279. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  280. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  281. package/src/module/workflow/controller/action.controller.ts +111 -111
  282. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  283. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  284. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  285. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  286. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  287. package/src/module/workflow/controller/stage.controller.ts +50 -50
  288. package/src/module/workflow/controller/task.controller.ts +77 -77
  289. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  290. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  291. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  292. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  293. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  294. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  295. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  296. package/src/module/workflow/entity/action.entity.ts +50 -50
  297. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  298. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  299. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  300. package/src/module/workflow/entity/form.entity.ts +25 -25
  301. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  302. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  303. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  304. package/src/module/workflow/entity/stage.entity.ts +20 -20
  305. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  306. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  307. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  308. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  309. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  310. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  311. package/src/module/workflow/repository/action-data.repository.ts +323 -323
  312. package/src/module/workflow/repository/action.repository.ts +323 -323
  313. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  314. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  315. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  316. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  317. package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
  318. package/src/module/workflow/repository/stage.repository.ts +172 -172
  319. package/src/module/workflow/repository/task.repository.ts +127 -127
  320. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  321. package/src/module/workflow/service/action-category.service.ts +33 -33
  322. package/src/module/workflow/service/action-data.service.ts +62 -62
  323. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  324. package/src/module/workflow/service/action-template-mapping.service.ts +104 -104
  325. package/src/module/workflow/service/action.service.ts +279 -279
  326. package/src/module/workflow/service/activity-log.service.ts +107 -107
  327. package/src/module/workflow/service/comm-template.service.ts +180 -180
  328. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  329. package/src/module/workflow/service/form-master.service.ts +35 -35
  330. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  331. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  332. package/src/module/workflow/service/stage-group.service.ts +319 -319
  333. package/src/module/workflow/service/stage.service.ts +199 -199
  334. package/src/module/workflow/service/task.service.ts +560 -560
  335. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  336. package/src/module/workflow/service/workflow-meta.service.ts +640 -640
  337. package/src/module/workflow/service/workflow.service.ts +205 -205
  338. package/src/module/workflow/workflow.module.ts +174 -174
  339. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +21 -21
  340. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  341. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +35 -35
  342. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  343. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  344. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  345. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  346. package/src/module/workflow-automation/service/workflow-automation.service.ts +347 -347
  347. package/src/module/workflow-automation/workflow-automation.module.ts +34 -34
  348. package/src/resources/dev.properties.yaml +30 -30
  349. package/src/resources/local.properties.yaml +27 -27
  350. package/src/resources/properties.module.ts +12 -12
  351. package/src/resources/properties.yaml.ts +11 -11
  352. package/src/resources/uat.properties.yaml +31 -31
  353. package/src/table.config.ts +126 -126
  354. package/src/utils/dto/excel-data.dto.ts +14 -14
  355. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  356. package/src/utils/service/base64util.service.ts +18 -18
  357. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  358. package/src/utils/service/codeGenerator.service.ts +22 -22
  359. package/src/utils/service/dateUtil.service.ts +17 -17
  360. package/src/utils/service/encryptUtil.service.ts +97 -97
  361. package/src/utils/service/excel-helper.service.ts +72 -72
  362. package/src/utils/service/excelUtil.service.ts +15 -15
  363. package/src/utils/service/file-util.service.ts +11 -11
  364. package/src/utils/service/json-util.service.ts +23 -23
  365. package/src/utils/service/loggingUtil.service.ts +34 -34
  366. package/src/utils/service/reflection-helper.service.ts +62 -62
  367. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  368. package/src/utils/utils.module.ts +25 -25
  369. package/tsconfig.build.json +4 -4
  370. package/tsconfig.json +24 -24
  371. package/.claude/settings.local.json +0 -26
  372. package/.idea/250218_nodejs_core.iml +0 -9
  373. package/.idea/codeStyles/Project.xml +0 -59
  374. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  375. package/.idea/copilot.data.migration.agent.xml +0 -6
  376. package/.idea/copilot.data.migration.ask.xml +0 -6
  377. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  378. package/.idea/copilot.data.migration.edit.xml +0 -6
  379. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  380. package/.idea/misc.xml +0 -6
  381. package/.idea/modules.xml +0 -8
  382. package/.idea/prettier.xml +0 -6
  383. package/.idea/vcs.xml +0 -6
  384. package/server.log +0 -850
@@ -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
+ }