rez_core 5.0.181 → 6.5.0
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.
- package/.claude/settings.local.json +26 -0
- package/.idea/250218_nodejs_core.iml +8 -11
- package/.idea/codeStyles/Project.xml +58 -58
- package/.idea/codeStyles/codeStyleConfig.xml +4 -4
- package/.idea/copilot.data.migration.agent.xml +6 -0
- package/.idea/copilot.data.migration.ask.xml +6 -0
- package/.idea/copilot.data.migration.ask2agent.xml +6 -0
- package/.idea/copilot.data.migration.edit.xml +6 -0
- package/.idea/inspectionProfiles/Project_Default.xml +1 -1
- package/.idea/misc.xml +6 -0
- package/.idea/modules.xml +7 -7
- package/.idea/prettier.xml +5 -5
- package/.idea/vcs.xml +5 -5
- package/.prettierrc +3 -3
- package/README.md +99 -99
- package/dist/module/auth/guards/role.guard.js +3 -3
- package/dist/module/enterprise/controller/enterprise.controller.d.ts +12 -0
- package/dist/module/enterprise/controller/enterprise.controller.js +57 -0
- package/dist/module/enterprise/controller/enterprise.controller.js.map +1 -0
- package/dist/module/enterprise/controller/organization.controller.d.ts +11 -1
- package/dist/module/enterprise/controller/organization.controller.js +62 -2
- package/dist/module/enterprise/controller/organization.controller.js.map +1 -1
- package/dist/module/enterprise/enterprise.module.js +2 -1
- package/dist/module/enterprise/enterprise.module.js.map +1 -1
- package/dist/module/enterprise/entity/enterprise.entity.d.ts +1 -3
- package/dist/module/enterprise/entity/enterprise.entity.js +4 -12
- package/dist/module/enterprise/entity/enterprise.entity.js.map +1 -1
- package/dist/module/enterprise/entity/organization.entity.d.ts +1 -17
- package/dist/module/enterprise/entity/organization.entity.js +4 -72
- package/dist/module/enterprise/entity/organization.entity.js.map +1 -1
- package/dist/module/enterprise/repository/enterprise.repository.d.ts +2 -2
- package/dist/module/enterprise/repository/enterprise.repository.js +9 -4
- package/dist/module/enterprise/repository/enterprise.repository.js.map +1 -1
- package/dist/module/enterprise/service/enterprise.service.d.ts +2 -2
- package/dist/module/enterprise/service/enterprise.service.js +4 -4
- package/dist/module/enterprise/service/enterprise.service.js.map +1 -1
- package/dist/module/enterprise/service/organization.service.d.ts +2 -2
- package/dist/module/enterprise/service/organization.service.js +97 -20
- package/dist/module/enterprise/service/organization.service.js.map +1 -1
- package/dist/module/filter/entity/saved-filter-master.entity.d.ts +1 -0
- package/dist/module/filter/entity/saved-filter-master.entity.js +4 -0
- package/dist/module/filter/entity/saved-filter-master.entity.js.map +1 -1
- package/dist/module/filter/repository/saved-filter.repository.js +2 -0
- package/dist/module/filter/repository/saved-filter.repository.js.map +1 -1
- package/dist/module/filter/service/filter.service.js +19 -19
- package/dist/module/integration/examples/usage.example.js +9 -9
- package/dist/module/meta/repository/attribute-master.repository.js +8 -8
- package/dist/module/meta/service/entity-dynamic.service.js +16 -16
- package/dist/module/meta/service/media-data.service.js +6 -6
- package/dist/module/meta/service/resolver.service.js +11 -11
- package/dist/module/module/repository/menu.repository.js +4 -4
- package/dist/module/notification/service/notification.service.js +6 -6
- package/dist/module/user/controller/login.controller.js +18 -18
- package/dist/module/workflow/repository/action.repository.js +2 -2
- package/dist/module/workflow/repository/stage.repository.js +8 -8
- package/dist/module/workflow/service/action-template-mapping.service.js +2 -2
- package/dist/module/workflow/service/action.service.js +5 -5
- package/dist/module/workflow/service/entity-modification.service.js +2 -2
- package/dist/module/workflow/service/task.service.js +8 -8
- package/dist/module/workflow-automation/service/schedule-handler.service.js +9 -9
- package/dist/table.config.d.ts +1 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/service/reflection-helper.service.js +2 -2
- package/docs/modules/event-driven-integration-design.md +91 -91
- package/docs/modules/integration.md +250 -250
- package/eslint.config.mjs +34 -34
- package/nest-cli.json +14 -14
- package/package.json +125 -125
- package/server.log +850 -0
- package/src/app.controller.ts +12 -12
- package/src/app.module.ts +68 -68
- package/src/app.service.ts +8 -8
- package/src/config/bull.config.ts +69 -69
- package/src/config/config.module.ts +17 -17
- package/src/config/database.config.ts +48 -48
- package/src/constant/global.constant.ts +67 -67
- package/src/core.module.ts +94 -94
- package/src/decorators/roles.decorator.ts +7 -7
- package/src/dtos/response.dto.ts +6 -6
- package/src/dtos/response.ts +5 -5
- package/src/index.ts +1 -1
- package/src/module/auth/auth.module.ts +49 -49
- package/src/module/auth/controller/auth.controller.ts +28 -28
- package/src/module/auth/guards/google-auth.guard.ts +9 -9
- package/src/module/auth/guards/jwt.guard.ts +22 -22
- package/src/module/auth/guards/role.guard.ts +68 -68
- package/src/module/auth/services/auth.service.ts +56 -56
- package/src/module/auth/services/jwt.service.ts +11 -11
- package/src/module/auth/strategies/google.strategy.ts +54 -54
- package/src/module/auth/strategies/jwt.strategy.ts +58 -58
- package/src/module/auth/strategies/local.strategy.ts +13 -13
- package/src/module/dashboard/controller/dashboard.controller.ts +38 -38
- package/src/module/dashboard/dashboard.module.ts +21 -21
- package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
- package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
- package/src/module/dashboard/repository/dashboard.repository.ts +49 -49
- package/src/module/dashboard/service/dashboard.service.ts +72 -72
- package/src/module/enterprise/controller/enterprise.controller.ts +40 -0
- package/src/module/enterprise/controller/organization.controller.ts +93 -36
- package/src/module/enterprise/enterprise.module.ts +46 -45
- package/src/module/enterprise/entity/enterprise.entity.ts +31 -37
- package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
- package/src/module/enterprise/entity/organization.entity.ts +40 -92
- package/src/module/enterprise/repository/enterprise.repository.ts +39 -31
- package/src/module/enterprise/repository/organization.repository.ts +26 -26
- package/src/module/enterprise/repository/school.repository.ts +272 -272
- package/src/module/enterprise/service/brand.service.ts +5 -5
- package/src/module/enterprise/service/enterprise.service.ts +22 -16
- package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
- package/src/module/enterprise/service/organization.service.ts +262 -145
- package/src/module/entity_json/controller/entity_json.controller.ts +47 -47
- package/src/module/entity_json/entity/entityJson.entity.ts +39 -39
- package/src/module/entity_json/entity_json.module.ts +18 -18
- package/src/module/entity_json/service/entityJson.repository.ts +37 -37
- package/src/module/entity_json/service/entity_json.service.ts +241 -241
- package/src/module/export/controller/export.controller.ts +83 -83
- package/src/module/export/export.module.ts +14 -14
- package/src/module/export/service/export.service.ts +105 -105
- package/src/module/filter/controller/filter.controller.ts +87 -87
- package/src/module/filter/dto/filter-request.dto.ts +39 -39
- package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
- package/src/module/filter/entity/saved-filter-master.entity.ts +35 -32
- package/src/module/filter/filter.module.ts +33 -33
- package/src/module/filter/repository/saved-filter.repository.ts +247 -258
- package/src/module/filter/repository/saved.filter-detail.repository.ts +19 -19
- package/src/module/filter/service/filter-evaluator.service.ts +82 -82
- package/src/module/filter/service/filter.service.ts +1316 -1316
- package/src/module/filter/service/saved-filter.service.ts +164 -164
- package/src/module/ics/controller/ics.controller.ts +21 -21
- package/src/module/ics/dto/ics.dto.ts +55 -55
- package/src/module/ics/ics.module.ts +13 -13
- package/src/module/ics/service/ics.service.ts +57 -57
- package/src/module/integration/controller/calender-event.controller.ts +31 -31
- package/src/module/integration/controller/integration.controller.ts +662 -662
- package/src/module/integration/controller/wrapper.controller.ts +37 -37
- package/src/module/integration/dto/create-config.dto.ts +526 -526
- package/src/module/integration/entity/integration-config.entity.ts +112 -112
- package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
- package/src/module/integration/entity/integration-source.entity.ts +17 -17
- package/src/module/integration/entity/user-integration.entity.ts +71 -71
- package/src/module/integration/examples/usage.example.ts +338 -338
- package/src/module/integration/factories/base.factory.ts +7 -7
- package/src/module/integration/factories/email.factory.ts +49 -49
- package/src/module/integration/factories/integration.factory.ts +121 -121
- package/src/module/integration/factories/sms.factory.ts +51 -51
- package/src/module/integration/factories/telephone.factory.ts +41 -41
- package/src/module/integration/factories/whatsapp.factory.ts +56 -56
- package/src/module/integration/integration.module.ts +110 -110
- package/src/module/integration/service/calendar-event.service.ts +118 -118
- package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
- package/src/module/integration/service/integration-queue.service.ts +229 -229
- package/src/module/integration/service/integration.service.ts +2634 -2634
- package/src/module/integration/service/oauth.service.ts +224 -224
- package/src/module/integration/service/wrapper.service.ts +753 -753
- package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
- package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
- package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
- package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
- package/src/module/integration/strategies/integration.strategy.ts +97 -97
- package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
- package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
- package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
- package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
- package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
- package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
- package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
- package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
- package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
- package/src/module/layout/controller/layout.controller.ts +47 -47
- package/src/module/layout/entity/header-items.entity.ts +28 -28
- package/src/module/layout/entity/header-section.entity.ts +19 -19
- package/src/module/layout/layout.module.ts +21 -21
- package/src/module/layout/repository/header-items.repository.ts +18 -18
- package/src/module/layout/repository/header-section.repository.ts +22 -22
- package/src/module/layout/service/header-section.service.ts +25 -25
- package/src/module/layout_preference/controller/layout_preference.controller.ts +76 -76
- package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
- package/src/module/layout_preference/layout_preference.module.ts +22 -22
- package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
- package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
- package/src/module/lead/controller/lead.controller.ts +30 -30
- package/src/module/lead/lead.module.ts +14 -14
- package/src/module/lead/repository/lead.repository.ts +41 -41
- package/src/module/lead/service/lead.service.ts +54 -54
- package/src/module/linked_attributes/controller/linked_attributes.controller.ts +37 -37
- package/src/module/linked_attributes/entity/linked_attribute.entity.ts +51 -51
- package/src/module/linked_attributes/linked_attributes.module.ts +16 -16
- package/src/module/linked_attributes/repository/linked_attribute.repository.ts +12 -12
- package/src/module/linked_attributes/service/linked_attributes.service.ts +73 -73
- package/src/module/listmaster/controller/list-master.controller.ts +230 -230
- package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
- package/src/module/listmaster/entity/list-master.entity.ts +33 -33
- package/src/module/listmaster/listmaster.module.ts +46 -46
- package/src/module/listmaster/repository/list-master-items.repository.ts +173 -173
- package/src/module/listmaster/repository/list-master.repository.ts +56 -56
- package/src/module/listmaster/service/list-master-engine.ts +19 -19
- package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
- package/src/module/listmaster/service/list-master-item.service.ts +280 -280
- package/src/module/listmaster/service/list-master-registry.ts +15 -15
- package/src/module/listmaster/service/list-master.service.ts +527 -527
- package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
- package/src/module/mapper/controller/mapper.controller.ts +20 -20
- package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
- package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
- package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
- package/src/module/mapper/entity/mapper.entity.ts +16 -16
- package/src/module/mapper/mapper.module.ts +35 -35
- package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
- package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
- package/src/module/mapper/repository/mapper.repository.ts +32 -32
- package/src/module/mapper/service/field-mapper.service.ts +269 -269
- package/src/module/mapper/service/mapper.service.ts +80 -80
- package/src/module/master/controller/master.controller.ts +74 -74
- package/src/module/master/service/master.service.ts +484 -484
- package/src/module/meta/controller/app-master.controller.ts +38 -38
- package/src/module/meta/controller/attribute-master.controller.ts +84 -84
- package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
- package/src/module/meta/controller/entity-master.controller.ts +41 -41
- package/src/module/meta/controller/entity-relation.controller.ts +36 -36
- package/src/module/meta/controller/entity.controller.ts +308 -308
- package/src/module/meta/controller/entity.public.controller.ts +75 -75
- package/src/module/meta/controller/media.controller.ts +135 -135
- package/src/module/meta/controller/meta.controller.ts +101 -101
- package/src/module/meta/controller/view-master.controller.ts +79 -79
- package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
- package/src/module/meta/dto/entity-tab.dto.ts +4 -4
- package/src/module/meta/dto/entity-table.dto.ts +12 -12
- package/src/module/meta/entity/app-master.entity.ts +37 -37
- package/src/module/meta/entity/attribute-master.entity.ts +92 -92
- package/src/module/meta/entity/base-entity.entity.ts +75 -75
- package/src/module/meta/entity/entity-master.entity.ts +85 -85
- package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
- package/src/module/meta/entity/entity-relation.entity.ts +23 -23
- package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
- package/src/module/meta/entity/entity-table.entity.ts +50 -50
- package/src/module/meta/entity/media-data.entity.ts +32 -32
- package/src/module/meta/entity/preference.entity.ts +62 -62
- package/src/module/meta/entity/view-master.entity.ts +41 -41
- package/src/module/meta/entity.module.ts +165 -165
- package/src/module/meta/repository/app-master.repository.ts +20 -20
- package/src/module/meta/repository/attribute-master.repository.ts +164 -164
- package/src/module/meta/repository/entity-attribute-update.repository.ts +48 -48
- package/src/module/meta/repository/entity-master.repository.ts +120 -120
- package/src/module/meta/repository/entity-relation.repository.ts +22 -22
- package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
- package/src/module/meta/repository/entity-table.repository.ts +53 -53
- package/src/module/meta/repository/media-data.repository.ts +50 -50
- package/src/module/meta/repository/preference.repository.ts +20 -20
- package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
- package/src/module/meta/repository/view-master.repository.ts +42 -42
- package/src/module/meta/service/app-master.service.ts +37 -37
- package/src/module/meta/service/attribute-master.service.ts +132 -132
- package/src/module/meta/service/common.service.ts +9 -9
- package/src/module/meta/service/entity-attribute-update.service.ts +26 -26
- package/src/module/meta/service/entity-dynamic.service.ts +824 -824
- package/src/module/meta/service/entity-master.service.ts +171 -171
- package/src/module/meta/service/entity-realation-data.service.ts +9 -9
- package/src/module/meta/service/entity-relation.service.ts +74 -74
- package/src/module/meta/service/entity-service-impl.service.ts +388 -388
- package/src/module/meta/service/entity-table-column.service.ts +26 -26
- package/src/module/meta/service/entity-table.service.ts +157 -157
- package/src/module/meta/service/entity-validation.service.ts +188 -188
- package/src/module/meta/service/entity.service.ts +49 -49
- package/src/module/meta/service/field-group.service.ts +103 -103
- package/src/module/meta/service/media-data.service.ts +591 -591
- package/src/module/meta/service/populate-meta.service.ts +222 -222
- package/src/module/meta/service/preference.service.ts +16 -16
- package/src/module/meta/service/resolver.service.ts +280 -280
- package/src/module/meta/service/section-master.service.ts +104 -104
- package/src/module/meta/service/update-form-json.service.ts +22 -22
- package/src/module/meta/service/user-app-mapping.service.ts +17 -17
- package/src/module/meta/service/view-master.service.ts +127 -127
- package/src/module/microservice-client/microservice-clients.module.ts +13 -13
- package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
- package/src/module/microservice-client/service/microservice-clients.ts +4 -4
- package/src/module/module/controller/menu.controller.ts +15 -15
- package/src/module/module/controller/module-access.controller.ts +133 -133
- package/src/module/module/entity/menu.entity.ts +43 -43
- package/src/module/module/entity/module-access.entity.ts +25 -25
- package/src/module/module/entity/module-action.entity.ts +17 -17
- package/src/module/module/entity/module.entity.ts +52 -52
- package/src/module/module/module.module.ts +42 -42
- package/src/module/module/repository/menu.repository.ts +186 -186
- package/src/module/module/repository/module-access.repository.ts +344 -344
- package/src/module/module/service/menu.service.ts +82 -82
- package/src/module/module/service/module-access.service.ts +189 -189
- package/src/module/notification/controller/notification.controller.ts +58 -58
- package/src/module/notification/controller/otp.controller.ts +117 -117
- package/src/module/notification/entity/notification.entity.ts +26 -26
- package/src/module/notification/entity/otp.entity.ts +28 -28
- package/src/module/notification/firebase-admin.config.ts +22 -22
- package/src/module/notification/notification.module.ts +69 -69
- package/src/module/notification/repository/otp.repository.ts +27 -27
- package/src/module/notification/service/email.service.ts +127 -127
- package/src/module/notification/service/notification.service.ts +164 -164
- package/src/module/notification/service/otp.service.ts +133 -133
- package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
- package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
- package/src/module/third-party-module/service/api-registry.service.ts +13 -13
- package/src/module/third-party-module/third-party.module.ts +12 -12
- package/src/module/user/controller/login.controller.ts +198 -198
- package/src/module/user/controller/user.controller.ts +40 -40
- package/src/module/user/dto/create-user.dto.ts +62 -62
- package/src/module/user/dto/update-user.dto.ts +4 -4
- package/src/module/user/entity/role.entity.ts +33 -33
- package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
- package/src/module/user/entity/user-session.entity.ts +73 -73
- package/src/module/user/entity/user.entity.ts +62 -62
- package/src/module/user/repository/role.repository.ts +96 -96
- package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
- package/src/module/user/repository/user.repository.ts +50 -50
- package/src/module/user/repository/userSession.repository.ts +33 -33
- package/src/module/user/service/login.service.ts +326 -326
- package/src/module/user/service/role.service.ts +197 -197
- package/src/module/user/service/user-role-mapping.service.ts +98 -98
- package/src/module/user/service/user-session.service.ts +200 -200
- package/src/module/user/service/user.service.ts +368 -368
- package/src/module/user/user.module.ts +65 -65
- package/src/module/workflow/controller/action-category.controller.ts +54 -54
- package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
- package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
- package/src/module/workflow/controller/action.controller.ts +111 -111
- package/src/module/workflow/controller/activity-log.controller.ts +55 -55
- package/src/module/workflow/controller/comm-template.controller.ts +43 -43
- package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
- package/src/module/workflow/controller/form-master.controller.ts +43 -43
- package/src/module/workflow/controller/stage-group.controller.ts +49 -49
- package/src/module/workflow/controller/stage.controller.ts +51 -51
- package/src/module/workflow/controller/task.controller.ts +77 -77
- package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
- package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
- package/src/module/workflow/controller/workflow.controller.ts +67 -67
- package/src/module/workflow/entity/action-category.entity.ts +38 -38
- package/src/module/workflow/entity/action-data.entity.ts +55 -55
- package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
- package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
- package/src/module/workflow/entity/action.entity.ts +53 -53
- package/src/module/workflow/entity/activity-log.entity.ts +43 -43
- package/src/module/workflow/entity/comm-template.entity.ts +43 -43
- package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
- package/src/module/workflow/entity/form.entity.ts +25 -25
- package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
- package/src/module/workflow/entity/stage-group.entity.ts +23 -23
- package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
- package/src/module/workflow/entity/stage.entity.ts +20 -20
- package/src/module/workflow/entity/task-data.entity.ts +88 -88
- package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
- package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
- package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
- package/src/module/workflow/entity/workflow.entity.ts +20 -20
- package/src/module/workflow/repository/action-category.repository.ts +79 -79
- package/src/module/workflow/repository/action-data.repository.ts +347 -347
- package/src/module/workflow/repository/action.repository.ts +339 -339
- package/src/module/workflow/repository/activity-log.repository.ts +148 -148
- package/src/module/workflow/repository/comm-template.repository.ts +157 -157
- package/src/module/workflow/repository/form-master.repository.ts +50 -50
- package/src/module/workflow/repository/stage-group.repository.ts +186 -186
- package/src/module/workflow/repository/stage-movement.repository.ts +217 -217
- package/src/module/workflow/repository/stage.repository.ts +160 -160
- package/src/module/workflow/repository/task.repository.ts +154 -154
- package/src/module/workflow/repository/workflow.repository.ts +42 -42
- package/src/module/workflow/service/action-category.service.ts +33 -33
- package/src/module/workflow/service/action-data.service.ts +62 -62
- package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
- package/src/module/workflow/service/action-template-mapping.service.ts +137 -137
- package/src/module/workflow/service/action.service.ts +302 -302
- package/src/module/workflow/service/activity-log.service.ts +107 -107
- package/src/module/workflow/service/comm-template.service.ts +181 -181
- package/src/module/workflow/service/entity-modification.service.ts +61 -61
- package/src/module/workflow/service/form-master.service.ts +35 -35
- package/src/module/workflow/service/populate-workflow.service.ts +320 -320
- package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
- package/src/module/workflow/service/stage-group.service.ts +325 -325
- package/src/module/workflow/service/stage.service.ts +197 -197
- package/src/module/workflow/service/task.service.ts +551 -551
- package/src/module/workflow/service/workflow-list-master.service.ts +68 -68
- package/src/module/workflow/service/workflow-meta.service.ts +640 -640
- package/src/module/workflow/service/workflow.service.ts +213 -213
- package/src/module/workflow/workflow.module.ts +180 -180
- package/src/module/workflow-automation/SCHEDULING_GUIDE.md +145 -145
- package/src/module/workflow-automation/controller/workflow-automation.controller.ts +43 -43
- package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
- package/src/module/workflow-automation/entity/workflow-automation.entity.ts +40 -40
- package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
- package/src/module/workflow-automation/interface/action.interface.ts +5 -5
- package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
- package/src/module/workflow-automation/service/schedule-handler.service.ts +168 -168
- package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +219 -219
- package/src/module/workflow-automation/service/workflow-automation.service.ts +476 -476
- package/src/module/workflow-automation/workflow-automation.module.ts +54 -54
- package/src/module/workflow-schedule/INSTALLATION.md +244 -244
- package/src/module/workflow-schedule/MULTI_PROJECT_GUIDE.md +196 -196
- package/src/module/workflow-schedule/README.md +422 -422
- package/src/module/workflow-schedule/constants/schedule.constants.ts +48 -48
- package/src/module/workflow-schedule/controller/workflow-schedule.controller.ts +253 -253
- package/src/module/workflow-schedule/docs/CLAUDE_CODE_GUIDE.md +510 -510
- package/src/module/workflow-schedule/docs/CLAUDE_CODE_PROMPT.md +362 -362
- package/src/module/workflow-schedule/docs/RUN_CLAUDE_CODE.sh +68 -68
- package/src/module/workflow-schedule/dto/create-schedule.dto.ts +147 -147
- package/src/module/workflow-schedule/dto/get-execution-logs.dto.ts +119 -119
- package/src/module/workflow-schedule/dto/update-schedule.dto.ts +96 -96
- package/src/module/workflow-schedule/entities/scheduled-workflow.entity.ts +148 -148
- package/src/module/workflow-schedule/entities/workflow-execution-log.entity.ts +154 -154
- package/src/module/workflow-schedule/interfaces/schedule-job-data.interface.ts +53 -53
- package/src/module/workflow-schedule/interfaces/workflow-schedule-options.interface.ts +12 -12
- package/src/module/workflow-schedule/processors/schedule.processor.ts +620 -620
- package/src/module/workflow-schedule/service/workflow-schedule.service.ts +597 -597
- package/src/module/workflow-schedule/workflow-schedule.module.ts +67 -67
- package/src/resources/dev.properties.yaml +31 -31
- package/src/resources/local.properties.yaml +27 -27
- package/src/resources/properties.module.ts +12 -12
- package/src/resources/properties.yaml.ts +11 -11
- package/src/resources/uat.properties.yaml +31 -31
- package/src/table.config.ts +133 -133
- package/src/utils/dto/excel-data.dto.ts +14 -14
- package/src/utils/dto/excelsheet-data.dto.ts +5 -5
- package/src/utils/service/base64util.service.ts +18 -18
- package/src/utils/service/clockIDGenUtil.service.ts +21 -21
- package/src/utils/service/codeGenerator.service.ts +22 -22
- package/src/utils/service/dateUtil.service.ts +17 -17
- package/src/utils/service/encryptUtil.service.ts +97 -97
- package/src/utils/service/excel-helper.service.ts +72 -72
- package/src/utils/service/excelUtil.service.ts +15 -15
- package/src/utils/service/file-util.service.ts +11 -11
- package/src/utils/service/json-util.service.ts +23 -23
- package/src/utils/service/loggingUtil.service.ts +88 -88
- package/src/utils/service/reflection-helper.service.ts +62 -62
- package/src/utils/service/wbsCodeGen.service.ts +8 -8
- package/src/utils/utils.module.ts +27 -27
- package/tsconfig.build.json +4 -4
- package/tsconfig.json +24 -24
|
@@ -1,320 +1,320 @@
|
|
|
1
|
-
import { create } from 'domain';
|
|
2
|
-
import { CommTemplate } from './../entity/comm-template.entity';
|
|
3
|
-
import { ActionCategory } from './../entity/action-category.entity';
|
|
4
|
-
import { DataSource } from 'typeorm';
|
|
5
|
-
import { PopulateMetaService } from './../../meta/service/populate-meta.service';
|
|
6
|
-
import { Inject, Injectable } from '@nestjs/common';
|
|
7
|
-
import { EntityServiceImpl } from 'src/module/meta/service/entity-service-impl.service';
|
|
8
|
-
import { WorkflowService } from './workflow.service';
|
|
9
|
-
import { UserData } from 'src/module/user/entity/user.entity';
|
|
10
|
-
import { StageGroupService } from './stage-group.service';
|
|
11
|
-
import { StageService } from './stage.service';
|
|
12
|
-
import { ActionService } from './action.service';
|
|
13
|
-
|
|
14
|
-
@Injectable()
|
|
15
|
-
export class PopulateWorkflowService extends EntityServiceImpl {
|
|
16
|
-
constructor(
|
|
17
|
-
private readonly populateMetaService: PopulateMetaService,
|
|
18
|
-
private readonly dataSource: DataSource,
|
|
19
|
-
@Inject('WorkflowService')
|
|
20
|
-
private readonly workflowService: WorkflowService,
|
|
21
|
-
@Inject('StageGroupService')
|
|
22
|
-
private readonly stageGroupService: StageGroupService,
|
|
23
|
-
@Inject('StageService')
|
|
24
|
-
private readonly stageService: StageService,
|
|
25
|
-
@Inject('ActionService')
|
|
26
|
-
private readonly actionService: ActionService,
|
|
27
|
-
) {
|
|
28
|
-
super();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
async populateWorkflowData(organization_id: number, loggedInUser: UserData) {
|
|
32
|
-
const listMasterItemsRepo =
|
|
33
|
-
this.reflectionHelper.getRepoService('ListMasterItems');
|
|
34
|
-
|
|
35
|
-
if (!listMasterItemsRepo) return;
|
|
36
|
-
|
|
37
|
-
let statusRow = await listMasterItemsRepo.findOne({
|
|
38
|
-
where: { code: 'STATUS_ACTIVE', organization_id: organization_id },
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
if (!statusRow) {
|
|
42
|
-
statusRow = await listMasterItemsRepo.findOne({
|
|
43
|
-
where: { code: 'STATUS_ACTIVE', organization_id: -1 },
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const statusValue = statusRow?.id;
|
|
48
|
-
|
|
49
|
-
// template populate
|
|
50
|
-
// Step 1: Fetch default frm_wf_comm_template
|
|
51
|
-
|
|
52
|
-
const commTemplateRepo =
|
|
53
|
-
this.reflectionHelper.getRepoService('CommTemplate');
|
|
54
|
-
|
|
55
|
-
if (!commTemplateRepo) return;
|
|
56
|
-
|
|
57
|
-
const defaultCommTemplates = await commTemplateRepo.find({
|
|
58
|
-
where: {
|
|
59
|
-
organization_id: -1,
|
|
60
|
-
level_type: 'ORG',
|
|
61
|
-
level_id: -1,
|
|
62
|
-
},
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
if (defaultCommTemplates.length > 0) {
|
|
66
|
-
// Step 2: Insert default communication templates for the new organization
|
|
67
|
-
for (const template of defaultCommTemplates) {
|
|
68
|
-
const { id, created_date, modified_date, ...rest } = template;
|
|
69
|
-
await super.createEntity(
|
|
70
|
-
{
|
|
71
|
-
...rest,
|
|
72
|
-
organization_id,
|
|
73
|
-
level_id: organization_id,
|
|
74
|
-
entity_type: 'TEM',
|
|
75
|
-
status: statusValue,
|
|
76
|
-
created_date: new Date(),
|
|
77
|
-
modified_date: new Date(),
|
|
78
|
-
},
|
|
79
|
-
loggedInUser,
|
|
80
|
-
);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const workflowTables = [
|
|
85
|
-
{
|
|
86
|
-
table: 'frm_wf_master',
|
|
87
|
-
entityType: 'WRFW',
|
|
88
|
-
service: 'workflowService',
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
table: 'frm_wf_stage_group',
|
|
92
|
-
entityType: 'WFSG',
|
|
93
|
-
service: 'stageGroupService',
|
|
94
|
-
},
|
|
95
|
-
{ table: 'frm_wf_stage', entityType: 'WFS', service: 'stageService' },
|
|
96
|
-
{ table: 'frm_wf_action', entityType: 'WFAC', service: 'actionService' },
|
|
97
|
-
];
|
|
98
|
-
|
|
99
|
-
const workFlowRepo = this.reflectionHelper.getRepoService('Workflow');
|
|
100
|
-
const stageGroupRepo = this.reflectionHelper.getRepoService('StageGroup');
|
|
101
|
-
const stageRepo = this.reflectionHelper.getRepoService('Stage');
|
|
102
|
-
const actionRepo = this.reflectionHelper.getRepoService('ActionEntity');
|
|
103
|
-
const stageActionMappingRepo =
|
|
104
|
-
this.reflectionHelper.getRepoService('StageActionMapping');
|
|
105
|
-
const workflowLevelMappingRepo = this.reflectionHelper.getRepoService(
|
|
106
|
-
'WorkflowLevelMappingEntity',
|
|
107
|
-
);
|
|
108
|
-
const listMasterRepo =
|
|
109
|
-
this.reflectionHelper.getRepoService('ListMasterData');
|
|
110
|
-
const actionCategoryRepo =
|
|
111
|
-
this.reflectionHelper.getRepoService('ActionCategory');
|
|
112
|
-
const viewMasterRepo = this.reflectionHelper.getRepoService('ViewMaster');
|
|
113
|
-
|
|
114
|
-
// Fetch all base data
|
|
115
|
-
|
|
116
|
-
// === 1. Workflow mapping
|
|
117
|
-
const workflowIdMap: Record<number, number> = {};
|
|
118
|
-
|
|
119
|
-
let transformRepo;
|
|
120
|
-
|
|
121
|
-
transformRepo = workFlowRepo;
|
|
122
|
-
|
|
123
|
-
const workflows = await transformRepo?.find({
|
|
124
|
-
where: {
|
|
125
|
-
organization_id: -1,
|
|
126
|
-
level_type: 'ORG',
|
|
127
|
-
level_id: -1,
|
|
128
|
-
},
|
|
129
|
-
});
|
|
130
|
-
for (const row of workflows) {
|
|
131
|
-
const { id, ...rest } = row;
|
|
132
|
-
const newWf = await this.workflowService.createEntity(
|
|
133
|
-
{
|
|
134
|
-
...rest,
|
|
135
|
-
organization_id,
|
|
136
|
-
level_id: organization_id,
|
|
137
|
-
entity_type: 'WRFW',
|
|
138
|
-
status: statusValue,
|
|
139
|
-
},
|
|
140
|
-
loggedInUser,
|
|
141
|
-
);
|
|
142
|
-
|
|
143
|
-
// adding new entry for workflow level mapping
|
|
144
|
-
|
|
145
|
-
if (!workflowLevelMappingRepo) continue;
|
|
146
|
-
|
|
147
|
-
const newMapping = workflowLevelMappingRepo.create({
|
|
148
|
-
workflow_id: Number(newWf.id),
|
|
149
|
-
mapped_level_id: organization_id.toString(),
|
|
150
|
-
mapped_level_type: 'ORG',
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
await workflowLevelMappingRepo.save(newMapping);
|
|
154
|
-
|
|
155
|
-
workflowIdMap[id] = newWf.id;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// === 2. StageGroup mapping (and save workflow ref from template data!)
|
|
159
|
-
const stageGroupIdMap: Record<number, number> = {};
|
|
160
|
-
// Include mapping from old stageGroupId to old workflowId to help with stage->workflow logic later:
|
|
161
|
-
const stageGroupToWorkflowMap: Record<number, number> = {};
|
|
162
|
-
|
|
163
|
-
transformRepo = stageGroupRepo;
|
|
164
|
-
|
|
165
|
-
const stageGroups = await transformRepo?.find({
|
|
166
|
-
where: {
|
|
167
|
-
organization_id: -1,
|
|
168
|
-
level_type: 'ORG',
|
|
169
|
-
level_id: -1,
|
|
170
|
-
},
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
for (const row of stageGroups) {
|
|
174
|
-
const { id, workflow_id, ...rest } = row;
|
|
175
|
-
const newSg = await this.stageGroupService.createEntity(
|
|
176
|
-
{
|
|
177
|
-
...rest,
|
|
178
|
-
workflow_id: workflowIdMap[workflow_id],
|
|
179
|
-
organization_id,
|
|
180
|
-
level_id: organization_id,
|
|
181
|
-
entity_type: 'WFSG',
|
|
182
|
-
status: statusValue,
|
|
183
|
-
},
|
|
184
|
-
loggedInUser,
|
|
185
|
-
);
|
|
186
|
-
stageGroupIdMap[id] = newSg.id;
|
|
187
|
-
stageGroupToWorkflowMap[id] = workflow_id;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// === 3. Stage mapping — point to stageGroup and workflow
|
|
191
|
-
const stageIdMap: Record<number, number> = {};
|
|
192
|
-
const stageToStageGroupMap: Record<number, number> = {};
|
|
193
|
-
|
|
194
|
-
transformRepo = stageRepo;
|
|
195
|
-
const stages = await transformRepo?.find({
|
|
196
|
-
where: {
|
|
197
|
-
organization_id: -1,
|
|
198
|
-
level_type: 'ORG',
|
|
199
|
-
level_id: -1,
|
|
200
|
-
},
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
for (const row of stages) {
|
|
204
|
-
const { id, stage_group_id, ...rest } = row;
|
|
205
|
-
// Find the original parent workflow_id using the stageGroupToWorkflowMap
|
|
206
|
-
const originalWorkflowId = stageGroupToWorkflowMap[stage_group_id];
|
|
207
|
-
const newStage = await this.stageService.createEntity(
|
|
208
|
-
{
|
|
209
|
-
...rest,
|
|
210
|
-
stage_group_id: stageGroupIdMap[stage_group_id],
|
|
211
|
-
workflow_id: workflowIdMap[originalWorkflowId], // New workflow id!
|
|
212
|
-
organization_id,
|
|
213
|
-
level_id: organization_id,
|
|
214
|
-
entity_type: 'WFS',
|
|
215
|
-
status: statusValue,
|
|
216
|
-
},
|
|
217
|
-
loggedInUser,
|
|
218
|
-
);
|
|
219
|
-
stageIdMap[id] = newStage.id;
|
|
220
|
-
stageToStageGroupMap[id] = stage_group_id; // maintain
|
|
221
|
-
|
|
222
|
-
// step 1 find old stage_id in stage_action_mapper and get all actions_ids
|
|
223
|
-
// step 2 search action in frm_wf_action table with those action_ids
|
|
224
|
-
// step 3 create new action with new stage_id and new workflow_id
|
|
225
|
-
// step 4 save new action
|
|
226
|
-
|
|
227
|
-
if (!stageActionMappingRepo) continue;
|
|
228
|
-
|
|
229
|
-
const stageIds = await stageActionMappingRepo.find({
|
|
230
|
-
where: {
|
|
231
|
-
stage_id: id,
|
|
232
|
-
},
|
|
233
|
-
});
|
|
234
|
-
|
|
235
|
-
const actionIds = stageIds.map((item) => item.action_id);
|
|
236
|
-
|
|
237
|
-
let actions = [] as any[];
|
|
238
|
-
if (actionIds.length > 0) {
|
|
239
|
-
if (!actionRepo) continue;
|
|
240
|
-
|
|
241
|
-
actions = await actionRepo?.findByIds(actionIds);
|
|
242
|
-
} else {
|
|
243
|
-
// No actions to query
|
|
244
|
-
actions = [];
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
console.log(
|
|
248
|
-
`Found ${actions.length} actions for stage ${id} in workflow ${originalWorkflowId}`,
|
|
249
|
-
);
|
|
250
|
-
|
|
251
|
-
// === 4. Action mapping — point to stage, stageGroup, workflow correctly
|
|
252
|
-
for (const row of actions as any[]) {
|
|
253
|
-
const { id, created_date, modified_date, workflow_id, ...rest } = row;
|
|
254
|
-
|
|
255
|
-
const newWorkflowId = workflowIdMap[workflow_id];
|
|
256
|
-
|
|
257
|
-
// Step 1: Get the code of the old is_mandatory field
|
|
258
|
-
|
|
259
|
-
const [oldIsMandatory] = await listMasterItemsRepo.find({
|
|
260
|
-
where: { id: rest.action_requirement },
|
|
261
|
-
});
|
|
262
|
-
|
|
263
|
-
// Step 2: Get all new 'ACRQ' list master items for the organization
|
|
264
|
-
|
|
265
|
-
const newIsMandatoryList = await listMasterItemsRepo.find({
|
|
266
|
-
where: { organization_id: organization_id, listtype: 'ACRQ' },
|
|
267
|
-
});
|
|
268
|
-
|
|
269
|
-
console.log(
|
|
270
|
-
`Populating action for stage ${newStage.id} in workflow ${newWorkflowId}`,
|
|
271
|
-
);
|
|
272
|
-
|
|
273
|
-
console.log(`Old is_mandatory code: ${oldIsMandatory?.code}`);
|
|
274
|
-
console.log(`New is_mandatory list:`, newIsMandatoryList);
|
|
275
|
-
|
|
276
|
-
// Step 3: Find the matching new item with the same code
|
|
277
|
-
const matchedNewMandatory = newIsMandatoryList.find(
|
|
278
|
-
(item) => item.code === oldIsMandatory?.code,
|
|
279
|
-
);
|
|
280
|
-
|
|
281
|
-
console.log(`Matched new mandatory item:`, matchedNewMandatory);
|
|
282
|
-
|
|
283
|
-
if (!actionCategoryRepo) continue;
|
|
284
|
-
|
|
285
|
-
const formActionCategory = await actionCategoryRepo.find({
|
|
286
|
-
where: { id: row.action_category, is_form: true },
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
//get view master form
|
|
290
|
-
|
|
291
|
-
if (!viewMasterRepo) continue;
|
|
292
|
-
|
|
293
|
-
const formViewMaster = await viewMasterRepo.find({
|
|
294
|
-
where: { code: 'LEAD_FORM', organization_id: organization_id },
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
// Step 4: Use the matched new item's id (if found)
|
|
298
|
-
await this.actionService.createEntity(
|
|
299
|
-
{
|
|
300
|
-
...rest,
|
|
301
|
-
stage_id: newStage.id,
|
|
302
|
-
workflow_id: newWorkflowId,
|
|
303
|
-
organization_id,
|
|
304
|
-
action_requirement: matchedNewMandatory?.id ?? null,
|
|
305
|
-
level_id: organization_id,
|
|
306
|
-
entity_type: 'WFA',
|
|
307
|
-
form: formActionCategory.length > 0 ? formViewMaster[0]?.id : null,
|
|
308
|
-
status: statusValue,
|
|
309
|
-
},
|
|
310
|
-
loggedInUser,
|
|
311
|
-
);
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
return {
|
|
316
|
-
message: 'Workflow data populated successfully',
|
|
317
|
-
status: 'success',
|
|
318
|
-
};
|
|
319
|
-
}
|
|
320
|
-
}
|
|
1
|
+
import { create } from 'domain';
|
|
2
|
+
import { CommTemplate } from './../entity/comm-template.entity';
|
|
3
|
+
import { ActionCategory } from './../entity/action-category.entity';
|
|
4
|
+
import { DataSource } from 'typeorm';
|
|
5
|
+
import { PopulateMetaService } from './../../meta/service/populate-meta.service';
|
|
6
|
+
import { Inject, Injectable } from '@nestjs/common';
|
|
7
|
+
import { EntityServiceImpl } from 'src/module/meta/service/entity-service-impl.service';
|
|
8
|
+
import { WorkflowService } from './workflow.service';
|
|
9
|
+
import { UserData } from 'src/module/user/entity/user.entity';
|
|
10
|
+
import { StageGroupService } from './stage-group.service';
|
|
11
|
+
import { StageService } from './stage.service';
|
|
12
|
+
import { ActionService } from './action.service';
|
|
13
|
+
|
|
14
|
+
@Injectable()
|
|
15
|
+
export class PopulateWorkflowService extends EntityServiceImpl {
|
|
16
|
+
constructor(
|
|
17
|
+
private readonly populateMetaService: PopulateMetaService,
|
|
18
|
+
private readonly dataSource: DataSource,
|
|
19
|
+
@Inject('WorkflowService')
|
|
20
|
+
private readonly workflowService: WorkflowService,
|
|
21
|
+
@Inject('StageGroupService')
|
|
22
|
+
private readonly stageGroupService: StageGroupService,
|
|
23
|
+
@Inject('StageService')
|
|
24
|
+
private readonly stageService: StageService,
|
|
25
|
+
@Inject('ActionService')
|
|
26
|
+
private readonly actionService: ActionService,
|
|
27
|
+
) {
|
|
28
|
+
super();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async populateWorkflowData(organization_id: number, loggedInUser: UserData) {
|
|
32
|
+
const listMasterItemsRepo =
|
|
33
|
+
this.reflectionHelper.getRepoService('ListMasterItems');
|
|
34
|
+
|
|
35
|
+
if (!listMasterItemsRepo) return;
|
|
36
|
+
|
|
37
|
+
let statusRow = await listMasterItemsRepo.findOne({
|
|
38
|
+
where: { code: 'STATUS_ACTIVE', organization_id: organization_id },
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
if (!statusRow) {
|
|
42
|
+
statusRow = await listMasterItemsRepo.findOne({
|
|
43
|
+
where: { code: 'STATUS_ACTIVE', organization_id: -1 },
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const statusValue = statusRow?.id;
|
|
48
|
+
|
|
49
|
+
// template populate
|
|
50
|
+
// Step 1: Fetch default frm_wf_comm_template
|
|
51
|
+
|
|
52
|
+
const commTemplateRepo =
|
|
53
|
+
this.reflectionHelper.getRepoService('CommTemplate');
|
|
54
|
+
|
|
55
|
+
if (!commTemplateRepo) return;
|
|
56
|
+
|
|
57
|
+
const defaultCommTemplates = await commTemplateRepo.find({
|
|
58
|
+
where: {
|
|
59
|
+
organization_id: -1,
|
|
60
|
+
level_type: 'ORG',
|
|
61
|
+
level_id: -1,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
if (defaultCommTemplates.length > 0) {
|
|
66
|
+
// Step 2: Insert default communication templates for the new organization
|
|
67
|
+
for (const template of defaultCommTemplates) {
|
|
68
|
+
const { id, created_date, modified_date, ...rest } = template;
|
|
69
|
+
await super.createEntity(
|
|
70
|
+
{
|
|
71
|
+
...rest,
|
|
72
|
+
organization_id,
|
|
73
|
+
level_id: organization_id,
|
|
74
|
+
entity_type: 'TEM',
|
|
75
|
+
status: statusValue,
|
|
76
|
+
created_date: new Date(),
|
|
77
|
+
modified_date: new Date(),
|
|
78
|
+
},
|
|
79
|
+
loggedInUser,
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const workflowTables = [
|
|
85
|
+
{
|
|
86
|
+
table: 'frm_wf_master',
|
|
87
|
+
entityType: 'WRFW',
|
|
88
|
+
service: 'workflowService',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
table: 'frm_wf_stage_group',
|
|
92
|
+
entityType: 'WFSG',
|
|
93
|
+
service: 'stageGroupService',
|
|
94
|
+
},
|
|
95
|
+
{ table: 'frm_wf_stage', entityType: 'WFS', service: 'stageService' },
|
|
96
|
+
{ table: 'frm_wf_action', entityType: 'WFAC', service: 'actionService' },
|
|
97
|
+
];
|
|
98
|
+
|
|
99
|
+
const workFlowRepo = this.reflectionHelper.getRepoService('Workflow');
|
|
100
|
+
const stageGroupRepo = this.reflectionHelper.getRepoService('StageGroup');
|
|
101
|
+
const stageRepo = this.reflectionHelper.getRepoService('Stage');
|
|
102
|
+
const actionRepo = this.reflectionHelper.getRepoService('ActionEntity');
|
|
103
|
+
const stageActionMappingRepo =
|
|
104
|
+
this.reflectionHelper.getRepoService('StageActionMapping');
|
|
105
|
+
const workflowLevelMappingRepo = this.reflectionHelper.getRepoService(
|
|
106
|
+
'WorkflowLevelMappingEntity',
|
|
107
|
+
);
|
|
108
|
+
const listMasterRepo =
|
|
109
|
+
this.reflectionHelper.getRepoService('ListMasterData');
|
|
110
|
+
const actionCategoryRepo =
|
|
111
|
+
this.reflectionHelper.getRepoService('ActionCategory');
|
|
112
|
+
const viewMasterRepo = this.reflectionHelper.getRepoService('ViewMaster');
|
|
113
|
+
|
|
114
|
+
// Fetch all base data
|
|
115
|
+
|
|
116
|
+
// === 1. Workflow mapping
|
|
117
|
+
const workflowIdMap: Record<number, number> = {};
|
|
118
|
+
|
|
119
|
+
let transformRepo;
|
|
120
|
+
|
|
121
|
+
transformRepo = workFlowRepo;
|
|
122
|
+
|
|
123
|
+
const workflows = await transformRepo?.find({
|
|
124
|
+
where: {
|
|
125
|
+
organization_id: -1,
|
|
126
|
+
level_type: 'ORG',
|
|
127
|
+
level_id: -1,
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
for (const row of workflows) {
|
|
131
|
+
const { id, ...rest } = row;
|
|
132
|
+
const newWf = await this.workflowService.createEntity(
|
|
133
|
+
{
|
|
134
|
+
...rest,
|
|
135
|
+
organization_id,
|
|
136
|
+
level_id: organization_id,
|
|
137
|
+
entity_type: 'WRFW',
|
|
138
|
+
status: statusValue,
|
|
139
|
+
},
|
|
140
|
+
loggedInUser,
|
|
141
|
+
);
|
|
142
|
+
|
|
143
|
+
// adding new entry for workflow level mapping
|
|
144
|
+
|
|
145
|
+
if (!workflowLevelMappingRepo) continue;
|
|
146
|
+
|
|
147
|
+
const newMapping = workflowLevelMappingRepo.create({
|
|
148
|
+
workflow_id: Number(newWf.id),
|
|
149
|
+
mapped_level_id: organization_id.toString(),
|
|
150
|
+
mapped_level_type: 'ORG',
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
await workflowLevelMappingRepo.save(newMapping);
|
|
154
|
+
|
|
155
|
+
workflowIdMap[id] = newWf.id;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// === 2. StageGroup mapping (and save workflow ref from template data!)
|
|
159
|
+
const stageGroupIdMap: Record<number, number> = {};
|
|
160
|
+
// Include mapping from old stageGroupId to old workflowId to help with stage->workflow logic later:
|
|
161
|
+
const stageGroupToWorkflowMap: Record<number, number> = {};
|
|
162
|
+
|
|
163
|
+
transformRepo = stageGroupRepo;
|
|
164
|
+
|
|
165
|
+
const stageGroups = await transformRepo?.find({
|
|
166
|
+
where: {
|
|
167
|
+
organization_id: -1,
|
|
168
|
+
level_type: 'ORG',
|
|
169
|
+
level_id: -1,
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
for (const row of stageGroups) {
|
|
174
|
+
const { id, workflow_id, ...rest } = row;
|
|
175
|
+
const newSg = await this.stageGroupService.createEntity(
|
|
176
|
+
{
|
|
177
|
+
...rest,
|
|
178
|
+
workflow_id: workflowIdMap[workflow_id],
|
|
179
|
+
organization_id,
|
|
180
|
+
level_id: organization_id,
|
|
181
|
+
entity_type: 'WFSG',
|
|
182
|
+
status: statusValue,
|
|
183
|
+
},
|
|
184
|
+
loggedInUser,
|
|
185
|
+
);
|
|
186
|
+
stageGroupIdMap[id] = newSg.id;
|
|
187
|
+
stageGroupToWorkflowMap[id] = workflow_id;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// === 3. Stage mapping — point to stageGroup and workflow
|
|
191
|
+
const stageIdMap: Record<number, number> = {};
|
|
192
|
+
const stageToStageGroupMap: Record<number, number> = {};
|
|
193
|
+
|
|
194
|
+
transformRepo = stageRepo;
|
|
195
|
+
const stages = await transformRepo?.find({
|
|
196
|
+
where: {
|
|
197
|
+
organization_id: -1,
|
|
198
|
+
level_type: 'ORG',
|
|
199
|
+
level_id: -1,
|
|
200
|
+
},
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
for (const row of stages) {
|
|
204
|
+
const { id, stage_group_id, ...rest } = row;
|
|
205
|
+
// Find the original parent workflow_id using the stageGroupToWorkflowMap
|
|
206
|
+
const originalWorkflowId = stageGroupToWorkflowMap[stage_group_id];
|
|
207
|
+
const newStage = await this.stageService.createEntity(
|
|
208
|
+
{
|
|
209
|
+
...rest,
|
|
210
|
+
stage_group_id: stageGroupIdMap[stage_group_id],
|
|
211
|
+
workflow_id: workflowIdMap[originalWorkflowId], // New workflow id!
|
|
212
|
+
organization_id,
|
|
213
|
+
level_id: organization_id,
|
|
214
|
+
entity_type: 'WFS',
|
|
215
|
+
status: statusValue,
|
|
216
|
+
},
|
|
217
|
+
loggedInUser,
|
|
218
|
+
);
|
|
219
|
+
stageIdMap[id] = newStage.id;
|
|
220
|
+
stageToStageGroupMap[id] = stage_group_id; // maintain
|
|
221
|
+
|
|
222
|
+
// step 1 find old stage_id in stage_action_mapper and get all actions_ids
|
|
223
|
+
// step 2 search action in frm_wf_action table with those action_ids
|
|
224
|
+
// step 3 create new action with new stage_id and new workflow_id
|
|
225
|
+
// step 4 save new action
|
|
226
|
+
|
|
227
|
+
if (!stageActionMappingRepo) continue;
|
|
228
|
+
|
|
229
|
+
const stageIds = await stageActionMappingRepo.find({
|
|
230
|
+
where: {
|
|
231
|
+
stage_id: id,
|
|
232
|
+
},
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
const actionIds = stageIds.map((item) => item.action_id);
|
|
236
|
+
|
|
237
|
+
let actions = [] as any[];
|
|
238
|
+
if (actionIds.length > 0) {
|
|
239
|
+
if (!actionRepo) continue;
|
|
240
|
+
|
|
241
|
+
actions = await actionRepo?.findByIds(actionIds);
|
|
242
|
+
} else {
|
|
243
|
+
// No actions to query
|
|
244
|
+
actions = [];
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
console.log(
|
|
248
|
+
`Found ${actions.length} actions for stage ${id} in workflow ${originalWorkflowId}`,
|
|
249
|
+
);
|
|
250
|
+
|
|
251
|
+
// === 4. Action mapping — point to stage, stageGroup, workflow correctly
|
|
252
|
+
for (const row of actions as any[]) {
|
|
253
|
+
const { id, created_date, modified_date, workflow_id, ...rest } = row;
|
|
254
|
+
|
|
255
|
+
const newWorkflowId = workflowIdMap[workflow_id];
|
|
256
|
+
|
|
257
|
+
// Step 1: Get the code of the old is_mandatory field
|
|
258
|
+
|
|
259
|
+
const [oldIsMandatory] = await listMasterItemsRepo.find({
|
|
260
|
+
where: { id: rest.action_requirement },
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
// Step 2: Get all new 'ACRQ' list master items for the organization
|
|
264
|
+
|
|
265
|
+
const newIsMandatoryList = await listMasterItemsRepo.find({
|
|
266
|
+
where: { organization_id: organization_id, listtype: 'ACRQ' },
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
console.log(
|
|
270
|
+
`Populating action for stage ${newStage.id} in workflow ${newWorkflowId}`,
|
|
271
|
+
);
|
|
272
|
+
|
|
273
|
+
console.log(`Old is_mandatory code: ${oldIsMandatory?.code}`);
|
|
274
|
+
console.log(`New is_mandatory list:`, newIsMandatoryList);
|
|
275
|
+
|
|
276
|
+
// Step 3: Find the matching new item with the same code
|
|
277
|
+
const matchedNewMandatory = newIsMandatoryList.find(
|
|
278
|
+
(item) => item.code === oldIsMandatory?.code,
|
|
279
|
+
);
|
|
280
|
+
|
|
281
|
+
console.log(`Matched new mandatory item:`, matchedNewMandatory);
|
|
282
|
+
|
|
283
|
+
if (!actionCategoryRepo) continue;
|
|
284
|
+
|
|
285
|
+
const formActionCategory = await actionCategoryRepo.find({
|
|
286
|
+
where: { id: row.action_category, is_form: true },
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
//get view master form
|
|
290
|
+
|
|
291
|
+
if (!viewMasterRepo) continue;
|
|
292
|
+
|
|
293
|
+
const formViewMaster = await viewMasterRepo.find({
|
|
294
|
+
where: { code: 'LEAD_FORM', organization_id: organization_id },
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
// Step 4: Use the matched new item's id (if found)
|
|
298
|
+
await this.actionService.createEntity(
|
|
299
|
+
{
|
|
300
|
+
...rest,
|
|
301
|
+
stage_id: newStage.id,
|
|
302
|
+
workflow_id: newWorkflowId,
|
|
303
|
+
organization_id,
|
|
304
|
+
action_requirement: matchedNewMandatory?.id ?? null,
|
|
305
|
+
level_id: organization_id,
|
|
306
|
+
entity_type: 'WFA',
|
|
307
|
+
form: formActionCategory.length > 0 ? formViewMaster[0]?.id : null,
|
|
308
|
+
status: statusValue,
|
|
309
|
+
},
|
|
310
|
+
loggedInUser,
|
|
311
|
+
);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
return {
|
|
316
|
+
message: 'Workflow data populated successfully',
|
|
317
|
+
status: 'success',
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Injectable } from '@nestjs/common';
|
|
2
|
-
import { EntityServiceImpl } from 'src/module/meta/service/entity-service-impl.service';
|
|
3
|
-
|
|
4
|
-
@Injectable()
|
|
5
|
-
export class StageActionMappingService extends EntityServiceImpl {}
|
|
1
|
+
import { Injectable } from '@nestjs/common';
|
|
2
|
+
import { EntityServiceImpl } from 'src/module/meta/service/entity-service-impl.service';
|
|
3
|
+
|
|
4
|
+
@Injectable()
|
|
5
|
+
export class StageActionMappingService extends EntityServiceImpl {}
|