rez_core 4.0.110 → 4.0.112

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