rez_core 4.0.108 → 4.0.110

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 (403) hide show
  1. package/.claude/settings.local.json +26 -0
  2. package/.idea/250218_nodejs_core.iml +8 -11
  3. package/.idea/codeStyles/Project.xml +58 -58
  4. package/.idea/codeStyles/codeStyleConfig.xml +4 -4
  5. package/.idea/copilot.data.migration.agent.xml +6 -0
  6. package/.idea/copilot.data.migration.ask.xml +6 -0
  7. package/.idea/copilot.data.migration.ask2agent.xml +6 -0
  8. package/.idea/copilot.data.migration.edit.xml +6 -0
  9. package/.idea/inspectionProfiles/Project_Default.xml +1 -1
  10. package/.idea/misc.xml +6 -0
  11. package/.idea/modules.xml +7 -7
  12. package/.idea/prettier.xml +5 -5
  13. package/.idea/vcs.xml +5 -5
  14. package/.prettierrc +3 -3
  15. package/README.md +99 -99
  16. package/dist/app.module.js +2 -0
  17. package/dist/app.module.js.map +1 -1
  18. package/dist/module/auth/guards/role.guard.js +3 -3
  19. package/dist/module/auth/services/auth.service.js +2 -2
  20. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  21. package/dist/module/filter/service/filter-evaluator.service.js +2 -2
  22. package/dist/module/filter/service/filter.service.js +22 -22
  23. package/dist/module/integration/examples/usage.example.js +9 -9
  24. package/dist/module/integration/service/integration.service.js +1 -1
  25. package/dist/module/integration/service/wrapper.service.js +25 -25
  26. package/dist/module/listmaster/controller/list-master.controller.d.ts +6 -0
  27. package/dist/module/listmaster/controller/list-master.controller.js +14 -2
  28. package/dist/module/listmaster/controller/list-master.controller.js.map +1 -1
  29. package/dist/module/listmaster/service/list-master-item.service.js +2 -2
  30. package/dist/module/listmaster/service/list-master.service.d.ts +4 -2
  31. package/dist/module/listmaster/service/list-master.service.js +13 -16
  32. package/dist/module/listmaster/service/list-master.service.js.map +1 -1
  33. package/dist/module/mapper/service/field-mapper.service.js +4 -4
  34. package/dist/module/mapper/service/mapper.service.js +2 -2
  35. package/dist/module/meta/service/entity-dynamic.service.js +9 -9
  36. package/dist/module/meta/service/entity-list.service.js +3 -3
  37. package/dist/module/meta/service/entity-master.service.js +3 -3
  38. package/dist/module/meta/service/entity-relation.service.js +11 -11
  39. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  40. package/dist/module/meta/service/resolver.service.js +3 -3
  41. package/dist/module/microservice-client/microservice-clients.module.d.ts +2 -0
  42. package/dist/module/microservice-client/microservice-clients.module.js +27 -0
  43. package/dist/module/microservice-client/microservice-clients.module.js.map +1 -0
  44. package/dist/module/microservice-client/service/microservice-client-factory.d.ts +10 -0
  45. package/dist/module/microservice-client/service/microservice-client-factory.js +46 -0
  46. package/dist/module/microservice-client/service/microservice-client-factory.js.map +1 -0
  47. package/dist/module/microservice-client/service/microservice-clients.d.ts +4 -0
  48. package/dist/module/microservice-client/service/microservice-clients.js +3 -0
  49. package/dist/module/microservice-client/service/microservice-clients.js.map +1 -0
  50. package/dist/module/module/repository/menu.repository.js +12 -12
  51. package/dist/module/notification/service/notification.service.js +9 -9
  52. package/dist/module/user/controller/login.controller.js +18 -18
  53. package/dist/module/user/service/role.service.js +4 -4
  54. package/dist/module/user/service/user-session.service.js +2 -2
  55. package/dist/module/workflow/repository/action.repository.js +20 -20
  56. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  57. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  58. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  59. package/dist/module/workflow/repository/stage-movement.repository.js +15 -15
  60. package/dist/module/workflow/repository/stage.repository.js +8 -8
  61. package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
  62. package/dist/module/workflow/service/action.service.js +7 -7
  63. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  64. package/dist/module/workflow/service/stage-group.service.js +2 -2
  65. package/dist/module/workflow/service/stage.service.js +2 -2
  66. package/dist/module/workflow/service/task.service.js +28 -28
  67. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  68. package/dist/module/workflow/service/workflow-meta.service.js +35 -35
  69. package/dist/module/workflow/service/workflow.service.js +2 -2
  70. package/dist/tsconfig.build.tsbuildinfo +1 -1
  71. package/dist/utils/service/reflection-helper.service.js +2 -2
  72. package/docs/modules/event-driven-integration-design.md +91 -91
  73. package/docs/modules/integration.md +250 -250
  74. package/eslint.config.mjs +34 -34
  75. package/nest-cli.json +14 -14
  76. package/package.json +119 -118
  77. package/server.log +850 -0
  78. package/src/app.controller.ts +12 -12
  79. package/src/app.module.ts +52 -49
  80. package/src/app.service.ts +8 -8
  81. package/src/config/config.module.ts +18 -18
  82. package/src/config/database.config.ts +23 -23
  83. package/src/constant/global.constant.ts +67 -67
  84. package/src/core.module.ts +81 -81
  85. package/src/decorators/roles.decorator.ts +7 -7
  86. package/src/dtos/response.dto.ts +6 -6
  87. package/src/dtos/response.ts +5 -5
  88. package/src/index.ts +1 -1
  89. package/src/module/auth/auth.module.ts +49 -49
  90. package/src/module/auth/controller/auth.controller.ts +28 -28
  91. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  92. package/src/module/auth/guards/jwt.guard.ts +22 -22
  93. package/src/module/auth/guards/role.guard.ts +68 -68
  94. package/src/module/auth/services/auth.service.ts +50 -50
  95. package/src/module/auth/services/jwt.service.ts +11 -11
  96. package/src/module/auth/strategies/google.strategy.ts +54 -54
  97. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  98. package/src/module/auth/strategies/local.strategy.ts +13 -13
  99. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  100. package/src/module/dashboard/dashboard.module.ts +21 -21
  101. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  102. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  103. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  104. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  105. package/src/module/dev/dev.module.ts +12 -12
  106. package/src/module/dev/service/dev.service.ts +7 -7
  107. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  108. package/src/module/enterprise/enterprise.module.ts +30 -30
  109. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  110. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  111. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  112. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  113. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  114. package/src/module/enterprise/repository/school.repository.ts +278 -278
  115. package/src/module/enterprise/service/brand.service.ts +5 -5
  116. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  117. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  118. package/src/module/enterprise/service/organization.service.ts +145 -145
  119. package/src/module/filter/controller/filter.controller.ts +84 -84
  120. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  121. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  122. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  123. package/src/module/filter/filter.module.ts +31 -31
  124. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  125. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  126. package/src/module/filter/service/filter.service.ts +988 -988
  127. package/src/module/filter/service/saved-filter.service.ts +170 -170
  128. package/src/module/ics/controller/ics.controller.ts +21 -21
  129. package/src/module/ics/dto/ics.dto.ts +55 -55
  130. package/src/module/ics/ics.module.ts +13 -13
  131. package/src/module/ics/service/ics.service.ts +57 -57
  132. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  133. package/src/module/integration/controller/integration.controller.ts +662 -662
  134. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  135. package/src/module/integration/dto/create-config.dto.ts +526 -526
  136. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  137. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  138. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  139. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  140. package/src/module/integration/examples/usage.example.ts +338 -338
  141. package/src/module/integration/factories/base.factory.ts +7 -7
  142. package/src/module/integration/factories/email.factory.ts +49 -49
  143. package/src/module/integration/factories/integration.factory.ts +121 -121
  144. package/src/module/integration/factories/sms.factory.ts +51 -51
  145. package/src/module/integration/factories/telephone.factory.ts +41 -41
  146. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  147. package/src/module/integration/integration.module.ts +110 -110
  148. package/src/module/integration/service/calendar-event.service.ts +118 -118
  149. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  150. package/src/module/integration/service/integration-queue.service.ts +229 -229
  151. package/src/module/integration/service/integration.service.ts +2633 -2633
  152. package/src/module/integration/service/oauth.service.ts +224 -224
  153. package/src/module/integration/service/wrapper.service.ts +493 -493
  154. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  155. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  156. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  157. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  158. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  159. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  160. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  161. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  162. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  163. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  164. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  165. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  166. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  167. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  168. package/src/module/layout/controller/layout.controller.ts +47 -47
  169. package/src/module/layout/entity/header-items.entity.ts +28 -28
  170. package/src/module/layout/entity/header-section.entity.ts +19 -19
  171. package/src/module/layout/layout.module.ts +21 -21
  172. package/src/module/layout/repository/header-items.repository.ts +18 -18
  173. package/src/module/layout/repository/header-section.repository.ts +22 -22
  174. package/src/module/layout/service/header-section.service.ts +25 -25
  175. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  176. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  177. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  178. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  179. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  180. package/src/module/lead/controller/lead.controller.ts +30 -30
  181. package/src/module/lead/lead.module.ts +14 -14
  182. package/src/module/lead/repository/lead.repository.ts +41 -41
  183. package/src/module/lead/service/lead.service.ts +54 -54
  184. package/src/module/listmaster/controller/list-master.controller.ts +230 -210
  185. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  186. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  187. package/src/module/listmaster/listmaster.module.ts +44 -44
  188. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  189. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  190. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  191. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  192. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  193. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  194. package/src/module/listmaster/service/list-master.service.ts +535 -542
  195. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  196. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  197. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  198. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  199. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  200. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  201. package/src/module/mapper/mapper.module.ts +34 -34
  202. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  203. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  204. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  205. package/src/module/mapper/service/field-mapper.service.ts +266 -266
  206. package/src/module/mapper/service/mapper.service.ts +79 -79
  207. package/src/module/master/controller/master.controller.ts +74 -74
  208. package/src/module/master/service/master.service.ts +483 -483
  209. package/src/module/meta/controller/app-master.controller.ts +38 -38
  210. package/src/module/meta/controller/attribute-master.controller.ts +66 -66
  211. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  212. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  213. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  214. package/src/module/meta/controller/entity.controller.ts +392 -392
  215. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  216. package/src/module/meta/controller/media.controller.ts +107 -107
  217. package/src/module/meta/controller/meta.controller.ts +96 -96
  218. package/src/module/meta/controller/view-master.controller.ts +86 -86
  219. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  220. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  221. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  222. package/src/module/meta/entity/app-master.entity.ts +34 -34
  223. package/src/module/meta/entity/attribute-master.entity.ts +89 -89
  224. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  225. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  226. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  227. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  228. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  229. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  230. package/src/module/meta/entity/media-data.entity.ts +32 -32
  231. package/src/module/meta/entity/preference.entity.ts +62 -62
  232. package/src/module/meta/entity/view-master.entity.ts +41 -41
  233. package/src/module/meta/entity.module.ts +158 -158
  234. package/src/module/meta/repository/app-master.repository.ts +20 -20
  235. package/src/module/meta/repository/attribute-master.repository.ts +118 -118
  236. package/src/module/meta/repository/entity-master.repository.ts +69 -69
  237. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  238. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  239. package/src/module/meta/repository/media-data.repository.ts +50 -50
  240. package/src/module/meta/repository/preference.repository.ts +20 -20
  241. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  242. package/src/module/meta/repository/view-master.repository.ts +42 -42
  243. package/src/module/meta/service/app-master.service.ts +37 -37
  244. package/src/module/meta/service/attribute-master.service.ts +126 -126
  245. package/src/module/meta/service/common.service.ts +9 -9
  246. package/src/module/meta/service/entity-dynamic.service.ts +819 -819
  247. package/src/module/meta/service/entity-list.service.ts +205 -205
  248. package/src/module/meta/service/entity-master.service.ts +169 -169
  249. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  250. package/src/module/meta/service/entity-relation.service.ts +69 -69
  251. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  252. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  253. package/src/module/meta/service/entity-table.service.ts +150 -150
  254. package/src/module/meta/service/entity-validation.service.ts +187 -187
  255. package/src/module/meta/service/entity.service.ts +67 -67
  256. package/src/module/meta/service/field-group.service.ts +103 -103
  257. package/src/module/meta/service/media-data.service.ts +507 -507
  258. package/src/module/meta/service/populate-meta.service.ts +193 -193
  259. package/src/module/meta/service/preference.service.ts +16 -16
  260. package/src/module/meta/service/resolver.service.ts +267 -267
  261. package/src/module/meta/service/section-master.service.ts +104 -104
  262. package/src/module/meta/service/update-form-json.service.ts +22 -22
  263. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  264. package/src/module/meta/service/view-master.service.ts +127 -127
  265. package/src/module/microservice-client/microservice-clients.module.ts +14 -0
  266. package/src/module/microservice-client/service/microservice-client-factory.ts +38 -0
  267. package/src/module/microservice-client/service/microservice-clients.ts +5 -0
  268. package/src/module/module/controller/menu.controller.ts +15 -15
  269. package/src/module/module/controller/module-access.controller.ts +134 -134
  270. package/src/module/module/entity/menu.entity.ts +43 -43
  271. package/src/module/module/entity/module-access.entity.ts +25 -25
  272. package/src/module/module/entity/module-action.entity.ts +17 -17
  273. package/src/module/module/entity/module.entity.ts +52 -52
  274. package/src/module/module/module.module.ts +42 -42
  275. package/src/module/module/repository/menu.repository.ts +184 -184
  276. package/src/module/module/repository/module-access.repository.ts +344 -344
  277. package/src/module/module/service/menu.service.ts +82 -82
  278. package/src/module/module/service/module-access.service.ts +209 -209
  279. package/src/module/notification/controller/notification.controller.ts +58 -58
  280. package/src/module/notification/controller/otp.controller.ts +117 -117
  281. package/src/module/notification/entity/notification.entity.ts +26 -26
  282. package/src/module/notification/entity/otp.entity.ts +28 -28
  283. package/src/module/notification/firebase-admin.config.ts +22 -22
  284. package/src/module/notification/notification.module.ts +69 -69
  285. package/src/module/notification/repository/otp.repository.ts +27 -27
  286. package/src/module/notification/service/email.service.ts +127 -127
  287. package/src/module/notification/service/notification.service.ts +163 -163
  288. package/src/module/notification/service/otp.service.ts +132 -132
  289. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  290. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  291. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  292. package/src/module/third-party-module/third-party.module.ts +12 -12
  293. package/src/module/user/controller/login.controller.ts +197 -197
  294. package/src/module/user/controller/user.controller.ts +40 -40
  295. package/src/module/user/dto/create-user.dto.ts +62 -62
  296. package/src/module/user/dto/update-user.dto.ts +4 -4
  297. package/src/module/user/entity/role.entity.ts +33 -33
  298. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  299. package/src/module/user/entity/user-session.entity.ts +73 -73
  300. package/src/module/user/entity/user.entity.ts +59 -59
  301. package/src/module/user/repository/role.repository.ts +96 -96
  302. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  303. package/src/module/user/repository/user.repository.ts +50 -50
  304. package/src/module/user/repository/userSession.repository.ts +33 -33
  305. package/src/module/user/service/login.service.ts +290 -290
  306. package/src/module/user/service/role.service.ts +189 -189
  307. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  308. package/src/module/user/service/user-session.service.ts +168 -168
  309. package/src/module/user/service/user.service.ts +365 -365
  310. package/src/module/user/user.module.ts +65 -65
  311. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  312. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  313. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  314. package/src/module/workflow/controller/action.controller.ts +111 -111
  315. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  316. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  317. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  318. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  319. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  320. package/src/module/workflow/controller/stage.controller.ts +50 -50
  321. package/src/module/workflow/controller/task.controller.ts +77 -77
  322. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  323. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  324. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  325. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  326. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  327. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  328. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  329. package/src/module/workflow/entity/action.entity.ts +50 -50
  330. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  331. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  332. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  333. package/src/module/workflow/entity/form.entity.ts +25 -25
  334. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  335. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  336. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  337. package/src/module/workflow/entity/stage.entity.ts +20 -20
  338. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  339. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  340. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  341. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  342. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  343. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  344. package/src/module/workflow/repository/action-data.repository.ts +333 -333
  345. package/src/module/workflow/repository/action.repository.ts +323 -323
  346. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  347. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  348. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  349. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  350. package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
  351. package/src/module/workflow/repository/stage.repository.ts +172 -172
  352. package/src/module/workflow/repository/task.repository.ts +127 -127
  353. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  354. package/src/module/workflow/service/action-category.service.ts +33 -33
  355. package/src/module/workflow/service/action-data.service.ts +62 -62
  356. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  357. package/src/module/workflow/service/action-template-mapping.service.ts +106 -106
  358. package/src/module/workflow/service/action.service.ts +279 -279
  359. package/src/module/workflow/service/activity-log.service.ts +107 -107
  360. package/src/module/workflow/service/comm-template.service.ts +180 -180
  361. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  362. package/src/module/workflow/service/form-master.service.ts +35 -35
  363. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  364. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  365. package/src/module/workflow/service/stage-group.service.ts +319 -319
  366. package/src/module/workflow/service/stage.service.ts +199 -199
  367. package/src/module/workflow/service/task.service.ts +560 -560
  368. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  369. package/src/module/workflow/service/workflow-meta.service.ts +640 -640
  370. package/src/module/workflow/service/workflow.service.ts +205 -205
  371. package/src/module/workflow/workflow.module.ts +176 -176
  372. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +21 -21
  373. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  374. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +35 -35
  375. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  376. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  377. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  378. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  379. package/src/module/workflow-automation/service/workflow-automation.service.ts +347 -347
  380. package/src/module/workflow-automation/workflow-automation.module.ts +34 -34
  381. package/src/resources/dev.properties.yaml +30 -30
  382. package/src/resources/local.properties.yaml +27 -27
  383. package/src/resources/properties.module.ts +12 -12
  384. package/src/resources/properties.yaml.ts +11 -11
  385. package/src/resources/uat.properties.yaml +31 -31
  386. package/src/table.config.ts +126 -126
  387. package/src/utils/dto/excel-data.dto.ts +14 -14
  388. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  389. package/src/utils/service/base64util.service.ts +18 -18
  390. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  391. package/src/utils/service/codeGenerator.service.ts +22 -22
  392. package/src/utils/service/dateUtil.service.ts +17 -17
  393. package/src/utils/service/encryptUtil.service.ts +97 -97
  394. package/src/utils/service/excel-helper.service.ts +72 -72
  395. package/src/utils/service/excelUtil.service.ts +15 -15
  396. package/src/utils/service/file-util.service.ts +11 -11
  397. package/src/utils/service/json-util.service.ts +23 -23
  398. package/src/utils/service/loggingUtil.service.ts +34 -34
  399. package/src/utils/service/reflection-helper.service.ts +62 -62
  400. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  401. package/src/utils/utils.module.ts +25 -25
  402. package/tsconfig.build.json +4 -4
  403. package/tsconfig.json +24 -24
@@ -1,338 +1,338 @@
1
- /**
2
- * Communication Hub Usage Examples
3
- *
4
- * This file demonstrates how to use the hierarchical communication system.
5
- */
6
-
7
- import { IntegrationService } from '../service/integration.service';
8
-
9
- export class CommunicationUsageExamples {
10
- constructor(private readonly communicationService: IntegrationService) {}
11
-
12
- /**
13
- * Example 1: Send an email using Gmail API
14
- */
15
- async sendEmailViaGmailApi() {
16
- // First, create a configuration for Gmail API
17
- const emailConfig = {
18
- clientId: 'your-gmail-client-id',
19
- clientSecret: 'your-gmail-client-secret',
20
- refreshToken: 'your-refresh-token',
21
- };
22
-
23
- const hub = await this.communicationService.createIntegrationConfig(
24
- 1, // levelId
25
- 'organization', // levelType
26
- 'MY_APP_001', // app_code
27
- 'EMAIL', // integration_type
28
- 'gmail', // integration_provider
29
- 1, // integration_source_id
30
- emailConfig,
31
- );
32
-
33
- console.log('Created email config:', hub);
34
-
35
- // Send a message
36
- const result = await this.communicationService.sendMessage({
37
- levelId: 1,
38
- levelType: 'organization',
39
- app_code: 'MY_APP_001',
40
- to: 'recipient@example.com',
41
- message: 'Hello from Gmail API!',
42
- mode: 'EMAIL',
43
- });
44
-
45
- console.log('Email sent:', result);
46
- }
47
-
48
- /**
49
- * Example 2: Send Email using Outlook API
50
- */
51
- async sendEmailViaOutlookApi() {
52
- const outlookConfig = {
53
- clientId: 'your-outlook-client-id',
54
- clientSecret: 'your-outlook-client-secret',
55
- tenantId: 'your-tenant-id',
56
- email: 'user@outlook.com',
57
- };
58
-
59
- await this.communicationService.createIntegrationConfig(
60
- 1,
61
- 'organization',
62
- 'MY_APP_001',
63
- 'EMAIL',
64
- 'outlook',
65
- 2,
66
- outlookConfig,
67
- );
68
-
69
- const result = await this.communicationService.sendMessage({
70
- levelId: 1,
71
- levelType: 'organization',
72
- app_code: 'MY_APP_001',
73
- to: 'recipient@example.com',
74
- message: 'Hello from Outlook API!',
75
- mode: 'EMAIL',
76
- });
77
-
78
- console.log('Email sent:', result);
79
- }
80
-
81
- /**
82
- * Example 3: Send WhatsApp message
83
- */
84
- async sendWhatsAppMessage() {
85
- const whatsappConfig = {
86
- accessToken: 'your-whatsapp-access-token',
87
- phoneNumberId: 'your-phone-number-id',
88
- businessAccountId: 'your-business-account-id',
89
- };
90
-
91
- await this.communicationService.createIntegrationConfig(
92
- 1,
93
- 'organization',
94
- 'MY_APP_001',
95
- 'WA',
96
- 'whatsapp',
97
- 3,
98
- whatsappConfig,
99
- );
100
-
101
- const result = await this.communicationService.sendMessage({
102
- levelId: 1,
103
- levelType: 'organization',
104
- app_code: 'MY_APP_001',
105
- to: '+9876543210',
106
- message: 'Hello from WhatsApp!',
107
- mode: 'WA',
108
- });
109
-
110
- console.log('WhatsApp sent:', result);
111
- }
112
-
113
- /**
114
- * Example 4: Make a voice call using Ozonetel
115
- */
116
- async makeVoiceCall() {
117
- const voiceConfig = {
118
- apiKey: 'your-ozonetel-api-key',
119
- callerId: '+1234567890',
120
- voiceUrl: 'https://your-voice-script-url.com',
121
- };
122
-
123
- await this.communicationService.createIntegrationConfig(
124
- 1,
125
- 'organization',
126
- 'MY_APP_001',
127
- 'TELEPHONE',
128
- 'ozonetel',
129
- 4,
130
- voiceConfig,
131
- );
132
-
133
- const result = await this.communicationService.sendMessage({
134
- levelId: 1,
135
- levelType: 'organization',
136
- app_code: 'MY_APP_001',
137
- to: '+9876543210',
138
- message: 'Voice message content',
139
- mode: 'TELEPHONE',
140
- });
141
-
142
- console.log('Voice call initiated:', result);
143
- }
144
-
145
- /**
146
- * Example 5: Get all supported combinations
147
- */
148
- getSupportedCombinations() {
149
- const combinations = this.communicationService.getSupportedCombinations();
150
- console.log('Supported combinations:', combinations);
151
-
152
- // Output will be:
153
- // [
154
- // { mode: 'EMAIL', service: 'API', provider: 'gmail' },
155
- // { mode: 'EMAIL', service: 'SMTP', provider: 'gmail' },
156
- // { mode: 'EMAIL', service: 'API', provider: 'outlook' },
157
- // { mode: 'EMAIL', service: 'API', provider: 'sendgrid' },
158
- // { mode: 'WA', service: 'API', provider: 'whatsapp' },
159
- // { mode: 'TELEPHONE', service: 'THIRD_PARTY', provider: 'ozonetel' },
160
- // { mode: 'TELEPHONE', service: 'THIRD_PARTY', provider: 'tubelight' }
161
- // ]
162
- }
163
-
164
- /**
165
- * Example 6: Send Gmail email with attachments
166
- */
167
- async sendGmailWithAttachments() {
168
- const result = await this.communicationService.sendGenericMessage({
169
- levelId: 1,
170
- levelType: 'organization',
171
- app_code: 'MY_APP_001',
172
- to: 'recipient@example.com',
173
- subject: 'Email with Attachments',
174
- message: 'Please find the attached documents.',
175
- type: 'EMAIL',
176
- attachments: [
177
- {
178
- filename: 'document.pdf',
179
- content: 'base64-encoded-content-here',
180
- contentType: 'application/pdf',
181
- },
182
- {
183
- filename: 'image.jpg',
184
- path: '/path/to/local/image.jpg',
185
- contentType: 'image/jpeg',
186
- },
187
- ],
188
- });
189
-
190
- console.log('Gmail with attachments sent:', result);
191
- }
192
-
193
- /**
194
- * Example 7: Send Gmail email using HTML template
195
- */
196
- async sendGmailWithTemplate() {
197
- const htmlTemplate = `
198
- <html>
199
- <body>
200
- <h2>Welcome {{userName}}!</h2>
201
- <p>Thank you for joining our platform.</p>
202
- <p>Your account ID is: {{accountId}}</p>
203
- <a href="{{verificationLink}}">Verify your email</a>
204
- </body>
205
- </html>
206
- `;
207
-
208
- const result = await this.communicationService.sendGenericMessage({
209
- levelId: 1,
210
- levelType: 'organization',
211
- app_code: 'MY_APP_001',
212
- to: 'recipient@example.com',
213
- subject: 'Welcome to Our Platform',
214
- message: 'Welcome to Our Platform',
215
- html: htmlTemplate,
216
- type: 'EMAIL',
217
- variables: {
218
- userName: 'John Doe',
219
- accountId: 'ACC_12345',
220
- verificationLink: 'https://example.com/verify/token123',
221
- },
222
- });
223
-
224
- console.log('Gmail template email sent:', result);
225
- }
226
-
227
- /**
228
- * Example 8: Send SendGrid email with attachments
229
- */
230
- async sendSendGridWithAttachments() {
231
- // First create SendGrid config
232
- const sendGridConfig = {
233
- apiKey: 'your-sendgrid-api-key',
234
- fromEmail: 'noreply@yourdomain.com',
235
- fromName: 'Your Company',
236
- };
237
-
238
- await this.communicationService.createIntegrationConfig(
239
- 1,
240
- 'organization',
241
- 'MY_APP_001',
242
- 'EMAIL',
243
- 'sendgrid',
244
- 5,
245
- sendGridConfig,
246
- );
247
-
248
- const result = await this.communicationService.sendGenericMessage({
249
- levelId: 1,
250
- levelType: 'organization',
251
- app_code: 'MY_APP_001',
252
- to: 'recipient@example.com',
253
- subject: 'Invoice and Receipt',
254
- message: 'Please find your invoice and receipt attached.',
255
- type: 'EMAIL',
256
- attachments: [
257
- {
258
- filename: 'invoice.pdf',
259
- content: 'base64-encoded-invoice-content',
260
- contentType: 'application/pdf',
261
- disposition: 'attachment',
262
- },
263
- {
264
- filename: 'receipt.pdf',
265
- content: 'base64-encoded-receipt-content',
266
- contentType: 'application/pdf',
267
- disposition: 'attachment',
268
- },
269
- ],
270
- });
271
-
272
- console.log('SendGrid with attachments sent:', result);
273
- }
274
-
275
- /**
276
- * Example 9: Send SendGrid email using dynamic template
277
- */
278
- async sendSendGridWithDynamicTemplate() {
279
- const result = await this.communicationService.sendGenericMessage({
280
- levelId: 1,
281
- levelType: 'organization',
282
- app_code: 'MY_APP_001',
283
- to: 'recipient@example.com',
284
- message: '', // Required field, can be empty for template emails
285
- type: 'EMAIL',
286
- templateId: 'd-1234567890abcdef1234567890abcdef', // SendGrid template ID
287
- variables: {
288
- firstName: 'John',
289
- lastName: 'Doe',
290
- companyName: 'Acme Corp',
291
- orderNumber: 'ORD-2024-001',
292
- orderDate: '2024-01-15',
293
- items: [
294
- { name: 'Product A', quantity: 2, price: '$29.99' },
295
- { name: 'Product B', quantity: 1, price: '$49.99' },
296
- ],
297
- totalAmount: '$109.97',
298
- },
299
- });
300
-
301
- console.log('SendGrid dynamic template email sent:', result);
302
- }
303
-
304
- /**
305
- * Example 10: Send SendGrid email with custom headers and categories
306
- */
307
- async sendSendGridWithCustomOptions() {
308
- const result = await this.communicationService.sendGenericMessage({
309
- levelId: 1,
310
- levelType: 'organization',
311
- app_code: 'MY_APP_001',
312
- to: ['recipient1@example.com', 'recipient2@example.com'],
313
- cc: ['manager@example.com'],
314
- bcc: ['archive@example.com'],
315
- subject: 'Monthly Newsletter',
316
- message: 'Our Monthly Newsletter',
317
- html: '<h1>Our Monthly Newsletter</h1><p>Latest updates from our team...</p>',
318
- type: 'EMAIL',
319
- });
320
-
321
- console.log('SendGrid custom email sent:', result);
322
- }
323
-
324
- /**
325
- * Example 11: Send message without specifying mode (uses first available)
326
- */
327
- async sendMessageAutoMode() {
328
- const result = await this.communicationService.sendMessage({
329
- levelId: 1,
330
- levelType: 'organization',
331
- app_code: 'MY_APP_001',
332
- to: 'recipient@example.com',
333
- message: 'Hello! This will use the first available communication method.',
334
- });
335
-
336
- console.log('Message sent via auto-selected provider:', result);
337
- }
338
- }
1
+ /**
2
+ * Communication Hub Usage Examples
3
+ *
4
+ * This file demonstrates how to use the hierarchical communication system.
5
+ */
6
+
7
+ import { IntegrationService } from '../service/integration.service';
8
+
9
+ export class CommunicationUsageExamples {
10
+ constructor(private readonly communicationService: IntegrationService) {}
11
+
12
+ /**
13
+ * Example 1: Send an email using Gmail API
14
+ */
15
+ async sendEmailViaGmailApi() {
16
+ // First, create a configuration for Gmail API
17
+ const emailConfig = {
18
+ clientId: 'your-gmail-client-id',
19
+ clientSecret: 'your-gmail-client-secret',
20
+ refreshToken: 'your-refresh-token',
21
+ };
22
+
23
+ const hub = await this.communicationService.createIntegrationConfig(
24
+ 1, // levelId
25
+ 'organization', // levelType
26
+ 'MY_APP_001', // app_code
27
+ 'EMAIL', // integration_type
28
+ 'gmail', // integration_provider
29
+ 1, // integration_source_id
30
+ emailConfig,
31
+ );
32
+
33
+ console.log('Created email config:', hub);
34
+
35
+ // Send a message
36
+ const result = await this.communicationService.sendMessage({
37
+ levelId: 1,
38
+ levelType: 'organization',
39
+ app_code: 'MY_APP_001',
40
+ to: 'recipient@example.com',
41
+ message: 'Hello from Gmail API!',
42
+ mode: 'EMAIL',
43
+ });
44
+
45
+ console.log('Email sent:', result);
46
+ }
47
+
48
+ /**
49
+ * Example 2: Send Email using Outlook API
50
+ */
51
+ async sendEmailViaOutlookApi() {
52
+ const outlookConfig = {
53
+ clientId: 'your-outlook-client-id',
54
+ clientSecret: 'your-outlook-client-secret',
55
+ tenantId: 'your-tenant-id',
56
+ email: 'user@outlook.com',
57
+ };
58
+
59
+ await this.communicationService.createIntegrationConfig(
60
+ 1,
61
+ 'organization',
62
+ 'MY_APP_001',
63
+ 'EMAIL',
64
+ 'outlook',
65
+ 2,
66
+ outlookConfig,
67
+ );
68
+
69
+ const result = await this.communicationService.sendMessage({
70
+ levelId: 1,
71
+ levelType: 'organization',
72
+ app_code: 'MY_APP_001',
73
+ to: 'recipient@example.com',
74
+ message: 'Hello from Outlook API!',
75
+ mode: 'EMAIL',
76
+ });
77
+
78
+ console.log('Email sent:', result);
79
+ }
80
+
81
+ /**
82
+ * Example 3: Send WhatsApp message
83
+ */
84
+ async sendWhatsAppMessage() {
85
+ const whatsappConfig = {
86
+ accessToken: 'your-whatsapp-access-token',
87
+ phoneNumberId: 'your-phone-number-id',
88
+ businessAccountId: 'your-business-account-id',
89
+ };
90
+
91
+ await this.communicationService.createIntegrationConfig(
92
+ 1,
93
+ 'organization',
94
+ 'MY_APP_001',
95
+ 'WA',
96
+ 'whatsapp',
97
+ 3,
98
+ whatsappConfig,
99
+ );
100
+
101
+ const result = await this.communicationService.sendMessage({
102
+ levelId: 1,
103
+ levelType: 'organization',
104
+ app_code: 'MY_APP_001',
105
+ to: '+9876543210',
106
+ message: 'Hello from WhatsApp!',
107
+ mode: 'WA',
108
+ });
109
+
110
+ console.log('WhatsApp sent:', result);
111
+ }
112
+
113
+ /**
114
+ * Example 4: Make a voice call using Ozonetel
115
+ */
116
+ async makeVoiceCall() {
117
+ const voiceConfig = {
118
+ apiKey: 'your-ozonetel-api-key',
119
+ callerId: '+1234567890',
120
+ voiceUrl: 'https://your-voice-script-url.com',
121
+ };
122
+
123
+ await this.communicationService.createIntegrationConfig(
124
+ 1,
125
+ 'organization',
126
+ 'MY_APP_001',
127
+ 'TELEPHONE',
128
+ 'ozonetel',
129
+ 4,
130
+ voiceConfig,
131
+ );
132
+
133
+ const result = await this.communicationService.sendMessage({
134
+ levelId: 1,
135
+ levelType: 'organization',
136
+ app_code: 'MY_APP_001',
137
+ to: '+9876543210',
138
+ message: 'Voice message content',
139
+ mode: 'TELEPHONE',
140
+ });
141
+
142
+ console.log('Voice call initiated:', result);
143
+ }
144
+
145
+ /**
146
+ * Example 5: Get all supported combinations
147
+ */
148
+ getSupportedCombinations() {
149
+ const combinations = this.communicationService.getSupportedCombinations();
150
+ console.log('Supported combinations:', combinations);
151
+
152
+ // Output will be:
153
+ // [
154
+ // { mode: 'EMAIL', service: 'API', provider: 'gmail' },
155
+ // { mode: 'EMAIL', service: 'SMTP', provider: 'gmail' },
156
+ // { mode: 'EMAIL', service: 'API', provider: 'outlook' },
157
+ // { mode: 'EMAIL', service: 'API', provider: 'sendgrid' },
158
+ // { mode: 'WA', service: 'API', provider: 'whatsapp' },
159
+ // { mode: 'TELEPHONE', service: 'THIRD_PARTY', provider: 'ozonetel' },
160
+ // { mode: 'TELEPHONE', service: 'THIRD_PARTY', provider: 'tubelight' }
161
+ // ]
162
+ }
163
+
164
+ /**
165
+ * Example 6: Send Gmail email with attachments
166
+ */
167
+ async sendGmailWithAttachments() {
168
+ const result = await this.communicationService.sendGenericMessage({
169
+ levelId: 1,
170
+ levelType: 'organization',
171
+ app_code: 'MY_APP_001',
172
+ to: 'recipient@example.com',
173
+ subject: 'Email with Attachments',
174
+ message: 'Please find the attached documents.',
175
+ type: 'EMAIL',
176
+ attachments: [
177
+ {
178
+ filename: 'document.pdf',
179
+ content: 'base64-encoded-content-here',
180
+ contentType: 'application/pdf',
181
+ },
182
+ {
183
+ filename: 'image.jpg',
184
+ path: '/path/to/local/image.jpg',
185
+ contentType: 'image/jpeg',
186
+ },
187
+ ],
188
+ });
189
+
190
+ console.log('Gmail with attachments sent:', result);
191
+ }
192
+
193
+ /**
194
+ * Example 7: Send Gmail email using HTML template
195
+ */
196
+ async sendGmailWithTemplate() {
197
+ const htmlTemplate = `
198
+ <html>
199
+ <body>
200
+ <h2>Welcome {{userName}}!</h2>
201
+ <p>Thank you for joining our platform.</p>
202
+ <p>Your account ID is: {{accountId}}</p>
203
+ <a href="{{verificationLink}}">Verify your email</a>
204
+ </body>
205
+ </html>
206
+ `;
207
+
208
+ const result = await this.communicationService.sendGenericMessage({
209
+ levelId: 1,
210
+ levelType: 'organization',
211
+ app_code: 'MY_APP_001',
212
+ to: 'recipient@example.com',
213
+ subject: 'Welcome to Our Platform',
214
+ message: 'Welcome to Our Platform',
215
+ html: htmlTemplate,
216
+ type: 'EMAIL',
217
+ variables: {
218
+ userName: 'John Doe',
219
+ accountId: 'ACC_12345',
220
+ verificationLink: 'https://example.com/verify/token123',
221
+ },
222
+ });
223
+
224
+ console.log('Gmail template email sent:', result);
225
+ }
226
+
227
+ /**
228
+ * Example 8: Send SendGrid email with attachments
229
+ */
230
+ async sendSendGridWithAttachments() {
231
+ // First create SendGrid config
232
+ const sendGridConfig = {
233
+ apiKey: 'your-sendgrid-api-key',
234
+ fromEmail: 'noreply@yourdomain.com',
235
+ fromName: 'Your Company',
236
+ };
237
+
238
+ await this.communicationService.createIntegrationConfig(
239
+ 1,
240
+ 'organization',
241
+ 'MY_APP_001',
242
+ 'EMAIL',
243
+ 'sendgrid',
244
+ 5,
245
+ sendGridConfig,
246
+ );
247
+
248
+ const result = await this.communicationService.sendGenericMessage({
249
+ levelId: 1,
250
+ levelType: 'organization',
251
+ app_code: 'MY_APP_001',
252
+ to: 'recipient@example.com',
253
+ subject: 'Invoice and Receipt',
254
+ message: 'Please find your invoice and receipt attached.',
255
+ type: 'EMAIL',
256
+ attachments: [
257
+ {
258
+ filename: 'invoice.pdf',
259
+ content: 'base64-encoded-invoice-content',
260
+ contentType: 'application/pdf',
261
+ disposition: 'attachment',
262
+ },
263
+ {
264
+ filename: 'receipt.pdf',
265
+ content: 'base64-encoded-receipt-content',
266
+ contentType: 'application/pdf',
267
+ disposition: 'attachment',
268
+ },
269
+ ],
270
+ });
271
+
272
+ console.log('SendGrid with attachments sent:', result);
273
+ }
274
+
275
+ /**
276
+ * Example 9: Send SendGrid email using dynamic template
277
+ */
278
+ async sendSendGridWithDynamicTemplate() {
279
+ const result = await this.communicationService.sendGenericMessage({
280
+ levelId: 1,
281
+ levelType: 'organization',
282
+ app_code: 'MY_APP_001',
283
+ to: 'recipient@example.com',
284
+ message: '', // Required field, can be empty for template emails
285
+ type: 'EMAIL',
286
+ templateId: 'd-1234567890abcdef1234567890abcdef', // SendGrid template ID
287
+ variables: {
288
+ firstName: 'John',
289
+ lastName: 'Doe',
290
+ companyName: 'Acme Corp',
291
+ orderNumber: 'ORD-2024-001',
292
+ orderDate: '2024-01-15',
293
+ items: [
294
+ { name: 'Product A', quantity: 2, price: '$29.99' },
295
+ { name: 'Product B', quantity: 1, price: '$49.99' },
296
+ ],
297
+ totalAmount: '$109.97',
298
+ },
299
+ });
300
+
301
+ console.log('SendGrid dynamic template email sent:', result);
302
+ }
303
+
304
+ /**
305
+ * Example 10: Send SendGrid email with custom headers and categories
306
+ */
307
+ async sendSendGridWithCustomOptions() {
308
+ const result = await this.communicationService.sendGenericMessage({
309
+ levelId: 1,
310
+ levelType: 'organization',
311
+ app_code: 'MY_APP_001',
312
+ to: ['recipient1@example.com', 'recipient2@example.com'],
313
+ cc: ['manager@example.com'],
314
+ bcc: ['archive@example.com'],
315
+ subject: 'Monthly Newsletter',
316
+ message: 'Our Monthly Newsletter',
317
+ html: '<h1>Our Monthly Newsletter</h1><p>Latest updates from our team...</p>',
318
+ type: 'EMAIL',
319
+ });
320
+
321
+ console.log('SendGrid custom email sent:', result);
322
+ }
323
+
324
+ /**
325
+ * Example 11: Send message without specifying mode (uses first available)
326
+ */
327
+ async sendMessageAutoMode() {
328
+ const result = await this.communicationService.sendMessage({
329
+ levelId: 1,
330
+ levelType: 'organization',
331
+ app_code: 'MY_APP_001',
332
+ to: 'recipient@example.com',
333
+ message: 'Hello! This will use the first available communication method.',
334
+ });
335
+
336
+ console.log('Message sent via auto-selected provider:', result);
337
+ }
338
+ }