rez_core 4.0.134 → 4.0.136

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