rez_core 3.1.158 → 3.1.161

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 (393) 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/filter/repository/saved-filter.repository.js +4 -4
  7. package/dist/module/filter/service/filter-evaluator.service.js +2 -2
  8. package/dist/module/filter/service/filter.service.js +7 -7
  9. package/dist/module/integration/examples/usage.example.js +9 -9
  10. package/dist/module/integration/service/integration.service.js +1 -1
  11. package/dist/module/integration/service/wrapper.service.js +22 -22
  12. package/dist/module/listmaster/controller/list-master.controller.d.ts +4 -1
  13. package/dist/module/listmaster/service/list-master-item.service.js +2 -2
  14. package/dist/module/listmaster/service/list-master.service.d.ts +7 -1
  15. package/dist/module/listmaster/service/list-master.service.js +12 -14
  16. package/dist/module/listmaster/service/list-master.service.js.map +1 -1
  17. package/dist/module/mapper/service/field-mapper.service.js +4 -4
  18. package/dist/module/mapper/service/mapper.service.js +2 -2
  19. package/dist/module/meta/controller/meta.controller.d.ts +24 -6
  20. package/dist/module/meta/repository/entity-master.repository.d.ts +24 -6
  21. package/dist/module/meta/service/entity-dynamic.service.js +18 -18
  22. package/dist/module/meta/service/entity-list.service.js +3 -3
  23. package/dist/module/meta/service/entity-master.service.d.ts +24 -6
  24. package/dist/module/meta/service/entity-master.service.js +3 -3
  25. package/dist/module/meta/service/entity-relation.service.js +11 -11
  26. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  27. package/dist/module/meta/service/resolver.service.js +3 -3
  28. package/dist/module/module/repository/menu.repository.js +12 -12
  29. package/dist/module/notification/controller/otp.controller.d.ts +3 -0
  30. package/dist/module/notification/service/notification.service.js +12 -12
  31. package/dist/module/notification/service/otp.service.d.ts +3 -0
  32. package/dist/module/notification/service/otp.service.js +4 -1
  33. package/dist/module/notification/service/otp.service.js.map +1 -1
  34. package/dist/module/user/controller/login.controller.js +18 -18
  35. package/dist/module/user/service/role.service.js +4 -4
  36. package/dist/module/user/service/user-session.service.js +2 -2
  37. package/dist/module/workflow/repository/action.repository.js +16 -16
  38. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  39. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  40. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  41. package/dist/module/workflow/repository/stage-movement.repository.js +11 -11
  42. package/dist/module/workflow/repository/stage.repository.js +8 -8
  43. package/dist/module/workflow/service/action-template-mapping.service.js +10 -10
  44. package/dist/module/workflow/service/action.service.js +7 -7
  45. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  46. package/dist/module/workflow/service/stage-group.service.js +5 -5
  47. package/dist/module/workflow/service/stage.service.js +2 -2
  48. package/dist/module/workflow/service/task.service.js +33 -33
  49. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  50. package/dist/module/workflow/service/workflow-meta.service.js +50 -50
  51. package/dist/module/workflow/service/workflow.service.js +2 -2
  52. package/dist/tsconfig.build.tsbuildinfo +1 -1
  53. package/dist/utils/service/reflection-helper.service.js +2 -2
  54. package/docs/modules/event-driven-integration-design.md +91 -91
  55. package/docs/modules/integration.md +250 -250
  56. package/eslint.config.mjs +34 -34
  57. package/nest-cli.json +14 -14
  58. package/package.json +118 -118
  59. package/src/app.controller.ts +12 -12
  60. package/src/app.module.ts +49 -49
  61. package/src/app.service.ts +8 -8
  62. package/src/config/config.module.ts +18 -18
  63. package/src/config/database.config.ts +23 -23
  64. package/src/constant/global.constant.ts +67 -67
  65. package/src/core.module.ts +81 -81
  66. package/src/decorators/roles.decorator.ts +7 -7
  67. package/src/dtos/response.dto.ts +6 -6
  68. package/src/dtos/response.ts +5 -5
  69. package/src/index.ts +1 -1
  70. package/src/module/auth/auth.module.ts +49 -49
  71. package/src/module/auth/controller/auth.controller.ts +28 -28
  72. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  73. package/src/module/auth/guards/jwt.guard.ts +22 -22
  74. package/src/module/auth/guards/role.guard.ts +68 -68
  75. package/src/module/auth/services/auth.service.ts +50 -50
  76. package/src/module/auth/services/jwt.service.ts +11 -11
  77. package/src/module/auth/strategies/google.strategy.ts +54 -54
  78. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  79. package/src/module/auth/strategies/local.strategy.ts +13 -13
  80. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  81. package/src/module/dashboard/dashboard.module.ts +21 -21
  82. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  83. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  84. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  85. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  86. package/src/module/dev/dev.module.ts +12 -12
  87. package/src/module/dev/service/dev.service.ts +7 -7
  88. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  89. package/src/module/enterprise/enterprise.module.ts +30 -30
  90. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  91. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  92. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  93. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  94. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  95. package/src/module/enterprise/repository/school.repository.ts +281 -281
  96. package/src/module/enterprise/service/brand.service.ts +5 -5
  97. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  98. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  99. package/src/module/enterprise/service/organization.service.ts +145 -145
  100. package/src/module/filter/controller/filter.controller.ts +84 -84
  101. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  102. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  103. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  104. package/src/module/filter/filter.module.ts +31 -31
  105. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  106. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  107. package/src/module/filter/service/filter.service.ts +841 -841
  108. package/src/module/filter/service/saved-filter.service.ts +170 -170
  109. package/src/module/ics/controller/ics.controller.ts +21 -21
  110. package/src/module/ics/dto/ics.dto.ts +55 -55
  111. package/src/module/ics/ics.module.ts +13 -13
  112. package/src/module/ics/service/ics.service.ts +57 -57
  113. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  114. package/src/module/integration/controller/integration.controller.ts +662 -662
  115. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  116. package/src/module/integration/dto/create-config.dto.ts +526 -526
  117. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  118. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  119. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  120. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  121. package/src/module/integration/examples/usage.example.ts +338 -338
  122. package/src/module/integration/factories/base.factory.ts +7 -7
  123. package/src/module/integration/factories/email.factory.ts +49 -49
  124. package/src/module/integration/factories/integration.factory.ts +121 -121
  125. package/src/module/integration/factories/sms.factory.ts +51 -51
  126. package/src/module/integration/factories/telephone.factory.ts +41 -41
  127. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  128. package/src/module/integration/integration.module.ts +110 -110
  129. package/src/module/integration/service/calendar-event.service.ts +118 -118
  130. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  131. package/src/module/integration/service/integration-queue.service.ts +229 -229
  132. package/src/module/integration/service/integration.service.ts +2572 -2572
  133. package/src/module/integration/service/oauth.service.ts +224 -224
  134. package/src/module/integration/service/wrapper.service.ts +439 -439
  135. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  136. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  137. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  138. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  139. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  140. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  141. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  142. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  143. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  144. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  145. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  146. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  147. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  148. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  149. package/src/module/layout/controller/layout.controller.ts +47 -47
  150. package/src/module/layout/entity/header-items.entity.ts +28 -28
  151. package/src/module/layout/entity/header-section.entity.ts +19 -19
  152. package/src/module/layout/layout.module.ts +21 -21
  153. package/src/module/layout/repository/header-items.repository.ts +18 -18
  154. package/src/module/layout/repository/header-section.repository.ts +22 -22
  155. package/src/module/layout/service/header-section.service.ts +25 -25
  156. package/src/module/layout_preference/controller/layout_preference.controller.ts +47 -47
  157. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  158. package/src/module/layout_preference/layout_preference.module.ts +18 -18
  159. package/src/module/layout_preference/repository/layout_preference.repository.ts +30 -30
  160. package/src/module/layout_preference/service/layout_preference.service.ts +172 -172
  161. package/src/module/lead/controller/lead.controller.ts +30 -30
  162. package/src/module/lead/lead.module.ts +14 -14
  163. package/src/module/lead/repository/lead.repository.ts +41 -41
  164. package/src/module/lead/service/lead.service.ts +54 -54
  165. package/src/module/listmaster/controller/list-master.controller.ts +143 -143
  166. package/src/module/listmaster/entity/list-master-items.entity.ts +41 -41
  167. package/src/module/listmaster/entity/list-master.entity.ts +32 -32
  168. package/src/module/listmaster/listmaster.module.ts +44 -44
  169. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  170. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  171. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  172. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  173. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  174. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  175. package/src/module/listmaster/service/list-master.service.ts +388 -375
  176. package/src/module/mapper/controller/field-mapper.controller.ts +69 -69
  177. package/src/module/mapper/controller/mapper.controller.ts +14 -14
  178. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  179. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  180. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  181. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  182. package/src/module/mapper/mapper.module.ts +34 -34
  183. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  184. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  185. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  186. package/src/module/mapper/service/field-mapper.service.ts +223 -223
  187. package/src/module/mapper/service/mapper.service.ts +72 -72
  188. package/src/module/master/controller/master.controller.ts +74 -74
  189. package/src/module/master/service/master.service.ts +483 -483
  190. package/src/module/meta/controller/app-master.controller.ts +38 -38
  191. package/src/module/meta/controller/attribute-master.controller.ts +66 -66
  192. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  193. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  194. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  195. package/src/module/meta/controller/entity.controller.ts +385 -385
  196. package/src/module/meta/controller/media.controller.ts +82 -82
  197. package/src/module/meta/controller/meta.controller.ts +96 -96
  198. package/src/module/meta/controller/view-master.controller.ts +86 -86
  199. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  200. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  201. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  202. package/src/module/meta/entity/app-master.entity.ts +34 -34
  203. package/src/module/meta/entity/attribute-master.entity.ts +87 -87
  204. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  205. package/src/module/meta/entity/entity-master.entity.ts +78 -78
  206. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  207. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  208. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  209. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  210. package/src/module/meta/entity/media-data.entity.ts +32 -32
  211. package/src/module/meta/entity/preference.entity.ts +62 -62
  212. package/src/module/meta/entity/view-master.entity.ts +41 -41
  213. package/src/module/meta/entity.module.ts +156 -156
  214. package/src/module/meta/repository/app-master.repository.ts +20 -20
  215. package/src/module/meta/repository/attribute-master.repository.ts +110 -110
  216. package/src/module/meta/repository/entity-master.repository.ts +69 -69
  217. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  218. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  219. package/src/module/meta/repository/media-data.repository.ts +50 -50
  220. package/src/module/meta/repository/preference.repository.ts +20 -20
  221. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  222. package/src/module/meta/repository/view-master.repository.ts +42 -42
  223. package/src/module/meta/service/app-master.service.ts +37 -37
  224. package/src/module/meta/service/attribute-master.service.ts +117 -117
  225. package/src/module/meta/service/common.service.ts +9 -9
  226. package/src/module/meta/service/entity-dynamic.service.ts +762 -762
  227. package/src/module/meta/service/entity-list.service.ts +205 -205
  228. package/src/module/meta/service/entity-master.service.ts +164 -164
  229. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  230. package/src/module/meta/service/entity-relation.service.ts +69 -69
  231. package/src/module/meta/service/entity-service-impl.service.ts +524 -524
  232. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  233. package/src/module/meta/service/entity-table.service.ts +150 -150
  234. package/src/module/meta/service/entity-validation.service.ts +185 -185
  235. package/src/module/meta/service/entity.service.ts +67 -67
  236. package/src/module/meta/service/field-group.service.ts +103 -103
  237. package/src/module/meta/service/media-data.service.ts +140 -140
  238. package/src/module/meta/service/populate-meta.service.ts +173 -173
  239. package/src/module/meta/service/preference.service.ts +16 -16
  240. package/src/module/meta/service/resolver.service.ts +274 -274
  241. package/src/module/meta/service/section-master.service.ts +104 -104
  242. package/src/module/meta/service/update-form-json.service.ts +22 -22
  243. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  244. package/src/module/meta/service/view-master.service.ts +111 -111
  245. package/src/module/module/controller/menu.controller.ts +15 -15
  246. package/src/module/module/controller/module-access.controller.ts +132 -132
  247. package/src/module/module/entity/menu.entity.ts +43 -43
  248. package/src/module/module/entity/module-access.entity.ts +25 -25
  249. package/src/module/module/entity/module-action.entity.ts +17 -17
  250. package/src/module/module/entity/module.entity.ts +52 -52
  251. package/src/module/module/module.module.ts +42 -42
  252. package/src/module/module/repository/menu.repository.ts +184 -184
  253. package/src/module/module/repository/module-access.repository.ts +331 -331
  254. package/src/module/module/service/menu.service.ts +82 -82
  255. package/src/module/module/service/module-access.service.ts +209 -209
  256. package/src/module/notification/controller/notification.controller.ts +58 -58
  257. package/src/module/notification/controller/otp.controller.ts +117 -117
  258. package/src/module/notification/entity/notification.entity.ts +23 -23
  259. package/src/module/notification/entity/otp.entity.ts +28 -28
  260. package/src/module/notification/firebase-admin.config.ts +22 -22
  261. package/src/module/notification/notification.module.ts +69 -69
  262. package/src/module/notification/repository/otp.repository.ts +27 -27
  263. package/src/module/notification/service/email.service.ts +127 -127
  264. package/src/module/notification/service/notification.service.ts +138 -138
  265. package/src/module/notification/service/otp.service.ts +125 -121
  266. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  267. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  268. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  269. package/src/module/third-party-module/third-party.module.ts +12 -12
  270. package/src/module/user/controller/login.controller.ts +197 -197
  271. package/src/module/user/controller/user.controller.ts +40 -40
  272. package/src/module/user/dto/create-user.dto.ts +62 -62
  273. package/src/module/user/dto/update-user.dto.ts +4 -4
  274. package/src/module/user/entity/role.entity.ts +33 -33
  275. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  276. package/src/module/user/entity/user-session.entity.ts +61 -61
  277. package/src/module/user/entity/user.entity.ts +68 -68
  278. package/src/module/user/repository/role.repository.ts +96 -96
  279. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  280. package/src/module/user/repository/user.repository.ts +50 -50
  281. package/src/module/user/repository/userSession.repository.ts +33 -33
  282. package/src/module/user/service/login.service.ts +280 -280
  283. package/src/module/user/service/role.service.ts +189 -189
  284. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  285. package/src/module/user/service/user-session.service.ts +168 -168
  286. package/src/module/user/service/user.service.ts +353 -353
  287. package/src/module/user/user.module.ts +65 -65
  288. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  289. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  290. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  291. package/src/module/workflow/controller/action.controller.ts +95 -95
  292. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  293. package/src/module/workflow/controller/comm-template.controller.ts +34 -34
  294. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  295. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  296. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  297. package/src/module/workflow/controller/stage.controller.ts +50 -50
  298. package/src/module/workflow/controller/task.controller.ts +77 -77
  299. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  300. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  301. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  302. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  303. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  304. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  305. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  306. package/src/module/workflow/entity/action.entity.ts +50 -50
  307. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  308. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  309. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  310. package/src/module/workflow/entity/form.entity.ts +25 -25
  311. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  312. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  313. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  314. package/src/module/workflow/entity/stage.entity.ts +20 -20
  315. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  316. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  317. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  318. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  319. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  320. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  321. package/src/module/workflow/repository/action-data.repository.ts +219 -219
  322. package/src/module/workflow/repository/action.repository.ts +277 -277
  323. package/src/module/workflow/repository/activity-log.repository.ts +121 -121
  324. package/src/module/workflow/repository/comm-template.repository.ts +142 -142
  325. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  326. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  327. package/src/module/workflow/repository/stage-movement.repository.ts +227 -227
  328. package/src/module/workflow/repository/stage.repository.ts +172 -172
  329. package/src/module/workflow/repository/task.repository.ts +113 -113
  330. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  331. package/src/module/workflow/service/action-category.service.ts +33 -33
  332. package/src/module/workflow/service/action-data.service.ts +62 -62
  333. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  334. package/src/module/workflow/service/action-template-mapping.service.ts +55 -55
  335. package/src/module/workflow/service/action.service.ts +263 -263
  336. package/src/module/workflow/service/activity-log.service.ts +107 -107
  337. package/src/module/workflow/service/comm-template.service.ts +121 -121
  338. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  339. package/src/module/workflow/service/form-master.service.ts +35 -35
  340. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  341. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  342. package/src/module/workflow/service/stage-group.service.ts +300 -300
  343. package/src/module/workflow/service/stage.service.ts +199 -199
  344. package/src/module/workflow/service/task.service.ts +504 -504
  345. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  346. package/src/module/workflow/service/workflow-meta.service.ts +581 -581
  347. package/src/module/workflow/service/workflow.service.ts +205 -205
  348. package/src/module/workflow/workflow.module.ts +172 -172
  349. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +21 -21
  350. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  351. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +35 -35
  352. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  353. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  354. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  355. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  356. package/src/module/workflow-automation/service/workflow-automation.service.ts +345 -345
  357. package/src/module/workflow-automation/workflow-automation.module.ts +34 -34
  358. package/src/resources/dev.properties.yaml +30 -30
  359. package/src/resources/local.properties.yaml +27 -27
  360. package/src/resources/properties.module.ts +12 -12
  361. package/src/resources/properties.yaml.ts +11 -11
  362. package/src/resources/uat.properties.yaml +15 -15
  363. package/src/utils/dto/excel-data.dto.ts +14 -14
  364. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  365. package/src/utils/service/base64util.service.ts +18 -18
  366. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  367. package/src/utils/service/codeGenerator.service.ts +22 -22
  368. package/src/utils/service/dateUtil.service.ts +17 -17
  369. package/src/utils/service/encryptUtil.service.ts +97 -97
  370. package/src/utils/service/excel-helper.service.ts +72 -72
  371. package/src/utils/service/excelUtil.service.ts +15 -15
  372. package/src/utils/service/file-util.service.ts +11 -11
  373. package/src/utils/service/json-util.service.ts +23 -23
  374. package/src/utils/service/loggingUtil.service.ts +34 -34
  375. package/src/utils/service/reflection-helper.service.ts +62 -62
  376. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  377. package/src/utils/utils.module.ts +25 -25
  378. package/tsconfig.build.json +4 -4
  379. package/tsconfig.json +24 -24
  380. package/.claude/settings.local.json +0 -26
  381. package/.idea/250218_nodejs_core.iml +0 -9
  382. package/.idea/codeStyles/Project.xml +0 -59
  383. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  384. package/.idea/copilot.data.migration.agent.xml +0 -6
  385. package/.idea/copilot.data.migration.ask.xml +0 -6
  386. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  387. package/.idea/copilot.data.migration.edit.xml +0 -6
  388. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  389. package/.idea/misc.xml +0 -6
  390. package/.idea/modules.xml +0 -8
  391. package/.idea/prettier.xml +0 -6
  392. package/.idea/vcs.xml +0 -6
  393. package/server.log +0 -850
@@ -9,12 +9,30 @@ export declare class EntityMasterRepository {
9
9
  getEntityById(id: number): Promise<EntityMaster | null>;
10
10
  getEntityByMappedEntityType(mappedEntityType: string, organizationId: number): Promise<EntityMaster | null>;
11
11
  getOperationList(loggedInUser: any): Promise<{
12
- text: any;
13
- number: any;
14
- date: any;
15
- select: any;
16
- multiselect: any;
17
- year: any;
12
+ text: {
13
+ label: any;
14
+ value: any;
15
+ }[];
16
+ number: {
17
+ label: any;
18
+ value: any;
19
+ }[];
20
+ date: {
21
+ label: any;
22
+ value: any;
23
+ }[];
24
+ select: {
25
+ label: any;
26
+ value: any;
27
+ }[];
28
+ multiselect: {
29
+ label: any;
30
+ value: any;
31
+ }[];
32
+ year: {
33
+ label: any;
34
+ value: any;
35
+ }[];
18
36
  }>;
19
37
  getAttributesOfTypeDate(entity_type: any, loggedInUser: any): Promise<any>;
20
38
  }
@@ -43,8 +43,8 @@ let EntityDynamicService = class EntityDynamicService {
43
43
  entityData.entity_type = entityType;
44
44
  }
45
45
  if (!entityData.code && loggedInUser) {
46
- const result = await this.dataSource.query(`SELECT MAX(CAST(SUBSTRING(code, LENGTH(entity_type) + 1) AS UNSIGNED)) AS max_seq_no
47
- FROM ${tableName}
46
+ const result = await this.dataSource.query(`SELECT MAX(CAST(SUBSTRING(code, LENGTH(entity_type) + 1) AS UNSIGNED)) AS max_seq_no
47
+ FROM ${tableName}
48
48
  WHERE entity_type = ?`, [entityData.entity_type]);
49
49
  let maxSeqNo = result?.[0]?.max_seq_no ? Number(result[0].max_seq_no) : 0;
50
50
  maxSeqNo += 1;
@@ -149,7 +149,7 @@ let EntityDynamicService = class EntityDynamicService {
149
149
  }
150
150
  async getEntityWithRelation(entityType, id, loggedInUser) {
151
151
  const mainEntity = await this.getEntity(entityType, id, loggedInUser);
152
- const relatedEntities = await this.dataSource.query(`SELECT * FROM cr_entity_relation_data WHERE source_entity_id = ? AND target_entity_type IN (
152
+ const relatedEntities = await this.dataSource.query(`SELECT * FROM cr_entity_relation_data WHERE source_entity_id = ? AND target_entity_type IN (
153
153
  SELECT target_entity_type FROM cr_entity_relation WHERE source_entity_type = ?)`, [id, entityType]);
154
154
  const response = {
155
155
  entity_type: entityType,
@@ -207,8 +207,8 @@ let EntityDynamicService = class EntityDynamicService {
207
207
  targetEntityId = createdEntity.insertId || createdEntity.id;
208
208
  entityData = await this.getEntity(targetEntityType, targetEntityId, loggedInUser);
209
209
  }
210
- await this.dataSource.query(`INSERT INTO cr_entity_relation_data
211
- (organization_id, source_entity_id, source_entity_type, target_entity_id, target_entity_type, relation_type)
210
+ await this.dataSource.query(`INSERT INTO cr_entity_relation_data
211
+ (organization_id, source_entity_id, source_entity_type, target_entity_id, target_entity_type, relation_type)
212
212
  VALUES (?, ?, ?, ?, ?,?)`, [
213
213
  organizationId,
214
214
  id,
@@ -253,8 +253,8 @@ let EntityDynamicService = class EntityDynamicService {
253
253
  entityData.enterprise_id = loggedInUser.enterprise_id;
254
254
  }
255
255
  if (!entityData.code && loggedInUser) {
256
- const result = await this.dataSource.query(`SELECT MAX(CAST(SUBSTRING(code, LENGTH(entity_type) + 1) AS UNSIGNED)) AS max_seq_no
257
- FROM ${tableName}
256
+ const result = await this.dataSource.query(`SELECT MAX(CAST(SUBSTRING(code, LENGTH(entity_type) + 1) AS UNSIGNED)) AS max_seq_no
257
+ FROM ${tableName}
258
258
  WHERE entity_type = ?`, [entityData.entity_type]);
259
259
  let maxSeqNo = result?.[0]?.max_seq_no ? Number(result[0].max_seq_no) : 0;
260
260
  maxSeqNo += 1;
@@ -365,13 +365,13 @@ let EntityDynamicService = class EntityDynamicService {
365
365
  return result[0].db_table_name;
366
366
  }
367
367
  async getAttributeCodes(entityType, organizationId) {
368
- const result = await this.dataSource.query(`SELECT attribute_key,
369
- MAX(db_datatype) AS db_datatype,
370
- MAX(element_type) AS element_type,
371
- MAX(is_hidden) AS is_hidden
372
- FROM cr_entity_attribute
373
- WHERE mapped_entity_type = ? AND organization_id = ?
374
- and (is_hidden IS NULL OR is_hidden = 0) -- Exclude hidden attributes
368
+ const result = await this.dataSource.query(`SELECT attribute_key,
369
+ MAX(db_datatype) AS db_datatype,
370
+ MAX(element_type) AS element_type,
371
+ MAX(is_hidden) AS is_hidden
372
+ FROM cr_entity_attribute
373
+ WHERE mapped_entity_type = ? AND organization_id = ?
374
+ and (is_hidden IS NULL OR is_hidden = 0) -- Exclude hidden attributes
375
375
  GROUP BY attribute_key`, [entityType, organizationId]);
376
376
  if (!result.length) {
377
377
  console.log(`No attributes found for entity '${entityType}' and org '${organizationId}'`);
@@ -403,15 +403,15 @@ let EntityDynamicService = class EntityDynamicService {
403
403
  }
404
404
  async getCode(entityType, loggedInUser) {
405
405
  const organizationId = loggedInUser.organization_id;
406
- const result = await this.dataSource.query(`SELECT db_table_name
407
- FROM cr_entity_master
406
+ const result = await this.dataSource.query(`SELECT db_table_name
407
+ FROM cr_entity_master
408
408
  WHERE mapped_entity_type = ? AND organization_id = ?`, [entityType, organizationId]);
409
409
  if (!result.length) {
410
410
  throw new Error(`Entity type '${entityType}' not found in cr_entity_master for org '${organizationId}'`);
411
411
  }
412
412
  const tableName = result[0].db_table_name;
413
- const seqResult = await this.dataSource.query(`SELECT MAX(CAST(SUBSTRING(code, LENGTH(entity_type) + 1) AS UNSIGNED)) AS max_seq_no
414
- FROM \`${tableName}\`
413
+ const seqResult = await this.dataSource.query(`SELECT MAX(CAST(SUBSTRING(code, LENGTH(entity_type) + 1) AS UNSIGNED)) AS max_seq_no
414
+ FROM \`${tableName}\`
415
415
  WHERE entity_type = ?`, [entityType]);
416
416
  let maxSeqNo = seqResult?.[0]?.max_seq_no
417
417
  ? Number(seqResult[0].max_seq_no)
@@ -75,11 +75,11 @@ let EntityListService = class EntityListService {
75
75
  }
76
76
  getQuery(source, groupByColumn) {
77
77
  if (groupByColumn) {
78
- return `SELECT ${groupByColumn} as tab_value, COUNT(1) AS tab_value_count
78
+ return `SELECT ${groupByColumn} as tab_value, COUNT(1) AS tab_value_count
79
79
  FROM ${source}`;
80
80
  }
81
81
  else {
82
- return `SELECT *
82
+ return `SELECT *
83
83
  FROM ${source}`;
84
84
  }
85
85
  }
@@ -123,7 +123,7 @@ let EntityListService = class EntityListService {
123
123
  return { query, argumentList: argsObjectList };
124
124
  }
125
125
  async getMaxSequenceNumber(tableName, parentType, parentId) {
126
- const query = `SELECT COUNT(1) seq_no
126
+ const query = `SELECT COUNT(1) seq_no
127
127
  FROM ${tableName} WHERE 1=1 `;
128
128
  const argsObjectList = [];
129
129
  const result = await this.entityManager.query(query, argsObjectList);
@@ -18,12 +18,30 @@ export declare class EntityMasterService {
18
18
  findByMappedEntityType(mappedEntityType: string): Promise<EntityMaster | null>;
19
19
  getFilterMetaData(entityType: string, loggedInUser: any): Promise<EntityMaster>;
20
20
  getOperationList(loggedInUser: any): Promise<{
21
- text: any;
22
- number: any;
23
- date: any;
24
- select: any;
25
- multiselect: any;
26
- year: any;
21
+ text: {
22
+ label: any;
23
+ value: any;
24
+ }[];
25
+ number: {
26
+ label: any;
27
+ value: any;
28
+ }[];
29
+ date: {
30
+ label: any;
31
+ value: any;
32
+ }[];
33
+ select: {
34
+ label: any;
35
+ value: any;
36
+ }[];
37
+ multiselect: {
38
+ label: any;
39
+ value: any;
40
+ }[];
41
+ year: {
42
+ label: any;
43
+ value: any;
44
+ }[];
27
45
  }>;
28
46
  getAttributesOfTypeDate(entityType: string, loggedInUser: any): Promise<any>;
29
47
  }
@@ -70,9 +70,9 @@ let EntityMasterService = class EntityMasterService {
70
70
  if (!entityMasterData) {
71
71
  throw new Error(`Entity master with mapped_entity_type "${entityType}" not found.`);
72
72
  }
73
- const attributes = await this.dataSource.query(`SELECT *
74
- FROM cr_entity_attribute
75
- WHERE mapped_entity_type = ?
73
+ const attributes = await this.dataSource.query(`SELECT *
74
+ FROM cr_entity_attribute
75
+ WHERE mapped_entity_type = ?
76
76
  AND organization_id = ? `, [entityMasterData.mapped_entity_type, loggedInUser.organization_id]);
77
77
  entityMasterData['attribute_list'] = attributes;
78
78
  entityMasterData['operation_list'] = {
@@ -19,12 +19,12 @@ let EntityRelationService = class EntityRelationService extends entity_service_i
19
19
  this.dataSource = dataSource;
20
20
  }
21
21
  async getEntityRelations(entityType, loggedInUser, includeSelf = false) {
22
- const relations = await this.dataSource.query(`SELECT name as label, target_entity_type as value, id
23
- FROM cr_entity_relation
22
+ const relations = await this.dataSource.query(`SELECT name as label, target_entity_type as value, id
23
+ FROM cr_entity_relation
24
24
  WHERE source_entity_type = ? AND organization_id = ?`, [entityType, loggedInUser.organization_id]);
25
25
  if (includeSelf) {
26
- const [entity] = await this.dataSource.query(`SELECT name as label
27
- FROM cr_entity_master
26
+ const [entity] = await this.dataSource.query(`SELECT name as label
27
+ FROM cr_entity_master
28
28
  WHERE mapped_entity_type = ? AND organization_id = ?`, [entityType, loggedInUser.organization_id]);
29
29
  if (entity) {
30
30
  relations.unshift({
@@ -39,13 +39,13 @@ let EntityRelationService = class EntityRelationService extends entity_service_i
39
39
  async getRelatedEntityIds(sourceEntity, targetEntity, targetIds, orgId) {
40
40
  if (!targetIds.length)
41
41
  return [];
42
- const result = await this.dataSource.query(`
43
- SELECT DISTINCT source_entity_id
44
- FROM cr_entity_relation_data
45
- WHERE source_entity_type = ?
46
- AND target_entity_type = ?
47
- AND target_entity_id IN (?)
48
- AND organization_id = ?
42
+ const result = await this.dataSource.query(`
43
+ SELECT DISTINCT source_entity_id
44
+ FROM cr_entity_relation_data
45
+ WHERE source_entity_type = ?
46
+ AND target_entity_type = ?
47
+ AND target_entity_id IN (?)
48
+ AND organization_id = ?
49
49
  `, [sourceEntity, targetEntity, targetIds, orgId]);
50
50
  return result.map((r) => r.source_entity_id);
51
51
  }
@@ -50,9 +50,9 @@ let EntityServiceImpl = class EntityServiceImpl {
50
50
  maxSeqNo = Number(maxSeqNo) + 1;
51
51
  entityData.code = entityData.entity_type + maxSeqNo;
52
52
  }
53
- const statusList = await repo.query(`SELECT id
54
- FROM cr_list_master_items
55
- WHERE code = ?
53
+ const statusList = await repo.query(`SELECT id
54
+ FROM cr_list_master_items
55
+ WHERE code = ?
56
56
  AND organization_id = ?`, [global_constant_1.STATUS_ACTIVE, loggedInUser?.organization_id || -1]);
57
57
  console.log('Status List:', statusList);
58
58
  console.log(`status_code,${global_constant_1.STATUS_ACTIVE},statusList, ${loggedInUser?.organization_id}`);
@@ -149,12 +149,12 @@ let ResolverService = class ResolverService {
149
149
  displayValue === '') {
150
150
  return displayValue;
151
151
  }
152
- const [attr] = await this.dataSource.query(`SELECT * FROM cr_entity_attribute
152
+ const [attr] = await this.dataSource.query(`SELECT * FROM cr_entity_attribute
153
153
  WHERE mapped_entity_type = ? AND organization_id = ? AND attribute_key = ?`, [entityType, loggedInUser.organization_id, attrKey]);
154
154
  if (!attr)
155
155
  return displayValue;
156
156
  if (attr.data_source_type === 'entity') {
157
- const [entityDef] = await this.dataSource.query(`SELECT * FROM cr_entity_master
157
+ const [entityDef] = await this.dataSource.query(`SELECT * FROM cr_entity_master
158
158
  WHERE mapped_entity_type = ? AND organization_id = ?`, [attr.datasource_list, loggedInUser.organization_id]);
159
159
  if (!entityDef)
160
160
  return displayValue;
@@ -169,7 +169,7 @@ let ResolverService = class ResolverService {
169
169
  return item?.id ?? displayValue;
170
170
  }
171
171
  else if (attr.data_source_type === 'master') {
172
- const [item] = await this.dataSource.query(`SELECT id FROM cr_list_master_items
172
+ const [item] = await this.dataSource.query(`SELECT id FROM cr_list_master_items
173
173
  WHERE ${attr.data_source_attribute} = ? AND organization_id = ?`, [displayValue, loggedInUser.organization_id]);
174
174
  return item?.id ?? displayValue;
175
175
  }
@@ -60,10 +60,10 @@ let MenuRepository = class MenuRepository extends typeorm_1.Repository {
60
60
  async getMenuItems(moduleCodes, appcode, levelType) {
61
61
  return await this.menuData
62
62
  .createQueryBuilder('menu')
63
- .leftJoin('sso_module', 'module', `
64
- menu.module_code = module.module_code
65
- AND LOWER(menu.appcode) = LOWER(module.appcode)
66
- AND menu.level_type = module.level_type
63
+ .leftJoin('sso_module', 'module', `
64
+ menu.module_code = module.module_code
65
+ AND LOWER(menu.appcode) = LOWER(module.appcode)
66
+ AND menu.level_type = module.level_type
67
67
  `)
68
68
  .where('menu.module_code IN (:...moduleCodes)', { moduleCodes })
69
69
  .andWhere('LOWER(menu.appcode) = LOWER(:appcode)', { appcode })
@@ -82,11 +82,11 @@ let MenuRepository = class MenuRepository extends typeorm_1.Repository {
82
82
  async resolveUserRoles(userId, appcode, levelType, levelId) {
83
83
  const repo = this.dataSource.getRepository(user_role_mapping_entity_1.UserRoleMapping);
84
84
  if (userId) {
85
- const getUserDetails = await this.dataSource.query(`
86
- SELECT * from sso_user where id = ?
85
+ const getUserDetails = await this.dataSource.query(`
86
+ SELECT * from sso_user where id = ?
87
87
  `, [userId]);
88
- const getUserUrm = await this.dataSource.query(`
89
- SELECT * from sso_user_role_mapping where user_id = ? and appcode = ?
88
+ const getUserUrm = await this.dataSource.query(`
89
+ SELECT * from sso_user_role_mapping where user_id = ? and appcode = ?
90
90
  `, [userId, appcode]);
91
91
  if (getUserDetails.length > 0 &&
92
92
  getUserDetails[0].organization_id === 1) {
@@ -105,10 +105,10 @@ let MenuRepository = class MenuRepository extends typeorm_1.Repository {
105
105
  if (roles.length)
106
106
  return roles.map((r) => r.urm_role_id);
107
107
  if (levelType === 'SCH') {
108
- const [sch] = await this.dataSource.query(`
109
- SELECT s.brand_id, s.organization_id
110
- FROM eth_school_profile s
111
- WHERE s.id = ?
108
+ const [sch] = await this.dataSource.query(`
109
+ SELECT s.brand_id, s.organization_id
110
+ FROM eth_school_profile s
111
+ WHERE s.id = ?
112
112
  `, [levelId]);
113
113
  const brandId = sch?.brand_id;
114
114
  const orgId = sch?.organization_id;
@@ -37,6 +37,9 @@ export declare class OtpController {
37
37
  slug: string;
38
38
  message?: undefined;
39
39
  type?: undefined;
40
+ } | {
41
+ sucess: boolean;
42
+ message: string;
40
43
  }>;
41
44
  sendMail(body: {
42
45
  to: string;
@@ -63,14 +63,14 @@ let NotificationsService = class NotificationsService {
63
63
  const isReadBool = String(filterQuery.is_read).toLowerCase() === 'true';
64
64
  isReadFilter = isReadBool ? 1 : 0;
65
65
  }
66
- let query = `
67
- SELECT
68
- n.*,
69
- u.name AS user_name,
70
- u.profile_image AS user_profile
71
- FROM cr_notification n
72
- LEFT JOIN eth_user_profile u ON n.user_id = u.parent_id
73
- WHERE n.user_id = ? AND n.level_id = ? AND n.level_type = ?
66
+ let query = `
67
+ SELECT
68
+ n.*,
69
+ u.name AS user_name,
70
+ u.profile_image AS user_profile
71
+ FROM cr_notification n
72
+ LEFT JOIN eth_user_profile u ON n.user_id = u.parent_id
73
+ WHERE n.user_id = ? AND n.level_id = ? AND n.level_type = ?
74
74
  `;
75
75
  const params = [id, level_id, level_type];
76
76
  if (isReadFilter !== undefined) {
@@ -97,10 +97,10 @@ let NotificationsService = class NotificationsService {
97
97
  }
98
98
  async markAllAsRead(loggedInUser) {
99
99
  const { id, level_id, level_type } = loggedInUser;
100
- const query = `
101
- UPDATE cr_notification
102
- SET is_read = 1
103
- WHERE user_id = ? AND level_id = ? AND level_type = ? AND is_read = 0
100
+ const query = `
101
+ UPDATE cr_notification
102
+ SET is_read = 1
103
+ WHERE user_id = ? AND level_id = ? AND level_type = ? AND is_read = 0
104
104
  `;
105
105
  const params = [id, level_id, level_type];
106
106
  const result = await this.dataSource.query(query, params);
@@ -43,6 +43,9 @@ export declare class OtpService {
43
43
  slug: string;
44
44
  message?: undefined;
45
45
  type?: undefined;
46
+ } | {
47
+ sucess: boolean;
48
+ message: string;
46
49
  }>;
47
50
  findByOtpId(otpId: string): Promise<Otp | null>;
48
51
  private generateOtp;
@@ -73,7 +73,10 @@ let OtpService = class OtpService {
73
73
  }
74
74
  }
75
75
  if (!verifyOTPResponse.isValid) {
76
- throw new common_1.BadRequestException('Invalid OTP!');
76
+ return {
77
+ sucess: false,
78
+ message: 'Invalid OTP!',
79
+ };
77
80
  }
78
81
  return this.loginService.login({
79
82
  email: identifier,
@@ -1 +1 @@
1
- {"version":3,"file":"otp.service.js","sourceRoot":"","sources":["../../../../src/module/notification/service/otp.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"otp.service.js","sourceRoot":"","sources":["../../../../src/module/notification/service/otp.service.ts"],"names":[],"mappings":"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"}
@@ -57,27 +57,27 @@ let LoginController = class LoginController {
57
57
  try {
58
58
  const actualState = state.replace('gmail_config:', '');
59
59
  const result = await this.integrationService.handleGmailTokensCallback(email, googleAccessToken, googleRefreshToken, actualState);
60
- return res.send(`<html><body><script>
61
- window.opener.postMessage({ type: 'CONFIG_SUCCESS' }, '*');
62
- window.close();
60
+ return res.send(`<html><body><script>
61
+ window.opener.postMessage({ type: 'CONFIG_SUCCESS' }, '*');
62
+ window.close();
63
63
  </script> <p>Configuration successful. You can close this window.</p> </body></html>`);
64
64
  }
65
65
  catch (error) {
66
- return res.send(`
67
- <html>
68
- <body>
69
- <script>
70
- if (window.opener) {
71
- window.opener.postMessage({
72
- type: "CONFIG_FAILED",
73
- error: "${error.message || 'Something went wrong'}"
74
- }, "*");
75
- }
76
- window.close();
77
- </script>
78
- <p>Configuration failed. Please close this window.</p>
79
- </body>
80
- </html>
66
+ return res.send(`
67
+ <html>
68
+ <body>
69
+ <script>
70
+ if (window.opener) {
71
+ window.opener.postMessage({
72
+ type: "CONFIG_FAILED",
73
+ error: "${error.message || 'Something went wrong'}"
74
+ }, "*");
75
+ }
76
+ window.close();
77
+ </script>
78
+ <p>Configuration failed. Please close this window.</p>
79
+ </body>
80
+ </html>
81
81
  `);
82
82
  }
83
83
  }
@@ -76,10 +76,10 @@ let RoleService = class RoleService extends entity_service_impl_service_1.Entity
76
76
  if (!existingRole) {
77
77
  return { success: false, error: 'Role not found' };
78
78
  }
79
- const associatedUsers = await this.entityManager.query(`SELECT map.*
80
- FROM sso_user_role_mapping map
81
- JOIN sso_user usr ON map.user_id = usr.id
82
- WHERE usr.status = ${resolveStatus.id}
79
+ const associatedUsers = await this.entityManager.query(`SELECT map.*
80
+ FROM sso_user_role_mapping map
81
+ JOIN sso_user usr ON map.user_id = usr.id
82
+ WHERE usr.status = ${resolveStatus.id}
83
83
  and map.role_id = ${existingRole?.id}`);
84
84
  if (associatedUsers.length > 0) {
85
85
  return {
@@ -71,8 +71,8 @@ let UserSessionService = class UserSessionService {
71
71
  };
72
72
  let getUserDetails;
73
73
  if (currentUser) {
74
- getUserDetails = await this.dataSource.query(`
75
- SELECT * from sso_user where id = ?
74
+ getUserDetails = await this.dataSource.query(`
75
+ SELECT * from sso_user where id = ?
76
76
  `, [currentUser.id]);
77
77
  }
78
78
  if (getUserDetails[0].organization_id == 1 && payload.level_type == 'ORG') {
@@ -24,10 +24,10 @@ let ActionRepository = class ActionRepository {
24
24
  }
25
25
  async getReasonCode(loggedInUser) {
26
26
  const { organization_id } = loggedInUser;
27
- const result = await this.dataSource.query(`
28
- SELECT name, type
29
- FROM cr_list_master
30
- WHERE organization_id = ? AND source = 'master'
27
+ const result = await this.dataSource.query(`
28
+ SELECT name, type
29
+ FROM cr_list_master
30
+ WHERE organization_id = ? AND source = 'master'
31
31
  `, [organization_id]);
32
32
  const formatted = result.map((item) => ({
33
33
  label: item.name,
@@ -40,10 +40,10 @@ let ActionRepository = class ActionRepository {
40
40
  if (!list_type) {
41
41
  throw new common_1.BadRequestException('list_type is required');
42
42
  }
43
- const result = await this.dataSource.query(`
44
- SELECT name, id
45
- FROM cr_list_master_items
46
- WHERE listtype = ? AND organization_id = ?
43
+ const result = await this.dataSource.query(`
44
+ SELECT name, id
45
+ FROM cr_list_master_items
46
+ WHERE listtype = ? AND organization_id = ?
47
47
  `, [list_type, organization_id]);
48
48
  return result.map((row) => ({
49
49
  label: row.name,
@@ -52,19 +52,19 @@ let ActionRepository = class ActionRepository {
52
52
  }
53
53
  async getActions(loggedInUser, stage_id) {
54
54
  const { organization_id } = loggedInUser;
55
- const stageActions = await this.dataSource.query(`
56
- SELECT id, action_id
57
- FROM cr_wf_stage_action_mapping
58
- WHERE stage_id = ?
55
+ const stageActions = await this.dataSource.query(`
56
+ SELECT id, action_id
57
+ FROM cr_wf_stage_action_mapping
58
+ WHERE stage_id = ?
59
59
  `, [stage_id]);
60
60
  if (!stageActions?.length)
61
61
  return [];
62
62
  const actionIds = stageActions.map((sa) => sa.action_id);
63
63
  const mappingIds = stageActions.map((sa) => sa.id);
64
- const templateMappings = await this.dataSource.query(`
65
- SELECT stg_act_mapping_id, template_code
66
- FROM cr_wf_action_template_mapping
67
- WHERE stg_act_mapping_id IN (${mappingIds.map(() => '?').join(',')})
64
+ const templateMappings = await this.dataSource.query(`
65
+ SELECT stg_act_mapping_id, template_code
66
+ FROM cr_wf_action_template_mapping
67
+ WHERE stg_act_mapping_id IN (${mappingIds.map(() => '?').join(',')})
68
68
  `, mappingIds);
69
69
  const templateCodes = templateMappings.map((tm) => tm.template_code);
70
70
  const templateCodeToName = {};
@@ -30,17 +30,17 @@ let CommTemplateRepository = class CommTemplateRepository {
30
30
  const { organization_id, level_id, level_type } = loggedInUser;
31
31
  let is_template;
32
32
  if (action_id) {
33
- const [actionResult] = await this.dataSource.query(`SELECT is_template
34
- FROM cr_wf_action
35
- WHERE id = ? AND organization_id = ?
33
+ const [actionResult] = await this.dataSource.query(`SELECT is_template
34
+ FROM cr_wf_action
35
+ WHERE id = ? AND organization_id = ?
36
36
  LIMIT 1`, [action_id, organization_id]);
37
37
  if (!actionResult) {
38
38
  throw new Error('Invalid action_id');
39
39
  }
40
40
  is_template = actionResult.is_template;
41
- await this.dataSource.query(`UPDATE cr_wf_comm_template
42
- SET is_template = ?
43
- WHERE mapped_entity_type = ?
41
+ await this.dataSource.query(`UPDATE cr_wf_comm_template
42
+ SET is_template = ?
43
+ WHERE mapped_entity_type = ?
44
44
  AND organization_id = ? AND level_id = ? AND level_type=?`, [is_template, entity_type, organization_id, level_id, level_type]);
45
45
  }
46
46
  const whereCondition = {
@@ -17,8 +17,8 @@ let FormMasterRepository = class FormMasterRepository {
17
17
  this.dataSource = dataSource;
18
18
  }
19
19
  async getForms(organization_id, source_entity_type) {
20
- const forms = await this.dataSource.query(`SELECT fm.id as fm_id, fm.name as fm_form_name
21
- FROM cr_entity_view fm
20
+ const forms = await this.dataSource.query(`SELECT fm.id as fm_id, fm.name as fm_form_name
21
+ FROM cr_entity_view fm
22
22
  WHERE fm.organization_id = ? AND fm.mapped_entity_type = ?`, [organization_id, source_entity_type]);
23
23
  const formatted = forms.map((form) => ({
24
24
  label: form.fm_form_name,
@@ -67,33 +67,33 @@ let StageGroupRepository = class StageGroupRepository {
67
67
  if (!stageGroups.length)
68
68
  return [];
69
69
  const stageGroupIds = stageGroups.map((sg) => sg.id);
70
- const stagesRaw = await this.dataSource.query(`
71
- SELECT
72
- cr_wf_stage.*
73
- FROM cr_wf_stage
74
- WHERE cr_wf_stage.stage_group_id IN (${stageGroupIds.map(() => '?').join(',')})
75
- AND cr_wf_stage.organization_id = ?
76
- ORDER BY cr_wf_stage.sequence ASC
70
+ const stagesRaw = await this.dataSource.query(`
71
+ SELECT
72
+ cr_wf_stage.*
73
+ FROM cr_wf_stage
74
+ WHERE cr_wf_stage.stage_group_id IN (${stageGroupIds.map(() => '?').join(',')})
75
+ AND cr_wf_stage.organization_id = ?
76
+ ORDER BY cr_wf_stage.sequence ASC
77
77
  `, [...stageGroupIds, loggedInUser.organization_id]);
78
78
  const stageIds = stagesRaw.map((s) => s.id);
79
- const taskCounts = await this.dataSource.query(`
80
- SELECT stage_id, COUNT(*) AS task_count
81
- FROM cr_wf_task_data
82
- WHERE stage_id IN (${stageIds.map(() => '?').join(',')}) AND is_system=0 AND mapped_entity_id = ?
83
- GROUP BY stage_id
79
+ const taskCounts = await this.dataSource.query(`
80
+ SELECT stage_id, COUNT(*) AS task_count
81
+ FROM cr_wf_task_data
82
+ WHERE stage_id IN (${stageIds.map(() => '?').join(',')}) AND is_system=0 AND mapped_entity_id = ?
83
+ GROUP BY stage_id
84
84
  `, [...stageIds, lead_id]);
85
- const meetingCounts = await this.dataSource.query(`
86
- SELECT stage_id, COUNT(*) AS meeting_count
87
- FROM crm_lead_meeting
88
- WHERE stage_id IN (${stageIds.map(() => '?').join(',')}) AND mapped_entity_id = ?
89
- GROUP BY stage_id
85
+ const meetingCounts = await this.dataSource.query(`
86
+ SELECT stage_id, COUNT(*) AS meeting_count
87
+ FROM crm_lead_meeting
88
+ WHERE stage_id IN (${stageIds.map(() => '?').join(',')}) AND mapped_entity_id = ?
89
+ GROUP BY stage_id
90
90
  `, [...stageIds, lead_id]);
91
- const sendCommCounts = await this.dataSource.query(`
92
- SELECT stage_id, COUNT(*) AS send_comm_count
93
- FROM crm_lead_communication
94
- WHERE stage_id IN (${stageIds.map(() => '?').join(',')}) AND mapped_entity_id = ?
95
- AND type IN ('SEND', 'LOG')
96
- GROUP BY stage_id
91
+ const sendCommCounts = await this.dataSource.query(`
92
+ SELECT stage_id, COUNT(*) AS send_comm_count
93
+ FROM crm_lead_communication
94
+ WHERE stage_id IN (${stageIds.map(() => '?').join(',')}) AND mapped_entity_id = ?
95
+ AND type IN ('SEND', 'LOG')
96
+ GROUP BY stage_id
97
97
  `, [...stageIds, lead_id]);
98
98
  const taskCountMap = new Map(taskCounts.map((row) => [Number(row.stage_id), Number(row.task_count)]));
99
99
  const meetingCountMap = new Map(meetingCounts.map((row) => [