rez_core 4.0.113 → 4.0.114
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/auth/services/auth.service.js +2 -2
- package/dist/module/filter/repository/saved-filter.repository.js +4 -4
- package/dist/module/filter/service/filter-evaluator.service.js +2 -2
- package/dist/module/filter/service/filter.service.js +22 -22
- package/dist/module/integration/examples/usage.example.js +9 -9
- package/dist/module/integration/service/integration.service.js +1 -1
- package/dist/module/integration/service/wrapper.service.js +25 -25
- package/dist/module/listmaster/service/list-master-item.service.js +2 -2
- package/dist/module/mapper/service/field-mapper.service.js +4 -4
- package/dist/module/mapper/service/mapper.service.js +2 -2
- package/dist/module/meta/service/entity-dynamic.service.js +9 -9
- package/dist/module/meta/service/entity-list.service.js +3 -3
- package/dist/module/meta/service/entity-master.service.js +3 -3
- package/dist/module/meta/service/entity-relation.service.js +11 -11
- package/dist/module/meta/service/entity-service-impl.service.js +3 -3
- package/dist/module/meta/service/resolver.service.js +3 -3
- package/dist/module/module/repository/menu.repository.js +12 -12
- package/dist/module/notification/service/notification.service.js +9 -9
- package/dist/module/user/controller/login.controller.js +18 -18
- package/dist/module/user/service/role.service.js +4 -4
- package/dist/module/user/service/user-session.service.js +2 -2
- package/dist/module/workflow/repository/action.repository.js +20 -20
- package/dist/module/workflow/repository/comm-template.repository.js +6 -6
- package/dist/module/workflow/repository/form-master.repository.js +2 -2
- package/dist/module/workflow/repository/stage-group.repository.js +23 -23
- package/dist/module/workflow/repository/stage-movement.repository.js +15 -15
- package/dist/module/workflow/repository/stage.repository.js +8 -8
- package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
- package/dist/module/workflow/service/action.service.js +7 -7
- package/dist/module/workflow/service/entity-modification.service.js +6 -6
- package/dist/module/workflow/service/stage-group.service.js +2 -2
- package/dist/module/workflow/service/stage.service.js +2 -2
- package/dist/module/workflow/service/task.service.js +28 -28
- package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
- package/dist/module/workflow/service/workflow-meta.service.js +35 -35
- package/dist/module/workflow/service/workflow.service.js +2 -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 +119 -119
- package/server.log +850 -0
- package/src/app.controller.ts +12 -12
- package/src/app.module.ts +52 -52
- package/src/app.service.ts +8 -8
- package/src/config/config.module.ts +18 -18
- package/src/config/database.config.ts +23 -23
- package/src/constant/global.constant.ts +67 -67
- package/src/core.module.ts +81 -81
- 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 +50 -50
- 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 +36 -36
- 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 +42 -42
- package/src/module/dashboard/service/dashboard.service.ts +73 -73
- package/src/module/dev/dev.module.ts +12 -12
- package/src/module/dev/service/dev.service.ts +7 -7
- package/src/module/enterprise/controller/organization.controller.ts +36 -36
- package/src/module/enterprise/enterprise.module.ts +30 -30
- package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
- package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
- package/src/module/enterprise/entity/organization.entity.ts +92 -92
- package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
- package/src/module/enterprise/repository/organization.repository.ts +26 -26
- package/src/module/enterprise/repository/school.repository.ts +278 -278
- package/src/module/enterprise/service/brand.service.ts +5 -5
- package/src/module/enterprise/service/enterprise.service.ts +16 -16
- package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
- package/src/module/enterprise/service/organization.service.ts +145 -145
- package/src/module/filter/controller/filter.controller.ts +84 -84
- package/src/module/filter/dto/filter-request.dto.ts +38 -38
- package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
- package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
- package/src/module/filter/filter.module.ts +31 -31
- package/src/module/filter/repository/saved-filter.repository.ts +168 -168
- package/src/module/filter/service/filter-evaluator.service.ts +86 -86
- package/src/module/filter/service/filter.service.ts +1004 -1004
- package/src/module/filter/service/saved-filter.service.ts +170 -170
- 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 +2633 -2633
- package/src/module/integration/service/oauth.service.ts +224 -224
- package/src/module/integration/service/wrapper.service.ts +493 -493
- 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 +73 -73
- 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/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 +169 -169
- package/src/module/listmaster/repository/list-master.repository.ts +46 -46
- 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 +292 -292
- package/src/module/listmaster/service/list-master-registry.ts +15 -15
- package/src/module/listmaster/service/list-master.service.ts +535 -535
- 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 +34 -34
- 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 +15 -15
- package/src/module/mapper/service/field-mapper.service.ts +266 -266
- package/src/module/mapper/service/mapper.service.ts +79 -79
- package/src/module/master/controller/master.controller.ts +74 -74
- package/src/module/master/service/master.service.ts +483 -483
- package/src/module/meta/controller/app-master.controller.ts +38 -38
- package/src/module/meta/controller/attribute-master.controller.ts +66 -66
- package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
- package/src/module/meta/controller/entity-master.controller.ts +28 -28
- package/src/module/meta/controller/entity-relation.controller.ts +36 -36
- package/src/module/meta/controller/entity.controller.ts +392 -392
- package/src/module/meta/controller/entity.public.controller.ts +75 -75
- package/src/module/meta/controller/media.controller.ts +107 -107
- package/src/module/meta/controller/meta.controller.ts +96 -96
- package/src/module/meta/controller/view-master.controller.ts +86 -86
- 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 +9 -9
- package/src/module/meta/entity/app-master.entity.ts +34 -34
- package/src/module/meta/entity/attribute-master.entity.ts +89 -89
- 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 +158 -158
- package/src/module/meta/repository/app-master.repository.ts +20 -20
- package/src/module/meta/repository/attribute-master.repository.ts +118 -118
- package/src/module/meta/repository/entity-master.repository.ts +69 -69
- 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 +126 -126
- package/src/module/meta/service/common.service.ts +9 -9
- package/src/module/meta/service/entity-dynamic.service.ts +819 -819
- package/src/module/meta/service/entity-list.service.ts +205 -205
- package/src/module/meta/service/entity-master.service.ts +169 -169
- package/src/module/meta/service/entity-realation-data.service.ts +9 -9
- package/src/module/meta/service/entity-relation.service.ts +69 -69
- package/src/module/meta/service/entity-service-impl.service.ts +525 -525
- package/src/module/meta/service/entity-table-column.service.ts +39 -39
- package/src/module/meta/service/entity-table.service.ts +150 -150
- package/src/module/meta/service/entity-validation.service.ts +187 -187
- package/src/module/meta/service/entity.service.ts +67 -67
- package/src/module/meta/service/field-group.service.ts +103 -103
- package/src/module/meta/service/media-data.service.ts +507 -507
- package/src/module/meta/service/populate-meta.service.ts +193 -193
- package/src/module/meta/service/preference.service.ts +16 -16
- package/src/module/meta/service/resolver.service.ts +267 -267
- 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 +134 -134
- 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 +184 -184
- 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 +209 -209
- 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 +163 -163
- package/src/module/notification/service/otp.service.ts +132 -132
- 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 +197 -197
- 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 +59 -59
- 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 +290 -290
- package/src/module/user/service/role.service.ts +189 -189
- package/src/module/user/service/user-role-mapping.service.ts +98 -98
- package/src/module/user/service/user-session.service.ts +168 -168
- package/src/module/user/service/user.service.ts +365 -365
- 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 +48 -48
- package/src/module/workflow/controller/stage.controller.ts +50 -50
- 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 +50 -50
- 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 +333 -333
- package/src/module/workflow/repository/action.repository.ts +323 -323
- package/src/module/workflow/repository/activity-log.repository.ts +148 -148
- package/src/module/workflow/repository/comm-template.repository.ts +149 -149
- package/src/module/workflow/repository/form-master.repository.ts +59 -59
- package/src/module/workflow/repository/stage-group.repository.ts +176 -176
- package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
- package/src/module/workflow/repository/stage.repository.ts +172 -172
- package/src/module/workflow/repository/task.repository.ts +127 -127
- 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 +106 -106
- package/src/module/workflow/service/action.service.ts +279 -279
- package/src/module/workflow/service/activity-log.service.ts +107 -107
- package/src/module/workflow/service/comm-template.service.ts +180 -180
- package/src/module/workflow/service/entity-modification.service.ts +67 -67
- package/src/module/workflow/service/form-master.service.ts +35 -35
- package/src/module/workflow/service/populate-workflow.service.ts +303 -303
- package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
- package/src/module/workflow/service/stage-group.service.ts +319 -319
- package/src/module/workflow/service/stage.service.ts +199 -199
- package/src/module/workflow/service/task.service.ts +560 -560
- package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
- package/src/module/workflow/service/workflow-meta.service.ts +640 -640
- package/src/module/workflow/service/workflow.service.ts +205 -205
- package/src/module/workflow/workflow.module.ts +176 -176
- package/src/module/workflow-automation/controller/workflow-automation.controller.ts +21 -21
- package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
- package/src/module/workflow-automation/entity/workflow-automation.entity.ts +35 -35
- 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/workflow-automation-engine.service.ts +214 -214
- package/src/module/workflow-automation/service/workflow-automation.service.ts +347 -347
- package/src/module/workflow-automation/workflow-automation.module.ts +34 -34
- package/src/resources/dev.properties.yaml +30 -30
- 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 +126 -126
- 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 +34 -34
- 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 +25 -25
- package/tsconfig.build.json +4 -4
- package/tsconfig.json +24 -24
|
@@ -1,303 +1,303 @@
|
|
|
1
|
-
import { ActionCategory } from './../entity/action-category.entity';
|
|
2
|
-
import { DataSource } from 'typeorm';
|
|
3
|
-
import { PopulateMetaService } from './../../meta/service/populate-meta.service';
|
|
4
|
-
import { Inject, Injectable } from '@nestjs/common';
|
|
5
|
-
import { EntityServiceImpl } from 'src/module/meta/service/entity-service-impl.service';
|
|
6
|
-
import { WorkflowService } from './workflow.service';
|
|
7
|
-
import { UserData } from 'src/module/user/entity/user.entity';
|
|
8
|
-
import { StageGroupService } from './stage-group.service';
|
|
9
|
-
import { StageService } from './stage.service';
|
|
10
|
-
import { ActionService } from './action.service';
|
|
11
|
-
|
|
12
|
-
@Injectable()
|
|
13
|
-
export class PopulateWorkflowService extends EntityServiceImpl {
|
|
14
|
-
constructor(
|
|
15
|
-
private readonly populateMetaService: PopulateMetaService,
|
|
16
|
-
private readonly dataSource: DataSource,
|
|
17
|
-
@Inject('WorkflowService')
|
|
18
|
-
private readonly workflowService: WorkflowService,
|
|
19
|
-
@Inject('StageGroupService')
|
|
20
|
-
private readonly stageGroupService: StageGroupService,
|
|
21
|
-
@Inject('StageService')
|
|
22
|
-
private readonly stageService: StageService,
|
|
23
|
-
@Inject('ActionService')
|
|
24
|
-
private readonly actionService: ActionService,
|
|
25
|
-
) {
|
|
26
|
-
super();
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// async populateWorkflowData(organization_id: number, loggedInUser: UserData) {
|
|
30
|
-
// // Define workflow tables
|
|
31
|
-
// const workflowTables = [
|
|
32
|
-
// { table: 'frm_wf_master', entityType: 'WRFW', service: 'workflowService' },
|
|
33
|
-
// {
|
|
34
|
-
// table: 'frm_wf_stage_group',
|
|
35
|
-
// entityType: 'WFSG',
|
|
36
|
-
// service: 'stageGroupService',
|
|
37
|
-
// },
|
|
38
|
-
// { table: 'frm_wf_stage', entityType: 'WFS', service: 'stageService' },
|
|
39
|
-
// { table: 'frm_wf_action', entityType: 'WFAC', service: 'actionService' },
|
|
40
|
-
// ];
|
|
41
|
-
|
|
42
|
-
// const getAllFactoryData = async (table: { table: string }) => {
|
|
43
|
-
// return this.dataSource.query(
|
|
44
|
-
// `SELECT * FROM ${table.table} WHERE organization_id = -1 AND level_type = 'ORG' AND level_id = -1`,
|
|
45
|
-
// );
|
|
46
|
-
// };
|
|
47
|
-
|
|
48
|
-
// const factoryData = await Promise.all(
|
|
49
|
-
// workflowTables.map((table) => getAllFactoryData(table)),
|
|
50
|
-
// );
|
|
51
|
-
|
|
52
|
-
// // Step 1: Insert workflow metadata
|
|
53
|
-
// for (let i = 0; i < workflowTables.length; i++) {
|
|
54
|
-
// const table = workflowTables[i];
|
|
55
|
-
// const data = factoryData[i];
|
|
56
|
-
|
|
57
|
-
// if (!data.length) continue;
|
|
58
|
-
|
|
59
|
-
// // Clean and transform data for insertion
|
|
60
|
-
// const transformedData = data.map((row) => {
|
|
61
|
-
// const { id, created_date, modified_date, ...rest } = row;
|
|
62
|
-
// return {
|
|
63
|
-
// ...rest,
|
|
64
|
-
// organization_id: organization_id,
|
|
65
|
-
// level_id: organization_id,
|
|
66
|
-
// entity_type: table.entityType,
|
|
67
|
-
// };
|
|
68
|
-
// });
|
|
69
|
-
|
|
70
|
-
// const service = this[table.service];
|
|
71
|
-
|
|
72
|
-
// for (const record of transformedData) {
|
|
73
|
-
// await service.createEntity(record, loggedInUser);
|
|
74
|
-
// }
|
|
75
|
-
// }
|
|
76
|
-
|
|
77
|
-
// return {
|
|
78
|
-
// message: 'Workflow data populated successfully',
|
|
79
|
-
// status: 'success',
|
|
80
|
-
// };
|
|
81
|
-
// }
|
|
82
|
-
|
|
83
|
-
async populateWorkflowData(organization_id: number, loggedInUser: UserData) {
|
|
84
|
-
let statusRow = await this.dataSource.query(
|
|
85
|
-
`SELECT * FROM frm_list_master_items WHERE code='STATUS_ACTIVE' AND organization_id = ?`,
|
|
86
|
-
[organization_id],
|
|
87
|
-
);
|
|
88
|
-
|
|
89
|
-
if (statusRow.length === 0) {
|
|
90
|
-
statusRow = await this.dataSource.query(
|
|
91
|
-
`SELECT * FROM frm_list_master_items WHERE code='STATUS_ACTIVE' AND organization_id = -1`,
|
|
92
|
-
);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
const statusValue = statusRow[0]?.id;
|
|
96
|
-
|
|
97
|
-
// template populate
|
|
98
|
-
// Step 1: Fetch default frm_wf_comm_template
|
|
99
|
-
const defaultCommTemplates = await this.dataSource.query(
|
|
100
|
-
`SELECT * FROM frm_wf_comm_template WHERE organization_id = -1 AND level_type = 'ORG' AND level_id = -1`,
|
|
101
|
-
);
|
|
102
|
-
|
|
103
|
-
if (defaultCommTemplates.length > 0) {
|
|
104
|
-
// Step 2: Insert default communication templates for the new organization
|
|
105
|
-
for (const template of defaultCommTemplates) {
|
|
106
|
-
const { id, created_date, modified_date, ...rest } = template;
|
|
107
|
-
await super.createEntity(
|
|
108
|
-
{
|
|
109
|
-
...rest,
|
|
110
|
-
organization_id,
|
|
111
|
-
level_id: organization_id,
|
|
112
|
-
entity_type: 'TEM',
|
|
113
|
-
status: statusValue,
|
|
114
|
-
created_date: new Date(),
|
|
115
|
-
modified_date: new Date(),
|
|
116
|
-
},
|
|
117
|
-
loggedInUser,
|
|
118
|
-
);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
const workflowTables = [
|
|
123
|
-
{ table: 'frm_wf_master', entityType: 'WRFW', service: 'workflowService' },
|
|
124
|
-
{
|
|
125
|
-
table: 'frm_wf_stage_group',
|
|
126
|
-
entityType: 'WFSG',
|
|
127
|
-
service: 'stageGroupService',
|
|
128
|
-
},
|
|
129
|
-
{ table: 'frm_wf_stage', entityType: 'WFS', service: 'stageService' },
|
|
130
|
-
{ table: 'frm_wf_action', entityType: 'WFAC', service: 'actionService' },
|
|
131
|
-
];
|
|
132
|
-
|
|
133
|
-
// Fetch all base data
|
|
134
|
-
const getAllFactoryData = async (table: { table: string }) =>
|
|
135
|
-
this.dataSource.query(
|
|
136
|
-
`SELECT * FROM ${table.table} WHERE organization_id = -1 AND level_type = 'ORG' AND level_id = -1`,
|
|
137
|
-
);
|
|
138
|
-
const factoryData = await Promise.all(
|
|
139
|
-
workflowTables.map(getAllFactoryData),
|
|
140
|
-
);
|
|
141
|
-
const [workflows, stageGroups, stages] = factoryData;
|
|
142
|
-
|
|
143
|
-
// === 1. Workflow mapping
|
|
144
|
-
const workflowIdMap: Record<number, number> = {};
|
|
145
|
-
for (const row of workflows) {
|
|
146
|
-
const { id, ...rest } = row;
|
|
147
|
-
const newWf = await this.workflowService.createEntity(
|
|
148
|
-
{
|
|
149
|
-
...rest,
|
|
150
|
-
organization_id,
|
|
151
|
-
level_id: organization_id,
|
|
152
|
-
entity_type: 'WRFW',
|
|
153
|
-
status: statusValue,
|
|
154
|
-
},
|
|
155
|
-
loggedInUser,
|
|
156
|
-
);
|
|
157
|
-
|
|
158
|
-
// adding new entry for workflow level mapping
|
|
159
|
-
await this.dataSource.query(
|
|
160
|
-
`INSERT INTO frm_wf_level_mapping (workflow_id, mapped_level_id, mapped_level_type) VALUES (?, ?, ?)`,
|
|
161
|
-
[newWf.id, organization_id, 'ORG'],
|
|
162
|
-
);
|
|
163
|
-
|
|
164
|
-
workflowIdMap[id] = newWf.id;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// === 2. StageGroup mapping (and save workflow ref from template data!)
|
|
168
|
-
const stageGroupIdMap: Record<number, number> = {};
|
|
169
|
-
// Include mapping from old stageGroupId to old workflowId to help with stage->workflow logic later:
|
|
170
|
-
const stageGroupToWorkflowMap: Record<number, number> = {};
|
|
171
|
-
for (const row of stageGroups) {
|
|
172
|
-
const { id, workflow_id, ...rest } = row;
|
|
173
|
-
const newSg = await this.stageGroupService.createEntity(
|
|
174
|
-
{
|
|
175
|
-
...rest,
|
|
176
|
-
workflow_id: workflowIdMap[workflow_id],
|
|
177
|
-
organization_id,
|
|
178
|
-
level_id: organization_id,
|
|
179
|
-
entity_type: 'WFSG',
|
|
180
|
-
status: statusValue,
|
|
181
|
-
},
|
|
182
|
-
loggedInUser,
|
|
183
|
-
);
|
|
184
|
-
stageGroupIdMap[id] = newSg.id;
|
|
185
|
-
stageGroupToWorkflowMap[id] = workflow_id;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
// === 3. Stage mapping — point to stageGroup and workflow
|
|
189
|
-
const stageIdMap: Record<number, number> = {};
|
|
190
|
-
const stageToStageGroupMap: Record<number, number> = {};
|
|
191
|
-
for (const row of stages) {
|
|
192
|
-
const { id, stage_group_id, ...rest } = row;
|
|
193
|
-
// Find the original parent workflow_id using the stageGroupToWorkflowMap
|
|
194
|
-
const originalWorkflowId = stageGroupToWorkflowMap[stage_group_id];
|
|
195
|
-
const newStage = await this.stageService.createEntity(
|
|
196
|
-
{
|
|
197
|
-
...rest,
|
|
198
|
-
stage_group_id: stageGroupIdMap[stage_group_id],
|
|
199
|
-
workflow_id: workflowIdMap[originalWorkflowId], // New workflow id!
|
|
200
|
-
organization_id,
|
|
201
|
-
level_id: organization_id,
|
|
202
|
-
entity_type: 'WFS',
|
|
203
|
-
status: statusValue,
|
|
204
|
-
},
|
|
205
|
-
loggedInUser,
|
|
206
|
-
);
|
|
207
|
-
stageIdMap[id] = newStage.id;
|
|
208
|
-
stageToStageGroupMap[id] = stage_group_id; // maintain
|
|
209
|
-
|
|
210
|
-
// step 1 find old stage_id in stage_action_mapper and get all actions_ids
|
|
211
|
-
// step 2 search action in frm_wf_action table with those action_ids
|
|
212
|
-
// step 3 create new action with new stage_id and new workflow_id
|
|
213
|
-
// step 4 save new action
|
|
214
|
-
|
|
215
|
-
const stageIds = await this.dataSource.query(
|
|
216
|
-
`SELECT action_id FROM frm_wf_stage_action_mapping WHERE stage_id = ?`,
|
|
217
|
-
[id],
|
|
218
|
-
);
|
|
219
|
-
|
|
220
|
-
const actionIds = stageIds.map((item) => item.action_id);
|
|
221
|
-
|
|
222
|
-
let actions = [];
|
|
223
|
-
if (actionIds.length > 0) {
|
|
224
|
-
actions = await this.dataSource.query(
|
|
225
|
-
`SELECT * FROM frm_wf_action WHERE id IN (?)`,
|
|
226
|
-
[actionIds],
|
|
227
|
-
);
|
|
228
|
-
} else {
|
|
229
|
-
// No actions to query
|
|
230
|
-
actions = [];
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
console.log(
|
|
234
|
-
`Found ${actions.length} actions for stage ${id} in workflow ${originalWorkflowId}`,
|
|
235
|
-
);
|
|
236
|
-
|
|
237
|
-
// === 4. Action mapping — point to stage, stageGroup, workflow correctly
|
|
238
|
-
for (const row of actions as any[]) {
|
|
239
|
-
const { id, created_date, modified_date, workflow_id, ...rest } = row;
|
|
240
|
-
|
|
241
|
-
const newWorkflowId = workflowIdMap[workflow_id];
|
|
242
|
-
|
|
243
|
-
// Step 1: Get the code of the old is_mandatory field
|
|
244
|
-
const [oldIsMandatory] = await this.dataSource.query(
|
|
245
|
-
`SELECT code FROM frm_list_master_items WHERE id = ?`,
|
|
246
|
-
[rest.action_requirement],
|
|
247
|
-
);
|
|
248
|
-
|
|
249
|
-
// Step 2: Get all new 'ACRQ' list master items for the organization
|
|
250
|
-
const newIsMandatoryList = await this.dataSource.query(
|
|
251
|
-
`SELECT id, code FROM frm_list_master_items WHERE organization_id = ? AND listtype = 'ACRQ'`,
|
|
252
|
-
[organization_id],
|
|
253
|
-
);
|
|
254
|
-
|
|
255
|
-
console.log(
|
|
256
|
-
`Populating action for stage ${newStage.id} in workflow ${newWorkflowId}`,
|
|
257
|
-
);
|
|
258
|
-
|
|
259
|
-
console.log(`Old is_mandatory code: ${oldIsMandatory?.code}`);
|
|
260
|
-
console.log(`New is_mandatory list:`, newIsMandatoryList);
|
|
261
|
-
|
|
262
|
-
// Step 3: Find the matching new item with the same code
|
|
263
|
-
const matchedNewMandatory = newIsMandatoryList.find(
|
|
264
|
-
(item) => item.code === oldIsMandatory?.code,
|
|
265
|
-
);
|
|
266
|
-
|
|
267
|
-
console.log(`Matched new mandatory item:`, matchedNewMandatory);
|
|
268
|
-
|
|
269
|
-
const formActionCategory = await this.dataSource.query(
|
|
270
|
-
`SELECT id FROM frm_wf_action_category WHERE id = ? and is_form = 1`,
|
|
271
|
-
[row.action_category],
|
|
272
|
-
);
|
|
273
|
-
|
|
274
|
-
//get view master form
|
|
275
|
-
const formViewMaster = await this.dataSource.query(
|
|
276
|
-
`SELECT id FROM frm_entity_view WHERE code = "LEAD_FORM" and organization_id = ?`,
|
|
277
|
-
[organization_id],
|
|
278
|
-
);
|
|
279
|
-
|
|
280
|
-
// Step 4: Use the matched new item's id (if found)
|
|
281
|
-
await this.actionService.createEntity(
|
|
282
|
-
{
|
|
283
|
-
...rest,
|
|
284
|
-
stage_id: newStage.id,
|
|
285
|
-
workflow_id: newWorkflowId,
|
|
286
|
-
organization_id,
|
|
287
|
-
action_requirement: matchedNewMandatory?.id ?? null,
|
|
288
|
-
level_id: organization_id,
|
|
289
|
-
entity_type: 'WFA',
|
|
290
|
-
form: formActionCategory.length > 0 ? formViewMaster[0]?.id : null,
|
|
291
|
-
status: statusValue,
|
|
292
|
-
},
|
|
293
|
-
loggedInUser,
|
|
294
|
-
);
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
return {
|
|
299
|
-
message: 'Workflow data populated successfully',
|
|
300
|
-
status: 'success',
|
|
301
|
-
};
|
|
302
|
-
}
|
|
303
|
-
}
|
|
1
|
+
import { ActionCategory } from './../entity/action-category.entity';
|
|
2
|
+
import { DataSource } from 'typeorm';
|
|
3
|
+
import { PopulateMetaService } from './../../meta/service/populate-meta.service';
|
|
4
|
+
import { Inject, Injectable } from '@nestjs/common';
|
|
5
|
+
import { EntityServiceImpl } from 'src/module/meta/service/entity-service-impl.service';
|
|
6
|
+
import { WorkflowService } from './workflow.service';
|
|
7
|
+
import { UserData } from 'src/module/user/entity/user.entity';
|
|
8
|
+
import { StageGroupService } from './stage-group.service';
|
|
9
|
+
import { StageService } from './stage.service';
|
|
10
|
+
import { ActionService } from './action.service';
|
|
11
|
+
|
|
12
|
+
@Injectable()
|
|
13
|
+
export class PopulateWorkflowService extends EntityServiceImpl {
|
|
14
|
+
constructor(
|
|
15
|
+
private readonly populateMetaService: PopulateMetaService,
|
|
16
|
+
private readonly dataSource: DataSource,
|
|
17
|
+
@Inject('WorkflowService')
|
|
18
|
+
private readonly workflowService: WorkflowService,
|
|
19
|
+
@Inject('StageGroupService')
|
|
20
|
+
private readonly stageGroupService: StageGroupService,
|
|
21
|
+
@Inject('StageService')
|
|
22
|
+
private readonly stageService: StageService,
|
|
23
|
+
@Inject('ActionService')
|
|
24
|
+
private readonly actionService: ActionService,
|
|
25
|
+
) {
|
|
26
|
+
super();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// async populateWorkflowData(organization_id: number, loggedInUser: UserData) {
|
|
30
|
+
// // Define workflow tables
|
|
31
|
+
// const workflowTables = [
|
|
32
|
+
// { table: 'frm_wf_master', entityType: 'WRFW', service: 'workflowService' },
|
|
33
|
+
// {
|
|
34
|
+
// table: 'frm_wf_stage_group',
|
|
35
|
+
// entityType: 'WFSG',
|
|
36
|
+
// service: 'stageGroupService',
|
|
37
|
+
// },
|
|
38
|
+
// { table: 'frm_wf_stage', entityType: 'WFS', service: 'stageService' },
|
|
39
|
+
// { table: 'frm_wf_action', entityType: 'WFAC', service: 'actionService' },
|
|
40
|
+
// ];
|
|
41
|
+
|
|
42
|
+
// const getAllFactoryData = async (table: { table: string }) => {
|
|
43
|
+
// return this.dataSource.query(
|
|
44
|
+
// `SELECT * FROM ${table.table} WHERE organization_id = -1 AND level_type = 'ORG' AND level_id = -1`,
|
|
45
|
+
// );
|
|
46
|
+
// };
|
|
47
|
+
|
|
48
|
+
// const factoryData = await Promise.all(
|
|
49
|
+
// workflowTables.map((table) => getAllFactoryData(table)),
|
|
50
|
+
// );
|
|
51
|
+
|
|
52
|
+
// // Step 1: Insert workflow metadata
|
|
53
|
+
// for (let i = 0; i < workflowTables.length; i++) {
|
|
54
|
+
// const table = workflowTables[i];
|
|
55
|
+
// const data = factoryData[i];
|
|
56
|
+
|
|
57
|
+
// if (!data.length) continue;
|
|
58
|
+
|
|
59
|
+
// // Clean and transform data for insertion
|
|
60
|
+
// const transformedData = data.map((row) => {
|
|
61
|
+
// const { id, created_date, modified_date, ...rest } = row;
|
|
62
|
+
// return {
|
|
63
|
+
// ...rest,
|
|
64
|
+
// organization_id: organization_id,
|
|
65
|
+
// level_id: organization_id,
|
|
66
|
+
// entity_type: table.entityType,
|
|
67
|
+
// };
|
|
68
|
+
// });
|
|
69
|
+
|
|
70
|
+
// const service = this[table.service];
|
|
71
|
+
|
|
72
|
+
// for (const record of transformedData) {
|
|
73
|
+
// await service.createEntity(record, loggedInUser);
|
|
74
|
+
// }
|
|
75
|
+
// }
|
|
76
|
+
|
|
77
|
+
// return {
|
|
78
|
+
// message: 'Workflow data populated successfully',
|
|
79
|
+
// status: 'success',
|
|
80
|
+
// };
|
|
81
|
+
// }
|
|
82
|
+
|
|
83
|
+
async populateWorkflowData(organization_id: number, loggedInUser: UserData) {
|
|
84
|
+
let statusRow = await this.dataSource.query(
|
|
85
|
+
`SELECT * FROM frm_list_master_items WHERE code='STATUS_ACTIVE' AND organization_id = ?`,
|
|
86
|
+
[organization_id],
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
if (statusRow.length === 0) {
|
|
90
|
+
statusRow = await this.dataSource.query(
|
|
91
|
+
`SELECT * FROM frm_list_master_items WHERE code='STATUS_ACTIVE' AND organization_id = -1`,
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const statusValue = statusRow[0]?.id;
|
|
96
|
+
|
|
97
|
+
// template populate
|
|
98
|
+
// Step 1: Fetch default frm_wf_comm_template
|
|
99
|
+
const defaultCommTemplates = await this.dataSource.query(
|
|
100
|
+
`SELECT * FROM frm_wf_comm_template WHERE organization_id = -1 AND level_type = 'ORG' AND level_id = -1`,
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
if (defaultCommTemplates.length > 0) {
|
|
104
|
+
// Step 2: Insert default communication templates for the new organization
|
|
105
|
+
for (const template of defaultCommTemplates) {
|
|
106
|
+
const { id, created_date, modified_date, ...rest } = template;
|
|
107
|
+
await super.createEntity(
|
|
108
|
+
{
|
|
109
|
+
...rest,
|
|
110
|
+
organization_id,
|
|
111
|
+
level_id: organization_id,
|
|
112
|
+
entity_type: 'TEM',
|
|
113
|
+
status: statusValue,
|
|
114
|
+
created_date: new Date(),
|
|
115
|
+
modified_date: new Date(),
|
|
116
|
+
},
|
|
117
|
+
loggedInUser,
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const workflowTables = [
|
|
123
|
+
{ table: 'frm_wf_master', entityType: 'WRFW', service: 'workflowService' },
|
|
124
|
+
{
|
|
125
|
+
table: 'frm_wf_stage_group',
|
|
126
|
+
entityType: 'WFSG',
|
|
127
|
+
service: 'stageGroupService',
|
|
128
|
+
},
|
|
129
|
+
{ table: 'frm_wf_stage', entityType: 'WFS', service: 'stageService' },
|
|
130
|
+
{ table: 'frm_wf_action', entityType: 'WFAC', service: 'actionService' },
|
|
131
|
+
];
|
|
132
|
+
|
|
133
|
+
// Fetch all base data
|
|
134
|
+
const getAllFactoryData = async (table: { table: string }) =>
|
|
135
|
+
this.dataSource.query(
|
|
136
|
+
`SELECT * FROM ${table.table} WHERE organization_id = -1 AND level_type = 'ORG' AND level_id = -1`,
|
|
137
|
+
);
|
|
138
|
+
const factoryData = await Promise.all(
|
|
139
|
+
workflowTables.map(getAllFactoryData),
|
|
140
|
+
);
|
|
141
|
+
const [workflows, stageGroups, stages] = factoryData;
|
|
142
|
+
|
|
143
|
+
// === 1. Workflow mapping
|
|
144
|
+
const workflowIdMap: Record<number, number> = {};
|
|
145
|
+
for (const row of workflows) {
|
|
146
|
+
const { id, ...rest } = row;
|
|
147
|
+
const newWf = await this.workflowService.createEntity(
|
|
148
|
+
{
|
|
149
|
+
...rest,
|
|
150
|
+
organization_id,
|
|
151
|
+
level_id: organization_id,
|
|
152
|
+
entity_type: 'WRFW',
|
|
153
|
+
status: statusValue,
|
|
154
|
+
},
|
|
155
|
+
loggedInUser,
|
|
156
|
+
);
|
|
157
|
+
|
|
158
|
+
// adding new entry for workflow level mapping
|
|
159
|
+
await this.dataSource.query(
|
|
160
|
+
`INSERT INTO frm_wf_level_mapping (workflow_id, mapped_level_id, mapped_level_type) VALUES (?, ?, ?)`,
|
|
161
|
+
[newWf.id, organization_id, 'ORG'],
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
workflowIdMap[id] = newWf.id;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// === 2. StageGroup mapping (and save workflow ref from template data!)
|
|
168
|
+
const stageGroupIdMap: Record<number, number> = {};
|
|
169
|
+
// Include mapping from old stageGroupId to old workflowId to help with stage->workflow logic later:
|
|
170
|
+
const stageGroupToWorkflowMap: Record<number, number> = {};
|
|
171
|
+
for (const row of stageGroups) {
|
|
172
|
+
const { id, workflow_id, ...rest } = row;
|
|
173
|
+
const newSg = await this.stageGroupService.createEntity(
|
|
174
|
+
{
|
|
175
|
+
...rest,
|
|
176
|
+
workflow_id: workflowIdMap[workflow_id],
|
|
177
|
+
organization_id,
|
|
178
|
+
level_id: organization_id,
|
|
179
|
+
entity_type: 'WFSG',
|
|
180
|
+
status: statusValue,
|
|
181
|
+
},
|
|
182
|
+
loggedInUser,
|
|
183
|
+
);
|
|
184
|
+
stageGroupIdMap[id] = newSg.id;
|
|
185
|
+
stageGroupToWorkflowMap[id] = workflow_id;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// === 3. Stage mapping — point to stageGroup and workflow
|
|
189
|
+
const stageIdMap: Record<number, number> = {};
|
|
190
|
+
const stageToStageGroupMap: Record<number, number> = {};
|
|
191
|
+
for (const row of stages) {
|
|
192
|
+
const { id, stage_group_id, ...rest } = row;
|
|
193
|
+
// Find the original parent workflow_id using the stageGroupToWorkflowMap
|
|
194
|
+
const originalWorkflowId = stageGroupToWorkflowMap[stage_group_id];
|
|
195
|
+
const newStage = await this.stageService.createEntity(
|
|
196
|
+
{
|
|
197
|
+
...rest,
|
|
198
|
+
stage_group_id: stageGroupIdMap[stage_group_id],
|
|
199
|
+
workflow_id: workflowIdMap[originalWorkflowId], // New workflow id!
|
|
200
|
+
organization_id,
|
|
201
|
+
level_id: organization_id,
|
|
202
|
+
entity_type: 'WFS',
|
|
203
|
+
status: statusValue,
|
|
204
|
+
},
|
|
205
|
+
loggedInUser,
|
|
206
|
+
);
|
|
207
|
+
stageIdMap[id] = newStage.id;
|
|
208
|
+
stageToStageGroupMap[id] = stage_group_id; // maintain
|
|
209
|
+
|
|
210
|
+
// step 1 find old stage_id in stage_action_mapper and get all actions_ids
|
|
211
|
+
// step 2 search action in frm_wf_action table with those action_ids
|
|
212
|
+
// step 3 create new action with new stage_id and new workflow_id
|
|
213
|
+
// step 4 save new action
|
|
214
|
+
|
|
215
|
+
const stageIds = await this.dataSource.query(
|
|
216
|
+
`SELECT action_id FROM frm_wf_stage_action_mapping WHERE stage_id = ?`,
|
|
217
|
+
[id],
|
|
218
|
+
);
|
|
219
|
+
|
|
220
|
+
const actionIds = stageIds.map((item) => item.action_id);
|
|
221
|
+
|
|
222
|
+
let actions = [];
|
|
223
|
+
if (actionIds.length > 0) {
|
|
224
|
+
actions = await this.dataSource.query(
|
|
225
|
+
`SELECT * FROM frm_wf_action WHERE id IN (?)`,
|
|
226
|
+
[actionIds],
|
|
227
|
+
);
|
|
228
|
+
} else {
|
|
229
|
+
// No actions to query
|
|
230
|
+
actions = [];
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
console.log(
|
|
234
|
+
`Found ${actions.length} actions for stage ${id} in workflow ${originalWorkflowId}`,
|
|
235
|
+
);
|
|
236
|
+
|
|
237
|
+
// === 4. Action mapping — point to stage, stageGroup, workflow correctly
|
|
238
|
+
for (const row of actions as any[]) {
|
|
239
|
+
const { id, created_date, modified_date, workflow_id, ...rest } = row;
|
|
240
|
+
|
|
241
|
+
const newWorkflowId = workflowIdMap[workflow_id];
|
|
242
|
+
|
|
243
|
+
// Step 1: Get the code of the old is_mandatory field
|
|
244
|
+
const [oldIsMandatory] = await this.dataSource.query(
|
|
245
|
+
`SELECT code FROM frm_list_master_items WHERE id = ?`,
|
|
246
|
+
[rest.action_requirement],
|
|
247
|
+
);
|
|
248
|
+
|
|
249
|
+
// Step 2: Get all new 'ACRQ' list master items for the organization
|
|
250
|
+
const newIsMandatoryList = await this.dataSource.query(
|
|
251
|
+
`SELECT id, code FROM frm_list_master_items WHERE organization_id = ? AND listtype = 'ACRQ'`,
|
|
252
|
+
[organization_id],
|
|
253
|
+
);
|
|
254
|
+
|
|
255
|
+
console.log(
|
|
256
|
+
`Populating action for stage ${newStage.id} in workflow ${newWorkflowId}`,
|
|
257
|
+
);
|
|
258
|
+
|
|
259
|
+
console.log(`Old is_mandatory code: ${oldIsMandatory?.code}`);
|
|
260
|
+
console.log(`New is_mandatory list:`, newIsMandatoryList);
|
|
261
|
+
|
|
262
|
+
// Step 3: Find the matching new item with the same code
|
|
263
|
+
const matchedNewMandatory = newIsMandatoryList.find(
|
|
264
|
+
(item) => item.code === oldIsMandatory?.code,
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
console.log(`Matched new mandatory item:`, matchedNewMandatory);
|
|
268
|
+
|
|
269
|
+
const formActionCategory = await this.dataSource.query(
|
|
270
|
+
`SELECT id FROM frm_wf_action_category WHERE id = ? and is_form = 1`,
|
|
271
|
+
[row.action_category],
|
|
272
|
+
);
|
|
273
|
+
|
|
274
|
+
//get view master form
|
|
275
|
+
const formViewMaster = await this.dataSource.query(
|
|
276
|
+
`SELECT id FROM frm_entity_view WHERE code = "LEAD_FORM" and organization_id = ?`,
|
|
277
|
+
[organization_id],
|
|
278
|
+
);
|
|
279
|
+
|
|
280
|
+
// Step 4: Use the matched new item's id (if found)
|
|
281
|
+
await this.actionService.createEntity(
|
|
282
|
+
{
|
|
283
|
+
...rest,
|
|
284
|
+
stage_id: newStage.id,
|
|
285
|
+
workflow_id: newWorkflowId,
|
|
286
|
+
organization_id,
|
|
287
|
+
action_requirement: matchedNewMandatory?.id ?? null,
|
|
288
|
+
level_id: organization_id,
|
|
289
|
+
entity_type: 'WFA',
|
|
290
|
+
form: formActionCategory.length > 0 ? formViewMaster[0]?.id : null,
|
|
291
|
+
status: statusValue,
|
|
292
|
+
},
|
|
293
|
+
loggedInUser,
|
|
294
|
+
);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
return {
|
|
299
|
+
message: 'Workflow data populated successfully',
|
|
300
|
+
status: 'success',
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
}
|
|
@@ -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 {}
|