rez_core 3.1.145 → 3.1.147

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 (423) hide show
  1. package/.prettierrc +3 -3
  2. package/.vscode/extensions.json +5 -0
  3. package/README.md +99 -99
  4. package/dist/module/auth/guards/role.guard.js +3 -3
  5. package/dist/module/auth/services/auth.service.js +2 -2
  6. package/dist/module/dashboard/entity/widget_master.entity.js +1 -1
  7. package/dist/module/dashboard/entity/widget_master.entity.js.map +1 -1
  8. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  9. package/dist/module/filter/service/filter-evaluator.service.js +2 -2
  10. package/dist/module/filter/service/filter.service.js +7 -7
  11. package/dist/module/integration/entity/user-integration.entity.js +1 -1
  12. package/dist/module/integration/entity/user-integration.entity.js.map +1 -1
  13. package/dist/module/integration/examples/usage.example.js +9 -9
  14. package/dist/module/integration/service/integration.service.js +1 -1
  15. package/dist/module/integration/service/wrapper.service.js +25 -25
  16. package/dist/module/listmaster/service/list-master-item.service.js +2 -2
  17. package/dist/module/listmaster/service/list-master.service.js +2 -2
  18. package/dist/module/mapper/entity/field-lovs.entity.js +1 -1
  19. package/dist/module/mapper/entity/field-lovs.entity.js.map +1 -1
  20. package/dist/module/mapper/entity/field-mapper.entity.js +20 -4
  21. package/dist/module/mapper/entity/field-mapper.entity.js.map +1 -1
  22. package/dist/module/mapper/service/field-mapper.service.js +4 -4
  23. package/dist/module/mapper/service/mapper.service.js +2 -2
  24. package/dist/module/master/service/master.service.js +2 -2
  25. package/dist/module/master/service/master.service.js.map +1 -1
  26. package/dist/module/meta/entity/attribute-master.entity.js +1 -1
  27. package/dist/module/meta/entity/view-master.entity.js +1 -1
  28. package/dist/module/meta/repository/entity-master.repository.js +1 -1
  29. package/dist/module/meta/repository/entity-master.repository.js.map +1 -1
  30. package/dist/module/meta/service/entity-dynamic.service.js +18 -18
  31. package/dist/module/meta/service/entity-list.service.js +3 -3
  32. package/dist/module/meta/service/entity-master.service.js +3 -3
  33. package/dist/module/meta/service/entity-relation.service.js +11 -11
  34. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  35. package/dist/module/meta/service/populate-meta.service.js +3 -3
  36. package/dist/module/meta/service/populate-meta.service.js.map +1 -1
  37. package/dist/module/meta/service/resolver.service.js +5 -5
  38. package/dist/module/module/repository/menu.repository.js +12 -12
  39. package/dist/module/notification/service/notification.service.js +12 -12
  40. package/dist/module/user/controller/login.controller.js +18 -18
  41. package/dist/module/user/service/role.service.js +4 -4
  42. package/dist/module/user/service/user-session.service.js +2 -2
  43. package/dist/module/workflow/controller/form-master.controller.d.ts +1 -1
  44. package/dist/module/workflow/entity/workflow-data.entity.js +1 -1
  45. package/dist/module/workflow/entity/workflow-data.entity.js.map +1 -1
  46. package/dist/module/workflow/entity/workflow-level-mapping.entity.js +1 -1
  47. package/dist/module/workflow/entity/workflow-level-mapping.entity.js.map +1 -1
  48. package/dist/module/workflow/entity/workflow.entity.js +1 -1
  49. package/dist/module/workflow/entity/workflow.entity.js.map +1 -1
  50. package/dist/module/workflow/repository/action-data.repository.d.ts +1 -3
  51. package/dist/module/workflow/repository/action-data.repository.js +2 -6
  52. package/dist/module/workflow/repository/action-data.repository.js.map +1 -1
  53. package/dist/module/workflow/repository/action.repository.js +16 -16
  54. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  55. package/dist/module/workflow/repository/form-master.repository.d.ts +3 -7
  56. package/dist/module/workflow/repository/form-master.repository.js +6 -27
  57. package/dist/module/workflow/repository/form-master.repository.js.map +1 -1
  58. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  59. package/dist/module/workflow/repository/stage-movement.repository.js +11 -11
  60. package/dist/module/workflow/repository/stage.repository.js +8 -8
  61. package/dist/module/workflow/service/action-template-mapping.service.js +10 -10
  62. package/dist/module/workflow/service/action.service.js +26 -14
  63. package/dist/module/workflow/service/action.service.js.map +1 -1
  64. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  65. package/dist/module/workflow/service/form-master.service.d.ts +1 -1
  66. package/dist/module/workflow/service/populate-workflow.service.js +3 -3
  67. package/dist/module/workflow/service/populate-workflow.service.js.map +1 -1
  68. package/dist/module/workflow/service/stage-group.service.js +5 -5
  69. package/dist/module/workflow/service/stage.service.js +2 -2
  70. package/dist/module/workflow/service/task.service.js +33 -33
  71. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  72. package/dist/module/workflow/service/workflow-meta.service.js +50 -50
  73. package/dist/module/workflow/service/workflow.service.js +3 -3
  74. package/dist/module/workflow/service/workflow.service.js.map +1 -1
  75. package/dist/module/workflow/workflow.module.js +0 -4
  76. package/dist/module/workflow/workflow.module.js.map +1 -1
  77. package/dist/module/workflow-automation/entity/workflow-automation-action.entity.js +1 -1
  78. package/dist/module/workflow-automation/entity/workflow-automation-action.entity.js.map +1 -1
  79. package/dist/module/workflow-automation/entity/workflow-automation.entity.js +1 -1
  80. package/dist/module/workflow-automation/entity/workflow-automation.entity.js.map +1 -1
  81. package/dist/tsconfig.build.tsbuildinfo +1 -1
  82. package/dist/utils/service/reflection-helper.service.js +2 -2
  83. package/docs/modules/event-driven-integration-design.md +91 -91
  84. package/docs/modules/integration.md +250 -250
  85. package/eslint.config.mjs +34 -34
  86. package/nest-cli.json +14 -14
  87. package/package.json +118 -118
  88. package/src/app.controller.ts +12 -12
  89. package/src/app.module.ts +49 -49
  90. package/src/app.service.ts +8 -8
  91. package/src/config/config.module.ts +18 -18
  92. package/src/config/database.config.ts +23 -23
  93. package/src/constant/global.constant.ts +67 -67
  94. package/src/core.module.ts +81 -81
  95. package/src/decorators/roles.decorator.ts +7 -7
  96. package/src/dtos/response.dto.ts +6 -6
  97. package/src/dtos/response.ts +5 -5
  98. package/src/index.ts +1 -1
  99. package/src/module/auth/auth.module.ts +49 -49
  100. package/src/module/auth/controller/auth.controller.ts +28 -28
  101. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  102. package/src/module/auth/guards/jwt.guard.ts +22 -22
  103. package/src/module/auth/guards/role.guard.ts +68 -68
  104. package/src/module/auth/services/auth.service.ts +50 -50
  105. package/src/module/auth/services/jwt.service.ts +11 -11
  106. package/src/module/auth/strategies/google.strategy.ts +54 -54
  107. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  108. package/src/module/auth/strategies/local.strategy.ts +13 -13
  109. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  110. package/src/module/dashboard/dashboard.module.ts +21 -21
  111. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  112. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  113. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  114. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  115. package/src/module/dev/dev.module.ts +12 -12
  116. package/src/module/dev/service/dev.service.ts +7 -7
  117. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  118. package/src/module/enterprise/enterprise.module.ts +30 -30
  119. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  120. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  121. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  122. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  123. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  124. package/src/module/enterprise/repository/school.repository.ts +282 -282
  125. package/src/module/enterprise/service/brand.service.ts +5 -5
  126. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  127. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  128. package/src/module/enterprise/service/organization.service.ts +145 -145
  129. package/src/module/filter/controller/filter.controller.ts +84 -84
  130. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  131. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  132. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  133. package/src/module/filter/filter.module.ts +31 -31
  134. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  135. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  136. package/src/module/filter/service/filter.service.ts +841 -841
  137. package/src/module/filter/service/saved-filter.service.ts +170 -170
  138. package/src/module/ics/controller/ics.controller.ts +21 -21
  139. package/src/module/ics/dto/ics.dto.ts +55 -55
  140. package/src/module/ics/ics.module.ts +13 -13
  141. package/src/module/ics/service/ics.service.ts +60 -60
  142. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  143. package/src/module/integration/controller/integration.controller.ts +662 -662
  144. package/src/module/integration/controller/wrapper.controller.ts +39 -39
  145. package/src/module/integration/dto/create-config.dto.ts +526 -526
  146. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  147. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  148. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  149. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  150. package/src/module/integration/examples/usage.example.ts +338 -338
  151. package/src/module/integration/factories/base.factory.ts +7 -7
  152. package/src/module/integration/factories/email.factory.ts +49 -49
  153. package/src/module/integration/factories/integration.factory.ts +121 -121
  154. package/src/module/integration/factories/sms.factory.ts +51 -51
  155. package/src/module/integration/factories/telephone.factory.ts +41 -41
  156. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  157. package/src/module/integration/integration.module.ts +110 -110
  158. package/src/module/integration/service/calendar-event.service.ts +118 -118
  159. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  160. package/src/module/integration/service/integration-queue.service.ts +229 -229
  161. package/src/module/integration/service/integration.service.ts +2572 -2572
  162. package/src/module/integration/service/oauth.service.ts +224 -224
  163. package/src/module/integration/service/wrapper.service.ts +512 -512
  164. package/src/module/integration/strategies/email/gmail-api.strategy.ts +288 -288
  165. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  166. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  167. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  168. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  169. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  170. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  171. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  172. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  173. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  174. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  175. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  176. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  177. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  178. package/src/module/layout/controller/layout.controller.ts +47 -47
  179. package/src/module/layout/entity/header-items.entity.ts +28 -28
  180. package/src/module/layout/entity/header-section.entity.ts +19 -19
  181. package/src/module/layout/layout.module.ts +21 -21
  182. package/src/module/layout/repository/header-items.repository.ts +18 -18
  183. package/src/module/layout/repository/header-section.repository.ts +22 -22
  184. package/src/module/layout/service/header-section.service.ts +25 -25
  185. package/src/module/layout_preference/controller/layout_preference.controller.ts +47 -47
  186. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  187. package/src/module/layout_preference/layout_preference.module.ts +18 -18
  188. package/src/module/layout_preference/repository/layout_preference.repository.ts +30 -30
  189. package/src/module/layout_preference/service/layout_preference.service.ts +172 -172
  190. package/src/module/lead/controller/lead.controller.ts +30 -30
  191. package/src/module/lead/lead.module.ts +14 -14
  192. package/src/module/lead/repository/lead.repository.ts +41 -41
  193. package/src/module/lead/service/lead.service.ts +54 -54
  194. package/src/module/listmaster/controller/list-master.controller.ts +143 -143
  195. package/src/module/listmaster/entity/list-master-items.entity.ts +41 -41
  196. package/src/module/listmaster/entity/list-master.entity.ts +32 -32
  197. package/src/module/listmaster/listmaster.module.ts +30 -30
  198. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  199. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  200. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  201. package/src/module/listmaster/service/list-master.service.ts +360 -360
  202. package/src/module/mapper/controller/field-mapper.controller.ts +69 -69
  203. package/src/module/mapper/controller/mapper.controller.ts +14 -14
  204. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  205. package/src/module/mapper/entity/field-lovs.entity.ts +19 -21
  206. package/src/module/mapper/entity/field-mapper.entity.ts +53 -38
  207. package/src/module/mapper/entity/mapper.entity.ts +17 -17
  208. package/src/module/mapper/mapper.module.ts +34 -34
  209. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  210. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  211. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  212. package/src/module/mapper/service/field-mapper.service.ts +223 -223
  213. package/src/module/mapper/service/mapper.service.ts +72 -72
  214. package/src/module/master/controller/master.controller.ts +74 -74
  215. package/src/module/master/service/master.service.ts +483 -486
  216. package/src/module/meta/controller/app-master.controller.ts +38 -38
  217. package/src/module/meta/controller/attribute-master.controller.ts +66 -66
  218. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  219. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  220. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  221. package/src/module/meta/controller/entity.controller.ts +385 -385
  222. package/src/module/meta/controller/media.controller.ts +82 -82
  223. package/src/module/meta/controller/meta.controller.ts +96 -96
  224. package/src/module/meta/controller/view-master.controller.ts +86 -86
  225. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  226. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  227. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  228. package/src/module/meta/entity/app-master.entity.ts +34 -34
  229. package/src/module/meta/entity/attribute-master.entity.ts +87 -87
  230. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  231. package/src/module/meta/entity/entity-master.entity.ts +78 -78
  232. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  233. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  234. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  235. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  236. package/src/module/meta/entity/media-data.entity.ts +32 -32
  237. package/src/module/meta/entity/preference.entity.ts +62 -62
  238. package/src/module/meta/entity/view-master.entity.ts +41 -41
  239. package/src/module/meta/entity.module.ts +156 -156
  240. package/src/module/meta/repository/app-master.repository.ts +20 -20
  241. package/src/module/meta/repository/attribute-master.repository.ts +110 -110
  242. package/src/module/meta/repository/entity-master.repository.ts +69 -66
  243. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  244. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  245. package/src/module/meta/repository/media-data.repository.ts +50 -50
  246. package/src/module/meta/repository/preference.repository.ts +20 -20
  247. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  248. package/src/module/meta/repository/view-master.repository.ts +42 -42
  249. package/src/module/meta/service/app-master.service.ts +37 -37
  250. package/src/module/meta/service/attribute-master.service.ts +117 -117
  251. package/src/module/meta/service/common.service.ts +9 -9
  252. package/src/module/meta/service/entity-dynamic.service.ts +762 -762
  253. package/src/module/meta/service/entity-list.service.ts +205 -205
  254. package/src/module/meta/service/entity-master.service.ts +164 -164
  255. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  256. package/src/module/meta/service/entity-relation.service.ts +69 -69
  257. package/src/module/meta/service/entity-service-impl.service.ts +524 -524
  258. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  259. package/src/module/meta/service/entity-table.service.ts +150 -150
  260. package/src/module/meta/service/entity-validation.service.ts +185 -185
  261. package/src/module/meta/service/entity.service.ts +67 -67
  262. package/src/module/meta/service/field-group.service.ts +103 -103
  263. package/src/module/meta/service/media-data.service.ts +140 -140
  264. package/src/module/meta/service/populate-meta.service.ts +173 -174
  265. package/src/module/meta/service/preference.service.ts +16 -16
  266. package/src/module/meta/service/resolver.service.ts +271 -271
  267. package/src/module/meta/service/section-master.service.ts +104 -104
  268. package/src/module/meta/service/update-form-json.service.ts +22 -22
  269. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  270. package/src/module/meta/service/view-master.service.ts +111 -111
  271. package/src/module/module/controller/menu.controller.ts +15 -15
  272. package/src/module/module/controller/module-access.controller.ts +132 -132
  273. package/src/module/module/entity/menu.entity.ts +43 -43
  274. package/src/module/module/entity/module-access.entity.ts +25 -25
  275. package/src/module/module/entity/module-action.entity.ts +17 -17
  276. package/src/module/module/entity/module.entity.ts +52 -52
  277. package/src/module/module/module.module.ts +42 -42
  278. package/src/module/module/repository/menu.repository.ts +184 -184
  279. package/src/module/module/repository/module-access.repository.ts +327 -327
  280. package/src/module/module/service/menu.service.ts +82 -82
  281. package/src/module/module/service/module-access.service.ts +209 -209
  282. package/src/module/notification/controller/notification.controller.ts +58 -58
  283. package/src/module/notification/controller/otp.controller.ts +117 -117
  284. package/src/module/notification/entity/notification.entity.ts +23 -23
  285. package/src/module/notification/entity/otp.entity.ts +28 -28
  286. package/src/module/notification/firebase-admin.config.ts +22 -22
  287. package/src/module/notification/notification.module.ts +69 -69
  288. package/src/module/notification/repository/otp.repository.ts +27 -27
  289. package/src/module/notification/service/email.service.ts +127 -127
  290. package/src/module/notification/service/notification.service.ts +138 -138
  291. package/src/module/notification/service/otp.service.ts +121 -121
  292. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  293. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  294. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  295. package/src/module/third-party-module/third-party.module.ts +12 -12
  296. package/src/module/user/controller/login.controller.ts +197 -197
  297. package/src/module/user/controller/user.controller.ts +40 -40
  298. package/src/module/user/dto/create-user.dto.ts +62 -62
  299. package/src/module/user/dto/update-user.dto.ts +4 -4
  300. package/src/module/user/entity/role.entity.ts +33 -33
  301. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  302. package/src/module/user/entity/user-session.entity.ts +61 -61
  303. package/src/module/user/entity/user.entity.ts +68 -68
  304. package/src/module/user/repository/role.repository.ts +96 -96
  305. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  306. package/src/module/user/repository/user.repository.ts +50 -50
  307. package/src/module/user/repository/userSession.repository.ts +33 -33
  308. package/src/module/user/service/login.service.ts +280 -280
  309. package/src/module/user/service/role.service.ts +189 -189
  310. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  311. package/src/module/user/service/user-session.service.ts +168 -168
  312. package/src/module/user/service/user.service.ts +353 -353
  313. package/src/module/user/user.module.ts +65 -65
  314. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  315. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  316. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  317. package/src/module/workflow/controller/action.controller.ts +95 -95
  318. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  319. package/src/module/workflow/controller/comm-template.controller.ts +34 -34
  320. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  321. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  322. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  323. package/src/module/workflow/controller/stage.controller.ts +50 -50
  324. package/src/module/workflow/controller/task.controller.ts +77 -77
  325. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  326. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  327. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  328. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  329. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  330. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  331. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  332. package/src/module/workflow/entity/action.entity.ts +50 -50
  333. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  334. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  335. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  336. package/src/module/workflow/entity/form.entity.ts +25 -25
  337. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  338. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  339. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  340. package/src/module/workflow/entity/stage.entity.ts +20 -20
  341. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  342. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  343. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  344. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  345. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  346. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  347. package/src/module/workflow/repository/action-data.repository.ts +219 -219
  348. package/src/module/workflow/repository/action.repository.ts +277 -277
  349. package/src/module/workflow/repository/activity-log.repository.ts +121 -121
  350. package/src/module/workflow/repository/comm-template.repository.ts +142 -142
  351. package/src/module/workflow/repository/form-master.repository.ts +59 -61
  352. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  353. package/src/module/workflow/repository/stage-movement.repository.ts +227 -227
  354. package/src/module/workflow/repository/stage.repository.ts +172 -172
  355. package/src/module/workflow/repository/task.repository.ts +113 -113
  356. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  357. package/src/module/workflow/service/action-category.service.ts +33 -33
  358. package/src/module/workflow/service/action-data.service.ts +62 -62
  359. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  360. package/src/module/workflow/service/action-template-mapping.service.ts +55 -55
  361. package/src/module/workflow/service/action.service.ts +263 -247
  362. package/src/module/workflow/service/activity-log.service.ts +107 -107
  363. package/src/module/workflow/service/comm-template.service.ts +121 -121
  364. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  365. package/src/module/workflow/service/form-master.service.ts +35 -35
  366. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  367. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  368. package/src/module/workflow/service/stage-group.service.ts +300 -300
  369. package/src/module/workflow/service/stage.service.ts +199 -199
  370. package/src/module/workflow/service/task.service.ts +504 -504
  371. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  372. package/src/module/workflow/service/workflow-meta.service.ts +581 -581
  373. package/src/module/workflow/service/workflow.service.ts +205 -205
  374. package/src/module/workflow/workflow.module.ts +172 -176
  375. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +21 -21
  376. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  377. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +35 -35
  378. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  379. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  380. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  381. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  382. package/src/module/workflow-automation/service/workflow-automation.service.ts +345 -345
  383. package/src/module/workflow-automation/workflow-automation.module.ts +34 -34
  384. package/src/resources/dev.properties.yaml +30 -30
  385. package/src/resources/local.properties.yaml +23 -23
  386. package/src/resources/properties.module.ts +12 -12
  387. package/src/resources/properties.yaml.ts +11 -11
  388. package/src/resources/uat.properties.yaml +15 -15
  389. package/src/utils/dto/excel-data.dto.ts +14 -14
  390. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  391. package/src/utils/service/base64util.service.ts +18 -18
  392. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  393. package/src/utils/service/codeGenerator.service.ts +22 -22
  394. package/src/utils/service/dateUtil.service.ts +17 -17
  395. package/src/utils/service/encryptUtil.service.ts +97 -97
  396. package/src/utils/service/excel-helper.service.ts +72 -72
  397. package/src/utils/service/excelUtil.service.ts +15 -15
  398. package/src/utils/service/file-util.service.ts +11 -11
  399. package/src/utils/service/json-util.service.ts +23 -23
  400. package/src/utils/service/loggingUtil.service.ts +34 -34
  401. package/src/utils/service/reflection-helper.service.ts +62 -62
  402. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  403. package/src/utils/utils.module.ts +25 -25
  404. package/tsconfig.build.json +4 -4
  405. package/tsconfig.json +24 -24
  406. package/.claude/settings.local.json +0 -26
  407. package/.idea/250218_nodejs_core.iml +0 -9
  408. package/.idea/codeStyles/Project.xml +0 -59
  409. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  410. package/.idea/copilot.data.migration.agent.xml +0 -6
  411. package/.idea/copilot.data.migration.ask.xml +0 -6
  412. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  413. package/.idea/copilot.data.migration.edit.xml +0 -6
  414. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  415. package/.idea/misc.xml +0 -6
  416. package/.idea/modules.xml +0 -8
  417. package/.idea/prettier.xml +0 -6
  418. package/.idea/vcs.xml +0 -6
  419. package/dist/module/workflow/entity/form-master.entity.d.ts +0 -10
  420. package/dist/module/workflow/entity/form-master.entity.js +0 -50
  421. package/dist/module/workflow/entity/form-master.entity.js.map +0 -1
  422. package/server.log +0 -850
  423. package/src/module/workflow/entity/form-master.entity.ts +0 -27
@@ -1,372 +1,372 @@
1
- import { Injectable, Logger } from '@nestjs/common';
2
- import axios, { AxiosResponse } from 'axios';
3
- import { randomUUID } from 'crypto';
4
- import {
5
- IntegrationResult,
6
- IntegrationStrategy,
7
- } from '../integration.strategy';
8
-
9
- interface TubelightWhatsAppConfig {
10
- userName: string;
11
- password: string;
12
- tenantId: string;
13
- custUuid?: string;
14
- baseUrl?: string;
15
- templateId?: string;
16
- templateName?: string;
17
- templateLanguage?: string;
18
- variables?: string;
19
- }
20
-
21
- interface TubelightApiResponse {
22
- success: boolean;
23
- messageId?: string;
24
- id?: string;
25
- status?: string;
26
- message?: string;
27
- error?: string;
28
- details?: string;
29
- }
30
-
31
- @Injectable()
32
- export class TubelightWhatsAppStrategy implements IntegrationStrategy {
33
- private readonly logger = new Logger(TubelightWhatsAppStrategy.name);
34
- private readonly defaultBaseUrl =
35
- 'https://portal.tubelightcommunications.com/whatsapp/api/v1';
36
-
37
- async sendMessage(
38
- to: string,
39
- message: string,
40
- config: any,
41
- ): Promise<IntegrationResult> {
42
- try {
43
- if (!this.validateConfig(config)) {
44
- throw new Error('Invalid Tubelight WhatsApp configuration');
45
- }
46
-
47
- const tubelightConfig = config as TubelightWhatsAppConfig;
48
- const token = await this.authenticate(tubelightConfig);
49
-
50
- if (!token) {
51
- throw new Error('Failed to authenticate with Tubelight');
52
- }
53
-
54
- const baseUrl = this.defaultBaseUrl;
55
- const url = `${baseUrl}/bulk/send`;
56
-
57
- const payload = [this.prepareMessagePayload(to, message, config)];
58
-
59
- console.log(payload)
60
-
61
- const response = await axios.post(
62
- url,
63
- payload,
64
- {
65
- headers: {
66
- 'Content-Type': 'application/json',
67
- Authorization: `Bearer ${token}`,
68
- },
69
- timeout: 30000,
70
- },
71
- );
72
-
73
- if (
74
- response.status === 200
75
- ) {
76
- const messageId = response.data.messageId || response.data.id;
77
- this.logger.log(
78
- `Tubelight WhatsApp message sent successfully to ${to}, messageId: ${messageId}`,
79
- );
80
-
81
- return {
82
- success: true,
83
- messageId: messageId,
84
- provider: 'tubelight',
85
- service: 'API',
86
- timestamp: new Date(),
87
- message: "WhatsApp Message sent successfully"
88
- };
89
- } else {
90
- throw new Error(
91
- response.data?.error ||
92
- response.data?.message ||
93
- 'Invalid response from Tubelight API',
94
- );
95
- }
96
- } catch (error) {
97
- this.logger.error(
98
- `Failed to send Tubelight WhatsApp message to ${to}`,
99
- error.response?.data || error.message,
100
- );
101
-
102
- return {
103
- success: false,
104
- provider: 'tubelight',
105
- service: 'API',
106
- error: this.extractErrorMessage(error),
107
- timestamp: new Date(),
108
- };
109
- }
110
- }
111
-
112
- private async authenticate(
113
- config: TubelightWhatsAppConfig,
114
- ): Promise<string | null> {
115
- try {
116
- const authUrl = 'https://portal.tubelightcommunications.com/api/authentication/login';
117
-
118
- const response = await axios.post(
119
- authUrl,
120
- {
121
- username: config.userName,
122
- password: config.password,
123
- validityTime: 3600,
124
- },
125
- {
126
- headers: {
127
- 'Content-Type': 'application/json',
128
- },
129
- },
130
- );
131
-
132
- const data = response.data as {
133
- bearer_token?: string;
134
- accessToken?: string;
135
- token?: string;
136
- authToken?: string;
137
- success?: boolean;
138
- };
139
-
140
- // Return token in various possible formats
141
- const token = data?.bearer_token || data?.accessToken || data?.token || data?.authToken || null;
142
-
143
- if (token) {
144
- this.logger.log('Successfully authenticated with Tubelight');
145
- return token;
146
- }
147
-
148
- this.logger.warn('No token found in Tubelight auth response');
149
- return null;
150
- } catch (error) {
151
- const errorMessage = error.response?.data
152
- ? JSON.stringify(error.response.data)
153
- : error.message;
154
- this.logger.error(
155
- 'Failed to authenticate with Tubelight:',
156
- errorMessage,
157
- );
158
- return null;
159
- }
160
- }
161
-
162
- private prepareMessagePayload(to: string, message: string, config: any): any {
163
- const basePayload = {
164
- cust_uuid: config.custUuid || randomUUID(),
165
- to: [this.formatPhoneNumber(to)],
166
- };
167
-
168
- // If templateId exists, send template message
169
- if (config.templateId || config.templateName) {
170
- const messagePayload: any = {
171
- type: 'template',
172
- template_name: config.templateId || config.templateName,
173
- language: config.templateLanguage || 'en',
174
- };
175
-
176
- // Add body_params if provided
177
- if (config.variables) {
178
- console.log("variables", config.variables)
179
- try {
180
- // Parse JSON string
181
- const parsedVariables = typeof config.variables === 'string'
182
- ? JSON.parse(config.variables)
183
- : config.variables;
184
-
185
- // Convert object to array of values, or use array as-is
186
- messagePayload.body_params = Array.isArray(parsedVariables)
187
- ? parsedVariables
188
- : Object.values(parsedVariables);
189
- } catch (e) {
190
- this.logger.error('Failed to parse variables JSON:', e.message);
191
- messagePayload.body_params = [];
192
- }
193
- }
194
-
195
- return {
196
- ...basePayload,
197
- message: messagePayload,
198
- };
199
- }
200
-
201
- // Default text message
202
- return {
203
- ...basePayload,
204
- message: {
205
- type: 'text',
206
- text: message,
207
- },
208
- };
209
- }
210
-
211
- private formatPhoneNumber(phoneNumber: string): string {
212
- // Remove any non-digit characters
213
- let formatted = phoneNumber.replace(/\D/g, '');
214
-
215
- return formatted;
216
- }
217
-
218
- private extractErrorMessage(error: any): string {
219
- if (error.response?.data?.error) {
220
- return error.response.data.error;
221
- }
222
-
223
- if (error.response?.data?.message) {
224
- return error.response.data.message;
225
- }
226
-
227
- if (error.response?.data?.details) {
228
- return error.response.data.details;
229
- }
230
-
231
- if (error.message) {
232
- return error.message;
233
- }
234
-
235
- return 'Unknown Tubelight API error';
236
- }
237
-
238
- validateConfig(config: any): boolean {
239
- if (!config || typeof config !== 'object') {
240
- return false;
241
- }
242
-
243
- // Required fields
244
- if (!config.userName || !config.password || !config.tenantId) {
245
- return false;
246
- }
247
-
248
- return true;
249
- }
250
-
251
- async getAccountInfo(config: TubelightWhatsAppConfig): Promise<any> {
252
- try {
253
- const token = await this.authenticate(config);
254
- if (!token) {
255
- throw new Error('Authentication failed');
256
- }
257
-
258
- const baseUrl = config.baseUrl || this.defaultBaseUrl;
259
- const url = `${baseUrl}/account/info`;
260
-
261
- const response = await axios.get(url, {
262
- headers: {
263
- Authorization: `Bearer ${token}`,
264
- },
265
- });
266
-
267
- return response.data;
268
- } catch (error) {
269
- this.logger.error(
270
- 'Failed to get Tubelight account info',
271
- error.response?.data || error.message,
272
- );
273
- throw new Error(
274
- `Failed to get account info: ${this.extractErrorMessage(error)}`,
275
- );
276
- }
277
- }
278
-
279
- async getTemplates(config: TubelightWhatsAppConfig): Promise<{
280
- success: boolean;
281
- data?: Array<{
282
- label: string;
283
- value: string;
284
- }>;
285
- error?: string;
286
- }> {
287
- try {
288
- const token = await this.authenticate(config);
289
- if (!token) {
290
- throw new Error('Authentication failed');
291
- }
292
-
293
- const url = `${this.defaultBaseUrl}/retreive/template`;
294
-
295
- const response = await axios.post(
296
- url,
297
- {},
298
- {
299
- headers: {
300
- 'Content-Type': 'application/json',
301
- Authorization: `Bearer ${token}`,
302
- },
303
- },
304
- );
305
-
306
- const templates = response.data?.data || response.data?.templates || response.data || [];
307
-
308
- // Format the response with templateName as both label and value
309
- const formattedTemplates = Array.isArray(templates)
310
- ? templates.map((template: any) => ({
311
- label: template.templateName,
312
- value: template.templateName,
313
- }))
314
- : [];
315
-
316
- return {
317
- success: true,
318
- data: formattedTemplates,
319
- };
320
- } catch (error) {
321
- let errorMessage = 'Failed to fetch Tubelight templates';
322
-
323
- if (error.response?.status === 401) {
324
- errorMessage = 'Authentication failed';
325
- } else if (error.response?.data?.message) {
326
- errorMessage = error.response.data.message;
327
- } else if (error.response?.data?.error) {
328
- errorMessage = error.response.data.error;
329
- } else if (error.message) {
330
- errorMessage = error.message;
331
- }
332
-
333
- this.logger.error('Failed to get Tubelight templates', errorMessage);
334
-
335
- return {
336
- success: false,
337
- error: errorMessage,
338
- };
339
- }
340
- }
341
-
342
- async getMessageStatus(
343
- config: TubelightWhatsAppConfig,
344
- messageId: string,
345
- ): Promise<any> {
346
- try {
347
- const token = await this.authenticate(config);
348
- if (!token) {
349
- throw new Error('Authentication failed');
350
- }
351
-
352
- const baseUrl = config.baseUrl || this.defaultBaseUrl;
353
- const url = `${baseUrl}/messages/${messageId}/status`;
354
-
355
- const response = await axios.get(url, {
356
- headers: {
357
- Authorization: `Bearer ${token}`,
358
- },
359
- });
360
-
361
- return response.data;
362
- } catch (error) {
363
- this.logger.error(
364
- 'Failed to get message status',
365
- error.response?.data || error.message,
366
- );
367
- throw new Error(
368
- `Failed to get message status: ${this.extractErrorMessage(error)}`,
369
- );
370
- }
371
- }
372
- }
1
+ import { Injectable, Logger } from '@nestjs/common';
2
+ import axios, { AxiosResponse } from 'axios';
3
+ import { randomUUID } from 'crypto';
4
+ import {
5
+ IntegrationResult,
6
+ IntegrationStrategy,
7
+ } from '../integration.strategy';
8
+
9
+ interface TubelightWhatsAppConfig {
10
+ userName: string;
11
+ password: string;
12
+ tenantId: string;
13
+ custUuid?: string;
14
+ baseUrl?: string;
15
+ templateId?: string;
16
+ templateName?: string;
17
+ templateLanguage?: string;
18
+ variables?: string;
19
+ }
20
+
21
+ interface TubelightApiResponse {
22
+ success: boolean;
23
+ messageId?: string;
24
+ id?: string;
25
+ status?: string;
26
+ message?: string;
27
+ error?: string;
28
+ details?: string;
29
+ }
30
+
31
+ @Injectable()
32
+ export class TubelightWhatsAppStrategy implements IntegrationStrategy {
33
+ private readonly logger = new Logger(TubelightWhatsAppStrategy.name);
34
+ private readonly defaultBaseUrl =
35
+ 'https://portal.tubelightcommunications.com/whatsapp/api/v1';
36
+
37
+ async sendMessage(
38
+ to: string,
39
+ message: string,
40
+ config: any,
41
+ ): Promise<IntegrationResult> {
42
+ try {
43
+ if (!this.validateConfig(config)) {
44
+ throw new Error('Invalid Tubelight WhatsApp configuration');
45
+ }
46
+
47
+ const tubelightConfig = config as TubelightWhatsAppConfig;
48
+ const token = await this.authenticate(tubelightConfig);
49
+
50
+ if (!token) {
51
+ throw new Error('Failed to authenticate with Tubelight');
52
+ }
53
+
54
+ const baseUrl = this.defaultBaseUrl;
55
+ const url = `${baseUrl}/bulk/send`;
56
+
57
+ const payload = [this.prepareMessagePayload(to, message, config)];
58
+
59
+ console.log(payload)
60
+
61
+ const response = await axios.post(
62
+ url,
63
+ payload,
64
+ {
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ Authorization: `Bearer ${token}`,
68
+ },
69
+ timeout: 30000,
70
+ },
71
+ );
72
+
73
+ if (
74
+ response.status === 200
75
+ ) {
76
+ const messageId = response.data.messageId || response.data.id;
77
+ this.logger.log(
78
+ `Tubelight WhatsApp message sent successfully to ${to}, messageId: ${messageId}`,
79
+ );
80
+
81
+ return {
82
+ success: true,
83
+ messageId: messageId,
84
+ provider: 'tubelight',
85
+ service: 'API',
86
+ timestamp: new Date(),
87
+ message: "WhatsApp Message sent successfully"
88
+ };
89
+ } else {
90
+ throw new Error(
91
+ response.data?.error ||
92
+ response.data?.message ||
93
+ 'Invalid response from Tubelight API',
94
+ );
95
+ }
96
+ } catch (error) {
97
+ this.logger.error(
98
+ `Failed to send Tubelight WhatsApp message to ${to}`,
99
+ error.response?.data || error.message,
100
+ );
101
+
102
+ return {
103
+ success: false,
104
+ provider: 'tubelight',
105
+ service: 'API',
106
+ error: this.extractErrorMessage(error),
107
+ timestamp: new Date(),
108
+ };
109
+ }
110
+ }
111
+
112
+ private async authenticate(
113
+ config: TubelightWhatsAppConfig,
114
+ ): Promise<string | null> {
115
+ try {
116
+ const authUrl = 'https://portal.tubelightcommunications.com/api/authentication/login';
117
+
118
+ const response = await axios.post(
119
+ authUrl,
120
+ {
121
+ username: config.userName,
122
+ password: config.password,
123
+ validityTime: 3600,
124
+ },
125
+ {
126
+ headers: {
127
+ 'Content-Type': 'application/json',
128
+ },
129
+ },
130
+ );
131
+
132
+ const data = response.data as {
133
+ bearer_token?: string;
134
+ accessToken?: string;
135
+ token?: string;
136
+ authToken?: string;
137
+ success?: boolean;
138
+ };
139
+
140
+ // Return token in various possible formats
141
+ const token = data?.bearer_token || data?.accessToken || data?.token || data?.authToken || null;
142
+
143
+ if (token) {
144
+ this.logger.log('Successfully authenticated with Tubelight');
145
+ return token;
146
+ }
147
+
148
+ this.logger.warn('No token found in Tubelight auth response');
149
+ return null;
150
+ } catch (error) {
151
+ const errorMessage = error.response?.data
152
+ ? JSON.stringify(error.response.data)
153
+ : error.message;
154
+ this.logger.error(
155
+ 'Failed to authenticate with Tubelight:',
156
+ errorMessage,
157
+ );
158
+ return null;
159
+ }
160
+ }
161
+
162
+ private prepareMessagePayload(to: string, message: string, config: any): any {
163
+ const basePayload = {
164
+ cust_uuid: config.custUuid || randomUUID(),
165
+ to: [this.formatPhoneNumber(to)],
166
+ };
167
+
168
+ // If templateId exists, send template message
169
+ if (config.templateId || config.templateName) {
170
+ const messagePayload: any = {
171
+ type: 'template',
172
+ template_name: config.templateId || config.templateName,
173
+ language: config.templateLanguage || 'en',
174
+ };
175
+
176
+ // Add body_params if provided
177
+ if (config.variables) {
178
+ console.log("variables", config.variables)
179
+ try {
180
+ // Parse JSON string
181
+ const parsedVariables = typeof config.variables === 'string'
182
+ ? JSON.parse(config.variables)
183
+ : config.variables;
184
+
185
+ // Convert object to array of values, or use array as-is
186
+ messagePayload.body_params = Array.isArray(parsedVariables)
187
+ ? parsedVariables
188
+ : Object.values(parsedVariables);
189
+ } catch (e) {
190
+ this.logger.error('Failed to parse variables JSON:', e.message);
191
+ messagePayload.body_params = [];
192
+ }
193
+ }
194
+
195
+ return {
196
+ ...basePayload,
197
+ message: messagePayload,
198
+ };
199
+ }
200
+
201
+ // Default text message
202
+ return {
203
+ ...basePayload,
204
+ message: {
205
+ type: 'text',
206
+ text: message,
207
+ },
208
+ };
209
+ }
210
+
211
+ private formatPhoneNumber(phoneNumber: string): string {
212
+ // Remove any non-digit characters
213
+ let formatted = phoneNumber.replace(/\D/g, '');
214
+
215
+ return formatted;
216
+ }
217
+
218
+ private extractErrorMessage(error: any): string {
219
+ if (error.response?.data?.error) {
220
+ return error.response.data.error;
221
+ }
222
+
223
+ if (error.response?.data?.message) {
224
+ return error.response.data.message;
225
+ }
226
+
227
+ if (error.response?.data?.details) {
228
+ return error.response.data.details;
229
+ }
230
+
231
+ if (error.message) {
232
+ return error.message;
233
+ }
234
+
235
+ return 'Unknown Tubelight API error';
236
+ }
237
+
238
+ validateConfig(config: any): boolean {
239
+ if (!config || typeof config !== 'object') {
240
+ return false;
241
+ }
242
+
243
+ // Required fields
244
+ if (!config.userName || !config.password || !config.tenantId) {
245
+ return false;
246
+ }
247
+
248
+ return true;
249
+ }
250
+
251
+ async getAccountInfo(config: TubelightWhatsAppConfig): Promise<any> {
252
+ try {
253
+ const token = await this.authenticate(config);
254
+ if (!token) {
255
+ throw new Error('Authentication failed');
256
+ }
257
+
258
+ const baseUrl = config.baseUrl || this.defaultBaseUrl;
259
+ const url = `${baseUrl}/account/info`;
260
+
261
+ const response = await axios.get(url, {
262
+ headers: {
263
+ Authorization: `Bearer ${token}`,
264
+ },
265
+ });
266
+
267
+ return response.data;
268
+ } catch (error) {
269
+ this.logger.error(
270
+ 'Failed to get Tubelight account info',
271
+ error.response?.data || error.message,
272
+ );
273
+ throw new Error(
274
+ `Failed to get account info: ${this.extractErrorMessage(error)}`,
275
+ );
276
+ }
277
+ }
278
+
279
+ async getTemplates(config: TubelightWhatsAppConfig): Promise<{
280
+ success: boolean;
281
+ data?: Array<{
282
+ label: string;
283
+ value: string;
284
+ }>;
285
+ error?: string;
286
+ }> {
287
+ try {
288
+ const token = await this.authenticate(config);
289
+ if (!token) {
290
+ throw new Error('Authentication failed');
291
+ }
292
+
293
+ const url = `${this.defaultBaseUrl}/retreive/template`;
294
+
295
+ const response = await axios.post(
296
+ url,
297
+ {},
298
+ {
299
+ headers: {
300
+ 'Content-Type': 'application/json',
301
+ Authorization: `Bearer ${token}`,
302
+ },
303
+ },
304
+ );
305
+
306
+ const templates = response.data?.data || response.data?.templates || response.data || [];
307
+
308
+ // Format the response with templateName as both label and value
309
+ const formattedTemplates = Array.isArray(templates)
310
+ ? templates.map((template: any) => ({
311
+ label: template.templateName,
312
+ value: template.templateName,
313
+ }))
314
+ : [];
315
+
316
+ return {
317
+ success: true,
318
+ data: formattedTemplates,
319
+ };
320
+ } catch (error) {
321
+ let errorMessage = 'Failed to fetch Tubelight templates';
322
+
323
+ if (error.response?.status === 401) {
324
+ errorMessage = 'Authentication failed';
325
+ } else if (error.response?.data?.message) {
326
+ errorMessage = error.response.data.message;
327
+ } else if (error.response?.data?.error) {
328
+ errorMessage = error.response.data.error;
329
+ } else if (error.message) {
330
+ errorMessage = error.message;
331
+ }
332
+
333
+ this.logger.error('Failed to get Tubelight templates', errorMessage);
334
+
335
+ return {
336
+ success: false,
337
+ error: errorMessage,
338
+ };
339
+ }
340
+ }
341
+
342
+ async getMessageStatus(
343
+ config: TubelightWhatsAppConfig,
344
+ messageId: string,
345
+ ): Promise<any> {
346
+ try {
347
+ const token = await this.authenticate(config);
348
+ if (!token) {
349
+ throw new Error('Authentication failed');
350
+ }
351
+
352
+ const baseUrl = config.baseUrl || this.defaultBaseUrl;
353
+ const url = `${baseUrl}/messages/${messageId}/status`;
354
+
355
+ const response = await axios.get(url, {
356
+ headers: {
357
+ Authorization: `Bearer ${token}`,
358
+ },
359
+ });
360
+
361
+ return response.data;
362
+ } catch (error) {
363
+ this.logger.error(
364
+ 'Failed to get message status',
365
+ error.response?.data || error.message,
366
+ );
367
+ throw new Error(
368
+ `Failed to get message status: ${this.extractErrorMessage(error)}`,
369
+ );
370
+ }
371
+ }
372
+ }