rez_core 3.1.180 → 3.1.182

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 (385) 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 +23 -11
  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/listmaster/service/list-master.service.js +2 -2
  14. package/dist/module/mapper/service/field-mapper.service.d.ts +3 -1
  15. package/dist/module/mapper/service/field-mapper.service.js +14 -6
  16. package/dist/module/mapper/service/field-mapper.service.js.map +1 -1
  17. package/dist/module/mapper/service/mapper.service.js +2 -2
  18. package/dist/module/meta/service/entity-dynamic.service.js +18 -18
  19. package/dist/module/meta/service/entity-list.service.js +3 -3
  20. package/dist/module/meta/service/entity-master.service.js +3 -3
  21. package/dist/module/meta/service/entity-relation.service.js +11 -11
  22. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  23. package/dist/module/meta/service/resolver.service.js +3 -3
  24. package/dist/module/module/repository/menu.repository.js +12 -12
  25. package/dist/module/notification/service/notification.service.js +12 -12
  26. package/dist/module/user/controller/login.controller.js +18 -18
  27. package/dist/module/user/service/role.service.js +4 -4
  28. package/dist/module/user/service/user-session.service.js +2 -2
  29. package/dist/module/workflow/repository/action.repository.js +16 -16
  30. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  31. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  32. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  33. package/dist/module/workflow/repository/stage-movement.repository.js +11 -11
  34. package/dist/module/workflow/repository/stage.repository.js +8 -8
  35. package/dist/module/workflow/service/action-template-mapping.service.js +10 -10
  36. package/dist/module/workflow/service/action.service.js +7 -7
  37. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  38. package/dist/module/workflow/service/stage-group.service.js +5 -5
  39. package/dist/module/workflow/service/stage.service.js +2 -2
  40. package/dist/module/workflow/service/task.service.js +33 -33
  41. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  42. package/dist/module/workflow/service/workflow-meta.service.js +50 -50
  43. package/dist/module/workflow/service/workflow.service.js +2 -2
  44. package/dist/tsconfig.build.tsbuildinfo +1 -1
  45. package/dist/utils/service/reflection-helper.service.js +2 -2
  46. package/docs/modules/event-driven-integration-design.md +91 -91
  47. package/docs/modules/integration.md +250 -250
  48. package/eslint.config.mjs +34 -34
  49. package/nest-cli.json +14 -14
  50. package/package.json +118 -118
  51. package/src/app.controller.ts +12 -12
  52. package/src/app.module.ts +49 -49
  53. package/src/app.service.ts +8 -8
  54. package/src/config/config.module.ts +18 -18
  55. package/src/config/database.config.ts +23 -23
  56. package/src/constant/global.constant.ts +67 -67
  57. package/src/core.module.ts +81 -81
  58. package/src/decorators/roles.decorator.ts +7 -7
  59. package/src/dtos/response.dto.ts +6 -6
  60. package/src/dtos/response.ts +5 -5
  61. package/src/index.ts +1 -1
  62. package/src/module/auth/auth.module.ts +49 -49
  63. package/src/module/auth/controller/auth.controller.ts +28 -28
  64. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  65. package/src/module/auth/guards/jwt.guard.ts +22 -22
  66. package/src/module/auth/guards/role.guard.ts +68 -68
  67. package/src/module/auth/services/auth.service.ts +50 -50
  68. package/src/module/auth/services/jwt.service.ts +11 -11
  69. package/src/module/auth/strategies/google.strategy.ts +54 -54
  70. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  71. package/src/module/auth/strategies/local.strategy.ts +13 -13
  72. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  73. package/src/module/dashboard/dashboard.module.ts +21 -21
  74. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  75. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  76. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  77. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  78. package/src/module/dev/dev.module.ts +12 -12
  79. package/src/module/dev/service/dev.service.ts +7 -7
  80. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  81. package/src/module/enterprise/enterprise.module.ts +30 -30
  82. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  83. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  84. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  85. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  86. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  87. package/src/module/enterprise/repository/school.repository.ts +281 -281
  88. package/src/module/enterprise/service/brand.service.ts +5 -5
  89. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  90. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  91. package/src/module/enterprise/service/organization.service.ts +145 -145
  92. package/src/module/filter/controller/filter.controller.ts +84 -84
  93. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  94. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  95. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  96. package/src/module/filter/filter.module.ts +31 -31
  97. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  98. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  99. package/src/module/filter/service/filter.service.ts +868 -841
  100. package/src/module/filter/service/saved-filter.service.ts +170 -170
  101. package/src/module/ics/controller/ics.controller.ts +21 -21
  102. package/src/module/ics/dto/ics.dto.ts +55 -55
  103. package/src/module/ics/ics.module.ts +13 -13
  104. package/src/module/ics/service/ics.service.ts +57 -57
  105. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  106. package/src/module/integration/controller/integration.controller.ts +662 -662
  107. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  108. package/src/module/integration/dto/create-config.dto.ts +526 -526
  109. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  110. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  111. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  112. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  113. package/src/module/integration/examples/usage.example.ts +338 -338
  114. package/src/module/integration/factories/base.factory.ts +7 -7
  115. package/src/module/integration/factories/email.factory.ts +49 -49
  116. package/src/module/integration/factories/integration.factory.ts +121 -121
  117. package/src/module/integration/factories/sms.factory.ts +51 -51
  118. package/src/module/integration/factories/telephone.factory.ts +41 -41
  119. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  120. package/src/module/integration/integration.module.ts +110 -110
  121. package/src/module/integration/service/calendar-event.service.ts +118 -118
  122. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  123. package/src/module/integration/service/integration-queue.service.ts +229 -229
  124. package/src/module/integration/service/integration.service.ts +2572 -2572
  125. package/src/module/integration/service/oauth.service.ts +224 -224
  126. package/src/module/integration/service/wrapper.service.ts +457 -457
  127. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  128. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  129. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  130. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  131. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  132. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  133. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  134. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  135. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  136. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  137. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  138. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  139. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  140. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  141. package/src/module/layout/controller/layout.controller.ts +47 -47
  142. package/src/module/layout/entity/header-items.entity.ts +28 -28
  143. package/src/module/layout/entity/header-section.entity.ts +19 -19
  144. package/src/module/layout/layout.module.ts +21 -21
  145. package/src/module/layout/repository/header-items.repository.ts +18 -18
  146. package/src/module/layout/repository/header-section.repository.ts +22 -22
  147. package/src/module/layout/service/header-section.service.ts +25 -25
  148. package/src/module/layout_preference/controller/layout_preference.controller.ts +47 -47
  149. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  150. package/src/module/layout_preference/layout_preference.module.ts +18 -18
  151. package/src/module/layout_preference/repository/layout_preference.repository.ts +30 -30
  152. package/src/module/layout_preference/service/layout_preference.service.ts +172 -172
  153. package/src/module/lead/controller/lead.controller.ts +30 -30
  154. package/src/module/lead/lead.module.ts +14 -14
  155. package/src/module/lead/repository/lead.repository.ts +41 -41
  156. package/src/module/lead/service/lead.service.ts +54 -54
  157. package/src/module/listmaster/controller/list-master.controller.ts +187 -187
  158. package/src/module/listmaster/entity/list-master-items.entity.ts +41 -41
  159. package/src/module/listmaster/entity/list-master.entity.ts +32 -32
  160. package/src/module/listmaster/listmaster.module.ts +44 -44
  161. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  162. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  163. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  164. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  165. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  166. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  167. package/src/module/listmaster/service/list-master.service.ts +424 -424
  168. package/src/module/mapper/controller/field-mapper.controller.ts +69 -69
  169. package/src/module/mapper/controller/mapper.controller.ts +14 -14
  170. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  171. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  172. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  173. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  174. package/src/module/mapper/mapper.module.ts +34 -34
  175. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  176. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  177. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  178. package/src/module/mapper/service/field-mapper.service.ts +235 -223
  179. package/src/module/mapper/service/mapper.service.ts +72 -72
  180. package/src/module/master/controller/master.controller.ts +74 -74
  181. package/src/module/master/service/master.service.ts +483 -483
  182. package/src/module/meta/controller/app-master.controller.ts +38 -38
  183. package/src/module/meta/controller/attribute-master.controller.ts +66 -66
  184. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  185. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  186. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  187. package/src/module/meta/controller/entity.controller.ts +385 -385
  188. package/src/module/meta/controller/media.controller.ts +82 -82
  189. package/src/module/meta/controller/meta.controller.ts +96 -96
  190. package/src/module/meta/controller/view-master.controller.ts +86 -86
  191. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  192. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  193. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  194. package/src/module/meta/entity/app-master.entity.ts +34 -34
  195. package/src/module/meta/entity/attribute-master.entity.ts +87 -87
  196. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  197. package/src/module/meta/entity/entity-master.entity.ts +78 -78
  198. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  199. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  200. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  201. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  202. package/src/module/meta/entity/media-data.entity.ts +32 -32
  203. package/src/module/meta/entity/preference.entity.ts +62 -62
  204. package/src/module/meta/entity/view-master.entity.ts +41 -41
  205. package/src/module/meta/entity.module.ts +156 -156
  206. package/src/module/meta/repository/app-master.repository.ts +20 -20
  207. package/src/module/meta/repository/attribute-master.repository.ts +110 -110
  208. package/src/module/meta/repository/entity-master.repository.ts +69 -69
  209. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  210. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  211. package/src/module/meta/repository/media-data.repository.ts +50 -50
  212. package/src/module/meta/repository/preference.repository.ts +20 -20
  213. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  214. package/src/module/meta/repository/view-master.repository.ts +42 -42
  215. package/src/module/meta/service/app-master.service.ts +37 -37
  216. package/src/module/meta/service/attribute-master.service.ts +117 -117
  217. package/src/module/meta/service/common.service.ts +9 -9
  218. package/src/module/meta/service/entity-dynamic.service.ts +762 -762
  219. package/src/module/meta/service/entity-list.service.ts +205 -205
  220. package/src/module/meta/service/entity-master.service.ts +164 -164
  221. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  222. package/src/module/meta/service/entity-relation.service.ts +69 -69
  223. package/src/module/meta/service/entity-service-impl.service.ts +524 -524
  224. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  225. package/src/module/meta/service/entity-table.service.ts +150 -150
  226. package/src/module/meta/service/entity-validation.service.ts +185 -185
  227. package/src/module/meta/service/entity.service.ts +67 -67
  228. package/src/module/meta/service/field-group.service.ts +103 -103
  229. package/src/module/meta/service/media-data.service.ts +149 -149
  230. package/src/module/meta/service/populate-meta.service.ts +173 -173
  231. package/src/module/meta/service/preference.service.ts +16 -16
  232. package/src/module/meta/service/resolver.service.ts +240 -240
  233. package/src/module/meta/service/section-master.service.ts +104 -104
  234. package/src/module/meta/service/update-form-json.service.ts +22 -22
  235. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  236. package/src/module/meta/service/view-master.service.ts +111 -111
  237. package/src/module/module/controller/menu.controller.ts +15 -15
  238. package/src/module/module/controller/module-access.controller.ts +132 -132
  239. package/src/module/module/entity/menu.entity.ts +43 -43
  240. package/src/module/module/entity/module-access.entity.ts +25 -25
  241. package/src/module/module/entity/module-action.entity.ts +17 -17
  242. package/src/module/module/entity/module.entity.ts +52 -52
  243. package/src/module/module/module.module.ts +42 -42
  244. package/src/module/module/repository/menu.repository.ts +184 -184
  245. package/src/module/module/repository/module-access.repository.ts +331 -331
  246. package/src/module/module/service/menu.service.ts +82 -82
  247. package/src/module/module/service/module-access.service.ts +209 -209
  248. package/src/module/notification/controller/notification.controller.ts +58 -58
  249. package/src/module/notification/controller/otp.controller.ts +117 -117
  250. package/src/module/notification/entity/notification.entity.ts +26 -26
  251. package/src/module/notification/entity/otp.entity.ts +28 -28
  252. package/src/module/notification/firebase-admin.config.ts +22 -22
  253. package/src/module/notification/notification.module.ts +69 -69
  254. package/src/module/notification/repository/otp.repository.ts +27 -27
  255. package/src/module/notification/service/email.service.ts +127 -127
  256. package/src/module/notification/service/notification.service.ts +138 -138
  257. package/src/module/notification/service/otp.service.ts +125 -125
  258. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  259. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  260. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  261. package/src/module/third-party-module/third-party.module.ts +12 -12
  262. package/src/module/user/controller/login.controller.ts +197 -197
  263. package/src/module/user/controller/user.controller.ts +40 -40
  264. package/src/module/user/dto/create-user.dto.ts +62 -62
  265. package/src/module/user/dto/update-user.dto.ts +4 -4
  266. package/src/module/user/entity/role.entity.ts +33 -33
  267. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  268. package/src/module/user/entity/user-session.entity.ts +61 -61
  269. package/src/module/user/entity/user.entity.ts +68 -68
  270. package/src/module/user/repository/role.repository.ts +96 -96
  271. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  272. package/src/module/user/repository/user.repository.ts +50 -50
  273. package/src/module/user/repository/userSession.repository.ts +33 -33
  274. package/src/module/user/service/login.service.ts +280 -280
  275. package/src/module/user/service/role.service.ts +189 -189
  276. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  277. package/src/module/user/service/user-session.service.ts +168 -168
  278. package/src/module/user/service/user.service.ts +353 -353
  279. package/src/module/user/user.module.ts +65 -65
  280. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  281. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  282. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  283. package/src/module/workflow/controller/action.controller.ts +95 -95
  284. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  285. package/src/module/workflow/controller/comm-template.controller.ts +34 -34
  286. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  287. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  288. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  289. package/src/module/workflow/controller/stage.controller.ts +50 -50
  290. package/src/module/workflow/controller/task.controller.ts +77 -77
  291. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  292. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  293. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  294. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  295. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  296. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  297. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  298. package/src/module/workflow/entity/action.entity.ts +50 -50
  299. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  300. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  301. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  302. package/src/module/workflow/entity/form.entity.ts +25 -25
  303. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  304. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  305. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  306. package/src/module/workflow/entity/stage.entity.ts +20 -20
  307. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  308. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  309. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  310. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  311. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  312. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  313. package/src/module/workflow/repository/action-data.repository.ts +219 -219
  314. package/src/module/workflow/repository/action.repository.ts +277 -277
  315. package/src/module/workflow/repository/activity-log.repository.ts +121 -121
  316. package/src/module/workflow/repository/comm-template.repository.ts +142 -142
  317. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  318. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  319. package/src/module/workflow/repository/stage-movement.repository.ts +227 -227
  320. package/src/module/workflow/repository/stage.repository.ts +172 -172
  321. package/src/module/workflow/repository/task.repository.ts +117 -117
  322. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  323. package/src/module/workflow/service/action-category.service.ts +33 -33
  324. package/src/module/workflow/service/action-data.service.ts +62 -62
  325. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  326. package/src/module/workflow/service/action-template-mapping.service.ts +55 -55
  327. package/src/module/workflow/service/action.service.ts +263 -263
  328. package/src/module/workflow/service/activity-log.service.ts +107 -107
  329. package/src/module/workflow/service/comm-template.service.ts +121 -121
  330. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  331. package/src/module/workflow/service/form-master.service.ts +35 -35
  332. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  333. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  334. package/src/module/workflow/service/stage-group.service.ts +300 -300
  335. package/src/module/workflow/service/stage.service.ts +199 -199
  336. package/src/module/workflow/service/task.service.ts +531 -531
  337. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  338. package/src/module/workflow/service/workflow-meta.service.ts +581 -581
  339. package/src/module/workflow/service/workflow.service.ts +205 -205
  340. package/src/module/workflow/workflow.module.ts +172 -172
  341. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +21 -21
  342. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  343. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +35 -35
  344. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  345. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  346. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  347. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  348. package/src/module/workflow-automation/service/workflow-automation.service.ts +345 -345
  349. package/src/module/workflow-automation/workflow-automation.module.ts +34 -34
  350. package/src/resources/dev.properties.yaml +30 -30
  351. package/src/resources/local.properties.yaml +27 -27
  352. package/src/resources/properties.module.ts +12 -12
  353. package/src/resources/properties.yaml.ts +11 -11
  354. package/src/resources/uat.properties.yaml +15 -15
  355. package/src/utils/dto/excel-data.dto.ts +14 -14
  356. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  357. package/src/utils/service/base64util.service.ts +18 -18
  358. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  359. package/src/utils/service/codeGenerator.service.ts +22 -22
  360. package/src/utils/service/dateUtil.service.ts +17 -17
  361. package/src/utils/service/encryptUtil.service.ts +97 -97
  362. package/src/utils/service/excel-helper.service.ts +72 -72
  363. package/src/utils/service/excelUtil.service.ts +15 -15
  364. package/src/utils/service/file-util.service.ts +11 -11
  365. package/src/utils/service/json-util.service.ts +23 -23
  366. package/src/utils/service/loggingUtil.service.ts +34 -34
  367. package/src/utils/service/reflection-helper.service.ts +62 -62
  368. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  369. package/src/utils/utils.module.ts +25 -25
  370. package/tsconfig.build.json +4 -4
  371. package/tsconfig.json +24 -24
  372. package/.claude/settings.local.json +0 -26
  373. package/.idea/250218_nodejs_core.iml +0 -9
  374. package/.idea/codeStyles/Project.xml +0 -59
  375. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  376. package/.idea/copilot.data.migration.agent.xml +0 -6
  377. package/.idea/copilot.data.migration.ask.xml +0 -6
  378. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  379. package/.idea/copilot.data.migration.edit.xml +0 -6
  380. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  381. package/.idea/misc.xml +0 -6
  382. package/.idea/modules.xml +0 -8
  383. package/.idea/prettier.xml +0 -6
  384. package/.idea/vcs.xml +0 -6
  385. package/server.log +0 -850
@@ -1,27 +1,27 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectRepository } from '@nestjs/typeorm';
3
- import { Otp } from '../entity/otp.entity';
4
- import { Repository } from 'typeorm';
5
-
6
- @Injectable()
7
- export class OtpRepository {
8
- constructor(
9
- @InjectRepository(Otp) private readonly otpRepository: Repository<Otp>,
10
- ) {}
11
-
12
- async save(otp: Otp) {
13
- return await this.otpRepository.save(otp);
14
- }
15
-
16
- async findByOtpId(otpId: string) {
17
- return await this.otpRepository.findOne({
18
- where: {
19
- otp_id: otpId,
20
- },
21
- });
22
- }
23
-
24
- async update(id: number, otp: Otp) {
25
- return await this.otpRepository.update(id, otp);
26
- }
27
- }
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectRepository } from '@nestjs/typeorm';
3
+ import { Otp } from '../entity/otp.entity';
4
+ import { Repository } from 'typeorm';
5
+
6
+ @Injectable()
7
+ export class OtpRepository {
8
+ constructor(
9
+ @InjectRepository(Otp) private readonly otpRepository: Repository<Otp>,
10
+ ) {}
11
+
12
+ async save(otp: Otp) {
13
+ return await this.otpRepository.save(otp);
14
+ }
15
+
16
+ async findByOtpId(otpId: string) {
17
+ return await this.otpRepository.findOne({
18
+ where: {
19
+ otp_id: otpId,
20
+ },
21
+ });
22
+ }
23
+
24
+ async update(id: number, otp: Otp) {
25
+ return await this.otpRepository.update(id, otp);
26
+ }
27
+ }
@@ -1,127 +1,127 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { MailerService } from '@nestjs-modules/mailer';
3
- import * as Handlebars from 'handlebars';
4
- import { DataSource } from 'typeorm';
5
- import { IcsMeetingService } from 'src/module/ics/service/ics.service';
6
-
7
- @Injectable()
8
- export class EmailService {
9
- constructor(
10
- private readonly mailerService: MailerService,
11
- private readonly datasource: DataSource,
12
- private readonly icsService: IcsMeetingService,
13
- ) {}
14
-
15
- async sendEmail(
16
- email: string,
17
- subject: string,
18
- context?: any,
19
- icsPayload?: any,
20
- ) {
21
- const template = await this.datasource
22
- .getRepository('cr_wf_comm_template')
23
- .findOne({ where: { code: 'OTP_TEMPLATE' } });
24
-
25
- if (!template) return;
26
-
27
- const compiled = Handlebars.compile(template.rich_text || '');
28
- const htmlContent = compiled(context);
29
-
30
- const attachments: any[] = [];
31
-
32
- if (icsPayload) {
33
- const icsBase64 = await this.icsService.generateIcs(icsPayload);
34
- if (icsBase64) {
35
- attachments.push({
36
- filename: 'invite.ics',
37
- content: icsBase64,
38
- encoding: 'base64',
39
- contentType: 'text/calendar; charset="utf-8"; method=REQUEST',
40
- });
41
- }
42
- }
43
-
44
- // fire-and-forget // removed await
45
- const result = this.mailerService
46
- .sendMail({
47
- to: email,
48
- subject,
49
- html: htmlContent,
50
- attachments,
51
- })
52
- .then(() => {
53
- console.log(`Email sent to ${email}`);
54
- return;
55
- })
56
- .catch((err) => {
57
- console.error(`Failed to send email to ${email}`, err);
58
- // Optionally: push to a retry queue, Sentry, DB log, etc.
59
- });
60
-
61
- console.log(result); // Return immediately (parent doesn’t block)
62
- return;
63
- }
64
-
65
- async sendEmailWithDynamicTemplate(
66
- email: string,
67
- subject: string,
68
- templateCode: string,
69
- cc?: string[],
70
- bcc?: string[],
71
- message?: string,
72
- context?: any,
73
- icsPayload?: any,
74
- ) {
75
- // retrieve the rich_text from the database table cr_wf_comm_template for the given templateCode
76
- const template = await this.datasource
77
- .getRepository('cr_wf_comm_template')
78
- .findOne({ where: { code: templateCode } });
79
-
80
- if (!template) {
81
- console.log(`Template with code ${templateCode} not found`);
82
- return {
83
- success: false,
84
- message: `Template with code ${templateCode} not found`,
85
- };
86
- }
87
-
88
- // Compile the template string with Handlebars
89
- const templateString = template.rich_text || '';
90
- const compiled = Handlebars.compile(message || templateString);
91
- const htmlContent = compiled(context);
92
-
93
- // Attachments (ICS optional)
94
- const attachments: any[] = [];
95
- if (icsPayload) {
96
- const icsBase64 = await this.icsService.generateIcs(icsPayload);
97
- if (icsBase64) {
98
- attachments.push({
99
- filename: 'invite.ics',
100
- content: icsBase64,
101
- encoding: 'base64',
102
- contentType: 'text/calendar; charset="utf-8"; method=REQUEST',
103
- });
104
- }
105
- }
106
-
107
- const mailOptions: any = {
108
- to: email,
109
- subject,
110
- html: htmlContent,
111
- attachments,
112
- };
113
-
114
- if (cc && cc.length > 0) {
115
- mailOptions.cc = cc;
116
- }
117
-
118
- if (bcc && bcc.length > 0) {
119
- mailOptions.bcc = bcc;
120
- }
121
-
122
- // Send the email
123
- await this.mailerService.sendMail(mailOptions);
124
-
125
- return { success: true, message: 'Email sent successfully' };
126
- }
127
- }
1
+ import { Injectable } from '@nestjs/common';
2
+ import { MailerService } from '@nestjs-modules/mailer';
3
+ import * as Handlebars from 'handlebars';
4
+ import { DataSource } from 'typeorm';
5
+ import { IcsMeetingService } from 'src/module/ics/service/ics.service';
6
+
7
+ @Injectable()
8
+ export class EmailService {
9
+ constructor(
10
+ private readonly mailerService: MailerService,
11
+ private readonly datasource: DataSource,
12
+ private readonly icsService: IcsMeetingService,
13
+ ) {}
14
+
15
+ async sendEmail(
16
+ email: string,
17
+ subject: string,
18
+ context?: any,
19
+ icsPayload?: any,
20
+ ) {
21
+ const template = await this.datasource
22
+ .getRepository('cr_wf_comm_template')
23
+ .findOne({ where: { code: 'OTP_TEMPLATE' } });
24
+
25
+ if (!template) return;
26
+
27
+ const compiled = Handlebars.compile(template.rich_text || '');
28
+ const htmlContent = compiled(context);
29
+
30
+ const attachments: any[] = [];
31
+
32
+ if (icsPayload) {
33
+ const icsBase64 = await this.icsService.generateIcs(icsPayload);
34
+ if (icsBase64) {
35
+ attachments.push({
36
+ filename: 'invite.ics',
37
+ content: icsBase64,
38
+ encoding: 'base64',
39
+ contentType: 'text/calendar; charset="utf-8"; method=REQUEST',
40
+ });
41
+ }
42
+ }
43
+
44
+ // fire-and-forget // removed await
45
+ const result = this.mailerService
46
+ .sendMail({
47
+ to: email,
48
+ subject,
49
+ html: htmlContent,
50
+ attachments,
51
+ })
52
+ .then(() => {
53
+ console.log(`Email sent to ${email}`);
54
+ return;
55
+ })
56
+ .catch((err) => {
57
+ console.error(`Failed to send email to ${email}`, err);
58
+ // Optionally: push to a retry queue, Sentry, DB log, etc.
59
+ });
60
+
61
+ console.log(result); // Return immediately (parent doesn’t block)
62
+ return;
63
+ }
64
+
65
+ async sendEmailWithDynamicTemplate(
66
+ email: string,
67
+ subject: string,
68
+ templateCode: string,
69
+ cc?: string[],
70
+ bcc?: string[],
71
+ message?: string,
72
+ context?: any,
73
+ icsPayload?: any,
74
+ ) {
75
+ // retrieve the rich_text from the database table cr_wf_comm_template for the given templateCode
76
+ const template = await this.datasource
77
+ .getRepository('cr_wf_comm_template')
78
+ .findOne({ where: { code: templateCode } });
79
+
80
+ if (!template) {
81
+ console.log(`Template with code ${templateCode} not found`);
82
+ return {
83
+ success: false,
84
+ message: `Template with code ${templateCode} not found`,
85
+ };
86
+ }
87
+
88
+ // Compile the template string with Handlebars
89
+ const templateString = template.rich_text || '';
90
+ const compiled = Handlebars.compile(message || templateString);
91
+ const htmlContent = compiled(context);
92
+
93
+ // Attachments (ICS optional)
94
+ const attachments: any[] = [];
95
+ if (icsPayload) {
96
+ const icsBase64 = await this.icsService.generateIcs(icsPayload);
97
+ if (icsBase64) {
98
+ attachments.push({
99
+ filename: 'invite.ics',
100
+ content: icsBase64,
101
+ encoding: 'base64',
102
+ contentType: 'text/calendar; charset="utf-8"; method=REQUEST',
103
+ });
104
+ }
105
+ }
106
+
107
+ const mailOptions: any = {
108
+ to: email,
109
+ subject,
110
+ html: htmlContent,
111
+ attachments,
112
+ };
113
+
114
+ if (cc && cc.length > 0) {
115
+ mailOptions.cc = cc;
116
+ }
117
+
118
+ if (bcc && bcc.length > 0) {
119
+ mailOptions.bcc = bcc;
120
+ }
121
+
122
+ // Send the email
123
+ await this.mailerService.sendMail(mailOptions);
124
+
125
+ return { success: true, message: 'Email sent successfully' };
126
+ }
127
+ }
@@ -1,138 +1,138 @@
1
- import { Inject, Injectable } from '@nestjs/common';
2
- import { DataSource } from 'typeorm';
3
- import { MediaDataService } from 'src/module/meta/service/media-data.service';
4
- import * as admin from 'firebase-admin';
5
-
6
- @Injectable()
7
- export class NotificationsService {
8
- constructor(
9
- private readonly dataSource: DataSource,
10
- private readonly mediaDataService: MediaDataService,
11
- @Inject('FIREBASE_ADMIN') private readonly firebaseAdmin: typeof admin,
12
- ) {}
13
-
14
- private tokens: Map<string, string> = new Map(); // store in memory for now
15
-
16
- async saveToken(userId: string | undefined, token: string) {
17
- if (userId) {
18
- this.tokens.set(userId, token);
19
- }
20
- return { success: true, token };
21
- }
22
-
23
- async sendToDevice(
24
- token: string,
25
- title: string,
26
- body: string,
27
- data?: Record<string, any>,
28
- ) {
29
- // Utility to sanitize FCM data payload
30
- const sanitizeFCMData = (
31
- payload: Record<string, any>,
32
- ): Record<string, string> =>
33
- Object.fromEntries(
34
- Object.entries(payload).map(([k, v]) => {
35
- if (v === null || v === undefined) return [k, '']; // fallback for null/undefined
36
- if (typeof v === 'object') return [k, JSON.stringify(v)]; // preserve structure
37
- return [k, String(v)]; // numbers, booleans, strings
38
- }),
39
- );
40
-
41
- const message: admin.messaging.Message = {
42
- token,
43
- notification: { title, body }, // system notification
44
- data: data ? sanitizeFCMData(data) : undefined,
45
- };
46
-
47
- try {
48
- return await this.firebaseAdmin.messaging().send(message);
49
- } catch (error) {
50
- console.error('Error sending FCM message:', error);
51
- throw error;
52
- }
53
- }
54
-
55
- // Helper: send to a registered user by userId
56
- async sendToUser(userId: string, title: string, body: string) {
57
- const token = this.tokens.get(userId);
58
- if (!token) return { error: 'No token found for user' };
59
-
60
- return this.sendToDevice(token, title, body);
61
- }
62
-
63
- async getAllNotifications(
64
- loggedInUser: any,
65
- filterQuery?: {
66
- is_read?: string;
67
- },
68
- ) {
69
- // if no filterQuery provided, return all notifications
70
- const { id, level_id, level_type } = loggedInUser;
71
-
72
- // Convert query param ("true"/"false") → SQL-friendly value (1/0)
73
- let isReadFilter: number | undefined = undefined;
74
- if (filterQuery && filterQuery.is_read !== undefined) {
75
- const isReadBool = String(filterQuery.is_read).toLowerCase() === 'true';
76
- isReadFilter = isReadBool ? 1 : 0;
77
- }
78
-
79
- // Build query dynamically
80
- let query = `
81
- SELECT
82
- n.*,
83
- u.name AS user_name,
84
- u.profile_image AS user_profile
85
- FROM cr_notification n
86
- LEFT JOIN eth_user_profile u ON n.user_id = u.parent_id
87
- WHERE n.user_id = ? AND n.level_id = ? AND n.level_type = ?
88
- `;
89
-
90
- const params: any[] = [id, level_id, level_type];
91
-
92
- if (isReadFilter !== undefined) {
93
- query += ` AND n.is_read = ?`;
94
- params.push(isReadFilter);
95
- }
96
-
97
- query += ` ORDER BY n.created_date DESC`;
98
-
99
- const notifications = await this.dataSource.query(query, params);
100
-
101
- // Profile media enrichment
102
- const mediaCache = new Map();
103
- for (const notification of notifications) {
104
- // Ensure is_read is returned as boolean
105
- notification.is_read = !!notification.is_read;
106
-
107
- if (notification.user_profile) {
108
- if (!mediaCache.has(notification.user_profile)) {
109
- const url = await this.mediaDataService.getMediaDownloadUrl(
110
- notification.user_profile,
111
- loggedInUser,
112
- );
113
- mediaCache.set(notification.user_profile, url);
114
- }
115
- notification.user_profile = mediaCache.get(notification.user_profile);
116
- } else {
117
- notification.user_profile = null;
118
- }
119
- }
120
-
121
- return notifications;
122
- }
123
-
124
- async markAllAsRead(loggedInUser: any) {
125
- const { id, level_id, level_type } = loggedInUser;
126
-
127
- const query = `
128
- UPDATE cr_notification
129
- SET is_read = 1
130
- WHERE user_id = ? AND level_id = ? AND level_type = ? AND is_read = 0
131
- `;
132
-
133
- const params = [id, level_id, level_type];
134
-
135
- const result = await this.dataSource.query(query, params);
136
- return { success: true, affectedRows: result.affectedRows || 0 };
137
- }
138
- }
1
+ import { Inject, Injectable } from '@nestjs/common';
2
+ import { DataSource } from 'typeorm';
3
+ import { MediaDataService } from 'src/module/meta/service/media-data.service';
4
+ import * as admin from 'firebase-admin';
5
+
6
+ @Injectable()
7
+ export class NotificationsService {
8
+ constructor(
9
+ private readonly dataSource: DataSource,
10
+ private readonly mediaDataService: MediaDataService,
11
+ @Inject('FIREBASE_ADMIN') private readonly firebaseAdmin: typeof admin,
12
+ ) {}
13
+
14
+ private tokens: Map<string, string> = new Map(); // store in memory for now
15
+
16
+ async saveToken(userId: string | undefined, token: string) {
17
+ if (userId) {
18
+ this.tokens.set(userId, token);
19
+ }
20
+ return { success: true, token };
21
+ }
22
+
23
+ async sendToDevice(
24
+ token: string,
25
+ title: string,
26
+ body: string,
27
+ data?: Record<string, any>,
28
+ ) {
29
+ // Utility to sanitize FCM data payload
30
+ const sanitizeFCMData = (
31
+ payload: Record<string, any>,
32
+ ): Record<string, string> =>
33
+ Object.fromEntries(
34
+ Object.entries(payload).map(([k, v]) => {
35
+ if (v === null || v === undefined) return [k, '']; // fallback for null/undefined
36
+ if (typeof v === 'object') return [k, JSON.stringify(v)]; // preserve structure
37
+ return [k, String(v)]; // numbers, booleans, strings
38
+ }),
39
+ );
40
+
41
+ const message: admin.messaging.Message = {
42
+ token,
43
+ notification: { title, body }, // system notification
44
+ data: data ? sanitizeFCMData(data) : undefined,
45
+ };
46
+
47
+ try {
48
+ return await this.firebaseAdmin.messaging().send(message);
49
+ } catch (error) {
50
+ console.error('Error sending FCM message:', error);
51
+ throw error;
52
+ }
53
+ }
54
+
55
+ // Helper: send to a registered user by userId
56
+ async sendToUser(userId: string, title: string, body: string) {
57
+ const token = this.tokens.get(userId);
58
+ if (!token) return { error: 'No token found for user' };
59
+
60
+ return this.sendToDevice(token, title, body);
61
+ }
62
+
63
+ async getAllNotifications(
64
+ loggedInUser: any,
65
+ filterQuery?: {
66
+ is_read?: string;
67
+ },
68
+ ) {
69
+ // if no filterQuery provided, return all notifications
70
+ const { id, level_id, level_type } = loggedInUser;
71
+
72
+ // Convert query param ("true"/"false") → SQL-friendly value (1/0)
73
+ let isReadFilter: number | undefined = undefined;
74
+ if (filterQuery && filterQuery.is_read !== undefined) {
75
+ const isReadBool = String(filterQuery.is_read).toLowerCase() === 'true';
76
+ isReadFilter = isReadBool ? 1 : 0;
77
+ }
78
+
79
+ // Build query dynamically
80
+ let query = `
81
+ SELECT
82
+ n.*,
83
+ u.name AS user_name,
84
+ u.profile_image AS user_profile
85
+ FROM cr_notification n
86
+ LEFT JOIN eth_user_profile u ON n.user_id = u.parent_id
87
+ WHERE n.user_id = ? AND n.level_id = ? AND n.level_type = ?
88
+ `;
89
+
90
+ const params: any[] = [id, level_id, level_type];
91
+
92
+ if (isReadFilter !== undefined) {
93
+ query += ` AND n.is_read = ?`;
94
+ params.push(isReadFilter);
95
+ }
96
+
97
+ query += ` ORDER BY n.created_date DESC`;
98
+
99
+ const notifications = await this.dataSource.query(query, params);
100
+
101
+ // Profile media enrichment
102
+ const mediaCache = new Map();
103
+ for (const notification of notifications) {
104
+ // Ensure is_read is returned as boolean
105
+ notification.is_read = !!notification.is_read;
106
+
107
+ if (notification.user_profile) {
108
+ if (!mediaCache.has(notification.user_profile)) {
109
+ const url = await this.mediaDataService.getMediaDownloadUrl(
110
+ notification.user_profile,
111
+ loggedInUser,
112
+ );
113
+ mediaCache.set(notification.user_profile, url);
114
+ }
115
+ notification.user_profile = mediaCache.get(notification.user_profile);
116
+ } else {
117
+ notification.user_profile = null;
118
+ }
119
+ }
120
+
121
+ return notifications;
122
+ }
123
+
124
+ async markAllAsRead(loggedInUser: any) {
125
+ const { id, level_id, level_type } = loggedInUser;
126
+
127
+ const query = `
128
+ UPDATE cr_notification
129
+ SET is_read = 1
130
+ WHERE user_id = ? AND level_id = ? AND level_type = ? AND is_read = 0
131
+ `;
132
+
133
+ const params = [id, level_id, level_type];
134
+
135
+ const result = await this.dataSource.query(query, params);
136
+ return { success: true, affectedRows: result.affectedRows || 0 };
137
+ }
138
+ }