rez_core 4.0.162 → 4.0.165

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 (597) hide show
  1. package/.idea/250218_nodejs_core.iml +11 -8
  2. package/.idea/codeStyles/Project.xml +58 -58
  3. package/.idea/codeStyles/codeStyleConfig.xml +4 -4
  4. package/.idea/inspectionProfiles/Project_Default.xml +1 -1
  5. package/.idea/modules.xml +7 -7
  6. package/.idea/prettier.xml +5 -5
  7. package/.idea/vcs.xml +5 -5
  8. package/.prettierrc +3 -3
  9. package/README.md +99 -99
  10. package/dist/app.module.js +9 -0
  11. package/dist/app.module.js.map +1 -1
  12. package/dist/config/bull.config.d.ts +10 -0
  13. package/dist/config/bull.config.js +66 -0
  14. package/dist/config/bull.config.js.map +1 -0
  15. package/dist/config/config.module.js +2 -2
  16. package/dist/config/config.module.js.map +1 -1
  17. package/dist/config/database.config.d.ts +1 -1
  18. package/dist/config/database.config.js +12 -16
  19. package/dist/config/database.config.js.map +1 -1
  20. package/dist/module/auth/guards/role.guard.js +3 -3
  21. package/dist/module/auth/services/auth.service.js +3 -3
  22. package/dist/module/auth/services/auth.service.js.map +1 -1
  23. package/dist/module/enterprise/entity/organization.entity.js +1 -1
  24. package/dist/module/enterprise/repository/school.repository.js +3 -3
  25. package/dist/module/enterprise/repository/school.repository.js.map +1 -1
  26. package/dist/module/entity_json/controller/entity_json.controller.d.ts +8 -0
  27. package/dist/module/entity_json/controller/entity_json.controller.js +42 -0
  28. package/dist/module/entity_json/controller/entity_json.controller.js.map +1 -0
  29. package/dist/module/entity_json/entity_json.module.d.ts +2 -0
  30. package/dist/module/entity_json/entity_json.module.js +26 -0
  31. package/dist/module/entity_json/entity_json.module.js.map +1 -0
  32. package/dist/module/entity_json/service/entity_json.service.d.ts +7 -0
  33. package/dist/module/entity_json/service/entity_json.service.js +80 -0
  34. package/dist/module/entity_json/service/entity_json.service.js.map +1 -0
  35. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  36. package/dist/module/filter/service/filter-evaluator.service.js +3 -3
  37. package/dist/module/filter/service/filter-evaluator.service.js.map +1 -1
  38. package/dist/module/filter/service/filter.service.d.ts +1 -4
  39. package/dist/module/filter/service/filter.service.js +31 -50
  40. package/dist/module/filter/service/filter.service.js.map +1 -1
  41. package/dist/module/integration/entity/integration-config.entity.js +6 -6
  42. package/dist/module/integration/entity/integration-config.entity.js.map +1 -1
  43. package/dist/module/integration/entity/integration-entity-mapper.entity.js +1 -1
  44. package/dist/module/integration/entity/integration-entity-mapper.entity.js.map +1 -1
  45. package/dist/module/integration/entity/integration-source.entity.js +4 -4
  46. package/dist/module/integration/entity/integration-source.entity.js.map +1 -1
  47. package/dist/module/integration/entity/user-integration.entity.js +4 -4
  48. package/dist/module/integration/entity/user-integration.entity.js.map +1 -1
  49. package/dist/module/integration/examples/usage.example.js +9 -9
  50. package/dist/module/integration/service/integration.service.js +1 -1
  51. package/dist/module/integration/service/wrapper.service.d.ts +3 -1
  52. package/dist/module/integration/service/wrapper.service.js +67 -65
  53. package/dist/module/integration/service/wrapper.service.js.map +1 -1
  54. package/dist/module/linked_attributes/controller/linked_attributes.controller.d.ts +5 -0
  55. package/dist/module/linked_attributes/controller/linked_attributes.controller.js +29 -0
  56. package/dist/module/linked_attributes/controller/linked_attributes.controller.js.map +1 -0
  57. package/dist/module/linked_attributes/entity/linked_attribute.entity.d.ts +9 -0
  58. package/dist/module/linked_attributes/entity/linked_attribute.entity.js +70 -0
  59. package/dist/module/linked_attributes/entity/linked_attribute.entity.js.map +1 -0
  60. package/dist/module/linked_attributes/linked_attributes.module.d.ts +2 -0
  61. package/dist/module/linked_attributes/linked_attributes.module.js +29 -0
  62. package/dist/module/linked_attributes/linked_attributes.module.js.map +1 -0
  63. package/dist/module/linked_attributes/repository/linked_attribute.repository.d.ts +6 -0
  64. package/dist/module/linked_attributes/repository/linked_attribute.repository.js +31 -0
  65. package/dist/module/linked_attributes/repository/linked_attribute.repository.js.map +1 -0
  66. package/dist/module/linked_attributes/service/linked_attributes.service.d.ts +5 -0
  67. package/dist/module/linked_attributes/service/linked_attributes.service.js +34 -0
  68. package/dist/module/linked_attributes/service/linked_attributes.service.js.map +1 -0
  69. package/dist/module/listmaster/entity/list-master-items.entity.js +3 -3
  70. package/dist/module/listmaster/entity/list-master-items.entity.js.map +1 -1
  71. package/dist/module/listmaster/entity/list-master.entity.js +4 -4
  72. package/dist/module/listmaster/entity/list-master.entity.js.map +1 -1
  73. package/dist/module/listmaster/service/list-master-item.service.js +3 -3
  74. package/dist/module/listmaster/service/list-master-item.service.js.map +1 -1
  75. package/dist/module/mapper/entity/field-mapper.entity.js +6 -6
  76. package/dist/module/mapper/entity/field-mapper.entity.js.map +1 -1
  77. package/dist/module/mapper/service/field-mapper.service.js +7 -7
  78. package/dist/module/mapper/service/field-mapper.service.js.map +1 -1
  79. package/dist/module/mapper/service/mapper.service.js +4 -4
  80. package/dist/module/mapper/service/mapper.service.js.map +1 -1
  81. package/dist/module/meta/controller/attribute-master.controller.d.ts +4 -1
  82. package/dist/module/meta/controller/attribute-master.controller.js +15 -2
  83. package/dist/module/meta/controller/attribute-master.controller.js.map +1 -1
  84. package/dist/module/meta/entity/app-master.entity.d.ts +2 -2
  85. package/dist/module/meta/entity/app-master.entity.js +4 -4
  86. package/dist/module/meta/entity/entity-master.entity.js +1 -1
  87. package/dist/module/meta/entity/entity-master.entity.js.map +1 -1
  88. package/dist/module/meta/entity/view-master.entity.js +1 -1
  89. package/dist/module/meta/entity/view-master.entity.js.map +1 -1
  90. package/dist/module/meta/entity.module.js +7 -0
  91. package/dist/module/meta/entity.module.js.map +1 -1
  92. package/dist/module/meta/repository/attribute-master.repository.js +2 -2
  93. package/dist/module/meta/repository/attribute-master.repository.js.map +1 -1
  94. package/dist/module/meta/repository/entity-attribute-update.repository.d.ts +6 -0
  95. package/dist/module/meta/repository/entity-attribute-update.repository.js +44 -0
  96. package/dist/module/meta/repository/entity-attribute-update.repository.js.map +1 -0
  97. package/dist/module/meta/repository/entity-master.repository.js +2 -2
  98. package/dist/module/meta/repository/entity-master.repository.js.map +1 -1
  99. package/dist/module/meta/service/attribute-master.service.js +1 -1
  100. package/dist/module/meta/service/attribute-master.service.js.map +1 -1
  101. package/dist/module/meta/service/entity-attribute-update.service.d.ts +7 -0
  102. package/dist/module/meta/service/entity-attribute-update.service.js +36 -0
  103. package/dist/module/meta/service/entity-attribute-update.service.js.map +1 -0
  104. package/dist/module/meta/service/entity-dynamic.service.js +27 -27
  105. package/dist/module/meta/service/entity-dynamic.service.js.map +1 -1
  106. package/dist/module/meta/service/entity-list.service.js +3 -3
  107. package/dist/module/meta/service/entity-master.service.js +4 -4
  108. package/dist/module/meta/service/entity-master.service.js.map +1 -1
  109. package/dist/module/meta/service/entity-relation.service.js +13 -13
  110. package/dist/module/meta/service/entity-relation.service.js.map +1 -1
  111. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  112. package/dist/module/meta/service/media-data.service.js +9 -9
  113. package/dist/module/meta/service/media-data.service.js.map +1 -1
  114. package/dist/module/meta/service/resolver.service.js +19 -19
  115. package/dist/module/meta/service/resolver.service.js.map +1 -1
  116. package/dist/module/module/repository/menu.repository.js +12 -12
  117. package/dist/module/notification/entity/otp.entity.js +1 -1
  118. package/dist/module/notification/entity/otp.entity.js.map +1 -1
  119. package/dist/module/notification/service/notification.service.js +9 -9
  120. package/dist/module/user/controller/login.controller.js +18 -18
  121. package/dist/module/user/entity/user-role-mapping.entity.js +1 -1
  122. package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
  123. package/dist/module/user/service/login.service.js +1 -1
  124. package/dist/module/user/service/login.service.js.map +1 -1
  125. package/dist/module/user/service/role.service.js +4 -4
  126. package/dist/module/user/service/user-session.service.js +4 -4
  127. package/dist/module/user/service/user-session.service.js.map +1 -1
  128. package/dist/module/workflow/entity/action-category.entity.d.ts +1 -1
  129. package/dist/module/workflow/entity/action-category.entity.js +1 -1
  130. package/dist/module/workflow/entity/action-data.entity.js +1 -1
  131. package/dist/module/workflow/entity/action-data.entity.js.map +1 -1
  132. package/dist/module/workflow/entity/action.entity.d.ts +1 -0
  133. package/dist/module/workflow/entity/action.entity.js +5 -1
  134. package/dist/module/workflow/entity/action.entity.js.map +1 -1
  135. package/dist/module/workflow/entity/comm-template.entity.js +1 -1
  136. package/dist/module/workflow/entity/comm-template.entity.js.map +1 -1
  137. package/dist/module/workflow/entity/template-attach-mapper.entity.js +1 -1
  138. package/dist/module/workflow/entity/template-attach-mapper.entity.js.map +1 -1
  139. package/dist/module/workflow/repository/action-data.repository.js +5 -4
  140. package/dist/module/workflow/repository/action-data.repository.js.map +1 -1
  141. package/dist/module/workflow/repository/action.repository.js +21 -21
  142. package/dist/module/workflow/repository/action.repository.js.map +1 -1
  143. package/dist/module/workflow/repository/comm-template.repository.js +7 -7
  144. package/dist/module/workflow/repository/comm-template.repository.js.map +1 -1
  145. package/dist/module/workflow/repository/form-master.repository.js +3 -3
  146. package/dist/module/workflow/repository/form-master.repository.js.map +1 -1
  147. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  148. package/dist/module/workflow/repository/stage-movement.repository.js +17 -17
  149. package/dist/module/workflow/repository/stage-movement.repository.js.map +1 -1
  150. package/dist/module/workflow/repository/stage.repository.js +8 -8
  151. package/dist/module/workflow/repository/task.repository.d.ts +3 -1
  152. package/dist/module/workflow/repository/task.repository.js +8 -3
  153. package/dist/module/workflow/repository/task.repository.js.map +1 -1
  154. package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
  155. package/dist/module/workflow/service/action.service.js +13 -13
  156. package/dist/module/workflow/service/action.service.js.map +1 -1
  157. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  158. package/dist/module/workflow/service/populate-workflow.service.js +8 -8
  159. package/dist/module/workflow/service/populate-workflow.service.js.map +1 -1
  160. package/dist/module/workflow/service/stage-group.service.js +6 -6
  161. package/dist/module/workflow/service/stage-group.service.js.map +1 -1
  162. package/dist/module/workflow/service/stage.service.js +4 -4
  163. package/dist/module/workflow/service/stage.service.js.map +1 -1
  164. package/dist/module/workflow/service/task.service.js +71 -55
  165. package/dist/module/workflow/service/task.service.js.map +1 -1
  166. package/dist/module/workflow/service/workflow-list-master.service.js +16 -16
  167. package/dist/module/workflow/service/workflow-list-master.service.js.map +1 -1
  168. package/dist/module/workflow/service/workflow-meta.service.js +53 -51
  169. package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
  170. package/dist/module/workflow/service/workflow.service.js +5 -5
  171. package/dist/module/workflow/service/workflow.service.js.map +1 -1
  172. package/dist/module/workflow-automation/controller/workflow-automation.controller.d.ts +6 -0
  173. package/dist/module/workflow-automation/controller/workflow-automation.controller.js +16 -0
  174. package/dist/module/workflow-automation/controller/workflow-automation.controller.js.map +1 -1
  175. package/dist/module/workflow-automation/entity/workflow-automation-action.entity.d.ts +1 -1
  176. package/dist/module/workflow-automation/entity/workflow-automation-action.entity.js +1 -1
  177. package/dist/module/workflow-automation/entity/workflow-automation.entity.d.ts +2 -0
  178. package/dist/module/workflow-automation/entity/workflow-automation.entity.js +8 -0
  179. package/dist/module/workflow-automation/entity/workflow-automation.entity.js.map +1 -1
  180. package/dist/module/workflow-automation/service/schedule-handler.service.d.ts +16 -0
  181. package/dist/module/workflow-automation/service/schedule-handler.service.js +109 -0
  182. package/dist/module/workflow-automation/service/schedule-handler.service.js.map +1 -0
  183. package/dist/module/workflow-automation/service/workflow-automation-engine.service.d.ts +1 -1
  184. package/dist/module/workflow-automation/service/workflow-automation-engine.service.js +1 -1
  185. package/dist/module/workflow-automation/service/workflow-automation-engine.service.js.map +1 -1
  186. package/dist/module/workflow-automation/service/workflow-automation.service.d.ts +13 -1
  187. package/dist/module/workflow-automation/service/workflow-automation.service.js +115 -6
  188. package/dist/module/workflow-automation/service/workflow-automation.service.js.map +1 -1
  189. package/dist/module/workflow-automation/workflow-automation.module.js +14 -1
  190. package/dist/module/workflow-automation/workflow-automation.module.js.map +1 -1
  191. package/dist/module/workflow-schedule/constants/schedule.constants.d.ts +27 -0
  192. package/dist/module/workflow-schedule/constants/schedule.constants.js +31 -0
  193. package/dist/module/workflow-schedule/constants/schedule.constants.js.map +1 -0
  194. package/dist/module/workflow-schedule/controller/workflow-schedule.controller.d.ts +83 -0
  195. package/dist/module/workflow-schedule/controller/workflow-schedule.controller.js +220 -0
  196. package/dist/module/workflow-schedule/controller/workflow-schedule.controller.js.map +1 -0
  197. package/dist/module/workflow-schedule/dto/create-schedule.dto.d.ts +32 -0
  198. package/dist/module/workflow-schedule/dto/create-schedule.dto.js +163 -0
  199. package/dist/module/workflow-schedule/dto/create-schedule.dto.js.map +1 -0
  200. package/dist/module/workflow-schedule/dto/get-execution-logs.dto.d.ts +35 -0
  201. package/dist/module/workflow-schedule/dto/get-execution-logs.dto.js +124 -0
  202. package/dist/module/workflow-schedule/dto/get-execution-logs.dto.js.map +1 -0
  203. package/dist/module/workflow-schedule/dto/update-schedule.dto.d.ts +19 -0
  204. package/dist/module/workflow-schedule/dto/update-schedule.dto.js +106 -0
  205. package/dist/module/workflow-schedule/dto/update-schedule.dto.js.map +1 -0
  206. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.d.ts +30 -0
  207. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.js +113 -0
  208. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.js.map +1 -0
  209. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.d.ts +34 -0
  210. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.js +118 -0
  211. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.js.map +1 -0
  212. package/dist/module/workflow-schedule/interfaces/schedule-job-data.interface.d.ts +44 -0
  213. package/dist/module/workflow-schedule/interfaces/schedule-job-data.interface.js +3 -0
  214. package/dist/module/workflow-schedule/interfaces/schedule-job-data.interface.js.map +1 -0
  215. package/dist/module/workflow-schedule/processors/schedule.processor.d.ts +31 -0
  216. package/dist/module/workflow-schedule/processors/schedule.processor.js +409 -0
  217. package/dist/module/workflow-schedule/processors/schedule.processor.js.map +1 -0
  218. package/dist/module/workflow-schedule/service/workflow-schedule.service.d.ts +44 -0
  219. package/dist/module/workflow-schedule/service/workflow-schedule.service.js +434 -0
  220. package/dist/module/workflow-schedule/service/workflow-schedule.service.js.map +1 -0
  221. package/dist/module/workflow-schedule/workflow-schedule.module.d.ts +2 -0
  222. package/dist/module/workflow-schedule/workflow-schedule.module.js +44 -0
  223. package/dist/module/workflow-schedule/workflow-schedule.module.js.map +1 -0
  224. package/dist/tsconfig.build.tsbuildinfo +1 -1
  225. package/dist/utils/service/loggingUtil.service.d.ts +9 -2
  226. package/dist/utils/service/loggingUtil.service.js +65 -14
  227. package/dist/utils/service/loggingUtil.service.js.map +1 -1
  228. package/dist/utils/service/reflection-helper.service.js +3 -3
  229. package/dist/utils/service/reflection-helper.service.js.map +1 -1
  230. package/dist/utils/utils.module.js +2 -0
  231. package/dist/utils/utils.module.js.map +1 -1
  232. package/docs/modules/event-driven-integration-design.md +91 -91
  233. package/docs/modules/integration.md +250 -250
  234. package/eslint.config.mjs +34 -34
  235. package/nest-cli.json +14 -14
  236. package/package.json +124 -120
  237. package/src/app.controller.ts +12 -12
  238. package/src/app.module.ts +62 -52
  239. package/src/app.service.ts +8 -8
  240. package/src/config/bull.config.ts +69 -0
  241. package/src/config/config.module.ts +18 -17
  242. package/src/config/database.config.ts +23 -48
  243. package/src/constant/global.constant.ts +67 -67
  244. package/src/core.module.ts +81 -81
  245. package/src/decorators/roles.decorator.ts +7 -7
  246. package/src/dtos/response.dto.ts +6 -6
  247. package/src/dtos/response.ts +5 -5
  248. package/src/index.ts +1 -1
  249. package/src/module/auth/auth.module.ts +49 -49
  250. package/src/module/auth/controller/auth.controller.ts +28 -28
  251. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  252. package/src/module/auth/guards/jwt.guard.ts +22 -22
  253. package/src/module/auth/guards/role.guard.ts +68 -68
  254. package/src/module/auth/services/auth.service.ts +50 -50
  255. package/src/module/auth/services/jwt.service.ts +11 -11
  256. package/src/module/auth/strategies/google.strategy.ts +54 -54
  257. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  258. package/src/module/auth/strategies/local.strategy.ts +13 -13
  259. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  260. package/src/module/dashboard/dashboard.module.ts +21 -21
  261. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  262. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  263. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  264. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  265. package/src/module/dev/dev.module.ts +12 -12
  266. package/src/module/dev/service/dev.service.ts +7 -7
  267. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  268. package/src/module/enterprise/enterprise.module.ts +30 -30
  269. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  270. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  271. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  272. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  273. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  274. package/src/module/enterprise/repository/school.repository.ts +278 -278
  275. package/src/module/enterprise/service/brand.service.ts +5 -5
  276. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  277. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  278. package/src/module/enterprise/service/organization.service.ts +145 -145
  279. package/src/module/entity_json/controller/entity_json.controller.ts +21 -0
  280. package/src/module/entity_json/entity_json.module.ts +13 -0
  281. package/src/module/entity_json/service/entity_json.service.ts +88 -0
  282. package/src/module/filter/controller/filter.controller.ts +84 -84
  283. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  284. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  285. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  286. package/src/module/filter/filter.module.ts +31 -31
  287. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  288. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  289. package/src/module/filter/service/filter.service.ts +1005 -1034
  290. package/src/module/filter/service/saved-filter.service.ts +170 -170
  291. package/src/module/ics/controller/ics.controller.ts +21 -21
  292. package/src/module/ics/dto/ics.dto.ts +55 -55
  293. package/src/module/ics/ics.module.ts +13 -13
  294. package/src/module/ics/service/ics.service.ts +57 -57
  295. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  296. package/src/module/integration/controller/integration.controller.ts +662 -662
  297. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  298. package/src/module/integration/dto/create-config.dto.ts +526 -526
  299. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  300. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  301. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  302. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  303. package/src/module/integration/examples/usage.example.ts +338 -338
  304. package/src/module/integration/factories/base.factory.ts +7 -7
  305. package/src/module/integration/factories/email.factory.ts +49 -49
  306. package/src/module/integration/factories/integration.factory.ts +121 -121
  307. package/src/module/integration/factories/sms.factory.ts +51 -51
  308. package/src/module/integration/factories/telephone.factory.ts +41 -41
  309. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  310. package/src/module/integration/integration.module.ts +110 -110
  311. package/src/module/integration/service/calendar-event.service.ts +118 -118
  312. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  313. package/src/module/integration/service/integration-queue.service.ts +229 -229
  314. package/src/module/integration/service/integration.service.ts +2633 -2633
  315. package/src/module/integration/service/oauth.service.ts +224 -224
  316. package/src/module/integration/service/wrapper.service.ts +700 -494
  317. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  318. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  319. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  320. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  321. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  322. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  323. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  324. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  325. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  326. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  327. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  328. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  329. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  330. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  331. package/src/module/layout/controller/layout.controller.ts +47 -47
  332. package/src/module/layout/entity/header-items.entity.ts +28 -28
  333. package/src/module/layout/entity/header-section.entity.ts +19 -19
  334. package/src/module/layout/layout.module.ts +21 -21
  335. package/src/module/layout/repository/header-items.repository.ts +18 -18
  336. package/src/module/layout/repository/header-section.repository.ts +22 -22
  337. package/src/module/layout/service/header-section.service.ts +25 -25
  338. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  339. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  340. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  341. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  342. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  343. package/src/module/lead/controller/lead.controller.ts +30 -30
  344. package/src/module/lead/lead.module.ts +14 -14
  345. package/src/module/lead/repository/lead.repository.ts +41 -41
  346. package/src/module/lead/service/lead.service.ts +54 -54
  347. package/src/module/linked_attributes/controller/linked_attributes.controller.ts +10 -0
  348. package/src/module/linked_attributes/entity/linked_attribute.entity.ts +48 -0
  349. package/src/module/linked_attributes/linked_attributes.module.ts +16 -0
  350. package/src/module/linked_attributes/repository/linked_attribute.repository.ts +12 -0
  351. package/src/module/linked_attributes/service/linked_attributes.service.ts +22 -0
  352. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  353. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  354. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  355. package/src/module/listmaster/listmaster.module.ts +46 -46
  356. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  357. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  358. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  359. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  360. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  361. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  362. package/src/module/listmaster/service/list-master.service.ts +535 -535
  363. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  364. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  365. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  366. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  367. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  368. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  369. package/src/module/mapper/mapper.module.ts +34 -34
  370. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  371. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  372. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  373. package/src/module/mapper/service/field-mapper.service.ts +271 -266
  374. package/src/module/mapper/service/mapper.service.ts +79 -79
  375. package/src/module/master/controller/master.controller.ts +74 -74
  376. package/src/module/master/service/master.service.ts +483 -483
  377. package/src/module/meta/controller/app-master.controller.ts +38 -38
  378. package/src/module/meta/controller/attribute-master.controller.ts +74 -66
  379. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  380. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  381. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  382. package/src/module/meta/controller/entity.controller.ts +392 -392
  383. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  384. package/src/module/meta/controller/media.controller.ts +107 -107
  385. package/src/module/meta/controller/meta.controller.ts +96 -96
  386. package/src/module/meta/controller/view-master.controller.ts +86 -86
  387. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  388. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  389. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  390. package/src/module/meta/entity/app-master.entity.ts +34 -34
  391. package/src/module/meta/entity/attribute-master.entity.ts +89 -89
  392. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  393. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  394. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  395. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  396. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  397. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  398. package/src/module/meta/entity/media-data.entity.ts +32 -32
  399. package/src/module/meta/entity/preference.entity.ts +62 -62
  400. package/src/module/meta/entity/view-master.entity.ts +41 -41
  401. package/src/module/meta/entity.module.ts +166 -158
  402. package/src/module/meta/repository/app-master.repository.ts +20 -20
  403. package/src/module/meta/repository/attribute-master.repository.ts +118 -118
  404. package/src/module/meta/repository/entity-attribute-update.repository.ts +44 -0
  405. package/src/module/meta/repository/entity-master.repository.ts +69 -69
  406. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  407. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  408. package/src/module/meta/repository/media-data.repository.ts +50 -50
  409. package/src/module/meta/repository/preference.repository.ts +20 -20
  410. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  411. package/src/module/meta/repository/view-master.repository.ts +42 -42
  412. package/src/module/meta/service/app-master.service.ts +37 -37
  413. package/src/module/meta/service/attribute-master.service.ts +126 -126
  414. package/src/module/meta/service/common.service.ts +9 -9
  415. package/src/module/meta/service/entity-attribute-update.service.ts +29 -0
  416. package/src/module/meta/service/entity-dynamic.service.ts +819 -819
  417. package/src/module/meta/service/entity-list.service.ts +205 -205
  418. package/src/module/meta/service/entity-master.service.ts +169 -169
  419. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  420. package/src/module/meta/service/entity-relation.service.ts +69 -69
  421. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  422. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  423. package/src/module/meta/service/entity-table.service.ts +150 -150
  424. package/src/module/meta/service/entity-validation.service.ts +187 -187
  425. package/src/module/meta/service/entity.service.ts +67 -67
  426. package/src/module/meta/service/field-group.service.ts +103 -103
  427. package/src/module/meta/service/media-data.service.ts +507 -507
  428. package/src/module/meta/service/populate-meta.service.ts +193 -193
  429. package/src/module/meta/service/preference.service.ts +16 -16
  430. package/src/module/meta/service/resolver.service.ts +267 -267
  431. package/src/module/meta/service/section-master.service.ts +104 -104
  432. package/src/module/meta/service/update-form-json.service.ts +22 -22
  433. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  434. package/src/module/meta/service/view-master.service.ts +127 -127
  435. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  436. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  437. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  438. package/src/module/module/controller/menu.controller.ts +15 -15
  439. package/src/module/module/controller/module-access.controller.ts +134 -134
  440. package/src/module/module/entity/menu.entity.ts +43 -43
  441. package/src/module/module/entity/module-access.entity.ts +25 -25
  442. package/src/module/module/entity/module-action.entity.ts +17 -17
  443. package/src/module/module/entity/module.entity.ts +52 -52
  444. package/src/module/module/module.module.ts +42 -42
  445. package/src/module/module/repository/menu.repository.ts +184 -184
  446. package/src/module/module/repository/module-access.repository.ts +344 -344
  447. package/src/module/module/service/menu.service.ts +82 -82
  448. package/src/module/module/service/module-access.service.ts +209 -209
  449. package/src/module/notification/controller/notification.controller.ts +58 -58
  450. package/src/module/notification/controller/otp.controller.ts +117 -117
  451. package/src/module/notification/entity/notification.entity.ts +26 -26
  452. package/src/module/notification/entity/otp.entity.ts +28 -28
  453. package/src/module/notification/firebase-admin.config.ts +22 -22
  454. package/src/module/notification/notification.module.ts +69 -69
  455. package/src/module/notification/repository/otp.repository.ts +27 -27
  456. package/src/module/notification/service/email.service.ts +127 -127
  457. package/src/module/notification/service/notification.service.ts +163 -163
  458. package/src/module/notification/service/otp.service.ts +132 -132
  459. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  460. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  461. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  462. package/src/module/third-party-module/third-party.module.ts +12 -12
  463. package/src/module/user/controller/login.controller.ts +197 -197
  464. package/src/module/user/controller/user.controller.ts +40 -40
  465. package/src/module/user/dto/create-user.dto.ts +62 -62
  466. package/src/module/user/dto/update-user.dto.ts +4 -4
  467. package/src/module/user/entity/role.entity.ts +33 -33
  468. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  469. package/src/module/user/entity/user-session.entity.ts +73 -73
  470. package/src/module/user/entity/user.entity.ts +59 -59
  471. package/src/module/user/repository/role.repository.ts +96 -96
  472. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  473. package/src/module/user/repository/user.repository.ts +50 -50
  474. package/src/module/user/repository/userSession.repository.ts +33 -33
  475. package/src/module/user/service/login.service.ts +304 -304
  476. package/src/module/user/service/role.service.ts +189 -189
  477. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  478. package/src/module/user/service/user-session.service.ts +168 -168
  479. package/src/module/user/service/user.service.ts +365 -365
  480. package/src/module/user/user.module.ts +65 -65
  481. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  482. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  483. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  484. package/src/module/workflow/controller/action.controller.ts +111 -111
  485. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  486. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  487. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  488. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  489. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  490. package/src/module/workflow/controller/stage.controller.ts +50 -50
  491. package/src/module/workflow/controller/task.controller.ts +77 -77
  492. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  493. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  494. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  495. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  496. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  497. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  498. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  499. package/src/module/workflow/entity/action.entity.ts +53 -50
  500. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  501. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  502. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  503. package/src/module/workflow/entity/form.entity.ts +25 -25
  504. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  505. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  506. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  507. package/src/module/workflow/entity/stage.entity.ts +20 -20
  508. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  509. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  510. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  511. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  512. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  513. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  514. package/src/module/workflow/repository/action-data.repository.ts +334 -333
  515. package/src/module/workflow/repository/action.repository.ts +323 -323
  516. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  517. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  518. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  519. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  520. package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
  521. package/src/module/workflow/repository/stage.repository.ts +172 -172
  522. package/src/module/workflow/repository/task.repository.ts +134 -127
  523. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  524. package/src/module/workflow/service/action-category.service.ts +33 -33
  525. package/src/module/workflow/service/action-data.service.ts +62 -62
  526. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  527. package/src/module/workflow/service/action-template-mapping.service.ts +106 -106
  528. package/src/module/workflow/service/action.service.ts +279 -279
  529. package/src/module/workflow/service/activity-log.service.ts +107 -107
  530. package/src/module/workflow/service/comm-template.service.ts +180 -180
  531. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  532. package/src/module/workflow/service/form-master.service.ts +35 -35
  533. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  534. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  535. package/src/module/workflow/service/stage-group.service.ts +319 -319
  536. package/src/module/workflow/service/stage.service.ts +199 -199
  537. package/src/module/workflow/service/task.service.ts +575 -560
  538. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  539. package/src/module/workflow/service/workflow-meta.service.ts +654 -640
  540. package/src/module/workflow/service/workflow.service.ts +205 -205
  541. package/src/module/workflow/workflow.module.ts +176 -176
  542. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +43 -21
  543. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  544. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +40 -35
  545. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  546. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  547. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  548. package/src/module/workflow-automation/service/schedule-handler.service.ts +150 -0
  549. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  550. package/src/module/workflow-automation/service/workflow-automation.service.ts +508 -347
  551. package/src/module/workflow-automation/workflow-automation.module.ts +47 -34
  552. package/src/module/workflow-schedule/INSTALLATION.md +244 -0
  553. package/src/module/workflow-schedule/README.md +422 -0
  554. package/src/module/workflow-schedule/constants/schedule.constants.ts +48 -0
  555. package/src/module/workflow-schedule/controller/workflow-schedule.controller.ts +255 -0
  556. package/src/module/workflow-schedule/docs/CLAUDE_CODE_GUIDE.md +510 -0
  557. package/src/module/workflow-schedule/docs/CLAUDE_CODE_PROMPT.md +362 -0
  558. package/src/module/workflow-schedule/docs/RUN_CLAUDE_CODE.sh +68 -0
  559. package/src/module/workflow-schedule/dto/create-schedule.dto.ts +147 -0
  560. package/src/module/workflow-schedule/dto/get-execution-logs.dto.ts +119 -0
  561. package/src/module/workflow-schedule/dto/update-schedule.dto.ts +96 -0
  562. package/src/module/workflow-schedule/entities/scheduled-workflow.entity.ts +148 -0
  563. package/src/module/workflow-schedule/entities/workflow-execution-log.entity.ts +154 -0
  564. package/src/module/workflow-schedule/interfaces/schedule-job-data.interface.ts +53 -0
  565. package/src/module/workflow-schedule/processors/schedule.processor.ts +584 -0
  566. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +600 -0
  567. package/src/module/workflow-schedule/workflow-schedule.module.ts +43 -0
  568. package/src/resources/dev.properties.yaml +30 -31
  569. package/src/resources/local.properties.yaml +27 -27
  570. package/src/resources/properties.module.ts +12 -12
  571. package/src/resources/properties.yaml.ts +11 -11
  572. package/src/resources/uat.properties.yaml +31 -31
  573. package/src/table.config.ts +126 -126
  574. package/src/utils/dto/excel-data.dto.ts +14 -14
  575. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  576. package/src/utils/service/base64util.service.ts +18 -18
  577. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  578. package/src/utils/service/codeGenerator.service.ts +22 -22
  579. package/src/utils/service/dateUtil.service.ts +17 -17
  580. package/src/utils/service/encryptUtil.service.ts +97 -97
  581. package/src/utils/service/excel-helper.service.ts +72 -72
  582. package/src/utils/service/excelUtil.service.ts +15 -15
  583. package/src/utils/service/file-util.service.ts +11 -11
  584. package/src/utils/service/json-util.service.ts +23 -23
  585. package/src/utils/service/loggingUtil.service.ts +88 -34
  586. package/src/utils/service/reflection-helper.service.ts +62 -62
  587. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  588. package/src/utils/utils.module.ts +27 -25
  589. package/tsconfig.build.json +4 -4
  590. package/tsconfig.json +24 -24
  591. package/.claude/settings.local.json +0 -26
  592. package/.idea/copilot.data.migration.agent.xml +0 -6
  593. package/.idea/copilot.data.migration.ask.xml +0 -6
  594. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  595. package/.idea/copilot.data.migration.edit.xml +0 -6
  596. package/.idea/misc.xml +0 -6
  597. package/server.log +0 -850
@@ -1,333 +1,334 @@
1
- import { BadRequestException, Injectable } from '@nestjs/common';
2
- import { InjectRepository } from '@nestjs/typeorm';
3
- import { ActionDataEntity } from '../entity/action-data.entity';
4
- import { DataSource, LessThan, Repository } from 'typeorm';
5
- import { UserData } from 'src/module/user/entity/user.entity';
6
- import { TaskDataEntity } from '../entity/task-data.entity';
7
- import { EntityServiceImpl } from 'src/module/meta/service/entity-service-impl.service';
8
- import { FORM_STATUS_TO_BE_SENT } from 'src/constant/global.constant';
9
- import { ConfigService } from '@nestjs/config';
10
- import axios from 'axios';
11
- import { WorkflowAutomationEngineService } from 'src/module/workflow-automation/service/workflow-automation-engine.service';
12
-
13
- @Injectable()
14
- export class ActionDataRepository extends EntityServiceImpl {
15
- constructor(
16
- @InjectRepository(ActionDataEntity)
17
- private readonly actionDataRepo: Repository<ActionDataEntity>,
18
- private readonly dataSource: DataSource,
19
- // @InjectRepository(FormDataEntity)
20
- // private readonly formRepo: Repository<FormDataEntity>,
21
- @InjectRepository(TaskDataEntity)
22
- private readonly TaskRepository: Repository<TaskDataEntity>,
23
- private readonly configService: ConfigService,
24
- private readonly workflowAutomationEngineService: WorkflowAutomationEngineService,
25
- ) {
26
- super();
27
- }
28
-
29
- async saveActionData(
30
- action: any,
31
- loggedInUser: UserData,
32
- mapped_entity_id,
33
- mapped_entity_type,
34
- ): Promise<any> {
35
- if (!action?.length) return;
36
-
37
- // Find the action with the lowest sequence
38
- const minSequence = Math.min(...action.map((a) => a.sequence));
39
-
40
- if (action.length > 0) {
41
- for (const act of action) {
42
- const is_mandatory = await this.dataSource.query(
43
- `SELECT code FROM frm_list_master_items WHERE id = $1 and organization_id = $2 LIMIT 1;`,
44
- [act.action_requirement, loggedInUser.organization_id],
45
- );
46
- const isFirst = act.sequence == minSequence;
47
- const actionData = this.actionDataRepo.create({
48
- stage_id: act.stage_id,
49
- user_id: loggedInUser.id,
50
- action_id: act.id,
51
- sequence: act.sequence,
52
- name: act.name,
53
- organization_id: loggedInUser.organization_id,
54
- mapped_entity_id,
55
- mapped_entity_type,
56
- is_current: isFirst ? 'Y' : null,
57
- start_time: isFirst ? new Date() : null,
58
- is_mandatory: is_mandatory[0]?.code === 'mandatory' ? true : false,
59
- category: act?.action_category_code,
60
- } as ActionDataEntity);
61
- await this.actionDataRepo.save(actionData);
62
-
63
- // SEND ANY FORM
64
- // if the action_category_code is 'SDFM', create a entry in crm_lead_form table
65
- if (act?.action_category_code === 'SDFM') {
66
- const dynamicFormURL = await this.generateFormURL(
67
- mapped_entity_type,
68
- mapped_entity_id,
69
- act.form_id,
70
- loggedInUser,
71
- );
72
-
73
- const viewMaster = await super.getEntityData(
74
- 'VMS',
75
- Number(act.form_id),
76
- loggedInUser,
77
- );
78
-
79
- const now = new Date();
80
- const istOffset = 5.5 * 60; // IST is UTC +5:30 in minutes
81
- const istDate = new Date(now.getTime() + istOffset * 60 * 1000);
82
-
83
- const data = {
84
- entity_type: 'LFRM',
85
- name: viewMaster?.name,
86
- stage_id: act.stage_id,
87
- mapped_entity_type,
88
- mapped_entity_id,
89
- view_id: act.form_id,
90
- form_url: dynamicFormURL,
91
- status: FORM_STATUS_TO_BE_SENT,
92
- action_id: act.id,
93
- created_date: istDate,
94
- };
95
-
96
- const createdEntity = await super.createEntity(
97
- data as any,
98
- loggedInUser,
99
- );
100
- // THEN INSERT SDFM IN RELATION TASK TABLE
101
-
102
- let relationData = await this.dataSource.query(
103
- `SELECT * FROM frm_entity_relation WHERE source_entity_type = $1 AND target_entity_type = $2`,
104
- [createdEntity.mapped_entity_type, createdEntity.entity_type],
105
- );
106
-
107
- if (relationData) {
108
- await this.dataSource.query(
109
- `INSERT INTO frm_entity_relation_data (organization_id, source_entity_id, source_entity_type, target_entity_id, target_entity_type, relation_type) VALUES ($1, $2, $3, $4, $5,$6)`,
110
- [
111
- loggedInUser.organization_id,
112
- createdEntity.mapped_entity_id,
113
- createdEntity.mapped_entity_type,
114
- createdEntity.id,
115
- createdEntity.entity_type,
116
- relationData[0]?.relation_type,
117
- ],
118
- );
119
- }
120
-
121
- await this.workflowAutomationEngineService.handleEntityEvent(
122
- createdEntity.entity_type,
123
- 'CREATE',
124
- createdEntity,
125
- loggedInUser,
126
- null,
127
- );
128
- }
129
- }
130
- }
131
- }
132
-
133
- async updateActionStatus(
134
- loggedInUser: UserData,
135
- mapped_entity_type: string,
136
- mapped_entity_id: number,
137
- stage_id: number,
138
- action_id: number,
139
- ): Promise<any> {
140
- const actionData = await this.actionDataRepo.findOne({
141
- where: {
142
- mapped_entity_type,
143
- mapped_entity_id,
144
- stage_id,
145
- action_id,
146
- },
147
- });
148
-
149
- if (!actionData) return;
150
-
151
- actionData.end_time = new Date();
152
- actionData.modified_by = loggedInUser.id;
153
- actionData.modified_date = new Date();
154
- actionData.is_done = true;
155
- actionData.is_current = 'N'; // Mark as not current
156
-
157
- // Save the updated action
158
- await this.actionDataRepo.update(actionData.id, actionData);
159
-
160
- // NOW, ACTIVATE THE NEXT ACTION (moveNextActionData logic here)
161
- // Find next sequence action for the same entity/stage
162
- const allActionData = await this.actionDataRepo.find({
163
- where: { mapped_entity_type, mapped_entity_id, stage_id },
164
- order: { sequence: 'ASC' },
165
- });
166
-
167
- // Find the action with the next higher sequence number
168
- const nextAction = allActionData.find(
169
- (a) => a.sequence > actionData.sequence,
170
- );
171
- if (nextAction && nextAction.is_current !== 'Y') {
172
- nextAction.is_current = 'Y';
173
- nextAction.start_time = new Date();
174
- nextAction.modified_by = loggedInUser.id;
175
- nextAction.modified_date = new Date();
176
- await this.actionDataRepo.update(nextAction.id, nextAction);
177
- }
178
-
179
- // Optionally return both for audit
180
- return { finished: actionData, activated: nextAction ?? null };
181
- }
182
-
183
- async resubmitAction(
184
- organization_id: number,
185
- mapped_entity_type: string,
186
- mapped_entity_id: number,
187
- stage_id: number,
188
- action_id: number,
189
- ) {
190
- // Get the current active action
191
- const currentAction = await this.actionDataRepo.findOne({
192
- where: {
193
- organization_id,
194
- stage_id,
195
- mapped_entity_id,
196
- mapped_entity_type,
197
- action_id,
198
- is_current: 'Y',
199
- },
200
- });
201
-
202
- if (!currentAction) {
203
- // skip
204
- return;
205
- }
206
-
207
- // Find the immediate previous action in the sequence
208
- const previousAction = await this.actionDataRepo.findOne({
209
- where: {
210
- organization_id,
211
- stage_id,
212
- mapped_entity_id,
213
- mapped_entity_type,
214
- sequence: LessThan(currentAction.sequence),
215
- },
216
- order: { sequence: 'DESC' }, // immediate previous
217
- });
218
-
219
- if (!previousAction) {
220
- // no previous action means we cannot resubmit
221
- return;
222
- }
223
-
224
- // Unset current action
225
- currentAction.is_current = null as any;
226
- currentAction.modified_date = new Date();
227
- currentAction.modified_by = organization_id;
228
- currentAction.start_time = null as any;
229
- currentAction.resubmit_count = (currentAction.resubmit_count ?? 0) + 1;
230
-
231
- await this.actionDataRepo.update(currentAction.id, currentAction);
232
-
233
- // Mark previous action as current again
234
- previousAction.is_current = 'Y';
235
- previousAction.modified_date = new Date();
236
- previousAction.modified_by = organization_id;
237
- previousAction.end_time = null as any; // Reset end time
238
- previousAction.is_done = false;
239
- await this.actionDataRepo.update(previousAction.id, previousAction);
240
-
241
- // reverse the status of tasks for the previous action
242
- const tasksForPrevAction = await this.TaskRepository.find({
243
- where: {
244
- action_id: String(previousAction.action_id),
245
- mapped_entity_type,
246
- mapped_entity_id,
247
- stage_id: String(previousAction.stage_id),
248
- is_done: true,
249
- },
250
- });
251
-
252
- if (tasksForPrevAction.length > 0) {
253
- for (const task of tasksForPrevAction) {
254
- task.modified_date = new Date();
255
- task.is_done = false;
256
-
257
- // Reset status (optional: set to something like 'pending' if needed)
258
- const pendingListMasterItemId = await this.dataSource.query(
259
- `SELECT id FROM frm_list_master_items WHERE code = 'in_progress' AND organization_id = $1 AND listtype = 'TKST' LIMIT 1;`,
260
- [organization_id],
261
- );
262
- task.status = pendingListMasterItemId[0]?.id ?? task.status;
263
-
264
- await this.TaskRepository.update(task.id, task);
265
- }
266
- }
267
-
268
- return {
269
- message: 'Action resubmitted successfully',
270
- revertedTo: previousAction,
271
- updated: currentAction,
272
- };
273
- }
274
-
275
- // method to dynamically generate form URL
276
- async generateFormURL(
277
- mapped_entity_type: string,
278
- mapped_entity_id: number,
279
- view_id: number,
280
- loggedInUser: any,
281
- ) {
282
- let organizationData;
283
-
284
- try {
285
- const baseUrl = this.configService.get<string>('REDIRECT_BE_URL');
286
-
287
- // Prepare query params
288
- const queryParams = new URLSearchParams({
289
- loggedInUser: JSON.stringify(loggedInUser),
290
- }).toString();
291
-
292
- const { level_id } = loggedInUser;
293
-
294
- const url = `${baseUrl}/organization/public/${level_id}?entity_type=ORGP&${queryParams}`;
295
-
296
- const response = await axios.get(url);
297
-
298
- organizationData = response.data;
299
-
300
- // The API response is likely a JSON object, not an array
301
- } catch (error) {
302
- console.error('Internal Entity API call failed:', error.message);
303
- }
304
-
305
- const org_slug = organizationData[0]?.slug;
306
-
307
- // fetch required var from config or env
308
- const profile = this.configService.get('PROFILE');
309
- const baseUrl = this.configService.get('BASE_URL');
310
- const domainUrl = this.configService.get('DOMAIN_URL');
311
-
312
- if (!profile || !baseUrl || !domainUrl) {
313
- throw new BadRequestException(
314
- `Configuration variable missing for form URL generation`,
315
- );
316
- }
317
-
318
- let finalBaseUrl: string;
319
-
320
- if (profile === 'DEV' || profile === 'STAGING') {
321
- finalBaseUrl = baseUrl;
322
- } else if (profile === 'UAT' || profile === 'PREPROD') {
323
- // fetch org_slug from DB if needed
324
- finalBaseUrl = `https://${org_slug}.${domainUrl}`;
325
- } else {
326
- finalBaseUrl = baseUrl;
327
- }
328
-
329
- const formURL = `${finalBaseUrl}/form/${mapped_entity_type}/${mapped_entity_id}/${view_id}`;
330
-
331
- return formURL;
332
- }
333
- }
1
+ import { BadRequestException, Injectable } from '@nestjs/common';
2
+ import { InjectRepository } from '@nestjs/typeorm';
3
+ import { ActionDataEntity } from '../entity/action-data.entity';
4
+ import { DataSource, LessThan, Repository } from 'typeorm';
5
+ import { UserData } from 'src/module/user/entity/user.entity';
6
+ import { TaskDataEntity } from '../entity/task-data.entity';
7
+ import { EntityServiceImpl } from 'src/module/meta/service/entity-service-impl.service';
8
+ import { FORM_STATUS_TO_BE_SENT } from 'src/constant/global.constant';
9
+ import { ConfigService } from '@nestjs/config';
10
+ import axios from 'axios';
11
+ import { WorkflowAutomationEngineService } from 'src/module/workflow-automation/service/workflow-automation-engine.service';
12
+
13
+ @Injectable()
14
+ export class ActionDataRepository extends EntityServiceImpl {
15
+ constructor(
16
+ @InjectRepository(ActionDataEntity)
17
+ private readonly actionDataRepo: Repository<ActionDataEntity>,
18
+ private readonly dataSource: DataSource,
19
+ // @InjectRepository(FormDataEntity)
20
+ // private readonly formRepo: Repository<FormDataEntity>,
21
+ @InjectRepository(TaskDataEntity)
22
+ private readonly TaskRepository: Repository<TaskDataEntity>,
23
+ private readonly configService: ConfigService,
24
+ private readonly workflowAutomationEngineService: WorkflowAutomationEngineService,
25
+ ) {
26
+ super();
27
+ }
28
+
29
+ async saveActionData(
30
+ action: any,
31
+ loggedInUser: UserData,
32
+ mapped_entity_id,
33
+ mapped_entity_type,
34
+ ): Promise<any> {
35
+ if (!action?.length) return;
36
+
37
+ // Find the action with the lowest sequence
38
+ const minSequence = Math.min(...action.map((a) => a.sequence));
39
+
40
+ if (action.length > 0) {
41
+ for (const act of action) {
42
+ const is_mandatory = await this.dataSource.query(
43
+ `SELECT code FROM frm_list_master_items WHERE id = ? and organization_id = ? LIMIT 1;`,
44
+ [act.action_requirement, loggedInUser.organization_id],
45
+ );
46
+ const isFirst = act.sequence == minSequence;
47
+ const actionData = this.actionDataRepo.create({
48
+ stage_id: act.stage_id,
49
+ user_id: loggedInUser.id,
50
+ action_id: act.id,
51
+ sequence: act.sequence,
52
+ name: act.name,
53
+ organization_id: loggedInUser.organization_id,
54
+ mapped_entity_id,
55
+ mapped_entity_type,
56
+ is_current: isFirst ? 'Y' : null,
57
+ start_time: isFirst ? new Date() : null,
58
+ is_mandatory: is_mandatory[0]?.code === 'mandatory' ? true : false,
59
+ category: act?.action_category_code,
60
+ } as ActionDataEntity);
61
+ await this.actionDataRepo.save(actionData);
62
+
63
+ // SEND ANY FORM
64
+ // if the action_category_code is 'SDFM', create a entry in crm_lead_form table
65
+ if (act?.action_category_code === 'SDFM') {
66
+ const dynamicFormURL = await this.generateFormURL(
67
+ mapped_entity_type,
68
+ mapped_entity_id,
69
+ act.form_id,
70
+ loggedInUser,
71
+ );
72
+
73
+ const viewMaster = await super.getEntityData(
74
+ 'VMS',
75
+ Number(act.form_id),
76
+ loggedInUser,
77
+ );
78
+
79
+ const now = new Date();
80
+ const istOffset = 5.5 * 60; // IST is UTC +5:30 in minutes
81
+ const istDate = new Date(now.getTime() + istOffset * 60 * 1000);
82
+
83
+ const data = {
84
+ entity_type: 'LFRM',
85
+ name: viewMaster?.name,
86
+ stage_id: act.stage_id,
87
+ mapped_entity_type,
88
+ mapped_entity_id,
89
+ view_id: act.form_id,
90
+ form_url: dynamicFormURL,
91
+ status: FORM_STATUS_TO_BE_SENT,
92
+ action_id: act.id,
93
+ created_date: istDate,
94
+ pdf_template: act.pdf_template
95
+ };
96
+
97
+ const createdEntity = await super.createEntity(
98
+ data as any,
99
+ loggedInUser,
100
+ );
101
+ // THEN INSERT SDFM IN RELATION TASK TABLE
102
+
103
+ let relationData = await this.dataSource.query(
104
+ `SELECT * FROM frm_entity_relation WHERE source_entity_type = ? AND target_entity_type = ?`,
105
+ [createdEntity.mapped_entity_type, createdEntity.entity_type],
106
+ );
107
+
108
+ if (relationData) {
109
+ await this.dataSource.query(
110
+ `INSERT INTO frm_entity_relation_data (organization_id, source_entity_id, source_entity_type, target_entity_id, target_entity_type, relation_type) VALUES (?, ?, ?, ?, ?,?)`,
111
+ [
112
+ loggedInUser.organization_id,
113
+ createdEntity.mapped_entity_id,
114
+ createdEntity.mapped_entity_type,
115
+ createdEntity.id,
116
+ createdEntity.entity_type,
117
+ relationData[0]?.relation_type,
118
+ ],
119
+ );
120
+ }
121
+
122
+ await this.workflowAutomationEngineService.handleEntityEvent(
123
+ createdEntity.entity_type,
124
+ 'CREATE',
125
+ createdEntity,
126
+ loggedInUser,
127
+ null,
128
+ );
129
+ }
130
+ }
131
+ }
132
+ }
133
+
134
+ async updateActionStatus(
135
+ loggedInUser: UserData,
136
+ mapped_entity_type: string,
137
+ mapped_entity_id: number,
138
+ stage_id: number,
139
+ action_id: number,
140
+ ): Promise<any> {
141
+ const actionData = await this.actionDataRepo.findOne({
142
+ where: {
143
+ mapped_entity_type,
144
+ mapped_entity_id,
145
+ stage_id,
146
+ action_id,
147
+ },
148
+ });
149
+
150
+ if (!actionData) return;
151
+
152
+ actionData.end_time = new Date();
153
+ actionData.modified_by = loggedInUser.id;
154
+ actionData.modified_date = new Date();
155
+ actionData.is_done = true;
156
+ actionData.is_current = 'N'; // Mark as not current
157
+
158
+ // Save the updated action
159
+ await this.actionDataRepo.update(actionData.id, actionData);
160
+
161
+ // NOW, ACTIVATE THE NEXT ACTION (moveNextActionData logic here)
162
+ // Find next sequence action for the same entity/stage
163
+ const allActionData = await this.actionDataRepo.find({
164
+ where: { mapped_entity_type, mapped_entity_id, stage_id },
165
+ order: { sequence: 'ASC' },
166
+ });
167
+
168
+ // Find the action with the next higher sequence number
169
+ const nextAction = allActionData.find(
170
+ (a) => a.sequence > actionData.sequence,
171
+ );
172
+ if (nextAction && nextAction.is_current !== 'Y') {
173
+ nextAction.is_current = 'Y';
174
+ nextAction.start_time = new Date();
175
+ nextAction.modified_by = loggedInUser.id;
176
+ nextAction.modified_date = new Date();
177
+ await this.actionDataRepo.update(nextAction.id, nextAction);
178
+ }
179
+
180
+ // Optionally return both for audit
181
+ return { finished: actionData, activated: nextAction ?? null };
182
+ }
183
+
184
+ async resubmitAction(
185
+ organization_id: number,
186
+ mapped_entity_type: string,
187
+ mapped_entity_id: number,
188
+ stage_id: number,
189
+ action_id: number,
190
+ ) {
191
+ // Get the current active action
192
+ const currentAction = await this.actionDataRepo.findOne({
193
+ where: {
194
+ organization_id,
195
+ stage_id,
196
+ mapped_entity_id,
197
+ mapped_entity_type,
198
+ action_id,
199
+ is_current: 'Y',
200
+ },
201
+ });
202
+
203
+ if (!currentAction) {
204
+ // skip
205
+ return;
206
+ }
207
+
208
+ // Find the immediate previous action in the sequence
209
+ const previousAction = await this.actionDataRepo.findOne({
210
+ where: {
211
+ organization_id,
212
+ stage_id,
213
+ mapped_entity_id,
214
+ mapped_entity_type,
215
+ sequence: LessThan(currentAction.sequence),
216
+ },
217
+ order: { sequence: 'DESC' }, // immediate previous
218
+ });
219
+
220
+ if (!previousAction) {
221
+ // no previous action means we cannot resubmit
222
+ return;
223
+ }
224
+
225
+ // Unset current action
226
+ currentAction.is_current = null as any;
227
+ currentAction.modified_date = new Date();
228
+ currentAction.modified_by = organization_id;
229
+ currentAction.start_time = null as any;
230
+ currentAction.resubmit_count = (currentAction.resubmit_count ?? 0) + 1;
231
+
232
+ await this.actionDataRepo.update(currentAction.id, currentAction);
233
+
234
+ // Mark previous action as current again
235
+ previousAction.is_current = 'Y';
236
+ previousAction.modified_date = new Date();
237
+ previousAction.modified_by = organization_id;
238
+ previousAction.end_time = null as any; // Reset end time
239
+ previousAction.is_done = false;
240
+ await this.actionDataRepo.update(previousAction.id, previousAction);
241
+
242
+ // reverse the status of tasks for the previous action
243
+ const tasksForPrevAction = await this.TaskRepository.find({
244
+ where: {
245
+ action_id: String(previousAction.action_id),
246
+ mapped_entity_type,
247
+ mapped_entity_id,
248
+ stage_id: String(previousAction.stage_id),
249
+ is_done: true,
250
+ },
251
+ });
252
+
253
+ if (tasksForPrevAction.length > 0) {
254
+ for (const task of tasksForPrevAction) {
255
+ task.modified_date = new Date();
256
+ task.is_done = false;
257
+
258
+ // Reset status (optional: set to something like 'pending' if needed)
259
+ const pendingListMasterItemId = await this.dataSource.query(
260
+ `SELECT id FROM frm_list_master_items WHERE code = 'in_progress' AND organization_id = ? AND listtype = 'TKST' LIMIT 1;`,
261
+ [organization_id],
262
+ );
263
+ task.status = pendingListMasterItemId[0]?.id ?? task.status;
264
+
265
+ await this.TaskRepository.update(task.id, task);
266
+ }
267
+ }
268
+
269
+ return {
270
+ message: 'Action resubmitted successfully',
271
+ revertedTo: previousAction,
272
+ updated: currentAction,
273
+ };
274
+ }
275
+
276
+ // method to dynamically generate form URL
277
+ async generateFormURL(
278
+ mapped_entity_type: string,
279
+ mapped_entity_id: number,
280
+ view_id: number,
281
+ loggedInUser: any,
282
+ ) {
283
+ let organizationData;
284
+
285
+ try {
286
+ const baseUrl = this.configService.get<string>('REDIRECT_BE_URL');
287
+
288
+ // Prepare query params
289
+ const queryParams = new URLSearchParams({
290
+ loggedInUser: JSON.stringify(loggedInUser),
291
+ }).toString();
292
+
293
+ const { level_id } = loggedInUser;
294
+
295
+ const url = `${baseUrl}/organization/public/${level_id}?entity_type=ORGP&${queryParams}`;
296
+
297
+ const response = await axios.get(url);
298
+
299
+ organizationData = response.data;
300
+
301
+ // The API response is likely a JSON object, not an array
302
+ } catch (error) {
303
+ console.error('Internal Entity API call failed:', error.message);
304
+ }
305
+
306
+ const org_slug = organizationData[0]?.slug;
307
+
308
+ // fetch required var from config or env
309
+ const profile = this.configService.get('PROFILE');
310
+ const baseUrl = this.configService.get('BASE_URL');
311
+ const domainUrl = this.configService.get('DOMAIN_URL');
312
+
313
+ if (!profile || !baseUrl || !domainUrl) {
314
+ throw new BadRequestException(
315
+ `Configuration variable missing for form URL generation`,
316
+ );
317
+ }
318
+
319
+ let finalBaseUrl: string;
320
+
321
+ if (profile === 'DEV' || profile === 'STAGING') {
322
+ finalBaseUrl = baseUrl;
323
+ } else if (profile === 'UAT' || profile === 'PREPROD') {
324
+ // fetch org_slug from DB if needed
325
+ finalBaseUrl = `https://${org_slug}.${domainUrl}`;
326
+ } else {
327
+ finalBaseUrl = baseUrl;
328
+ }
329
+
330
+ const formURL = `${finalBaseUrl}/form/${mapped_entity_type}/${mapped_entity_id}/${view_id}`;
331
+
332
+ return formURL;
333
+ }
334
+ }