@adlfe/campaign-management-library 2.9.21 → 2.10.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/{campaign-management-library.metadata.json → adlfe-campaign-management-library.metadata.json} +1 -1
- package/bundles/{campaign-management-library.umd.js → adlfe-campaign-management-library.umd.js} +47 -56
- package/bundles/adlfe-campaign-management-library.umd.js.map +1 -0
- package/bundles/adlfe-campaign-management-library.umd.min.js +16 -0
- package/bundles/adlfe-campaign-management-library.umd.min.js.map +1 -0
- package/esm2015/adlfe-campaign-management-library.js +29 -0
- package/esm2015/environments/environment.js +3 -1
- package/esm2015/lib/adl-campaign-management-library-internal.component.js +1 -1
- package/esm2015/lib/adl-campaign-management-library-internal.module.js +1 -1
- package/esm2015/lib/campaign-management/campaign-management.component.js +1 -1
- package/esm2015/lib/campaign-management/campaign-management.module.js +1 -1
- package/esm2015/lib/campaign-management/models/campaign-count-final-response-dto.model.js +1 -1
- package/esm2015/lib/campaign-management/models/contact-category-dto.model.js +1 -1
- package/esm2015/lib/campaign-management/models/failover-req.model.js +1 -1
- package/esm2015/lib/campaign-management/models/general-information-wa-req.model.js +1 -3
- package/esm2015/lib/campaign-management/models/index.js +1 -1
- package/esm2015/lib/campaign-management/models/scheduler-req.model.js +1 -1
- package/esm2015/lib/campaign-management/models/template-wa.model.js +1 -1
- package/esm2015/lib/campaign-management/models/whatsapp-account.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/campaign-index.component.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/campaign-index.module.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/filter-in-list-of-campaign.component.js +2 -2
- package/esm2015/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/index.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/component/viewing-list-of-campaign-table/index.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/component/viewing-list-of-campaign-table/viewing-list-of-campaign-table.component.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/index.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/models/campaign-response-dto.model.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/models/campaign-table-config.const.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/models/campaigns-list.model.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/models/client-dto.model.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/models/conversation-chart-response-dto.model.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/models/index.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/models/performance-chart-response-dto.model.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/models/performance-chart-sereies-response-dto.model.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/models/table.model.js +1 -1
- package/esm2015/lib/campaign-management/modules/dashboard/dashboard.component.js +1 -1
- package/esm2015/lib/campaign-management/modules/dashboard/dashboard.module.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/components/general-information-email/general-information-email.component.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/components/general-information-email/index.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/components/general-information-line/general-information-line.component.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/components/general-information-line/index.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/components/general-information-sms/general-information-sms.component.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/components/general-information-sms/index.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +3 -15
- package/esm2015/lib/campaign-management/modules/new-campaign/components/general-information-wa/index.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/failover-mechanism/failover-mechanism.component.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/failover-mechanism/index.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/general-information/general-information.component.js +2 -2
- package/esm2015/lib/campaign-management/modules/new-campaign/general-information/index.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/index.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/new-campaign.component.js +1 -4
- package/esm2015/lib/campaign-management/modules/new-campaign/new-number-bases/index.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/new-number-bases/new-number-bases.component.js +29 -24
- package/esm2015/lib/campaign-management/modules/new-campaign/scheduler/index.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/scheduler/scheduler.component.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/summary/index.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/summary/summary.component.js +1 -1
- package/esm2015/lib/campaign-management/modules/wizard/index.js +1 -1
- package/esm2015/lib/campaign-management/modules/wizard/wizard.component.js +1 -1
- package/esm2015/lib/campaign-management/util/enums.js +1 -1
- package/esm2015/lib/core/const/constants.const.js +1 -1
- package/esm2015/lib/core/const/create-package-service.const.js +1 -1
- package/esm2015/lib/core/const/failover.const.js +1 -1
- package/esm2015/lib/core/const/form-validators.js +1 -1
- package/esm2015/lib/core/const/index.js +1 -1
- package/esm2015/lib/core/const/rate-card-table-config.js +1 -1
- package/esm2015/lib/core/const/validation-message.const.js +1 -1
- package/esm2015/lib/core/directives/index.js +1 -1
- package/esm2015/lib/core/directives/mat-select-infinite-scroll.js +1 -1
- package/esm2015/lib/core/enums/constant.enum.js +1 -1
- package/esm2015/lib/core/enums/http-verb.enum.js +1 -1
- package/esm2015/lib/core/enums/index.js +1 -1
- package/esm2015/lib/core/enums/main-area.enum.js +1 -1
- package/esm2015/lib/core/models/Package.js +1 -1
- package/esm2015/lib/core/models/base-option.model.js +1 -1
- package/esm2015/lib/core/models/billing-param-req.component.js +1 -1
- package/esm2015/lib/core/models/country.model.js +1 -1
- package/esm2015/lib/core/models/create-package-param.model.js +1 -1
- package/esm2015/lib/core/models/http-body-resp.model.js +1 -1
- package/esm2015/lib/core/models/index.js +1 -1
- package/esm2015/lib/core/models/util/api-adapter-service-models/index.js +1 -1
- package/esm2015/lib/core/models/util/api-adapter-service-models/parameter.model.js +1 -1
- package/esm2015/lib/core/models/util/api-adapter-service-models/server-in-built-error.model.js +1 -1
- package/esm2015/lib/core/models/util/api-dto/request-models/app-request.js +1 -1
- package/esm2015/lib/core/models/util/api-dto/response-models/app-response-adl.js +1 -1
- package/esm2015/lib/core/models/util/api-dto/response-models/app-response.js +1 -1
- package/esm2015/lib/core/models/util/api-dto/response-models/error.js +1 -1
- package/esm2015/lib/core/models/util/api-dto/response-models/index.js +1 -1
- package/esm2015/lib/core/models/util/api-dto/response-models/meta.js +1 -1
- package/esm2015/lib/core/models/util/api-dto/response-models/paging.js +1 -1
- package/esm2015/lib/core/models/util/http-body-req/http-body-req-pagination-global-var.model.js +1 -1
- package/esm2015/lib/core/models/util/http-body-req/http-body-req-pagination.model.js +1 -1
- package/esm2015/lib/core/models/util/http-body-req/index.js +1 -1
- package/esm2015/lib/core/models/util/index.js +1 -1
- package/esm2015/lib/core/services/api-adapter-service.service.js +13 -13
- package/esm2015/lib/core/services/index.js +1 -1
- package/esm2015/lib/core/util/custom-paginator.js +1 -1
- package/esm2015/lib/core/util/download-blob-file.js +1 -1
- package/esm2015/lib/core/util/enum-to-option-generator.js +1 -1
- package/esm2015/lib/core/util/http-param-generator.js +1 -1
- package/esm2015/lib/core/util/index.js +1 -1
- package/esm2015/lib/global/confirmation/confirmation/confirmation.component.js +1 -1
- package/esm2015/lib/global/confirmation/confirmation/index.js +1 -1
- package/esm2015/lib/global/confirmation/confirmation.module.js +1 -1
- package/esm2015/lib/global/confirmation/shared/model/confirmation.model.js +1 -1
- package/esm2015/lib/global/confirmation/shared/model/index.js +1 -1
- package/esm2015/lib/global/confirmation/shared/shared-services.service.js +1 -1
- package/esm2015/lib/global/search/search/search.component.js +1 -1
- package/esm2015/lib/global/search/search.module.js +1 -1
- package/esm2015/public-api.js +1 -1
- package/esm5/adlfe-campaign-management-library.js +29 -0
- package/esm5/environments/environment.js +3 -1
- package/esm5/lib/adl-campaign-management-library-internal.component.js +1 -1
- package/esm5/lib/adl-campaign-management-library-internal.module.js +1 -1
- package/esm5/lib/campaign-management/campaign-management.component.js +1 -1
- package/esm5/lib/campaign-management/campaign-management.module.js +1 -1
- package/esm5/lib/campaign-management/models/campaign-count-final-response-dto.model.js +1 -1
- package/esm5/lib/campaign-management/models/contact-category-dto.model.js +1 -1
- package/esm5/lib/campaign-management/models/failover-req.model.js +1 -1
- package/esm5/lib/campaign-management/models/general-information-wa-req.model.js +1 -3
- package/esm5/lib/campaign-management/models/index.js +1 -1
- package/esm5/lib/campaign-management/models/scheduler-req.model.js +1 -1
- package/esm5/lib/campaign-management/models/template-wa.model.js +1 -1
- package/esm5/lib/campaign-management/models/whatsapp-account.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/campaign-index.component.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/campaign-index.module.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/filter-in-list-of-campaign.component.js +2 -2
- package/esm5/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/index.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/component/viewing-list-of-campaign-table/index.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/component/viewing-list-of-campaign-table/viewing-list-of-campaign-table.component.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/index.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/models/campaign-response-dto.model.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/models/campaign-table-config.const.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/models/campaigns-list.model.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/models/client-dto.model.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/models/conversation-chart-response-dto.model.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/models/index.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/models/performance-chart-response-dto.model.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/models/performance-chart-sereies-response-dto.model.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/models/table.model.js +1 -1
- package/esm5/lib/campaign-management/modules/dashboard/dashboard.component.js +1 -1
- package/esm5/lib/campaign-management/modules/dashboard/dashboard.module.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/components/general-information-email/general-information-email.component.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/components/general-information-email/index.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/components/general-information-line/general-information-line.component.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/components/general-information-line/index.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/components/general-information-sms/general-information-sms.component.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/components/general-information-sms/index.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +3 -15
- package/esm5/lib/campaign-management/modules/new-campaign/components/general-information-wa/index.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/failover-mechanism/failover-mechanism.component.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/failover-mechanism/index.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/general-information/general-information.component.js +2 -2
- package/esm5/lib/campaign-management/modules/new-campaign/general-information/index.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/index.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/new-campaign.component.js +1 -4
- package/esm5/lib/campaign-management/modules/new-campaign/new-number-bases/index.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/new-number-bases/new-number-bases.component.js +30 -24
- package/esm5/lib/campaign-management/modules/new-campaign/scheduler/index.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/scheduler/scheduler.component.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/summary/index.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/summary/summary.component.js +1 -1
- package/esm5/lib/campaign-management/modules/wizard/index.js +1 -1
- package/esm5/lib/campaign-management/modules/wizard/wizard.component.js +1 -1
- package/esm5/lib/campaign-management/util/enums.js +1 -1
- package/esm5/lib/core/const/constants.const.js +1 -1
- package/esm5/lib/core/const/create-package-service.const.js +1 -1
- package/esm5/lib/core/const/failover.const.js +1 -1
- package/esm5/lib/core/const/form-validators.js +1 -1
- package/esm5/lib/core/const/index.js +1 -1
- package/esm5/lib/core/const/rate-card-table-config.js +1 -1
- package/esm5/lib/core/const/validation-message.const.js +1 -1
- package/esm5/lib/core/directives/index.js +1 -1
- package/esm5/lib/core/directives/mat-select-infinite-scroll.js +1 -1
- package/esm5/lib/core/enums/constant.enum.js +1 -1
- package/esm5/lib/core/enums/http-verb.enum.js +1 -1
- package/esm5/lib/core/enums/index.js +1 -1
- package/esm5/lib/core/enums/main-area.enum.js +1 -1
- package/esm5/lib/core/models/Package.js +1 -1
- package/esm5/lib/core/models/base-option.model.js +1 -1
- package/esm5/lib/core/models/billing-param-req.component.js +1 -1
- package/esm5/lib/core/models/country.model.js +1 -1
- package/esm5/lib/core/models/create-package-param.model.js +1 -1
- package/esm5/lib/core/models/http-body-resp.model.js +1 -1
- package/esm5/lib/core/models/index.js +1 -1
- package/esm5/lib/core/models/util/api-adapter-service-models/index.js +1 -1
- package/esm5/lib/core/models/util/api-adapter-service-models/parameter.model.js +1 -1
- package/esm5/lib/core/models/util/api-adapter-service-models/server-in-built-error.model.js +1 -1
- package/esm5/lib/core/models/util/api-dto/request-models/app-request.js +1 -1
- package/esm5/lib/core/models/util/api-dto/response-models/app-response-adl.js +1 -1
- package/esm5/lib/core/models/util/api-dto/response-models/app-response.js +1 -1
- package/esm5/lib/core/models/util/api-dto/response-models/error.js +1 -1
- package/esm5/lib/core/models/util/api-dto/response-models/index.js +1 -1
- package/esm5/lib/core/models/util/api-dto/response-models/meta.js +1 -1
- package/esm5/lib/core/models/util/api-dto/response-models/paging.js +1 -1
- package/esm5/lib/core/models/util/http-body-req/http-body-req-pagination-global-var.model.js +1 -1
- package/esm5/lib/core/models/util/http-body-req/http-body-req-pagination.model.js +1 -1
- package/esm5/lib/core/models/util/http-body-req/index.js +1 -1
- package/esm5/lib/core/models/util/index.js +1 -1
- package/esm5/lib/core/services/api-adapter-service.service.js +11 -11
- package/esm5/lib/core/services/index.js +1 -1
- package/esm5/lib/core/util/custom-paginator.js +1 -1
- package/esm5/lib/core/util/download-blob-file.js +1 -1
- package/esm5/lib/core/util/enum-to-option-generator.js +1 -1
- package/esm5/lib/core/util/http-param-generator.js +1 -1
- package/esm5/lib/core/util/index.js +1 -1
- package/esm5/lib/global/confirmation/confirmation/confirmation.component.js +1 -1
- package/esm5/lib/global/confirmation/confirmation/index.js +1 -1
- package/esm5/lib/global/confirmation/confirmation.module.js +1 -1
- package/esm5/lib/global/confirmation/shared/model/confirmation.model.js +1 -1
- package/esm5/lib/global/confirmation/shared/model/index.js +1 -1
- package/esm5/lib/global/confirmation/shared/shared-services.service.js +1 -1
- package/esm5/lib/global/search/search/search.component.js +1 -1
- package/esm5/lib/global/search/search.module.js +1 -1
- package/esm5/public-api.js +1 -1
- package/fesm2015/{campaign-management-library.js → adlfe-campaign-management-library.js} +46 -56
- package/fesm2015/adlfe-campaign-management-library.js.map +1 -0
- package/fesm5/{campaign-management-library.js → adlfe-campaign-management-library.js} +45 -54
- package/fesm5/adlfe-campaign-management-library.js.map +1 -0
- package/lib/campaign-management/models/general-information-wa-req.model.d.ts +0 -1
- package/lib/campaign-management/models/template-wa.model.d.ts +0 -1
- package/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.d.ts +0 -6
- package/lib/campaign-management/modules/new-campaign/new-number-bases/new-number-bases.component.d.ts +3 -2
- package/lib/core/services/api-adapter-service.service.d.ts +1 -0
- package/package.json +11 -20
- package/bundles/campaign-management-library.umd.js.map +0 -1
- package/bundles/campaign-management-library.umd.min.js +0 -16
- package/bundles/campaign-management-library.umd.min.js.map +0 -1
- package/esm2015/campaign-management-library.js +0 -29
- package/esm5/campaign-management-library.js +0 -29
- package/fesm2015/campaign-management-library.js.map +0 -1
- package/fesm5/campaign-management-library.js.map +0 -1
- /package/{campaign-management-library.d.ts → adlfe-campaign-management-library.d.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://campaign-management-library/lib/core/enums/main-area.enum.ts","ng://campaign-management-library/lib/adl-campaign-management-library-internal.component.ts","ng://campaign-management-library/lib/global/search/search/search.component.ts","ng://campaign-management-library/lib/global/search/search.module.ts","ng://campaign-management-library/lib/core/enums/constant.enum.ts","ng://campaign-management-library/lib/campaign-management/campaign-management.component.ts","ng://campaign-management-library/lib/core/directives/mat-select-infinite-scroll.ts","ng://campaign-management-library/lib/core/models/base-option.model.ts","ng://campaign-management-library/lib/core/models/Package.ts","ng://campaign-management-library/lib/core/models/util/http-body-req/http-body-req-pagination.model.ts","ng://campaign-management-library/lib/core/models/util/http-body-req/http-body-req-pagination-global-var.model.ts","ng://campaign-management-library/environments/environment.ts","ng://campaign-management-library/lib/core/models/billing-param-req.component.ts","ng://campaign-management-library/lib/core/models/country.model.ts","ng://campaign-management-library/lib/core/models/create-package-param.model.ts","ng://campaign-management-library/lib/core/models/http-body-resp.model.ts","ng://campaign-management-library/lib/core/services/api-adapter-service.service.ts","ng://campaign-management-library/lib/campaign-management/modules/campaign-index/models/campaign-table-config.const.ts","ng://campaign-management-library/lib/campaign-management/modules/campaign-index/models/table.model.ts","ng://campaign-management-library/lib/campaign-management/modules/campaign-index/models/campaigns-list.model.ts","ng://campaign-management-library/lib/campaign-management/modules/campaign-index/campaign-index.component.ts","ng://campaign-management-library/lib/core/const/constants.const.ts","ng://campaign-management-library/lib/core/const/failover.const.ts","ng://campaign-management-library/lib/core/const/validation-message.const.ts","ng://campaign-management-library/lib/campaign-management/util/enums.ts","ng://campaign-management-library/lib/core/util/custom-paginator.ts","ng://campaign-management-library/lib/core/util/enum-to-option-generator.ts","ng://campaign-management-library/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/filter-in-list-of-campaign.component.ts","ng://campaign-management-library/lib/global/confirmation/shared/shared-services.service.ts","ng://campaign-management-library/lib/global/confirmation/shared/model/confirmation.model.ts","ng://campaign-management-library/lib/global/confirmation/confirmation/confirmation.component.ts","ng://campaign-management-library/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.ts","ng://campaign-management-library/lib/campaign-management/modules/campaign-index/component/viewing-list-of-campaign-table/viewing-list-of-campaign-table.component.ts","ng://campaign-management-library/lib/campaign-management/modules/campaign-index/campaign-index.module.ts","ng://campaign-management-library/lib/campaign-management/modules/dashboard/dashboard.component.ts","ng://campaign-management-library/lib/campaign-management/modules/dashboard/dashboard.module.ts","ng://campaign-management-library/lib/campaign-management/models/failover-req.model.ts","ng://campaign-management-library/lib/campaign-management/models/general-information-wa-req.model.ts","ng://campaign-management-library/lib/campaign-management/models/scheduler-req.model.ts","ng://campaign-management-library/lib/campaign-management/modules/new-campaign/new-campaign.component.ts","ng://campaign-management-library/lib/campaign-management/modules/new-campaign/components/general-information-email/general-information-email.component.ts","ng://campaign-management-library/lib/campaign-management/modules/new-campaign/components/general-information-line/general-information-line.component.ts","ng://campaign-management-library/lib/campaign-management/modules/new-campaign/components/general-information-sms/general-information-sms.component.ts","ng://campaign-management-library/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.ts","ng://campaign-management-library/lib/campaign-management/modules/new-campaign/failover-mechanism/failover-mechanism.component.ts","ng://campaign-management-library/lib/core/const/form-validators.ts","ng://campaign-management-library/lib/campaign-management/modules/new-campaign/general-information/general-information.component.ts","ng://campaign-management-library/lib/campaign-management/modules/new-campaign/new-number-bases/new-number-bases.component.ts","ng://campaign-management-library/lib/core/util/download-blob-file.ts","ng://campaign-management-library/lib/campaign-management/modules/new-campaign/scheduler/scheduler.component.ts","ng://campaign-management-library/lib/campaign-management/modules/new-campaign/summary/summary.component.ts","ng://campaign-management-library/lib/campaign-management/modules/wizard/wizard.component.ts","ng://campaign-management-library/lib/campaign-management/campaign-management.module.ts","ng://campaign-management-library/lib/adl-campaign-management-library-internal.module.ts","ng://campaign-management-library/lib/global/confirmation/confirmation.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__values","o","Symbol","iterator","m","next","value","done","TypeError","__read","e","ar","push","error","__spread","concat","MainArea","AdlCampaignManagementLibraryInternalComponent","Component","selector","template","SearchComponent","debounceSubject","Subject","searchRes","EventEmitter","ngOnInit","_this","form","FormControl","_a","currentValue","pipe","debounceTime","subscribe","emit","toLowerCase","searchResult","event","clearInput","setValue","Output","Input","SearchModule","NgModule","declarations","imports","CommonModule","FormsModule","ReactiveFormsModule","MatFormFieldModule","MatInputModule","MatButtonModule","MatIconModule","exports","PastTimeEnum","StatusCampaignEnum","ProductCategoryEnum","CampaignManagementComponent","currentView","CampaignIndex","currentViews","onChangeMainArea","area","MatSelectInfiniteScrollDirective","matSelect","ngZone","threshold","infiniteScroll","thrPx","thrPc","singleOptionHeight","SELECT_ITEM_HEIGHT_EM","destroyed$","evaluateThreshold","ngAfterViewInit","openedChange","takeUntil","opened","panel","nativeElement","getSelectItemHeightPx","registerScrollListener","ngOnDestroy","complete","lastIndexOf","parseFloat","fromEvent","tap","handleScrollEvent","runOutsideAngular","countOfRenderedOptions","options","infiniteScrollDistance","clientHeight","scrollTop","run","getComputedStyle","fontSize","MatSelect","NgZone","Directive","BaseOptionModel","PackageReqModel","clone","source","country","recomended","type","setupFeeRateCard","setupFee","ovrUsgConversationRateCard","costPerCustomer","costPerBusiness","ovrUsgNotficationRateCard","ovrUsgConversationCost","ovrUsgNotficationCost","customPackage","currency","name","monthlyRental","conversationMsg","businessMsg","contacts","isMultipleFlow","tps","multichatLiveAgent","multichatLiveSupervisor","numberOfFlow","waOfficialAccount","dashboardToSendMessage","reportAdminPanel","trainingSupport","isMultiple","checklistWa","checklistLine","checklistTele","specifyPackage","customDevelopment","oneUsageCostConversation","signupOrSetup","checklistAdm","checklistUser","checklistClient","checklistChatAgentAdmin","checklistChatAgentUser","HttpBodyReqPaginationModel","HttpBodyReqPaginationGlobalVarModel","pageSize","pageNo","convert","environment","_super","BillingParamReqModel","filter","platform","clientId","String","CountryModel","dto","category","code","values","param1","param2","ìcon","CreatePackageReqModel","channels","countryCode","maxAgent","maxContact","maxFlow","maxSupervisor","monthlyConversation","monthlyNotification","monthlyRentalRateCard","ovrUsgConversation","ovrUsgNotification","ovrUsgNotificationCost","ovrUsgNotificationRateCard","reports","roles","sendMsgDashboard","training","waOfficialAcc","HttpBodyRespModel","status","errorCode","message","data","totalRecord","location","origin","includes","ApiAdapterServiceService","httpClient","queryCount","executeApiRequest","parameterList","path","httpVerb","isFile","bodyData","parameter","url","formData","FormData","rt","in","forEach","requestType","find","required","window","alert","replace","setQuery","setFormData","undefined","appRequest","_c","_b","withoutKeyData","headers","HttpHeaders","set","localStorage","getItem","request","body","responseType","catchError","err","ErrorEvent","of","title","detail","statusText","toString","meta","append","HttpClient","Injectable","providedIn","CampaignListTableLabelConst","CampaignListTableColumnConst","TableModel","CampaignsListModel","campaignID","businessName","campaignName","medium","numberCount","deilveredCount","seenCount","responseCount","estimatedCost","actualCost","startDate","endDate","id","columns","dataSource","MatTableDataSource","labels","page","totalData","getNumber","index","limit","getPageIndex","isEmpty","setPage","setPageSize","size","resetPage","setNextPage","isNext","diffData","CampaignIndexComponent","datePipe","apiAdapterService","subscribers","campaignParam","initTable","campaignCountService","getCampaignList","removeItem","table","subs","response","campaignTotal","searchValue","initParam","filterValue","templateName","_d","_e","_f","transform","_g","resp","haveNext","_name","_value","_type","updatePage","updateFilter","_filter","updateSearch","addCampaign","changeCurrentView","NewCampaign","each","unsubscribe","DatePipe","PlatformOptionConst","icon","inputSvgIcon","image","label","MsgTypeWAOptionConst","MsgTypeEmailOptionConst","MsgTypeLineOptionConst","MediaTypeOptionConst","WidgetLiveCampaignConst","arrow","date","dateclass","CampaignPerformanceChartConfig","legend","orient","x","y","tooltip","dataset","xAxis","yAxis","series","color","ConversationInsightsChartConfig","trigger","smooth","itemStyle","normal","isLoadingOption","WA","SMS","LINE","EMAIL","VOICE","isHaveNextOption","pageNoOption","optionList","GeneralInformationMessageValidationConst","GeneralInformationWAMessageValidationConst","channel","from","text","media","fileName","catalogue","product","GeneralInformationEmailMessageValidationConst","GeneralInformationSMSMessageValidationConst","GeneralInformationLineMessageValidationConst","FailoverMechanismValidationConst","interval","accountId","subject","SchedulerMessageValidationConst","startTime","EnumData","CustomPaginator","itemsPerPageLabel","getRangeLabel","startIndex","Math","max","min","MatPaginatorIntl","generateEnumOption","enumObject","keys","reduce","result","isNaN","Number","inputOption","FilterInListOfCampaignComponent","channelOption","businessNameOption","statusOption","templateOption","isHaveNextTemplateOption","isLoadingTemplateOption","pageNoTemplateOption","closeDropdown","onChangeFilter","initForm","getBusinessNameOptionService","FormGroup","_h","_k","_j","_m","_l","_o","_p","res","getTemplateOptionService","isInfinite","get","getNextTemplateBatch","templateSelectedDisplay","attribute1","attribute2","templateSearch","clearDate","validateBackDate","Date","getTime","onReset","reset","getRawValue","onCancel","onApply","SharedServicesService","sendClickEvent","getEvent","asObservable","ConfirmationComponent","sharedService","paramIndex","decorator","deleteRowOn","ConfirmationModel","Inject","args","MAT_DIALOG_DATA","PendingApprovalDialogViewComponent","dialogRef","toastr","isLoading","isSubmit","isShowButton","getCampaignDetailService","getCampaignStorage","generalInformation","JSON","parse","convertUTCDateToLocalDate","getTimezoneOffset","toUpperCase","accountName","clientName","accountNo","wabaId","_q","_s","_r","details","targetURL","_w","_v","_u","_t","_0","_z","_y","_x","document","_4","_3","_2","_1","video","_7","_6","_5","headerURL","paramHeader","_10","_9","_8","header","paramBody","_13","_12","_11","paramButton","_16","_15","_14","button","otpValue","_21","_20","_19","_18","_17","pop","ID","_24","_23","_22","_27","_26","_25","lang","_30","_29","_28","_31","_34","_33","_32","examples","_37","_36","_35","_40","_39","_38","buttons","_43","_42","_41","ClientId","_44","ClientName","_45","isUpload","_46","fileId","_47","setItem","stringify","_48","failover","_49","targetAudience","_50","targets","targetAudienceFile","_51","_52","scheduler","schedulerType","_53","scheduleType","_54","_56","_55","split","_58","_57","isRepeat","_59","delivery","_60","repeat","rejectCampaignService","success","onClose","approveCampaignService","close","MatDialogRef","ToastrService","ViewingListOfCampaignTableComponent","dialog","updateTable","sort","matSort","actionRow","row","action","campaignConfirmationDialog","content","method","confirmation","btnSubmit","btnCancel","open","autoFocus","backdropClass","afterClosed","campaignService","editCampaign","history","replaceState","openViewDialog","height","width","maxWidth","maxHeight","MatDialog","ViewChild","MatSort","static","CampaignIndexModule","MatDatepickerModule","MatTableModule","MatSortModule","MatPaginatorModule","MatDialogModule","MatTabsModule","MatCardModule","MatCheckboxModule","MatSelectModule","MatRadioModule","MatChipsModule","NgbPaginationModule","NgbDropdownModule","MatGridListModule","MatNativeDateModule","MatToolbarModule","MatTooltipModule","DashboardComponent","pastTime","performanceCategories","totalCmpn","deliveryRt","costDesc","convsData","widgetLiveCampaign","selectedPlatform","filterEvent","filterChart","timeUnit","Today","CurrentWeek","CurrentMonth","totalCampaignPercent","getStatictsWidgetString","totalCampaign","totalLive","totalPending","getPerformanceDetails","getConversationDetails","setPerformanceChartData","entries","categories","item","map","performanceChartData","setConversationChartData","j","conversationChartData","Yesterday","LastWeek","LastMonth","DashboardModule","MatAutocompleteModule","MatListModule","PickerModule","AngularEditorModule","MatButtonToggleModule","MatBadgeModule","NgxEchartsModule","FailoverReqModel","active","accounts","FailoverAccountReqModel","GeneralInformationWAReqModel","headerUrl","SchedulerReqModel","tz","Intl","DateTimeFormat","resolvedOptions","timeZone","NewCampaignComponent","positionWizard","isGeneralInformationValid","isFailoverMechanismValid","isNumberBaseInformationValid","isSchedulerInformationValid","isLine","isUploadTargetAudience","onCheckTwilioCounterValid","valuesGeneral","generalInformationData","segments","segmentedMessage","SegmentedMessage","getBody","segmentsCount","encoding","encodingName","characters","numberOfUnicodeScalars","valueResult_1","entry","placeholder","join","pathname","initWizard","dataWizard","_61","parent","valid","child","failoverMechanism","failoverMechanismData","file","targetAudienceData","targetAudienceCount","schedulerData","onClickSaveAndNextButton","saveGeneralInformationService","saveNumberBasesService","saveFailoverMechanismService","saveSchedulerService","bodyReq","onPrevious","openConfirmationDialog","btnSubmitRed","onSubmitForApproval","GeneralInformationEmailComponent","msgTypeWAOption","accountOption","isHaveNextAccountOption","isLoadingAccountOption","isHaveTemplateParam","pageNoAccountOption","updateGeneralInformationForm","setTimeout","validationMessages","initDisable","initEdit","initValidation","getAccountOptionService","Validators","FormArray","valueChanges","isReadOnlyMode","disable","controls","clearValidators","updateValueAndValidity","setValidators","getIsTemplate","formReset","_isMediaType","updateDownloadCSV","updateTemplate","initParameter","disabled","addParamBody","getNextAccountBatch","accountSelectedDisplay","formStorage","paramValue","updateSearchAccount","isChecked","GeneralInformationLineComponent","isJSON","isText","bodyText","isJsonString","findBrackets","match","_","str","GeneralInformationSMSComponent","GeneralInformationWAComponent","mapsAPILoader","mediaTypeOption","isShowParameter","extFileAccepted","categoryOption","maps","zoom","latitude","longitude","isDraggable","isDoubleClickZoom","fileType","getIsText","getIsMedia","getIsCatalogue","maxLength","isButton","addParamHeader","closeCard","isHiddencard","getParamButton","addParamButton","onFileSelected","files","accept","matchType","indexOf","uploadMediaService","categorytemplate","previousCategorytemplate","previousCategory","nametemplate","isshowcard","fileTypeChange","getButton","flow_id","updateMediaType","_mediaType","MEDIA_TYPE_LOCATION","initMaps","MEDIA_TYPE_VIDEO","MEDIA_TYPE_DOCUMENT","load","then","setCurrentLocation","geoCoder","google","Geocoder","autocomplete","places","Autocomplete","mapSearchRef","addListener","place","getPlace","geometry","lat","lng","navigator","geolocation","getCurrentPosition","position","coords","markerDragEnd","latLng","MapsAPILoader","FailoverMechanismComponent","touched","setErrors","intervalTime","activeChange","validationAccount","initAccount","_channel","addAccount","getParamBody","account","deleteParamBody","removeAt","_active","accounts_1","typeChange","control","number","accountControl","isChooseAccount","getAccount","drop","moveItemInArray","previousIndex","currentIndex","GeneralInformationComponent","sanitizer","isTouchedWAForm","isTouchedSMSForm","isTouchedEmailForm","isShowMore","twilioResultCounter","fulltext","onCheckTwilioCounter","generalInformationForm","getBodyString","setInterval","campaign","getMedia","getLocation","bypassSecurityTrustHtml","fixGeneratedHtml","getTemplate","splice","htmlString","replaceAll","DomSanitizer","NewNumberBasesComponent","isShowUploadCSV","categorySelected","selection","SelectionModel","fileSelected","categoryParam","getCategoryList","onChecked","pageIndex","checkboxLabel","isSelected","isAllSelected","numSelected","selected","numRows","this_1","masterToggle","clear","select","sum","totalMembers","deselect","onDownloadSampleService","blob","blobUrl","URL","createObjectURL","link","createElement","href","download","appendChild","dispatchEvent","MouseEvent","bubbles","cancelable","view","removeChild","downloadBlobFile","console","log","setFileService","info","SchedulerComponent","minDate","isEdit","capitalizeFirstLetter","charAt","slice","updateSchedulerType","updateTime","updateRepeat","SummaryComponent","WizardComponent","CampaignManagementModule","AgmCoreModule","forRoot","apiKey","libraries","echarts","MatDividerModule","MatProgressSpinnerModule","MatSlideToggleModule","DragDropModule","entryComponents","providers","AdlCampaignManagementLibraryInternalModule","HttpClientModule","ToastrModule","provide","useClass","ConfirmationModule"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export enum MainArea {\r\n 'Dashboard' = 1,\r\n 'CampaignIndex' = 2,\r\n 'CreateCampaign' = 3,\r\n 'NewCampaign' = 4,\r\n 'UpdateNumberBases' = 5,\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'lib-adl-campaign-management-library-internal',\r\n\ttemplate: `\r\n\t\t<p>\r\n\t\t\t<lib-campaign-management></lib-campaign-management>\r\n\t\t</p>\r\n\t`,\r\n})\r\nexport class AdlCampaignManagementLibraryInternalComponent {}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@Component({\r\n\tselector: 'lib-search',\r\n\ttemplateUrl: './search.component.html',\r\n\tstyleUrls: ['./search.component.scss'],\r\n})\r\nexport class SearchComponent implements OnInit {\r\n\t@Output()\r\n\tpublic searchRes: EventEmitter<string>;\r\n\r\n\tpublic form: FormControl;\r\n\r\n\tprivate debounceSubject = new Subject();\r\n\r\n\t@Input()\r\n\tpublic placeholder: string;\r\n\r\n\t@Input()\r\n\tpublic currentValue: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.searchRes = new EventEmitter();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.form = new FormControl(this.currentValue ?? '');\r\n\r\n\t\tthis.debounceSubject.pipe(debounceTime(500)).subscribe((value: any) => {\r\n\t\t\tthis.searchRes.emit(value.toLowerCase());\r\n\t\t});\r\n\t}\r\n\r\n\tpublic searchResult(event: any) {\r\n\t\tthis.debounceSubject.next(event.target.value);\r\n\t}\r\n\r\n\tpublic clearInput(): void {\r\n\t\tthis.form.setValue('');\r\n\t\tthis.searchRes.emit(this.form.value);\r\n\t}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SearchComponent } from './search/search.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\n\r\n@NgModule({\r\n declarations: [SearchComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n\t\tReactiveFormsModule,\r\n\t\tMatFormFieldModule,\r\n\t\tMatInputModule,\r\n\t\tMatButtonModule,\r\n\t\tMatIconModule,\r\n ],\r\n exports: [\r\n SearchComponent\r\n ]\r\n})\r\nexport class SearchModule { }\r\n","export enum PastTimeEnum {\r\n\tToday = 'today',\r\n\tYesterday = 'yesterday',\r\n\tCurrentWeek = 'currentWeek',\r\n\tLastWeek = 'last week',\r\n\tCurrentMonth = 'currentMonth',\r\n\tLastMonth = 'last month',\r\n}\r\n\r\nexport enum StatusCampaignEnum {\r\n\tDraft = 'DRAFT',\r\n\tWaitingApproval = 'APPROVAL',\r\n\tRejected = 'REJECTED',\r\n\tScheduled = 'SCHEDULED',\r\n\tStopped = 'STOPPED',\r\n\tDeleted = 'DELETED',\r\n\tCompleted = 'COMPLETED',\r\n\tFailed = 'FAILED',\r\n\tPaused = 'PAUSED',\r\n\tProcessing = 'PROCESS',\r\n}\r\n\r\nexport enum ProductCategoryEnum {\r\n\tSingleProduct = 'product',\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { MainArea } from '../core/enums/main-area.enum';\r\n\r\n@Component({\r\n\tselector: 'lib-campaign-management',\r\n\ttemplateUrl: './campaign-management.component.html',\r\n\tstyleUrls: [],\r\n})\r\nexport class CampaignManagementComponent {\r\n\tpublic currentView: MainArea = MainArea.CampaignIndex;\r\n\tpublic currentViews = MainArea;\r\n\r\n\tconstructor() {\r\n\t\t/* Init Localstorage (Local Only) */\r\n\t\t/* const data = {\r\n\t\t\t'telin.accessToken':\r\n\t\t\t\t'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnRJZCI6IlBST1ZJREVSIiwiZXhwIjoxNzA4MDAyNzI4LCJpYXQiOjE3MDc5Nzg3MjgsIm5iZiI6MTcwNzk3ODcyOCwic2Vzc2lvbklkIjoiMDFIUE5RRTk5N0E3SkZLNjk1QTgyWEtTWkEiLCJ1c2VySWQiOiJhZG1pbiJ9.JWn1gRtlU6SYHa3KkP2FLhje9tvhxsD005dtxmTT5z4-lc65ekiClS5r7Wg8vamUappN_9uQINTJeZCjEU1IwYf6InUddxX6XsDWtCwixuePNq4JZMPrCUl_N4DBewPwL30RRrodoo0dxUstHLbTg9BUZ3qPq1QK6pLyd1HhKtN_jkRJ11VP2hEl6ef364ofmZvByDTKO56ah0GYzpxZ1uxvNV9PsyiuQk_drxE6x7PI7n-yH_H00zauMF6FYhTgv0SbqIRGQr-O8MKl1mbmk3efSdEr3gx6Q-bztG8p_jgOPWjVf4ol_6gfqtMOrlxTe2UJeR23fhWXCbp0ld20HpjgeIlkawoqpj8_TsjsnsPYk5epC2h5YVXrCuozWw5GnxYg7LDSx0CGQhe2JNRSy92b3hSvSahTQ0rKbmVDyvCIcRVhk2RO4Ilc-ddx4HhB8fcvbSVTAPBnI0A9NkPKSYKXA5SwiIlcPqex15BBG4zBbEX7D4JWr4925t2--WXkUIjsKvteOx0u9OhcBTbajahVepTNByNyqdKrJzdShWTBXw4mRNprL57ZZ3qFdCA6-11FcmeRkpDRqUX7kAXloFKBtcOECNjUpLNkf4FmT687-gt1R0xGIJsTatLSsc2K4Xr1TpTiuC7D3xledvsGTC07UuDgVQBb7AkN1Kch3Mg',\r\n\t\t\t'telin.clientId': 'PROVIDER',\r\n\t\t\t'telin.clientName': 'Provider',\r\n\t\t\t'telin.email': 'admin@bsp.com',\r\n\t\t\t'telin.id': 'admin',\r\n\t\t\t'telin.name': 'admin',\r\n\t\t\t'telin.roleCode': 'admin',\r\n\t\t\t'telin.roleId': 'admin',\r\n\t\t\t'telin.roleName': 'Administrator',\r\n\t\t\t'telin.roles':\r\n\t\t\t\t'[{\"isClientRole\":false,\"name\":\"Administrator\",\"code\":\"admin\",\"id\":\"admin\"}]',\r\n\t\t};\r\n\r\n\t\tObject.keys(data).forEach(function (k) {\r\n\t\t\tlocalStorage.setItem(k, data[k]);\r\n\t\t}); */\r\n\t\t/* Init Localstorage (Local Only) */\r\n\t}\r\n\r\n\tonChangeMainArea(area: MainArea): void {\r\n\t\tthis.currentView = area;\r\n\t}\r\n}\r\n","import {\r\n\tAfterViewInit,\r\n\tDirective,\r\n\tEventEmitter,\r\n\tInput,\r\n\tNgZone,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput,\r\n} from '@angular/core';\r\nimport { MatSelect, SELECT_ITEM_HEIGHT_EM } from '@angular/material/select';\r\nimport { Subject, fromEvent } from 'rxjs';\r\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\r\n\r\n@Directive({\r\n\tselector: '[matSelectInfiniteScroll]',\r\n})\r\nexport class MatSelectInfiniteScrollDirective\r\n\timplements OnInit, OnDestroy, AfterViewInit\r\n{\r\n\t@Input() threshold = '15%';\r\n\t@Input() debounceTime = 150;\r\n\t@Input() complete: boolean;\r\n\t@Output() infiniteScroll = new EventEmitter<void>();\r\n\r\n\tprivate panel: Element;\r\n\tprivate thrPx = 0;\r\n\tprivate thrPc = 0;\r\n\tprivate singleOptionHeight = SELECT_ITEM_HEIGHT_EM;\r\n\tprivate destroyed$ = new Subject<boolean>();\r\n\r\n\tconstructor(private matSelect: MatSelect, private ngZone: NgZone) {}\r\n\r\n\tngOnInit() {\r\n\t\tthis.evaluateThreshold();\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.matSelect.openedChange\r\n\t\t\t.pipe(takeUntil(this.destroyed$))\r\n\t\t\t.subscribe(opened => {\r\n\t\t\t\tif (opened) {\r\n\t\t\t\t\tthis.panel = this.matSelect.panel.nativeElement;\r\n\t\t\t\t\tthis.singleOptionHeight = this.getSelectItemHeightPx();\r\n\t\t\t\t\tthis.registerScrollListener();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.destroyed$.next(true);\r\n\t\tthis.destroyed$.complete();\r\n\t}\r\n\r\n\tevaluateThreshold() {\r\n\t\tif (this.threshold.lastIndexOf('%') > -1) {\r\n\t\t\tthis.thrPx = 0;\r\n\t\t\tthis.thrPc = parseFloat(this.threshold) / 100;\r\n\t\t} else {\r\n\t\t\tthis.thrPx = parseFloat(this.threshold);\r\n\t\t\tthis.thrPc = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterScrollListener() {\r\n\t\tfromEvent(this.panel, 'scroll')\r\n\t\t\t.pipe(\r\n\t\t\t\ttakeUntil(this.destroyed$),\r\n\t\t\t\tdebounceTime(this.debounceTime),\r\n\t\t\t\ttap(event => {\r\n\t\t\t\t\tthis.handleScrollEvent(event);\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t.subscribe();\r\n\t}\r\n\r\n\thandleScrollEvent(event) {\r\n\t\tthis.ngZone.runOutsideAngular(() => {\r\n\t\t\tif (this.complete) return;\r\n\r\n\t\t\tconst countOfRenderedOptions = this.matSelect.options.length;\r\n\t\t\tconst infiniteScrollDistance =\r\n\t\t\t\tthis.singleOptionHeight * countOfRenderedOptions;\r\n\t\t\tconst threshold =\r\n\t\t\t\tthis.thrPc !== 0\r\n\t\t\t\t\t? infiniteScrollDistance * this.thrPc\r\n\t\t\t\t\t: this.thrPx;\r\n\t\t\tconst scrolledDistance =\r\n\t\t\t\tthis.panel.clientHeight + event.target.scrollTop;\r\n\r\n\t\t\tif (scrolledDistance + threshold >= infiniteScrollDistance)\r\n\t\t\t\tthis.ngZone.run(() => this.infiniteScroll.emit());\r\n\t\t});\r\n\t}\r\n\r\n\tgetSelectItemHeightPx(): number {\r\n\t\treturn (\r\n\t\t\tparseFloat(getComputedStyle(this.panel).fontSize) *\r\n\t\t\tSELECT_ITEM_HEIGHT_EM\r\n\t\t);\r\n\t}\r\n}\r\n","export class BaseOptionModel {\r\n\tpublic label: string;\r\n\tpublic value: string | number;\r\n}\r\n","export class PackageReqModel {\r\n\tpublic name: string;\r\n\tpublic monthlyRental: number;\r\n\tpublic conversationMsg: string;\r\n\tpublic businessMsg: string;\r\n\tpublic contacts: string;\r\n\tpublic isMultipleFlow: boolean;\r\n\tpublic tps: number;\r\n\tpublic multichatLiveAgent: string;\r\n\tpublic multichatLiveSupervisor: string;\r\n\tpublic numberOfFlow: string;\r\n\tpublic waOfficialAccount: string;\r\n\tpublic dashboardToSendMessage: string;\r\n\tpublic reportAdminPanel: string;\r\n\tpublic trainingSupport: string;\r\n\tpublic isMultiple: string;\r\n\tpublic checklistWa:\tboolean;\r\n\tpublic checklistTele:\tboolean;\r\n\tpublic checklistLine:\tboolean;\r\n\tpublic specifyPackage: string;\r\n\tpublic customDevelopment: string;\r\n\tpublic oneUsageCostConversation: string;\r\n\tpublic ovrUsgConversationRateCard: boolean;\r\n\tpublic ovrUsgNotficationRateCard: boolean | string;\r\n\tpublic ovrUsgConversationCost: string;\r\n\tpublic ovrUsgNotficationCost: string;\r\n\tpublic signupOrSetup: string;\r\n\tpublic checklistAdm: boolean;\r\n\tpublic checklistUser: boolean;\r\n\tpublic checklistClient: boolean;\r\n\tpublic checklistChatAgentAdmin: boolean;\r\n\tpublic checklistChatAgentUser: boolean;\r\n\tpublic country: string;\r\n\tpublic currency: string;\r\n\tpublic customPackage: boolean;\r\n\tpublic costPerCustomer: string;\r\n\tpublic costPerBusiness: string;\r\n\tpublic setupFeeRateCard: boolean | string;\r\n\tpublic setupFee: string;\r\n\tpublic type: string;\r\n\tpublic recomended: string;\r\n\r\n\t\r\n\r\n\tpublic clone(source: any): PackageReqModel {\r\n\t\tif (source.country) {\r\n\t\t\tthis.country = source.country;\r\n\t\t}\r\n\t\tif (source.recomended) {\r\n\t\t\tthis.recomended = source.recomended;\r\n\t\t}\r\n\t\tif (source.type) {\r\n\t\t\tthis.type = source.type;\r\n\t\t}\r\n\t\tif (source.setupFeeRateCard) {\r\n\t\t\tthis.setupFeeRateCard = source.setupFeeRateCard;\r\n\t\t}\r\n\t\tif (source.setupFee) {\r\n\t\t\tif(source.setupFeeRateCard === 'true') {\r\n\t\t\t\tthis.setupFee = null;\r\n\t\t\t}else {\r\n\t\t\t\tthis.setupFee = source.setupFee;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (source.ovrUsgConversationRateCard) {\r\n\t\t\tthis.ovrUsgConversationRateCard = source.ovrUsgConversationRateCard;\r\n\t\t}\r\n\t\tif (source.costPerCustomer) {\r\n\t\t\tthis.costPerCustomer = source.costPerCustomer;\r\n\t\t}\r\n\t\tif (source.costPerBusiness) {\r\n\t\t\tthis.costPerBusiness = source.costPerBusiness;\r\n\t\t}\r\n\t\tif (source.ovrUsgNotficationRateCard) {\r\n\t\t\t\tthis.ovrUsgNotficationRateCard = source.ovrUsgNotficationRateCard;\r\n\t\t}\r\n\t\tif (source.ovrUsgConversationCost) {\r\n\t\t\tthis.ovrUsgConversationCost = source.ovrUsgConversationCost;\r\n\t\t}\r\n\t\tif (source.ovrUsgNotficationCost) {\r\n\t\t\tif(source.ovrUsgNotficationRateCard === 'true') {\r\n\t\t\t\tthis.ovrUsgNotficationCost = null;\r\n\t\t\t}else {\r\n\t\t\t\tthis.ovrUsgNotficationCost = source.ovrUsgNotficationCost;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\tif (source.customPackage) {\r\n\t\t\tthis.customPackage = source.customPackage;\r\n\t\t}\r\n\t\tif (source.currency) {\r\n\t\t\tthis.currency = source.currency;\r\n\t\t}\r\n\t\tif (source.name) {\r\n\t\t\tthis.name = source.name;\r\n\t\t}\r\n\t\tif (source.monthlyRental) {\r\n\t\t\tthis.monthlyRental = source.monthlyRental;\r\n\t\t}\r\n\t\tif (source.conversationMsg) {\r\n\t\t\tthis.conversationMsg = source.conversationMsg;\r\n\t\t}\r\n\t\tif (source.businessMsg) {\r\n\t\t\tthis.businessMsg = source.businessMsg;\r\n\t\t}\r\n\t\tif (source.contacts) {\r\n\t\t\tthis.contacts = source.contacts;\r\n\t\t}\r\n\t\tif (source.isMultipleFlow) {\r\n\t\t\tthis.isMultipleFlow = source.isMultipleFlow;\r\n\t\t}\r\n\t\tif (source.tps) {\r\n\t\t\tthis.tps = source.tps;\r\n\t\t}\r\n\t\tif (source.multichatLiveAgent) {\r\n\t\t\tthis.multichatLiveAgent = source.multichatLiveAgent;\r\n\t\t}\r\n\t\tif (source.multichatLiveSupervisor) {\r\n\t\t\tthis.multichatLiveSupervisor = source.multichatLiveSupervisor;\r\n\t\t}\r\n\t\tif (source.numberOfFlow) {\r\n\t\t\tthis.numberOfFlow = source.numberOfFlow;\r\n\t\t}\r\n\t\tif (source.waOfficialAccount) {\r\n\t\t\tthis.waOfficialAccount = source.waOfficialAccount;\r\n\t\t}\r\n\t\tif (source.dashboardToSendMessage) {\r\n\t\t\tthis.dashboardToSendMessage = source.dashboardToSendMessage;\r\n\t\t}\r\n\t\tif (source.reportAdminPanel) {\r\n\t\t\tthis.reportAdminPanel = source.reportAdminPanel;\r\n\t\t}\r\n\t\tif (source.trainingSupport) {\r\n\t\t\tthis.trainingSupport = source.trainingSupport;\r\n\t\t}\r\n\t\tif (source.isMultiple) {\r\n\t\t\tthis.isMultiple = source.isMultiple;\r\n\t\t}\r\n\t\tif (source.checklistWa) {\r\n\t\t\tthis.checklistWa = source.checklistWa;\r\n\t\t}\r\n\t\tif (source.checklistLine) {\r\n\t\t\tthis.checklistLine = source.checklistLine;\r\n\t\t}\r\n\t\tif (source.checklistTele) {\r\n\t\t\tthis.checklistTele = source.checklistTele;\r\n\t\t}\r\n\t\tif (source.specifyPackage) {\r\n\t\t\tthis.specifyPackage = source.specifyPackage;\r\n\t\t}\r\n\t\tif (source.customDevelopment) {\r\n\t\t\tthis.customDevelopment = source.customDevelopment;\r\n\t\t}\r\n\t\tif (source.oneUsageCostConversation) {\r\n\t\t\tthis.oneUsageCostConversation = source.oneUsageCostConversation;\r\n\t\t}\r\n\t\t// if (source.oneUsageCostNotification) {\r\n\t\t// \tthis.oneUsageCostNotification = source.oneUsageCostNotification;\r\n\t\t// }\r\n\t\tif (source.signupOrSetup) {\r\n\t\t\tthis.signupOrSetup = source.signupOrSetup;\r\n\t\t}\r\n\t\tif (source.checklistAdm) {\r\n\t\t\tthis.checklistAdm = source.checklistAdm;\r\n\t\t}\r\n\t\tif (source.checklistUser) {\r\n\t\t\tthis.checklistUser = source.checklistUser;\r\n\t\t}\r\n\t\tif (source.checklistClient) {\r\n\t\t\tthis.checklistClient = source.checklistClient;\r\n\t\t}\r\n\t\tif (source.checklistChatAgentAdmin) {\r\n\t\t\tthis.checklistChatAgentAdmin = source.checklistChatAgentAdmin;\r\n\t\t}\r\n\t\tif (source.checklistChatAgentUser) {\r\n\t\t\tthis.checklistChatAgentUser = source.checklistChatAgentUser;\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n}","export class HttpBodyReqPaginationModel {\r\n\tpublic pageSize: number;\r\n\tpublic pageNo: number;\r\n\r\n\tconstructor() {\r\n\t\tthis.pageSize = 10;\r\n\t\tthis.pageNo = 1;\r\n\t}\r\n\r\n\tpublic convert(): any {\r\n\t\treturn {\r\n\t\t\tpageSize: this.pageSize,\r\n\t\t\tpageNo: this.pageNo,\r\n\t\t};\r\n\t}\r\n}\r\n","export class HttpBodyReqPaginationGlobalVarModel {\r\n\tpublic pageSize: number;\r\n\tpublic pageNo: number;\r\n\r\n\tconstructor() {\r\n\t\tthis.pageSize = 3;\r\n\t\tthis.pageNo = 1;\r\n\t}\r\n\r\n\tpublic convert(): any {\r\n\t\treturn {\r\n\t\t\tpageSize: this.pageSize,\r\n\t\t\tpageNo: this.pageNo,\r\n\t\t};\r\n\t}\r\n}\r\n","let API_CONST = '';\r\n\r\nif (location.origin.includes('dashboard.neuapix'))\r\n\tAPI_CONST = 'https://api.neuapix.com';\r\nelse if (location.origin.includes('dashboard-staging.neuapix'))\r\n\tAPI_CONST = 'https://api-staging.neuapix.com';\r\nelse if (location.origin.includes('dashboard-qa.adlsandbox'))\r\n\tAPI_CONST = 'https://apibsp-qa.adlsandbox.net';\r\nelse API_CONST = 'https://apibsp-dev.adlsandbox.net';\r\n\r\nexport const environment = {\r\n\tproduction: false,\r\n\tapi: API_CONST,\r\n};\r\n","import { HttpBodyReqPaginationModel } from \"./util\";\r\n\r\nexport class BillingParamReqModel extends HttpBodyReqPaginationModel {\r\n\tpublic filter: string;\r\n\tpublic platform: string;\r\n\tpublic clientId: string;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tpublic convert(): any {\r\n\t\treturn {\r\n\t\t\tfilter: this.filter,\r\n\t\t\tplatform: this.platform,\r\n\t\t\tclientId: this.clientId,\r\n\t\t\tpageNo: String(this.pageNo),\r\n\t\t\tpageSize: String(this.pageSize),\r\n\t\t};\r\n\t}\r\n}\r\n","export class CountryModel {\r\n\tpublic category: string;\r\n\tpublic code: string;\r\n\tpublic values: string;\r\n\tpublic param1: string;\r\n\tpublic param2: boolean;\r\n\tpublic ìcon: boolean;\r\n\r\n\tpublic convert(dto: any): CountryModel {\r\n\r\n\t\tif (dto.category) {\r\n\t\t\tthis.category = dto.category;\r\n\t\t}\r\n\t\tif (dto.code) {\r\n\t\t\tthis.code = dto.code;\r\n\t\t}\r\n\t\tif (dto.values) {\r\n\t\t\tthis.values = dto.values;\r\n\t\t}\r\n\t\tif (dto.param1) {\r\n\t\t\tthis.param1 = dto.param1;\r\n\t\t}\r\n\t\tif (dto.param2) {\r\n\t\t\tthis.param2 = dto.param2;\r\n\t\t}\r\n\t\tif (dto.ìcon) {\r\n\t\t\tthis.ìcon = dto.ìcon;\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n}\r\n","export class CreatePackageReqModel {\r\n\tpublic name : string;\r\n\tpublic channels : string[] = [];\r\n\tpublic customDevelopment : boolean;\r\n\tpublic maxAgent : string;\r\n\tpublic maxContact : string;\r\n\tpublic maxFlow : string;\r\n\tpublic maxSupervisor : string;\r\n\tpublic monthlyConversation : string;\r\n\tpublic monthlyNotification : string;\r\n\tpublic monthlyRental : number;\r\n\tpublic monthlyRentalRateCard : string;\r\n\tpublic ovrUsgConversation : string;\r\n\tpublic ovrUsgConversationCost : string;\r\n\tpublic ovrUsgConversationRateCard : boolean;\r\n\tpublic ovrUsgNotification : string;\r\n\tpublic ovrUsgNotificationCost : string;\r\n\tpublic ovrUsgNotificationRateCard : boolean;\r\n\tpublic reports : boolean;\r\n\tpublic roles : string;\r\n\tpublic sendMsgDashboard : boolean;\r\n\tpublic setupFee : string;\r\n\tpublic tps : number;\r\n\tpublic training : boolean;\r\n\tpublic waOfficialAcc : boolean;\r\n\tpublic customPackage: boolean;\r\n\tpublic countryCode: string;\r\n\tpublic costPerCustomer: string;\r\n\tpublic costPerBusiness: string;\r\n\tpublic setupFeeRateCard: boolean;\r\n\tpublic type: string;\r\n\tpublic recomended: string;\r\n\r\n\tpublic clone(source:any): CreatePackageReqModel {\r\n\t\tif (source.name) {\r\n\t\t\tthis.name = source.name;\r\n\t\t}\r\n\t\tif (source.type) {\r\n\t\t\tthis.type = source.type;\r\n\t\t}\r\n\t\tif (source.recomended) {\r\n\t\t\tthis.recomended = source.recomended;\r\n\t\t}\r\n\t\tif (source.setupFeeRateCard) {\r\n\t\t\tthis.setupFeeRateCard = source.setupFeeRateCard;\r\n\t\t}\r\n\t\tif (source.countryCode) {\r\n\t\t\tthis.countryCode = source.countryCode;\r\n\t\t}\r\n\t\tif (source.costPerCustomer) {\r\n\t\t\tthis.costPerCustomer = source.costPerCustomer;\r\n\t\t}\r\n\t\tif (source.costPerBusiness) {\r\n\t\t\tthis.costPerBusiness = source.costPerBusiness;\r\n\t\t}\r\n\t\tif (source.customPackage) {\r\n\t\t\tthis.customPackage = source.customPackage;\r\n\t\t}\r\n\t\tif (source.channels) {\r\n\t\t\tthis.channels = [source.channels];\r\n\t\t}\r\n\t\tif (source.customDevelopment) {\r\n\t\t\tthis.customDevelopment = source.customDevelopment;\r\n\t\t}\r\n\t\tif (source.maxAgent) {\r\n\t\t\tthis.maxAgent = source.maxAgent;\r\n\t\t}\r\n\t\tif (source.maxContact) {\r\n\t\t\tthis.maxContact = source.maxContact;\r\n\t\t}\r\n\t\tif (source.maxFlow) {\r\n\t\t\tthis.maxFlow = source.maxFlow;\r\n\t\t}\r\n\t\tif (source.maxSupervisor) {\r\n\t\t\tthis.maxSupervisor = source.maxSupervisor;\r\n\t\t}\r\n\t\tif (source.monthlyConversation) {\r\n\t\t\tthis.monthlyConversation = source.monthlyConversation;\r\n\t\t}\r\n\t\tif (source.monthlyNotification) {\r\n\t\t\tthis.monthlyNotification = source.monthlyNotification;\r\n\t\t}\r\n\t\tif (source.monthlyRental) {\r\n\t\t\tthis.monthlyRental = source.monthlyRental;\r\n\t\t}\r\n\t\tif (source.monthlyRentalRateCard) {\r\n\t\t\tthis.monthlyRentalRateCard = source.monthlyRentalRateCard;\r\n\t\t}\r\n\t\tif (source.ovrUsgConversation) {\r\n\t\t\tthis.ovrUsgConversation = source.ovrUsgConversation;\r\n\t\t}\r\n\t\tif (source.ovrUsgConversationCost) {\r\n\t\t\tthis.ovrUsgConversationCost = source.ovrUsgConversationCost;\r\n\t\t}\r\n\t\tif (source.ovrUsgConversationRateCard) {\r\n\t\t\tthis.ovrUsgConversationRateCard = source.ovrUsgConversationRateCard;\r\n\t\t}\r\n\t\tif (source.ovrUsgNotification) {\r\n\t\t\tthis.ovrUsgNotification = source.ovrUsgNotification;\r\n\t\t}\r\n\t\tif (source.ovrUsgNotificationCost) {\r\n\t\t\tthis.ovrUsgNotificationCost = source.ovrUsgNotificationCost;\r\n\t\t}\r\n\t\tif (source.ovrUsgNotificationRateCard) {\r\n\t\t\tthis.ovrUsgNotificationRateCard = source.ovrUsgNotificationRateCard;\r\n\t\t}\r\n\t\tif (source.reports) {\r\n\t\t\tthis.reports = source.reports;\r\n\t\t}\r\n\t\tif (source.roles) {\r\n\t\t\tthis.roles = source.roles;\r\n\t\t}\r\n\t\tif (source.sendMsgDashboard) {\r\n\t\t\tthis.sendMsgDashboard = source.sendMsgDashboard;\r\n\t\t}\r\n\t\tif (source.setupFee) {\r\n\t\t\tthis.setupFee = source.setupFee;\r\n\t\t}\r\n\t\tif (source.tps) {\r\n\t\t\tthis.tps = source.tps;\r\n\t\t}\r\n\t\tif (source.training) {\r\n\t\t\tthis.training = source.training;\r\n\t\t}\r\n\t\tif (source.waOfficialAcc) {\r\n\t\t\tthis.waOfficialAcc = source.waOfficialAcc;\r\n\t\t}\r\n\r\n\t\t\r\n\t\treturn this;\r\n\t}\r\n\r\n\tconvert(): any {\r\n\t\treturn {\r\n\t\t\tname: this.name,\r\n\t\t\tchannels : this.channels ,\r\n\t\t\tcustomDevelopment : this.customDevelopment ,\r\n\t\t\tmaxAgent : +this.maxAgent ,\r\n\t\t\tmaxContact :+this.maxContact ,\r\n\t\t\tmaxFlow : +this.maxFlow ,\r\n\t\t\tmaxSupervisor : +this.maxSupervisor ,\r\n\t\t\tmonthlyConversation : +this.monthlyConversation ,\r\n\t\t\tmonthlyNotification : +this.monthlyNotification ,\r\n\t\t\tmonthlyRental : +this.monthlyRental ,\r\n\t\t\tmonthlyRentalRateCard : this.monthlyRentalRateCard ,\r\n\t\t\tovrUsgConversation : this.ovrUsgConversation ,\r\n\t\t\tovrUsgConversationCost : +this.ovrUsgConversationCost ,\r\n\t\t\tovrUsgConversationRateCard : this.ovrUsgConversationRateCard ,\r\n\t\t\tovrUsgNotification : this.ovrUsgNotification ,\r\n\t\t\tovrUsgNotificationCost : +this.ovrUsgNotificationCost ,\r\n\t\t\tovrUsgNotificationRateCard : this.ovrUsgNotificationRateCard ,\r\n\t\t\treports : this.reports ,\r\n\t\t\troles : this.roles ,\r\n\t\t\tsendMsgDashboard : this.sendMsgDashboard ,\r\n\t\t\tsetupFee : +this.setupFee ,\r\n\t\t\ttps : +this.tps ,\r\n\t\t\ttraining : this.training ,\r\n\t\t\twaOfficialAcc : this.waOfficialAcc,\r\n\t\t\tcustomPackage: this.customPackage,\r\n\t\t\tcountryCode: this.countryCode,\r\n\t\t\tcostPerBusiness: this.costPerBusiness,\r\n\t\t\tcostPerCustomer: this.costPerCustomer,\r\n\t\t\tsetupFeeRateCard: this.setupFeeRateCard,\r\n\t\t\ttype: this.type,\r\n\t\t\trecomended: this.recomended\r\n\t\t};\r\n\t}\r\n}","export class HttpBodyRespModel {\r\n\tpublic status: number;\r\n\tpublic errorCode: number;\r\n\tpublic message: string;\r\n\tpublic data: any;\r\n\tpublic totalRecord: number;\r\n\r\n\tpublic convert(dto: any): HttpBodyRespModel {\r\n\t\tif (dto.status) {\r\n\t\t\tthis.status = dto.status;\r\n\t\t}\r\n\t\tif (dto.errorCode) {\r\n\t\t\tthis.errorCode = dto.errorCode;\r\n\t\t}\r\n\t\tif (dto.message) {\r\n\t\t\tthis.message = dto.message;\r\n\t\t}\r\n\t\tif (dto.data) {\r\n\t\t\tthis.data = dto.data;\r\n\t\t}\r\n\t\tif (dto.totalRecord >= 0) {\r\n\t\t\tthis.totalRecord = dto.totalRecord;\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n}\r\n","import {\r\n\tHttpClient,\r\n\tHttpErrorResponse,\r\n\tHttpHeaders,\r\n} from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/internal/operators/catchError';\r\nimport { environment } from '../../../environments/environment';\r\nimport {\r\n\tParameter,\r\n\tServerInBuiltError,\r\n} from '../models/util/api-adapter-service-models';\r\nimport { AppRequest } from '../models/util/api-dto/request-models/app-request';\r\nimport { AppResponse } from '../models/util/api-dto/response-models/app-response';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class ApiAdapterServiceService {\r\n\tprivate queryCount = 0;\r\n\r\n\tconstructor(private httpClient: HttpClient) {}\r\n\r\n\tpublic executeApiRequest<T>(\r\n\t\tparameterList: Array<Parameter>,\r\n\t\tpath: string,\r\n\t\thttpVerb: string,\r\n\t\tisFile: boolean = false\r\n\t): Observable<any> {\r\n\t\tlet url = path;\r\n\t\tlet bodyData: {};\r\n\t\tlet parameter: Parameter;\r\n\t\tlet formData = new FormData();\r\n\r\n\t\tparameterList\r\n\t\t\t?.filter(rt => rt.in !== 'header')\r\n\t\t\t.forEach(requestType => {\r\n\t\t\t\tparameter = parameterList.find(\r\n\t\t\t\t\tparameter => parameter.name === requestType.name\r\n\t\t\t\t) as Parameter;\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\t!parameter &&\r\n\t\t\t\t\trequestType.required &&\r\n\t\t\t\t\trequestType.in !== 'header'\r\n\t\t\t\t) {\r\n\t\t\t\t\twindow.alert(\r\n\t\t\t\t\t\t`Parameter \"${requestType.name}\" is required!, Try again with \"${requestType.name}\"`\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (!parameter && !requestType.required) {\r\n\t\t\t\t\t// continue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tswitch (requestType.in) {\r\n\t\t\t\t\t\tcase 'body': {\r\n\t\t\t\t\t\t\tbodyData = parameter.value;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcase 'path': {\r\n\t\t\t\t\t\t\turl = url.replace(\r\n\t\t\t\t\t\t\t\t`{${parameter.name}}`,\r\n\t\t\t\t\t\t\t\tparameter.value\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcase 'query': {\r\n\t\t\t\t\t\t\turl = this.setQuery(\r\n\t\t\t\t\t\t\t\tparameter.name,\r\n\t\t\t\t\t\t\t\tparameter.value,\r\n\t\t\t\t\t\t\t\turl\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcase 'formData': {\r\n\t\t\t\t\t\t\tformData = this.setFormData(parameter, formData);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdefault: {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tparameter = undefined;\r\n\t\t\t});\r\n\r\n\t\tthis.queryCount = 0;\r\n\r\n\t\turl = `${environment.api}${url}`;\r\n\t\tconst appRequest: AppRequest<any> = {\r\n\t\t\t...(parameterList?.[0]?.withoutKeyData\r\n\t\t\t\t? bodyData\r\n\t\t\t\t: { data: bodyData }),\r\n\t\t};\r\n\r\n\t\tconst headers = new HttpHeaders()\r\n\t\t\t.set(\r\n\t\t\t\t'Authorization',\r\n\t\t\t\t'Bearer ' + localStorage.getItem('telin.accessToken')\r\n\t\t\t)\r\n\t\t\t.set('Access-Control-Allow-Origin', '*');\r\n\r\n\t\treturn this.httpClient\r\n\t\t\t.request<AppResponse<T>>(httpVerb, url, {\r\n\t\t\t\tbody: !bodyData ? formData : appRequest,\r\n\t\t\t\tresponseType: isFile ? ('blob' as 'json') : ('json' as 'json'),\r\n\t\t\t\theaders,\r\n\t\t\t})\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError((err: HttpErrorResponse) => {\r\n\t\t\t\t\tif (err.error instanceof ErrorEvent) {\r\n\t\t\t\t\t\treturn of<AppResponse<any>>({\r\n\t\t\t\t\t\t\terror: {\r\n\t\t\t\t\t\t\t\ttitle: 'Network error!',\r\n\t\t\t\t\t\t\t\tdetail: err.message,\r\n\t\t\t\t\t\t\t\tsource: err.statusText,\r\n\t\t\t\t\t\t\t\tstatus: err.status.toString(),\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tmeta: {\r\n\t\t\t\t\t\t\t\tcode: err.status,\r\n\t\t\t\t\t\t\t\tmessage: err.message,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn of<ServerInBuiltError>(err.error);\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t}\r\n\r\n\tprivate setQuery(name: string, value: any, url: string): string {\r\n\t\turl =\r\n\t\t\tthis.queryCount === 0\r\n\t\t\t\t? `${url}?${name}=${value}`\r\n\t\t\t\t: `${url}&${name}=${value}`;\r\n\t\tthis.queryCount++;\r\n\t\treturn url;\r\n\t}\r\n\r\n\tprivate setFormData(parameter: Parameter, formData: FormData): FormData {\r\n\t\tif (parameter.type === 'array') {\r\n\t\t\tfor (let i = 0; parameter.value.length > i; i++) {\r\n\t\t\t\tformData.append(\r\n\t\t\t\t\tparameter.name,\r\n\t\t\t\t\tparameter.value[i],\r\n\t\t\t\t\tparameter.value[i].name\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tformData.append(\r\n\t\t\t\tparameter.name,\r\n\t\t\t\tparameter.value ? parameter.value : null\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn formData;\r\n\t}\r\n}\r\n","export const CampaignListTableLabelConst = [\r\n\t'Broadcast ID',\r\n\t'Business Name',\r\n\t'Broadcast Name',\r\n\t'Template Name',\r\n\t'Channel',\r\n\t'Status',\r\n\t'Number Count',\r\n\t'On Progress',\r\n\t'Sent',\r\n\t'Delivered',\r\n\t'Read',\r\n\t'Failed',\r\n\t'Repeat Count',\r\n\t'Start Date',\r\n\t'End Date',\r\n\t'Action',\r\n];\r\n\r\nexport const CampaignListTableColumnConst = [\r\n\t'id',\r\n\t'clientName',\r\n\t'name',\r\n\t'templateName',\r\n\t'platform',\r\n\t'statusName',\r\n\t'numberCount',\r\n\t'queuedCount',\r\n\t'sentCount',\r\n\t'delivCount',\r\n\t'readCount',\r\n\t'failedCount',\r\n\t'repeatCount',\r\n\t'startTime',\r\n\t'endTime',\r\n\t'action',\r\n];\r\n","import { MatTableDataSource } from '@angular/material/table';\r\n\r\nexport class TableModel {\r\n\tpublic columns: any[];\r\n\tpublic dataSource: MatTableDataSource<any>;\r\n\tpublic labels: string[];\r\n\tpublic page: number;\r\n\tpublic pageSize: number;\r\n\tpublic totalData: number;\r\n\r\n\tconstructor() {\r\n\t\tthis.columns = [];\r\n\t\tthis.dataSource = new MatTableDataSource();\r\n\t\tthis.labels = [];\r\n\t\tthis.page = 1;\r\n\t\tthis.pageSize = 10;\r\n\t\tthis.totalData = 0;\r\n\t}\r\n\r\n\tpublic getNumber(index: number, limit: number): number {\r\n\t\treturn (this.page - 1) * limit + index;\r\n\t}\r\n\r\n\tpublic getPageIndex(): number {\r\n\t\treturn this.page - 1;\r\n\t}\r\n\r\n\tpublic isEmpty(): boolean {\r\n\t\treturn this.totalData === 0;\r\n\t}\r\n\r\n\tpublic setPage(page: number): void {\r\n\t\tthis.page = page;\r\n\t}\r\n\r\n\tpublic setPageSize(size: number): void {\r\n\t\tthis.pageSize = size;\r\n\t}\r\n\r\n\tpublic resetPage(): void {\r\n\t\tthis.page = 1;\r\n\t}\r\n\r\n\tpublic setNextPage(isNext: boolean): void {\r\n\t\tif (!isNext && this.page === 1) {\r\n\t\t\tthis.totalData = this.dataSource.data?.length ?? 0;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.totalData =\r\n\t\t\tthis.page === 1\r\n\t\t\t\t? this.pageSize * 2\r\n\t\t\t\t: this.pageSize * (this.page + 1);\r\n\r\n\t\tconst diffData = this.pageSize - this.dataSource.data?.length;\r\n\r\n\t\t/* totalData substracted by diffData if data < pageSize */\r\n\t\tif (diffData !== 0) this.totalData -= diffData;\r\n\r\n\t\t/* totalData substracted by pageSize if isNext false */\r\n\t\tif (!isNext) this.totalData -= this.pageSize;\r\n\t}\r\n}\r\n","export class CampaignsListModel {\r\n\tpublic campaignID: string;\r\n\tpublic businessName: string;\r\n\tpublic campaignName: string;\r\n\tpublic medium: string;\r\n\tpublic status: string;\r\n\tpublic numberCount: number;\r\n\tpublic deilveredCount: number;\r\n\tpublic seenCount: number;\r\n\tpublic responseCount: number;\r\n\tpublic estimatedCost: number;\r\n\tpublic actualCost: number;\r\n\tpublic startDate: string;\r\n\tpublic endDate: string;\r\n\tpublic id: string;\r\n\r\n\tpublic convert(dto: any): CampaignsListModel {\r\n\t\tif (dto.campaignID) {\r\n\t\t\tthis.campaignID = dto.campaignID;\r\n\t\t}\r\n\t\tif (dto.businessName) {\r\n\t\t\tthis.businessName = dto.businessName;\r\n\t\t}\r\n\t\tif (dto.campaignName) {\r\n\t\t\tthis.campaignName = dto.campaignName;\r\n\t\t}\r\n\t\tif (dto.medium) {\r\n\t\t\tthis.medium = dto.medium;\r\n\t\t}\r\n\t\tif (dto.status) {\r\n\t\t\tthis.status = dto.status;\r\n\t\t}\r\n\t\tif (dto.numberCount) {\r\n\t\t\tthis.numberCount = dto.numberCount;\r\n\t\t}\r\n\t\tif (dto.deilveredCount) {\r\n\t\t\tthis.deilveredCount = dto.deilveredCount;\r\n\t\t}\r\n\t\tif (dto.seenCount) {\r\n\t\t\tthis.seenCount = dto.seenCount;\r\n\t\t}\r\n\t\tif (dto.responseCount) {\r\n\t\t\tthis.responseCount = dto.responseCount;\r\n\t\t}\r\n\t\tif (dto.estimatedCost) {\r\n\t\t\tthis.estimatedCost = dto.estimatedCost;\r\n\t\t}\r\n\t\tif (dto.actualCost) {\r\n\t\t\tthis.actualCost = dto.actualCost;\r\n\t\t}\r\n\t\tif (dto.startDate) {\r\n\t\t\tthis.startDate = dto.startDate;\r\n\t\t}\r\n\t\tif (dto.endDate) {\r\n\t\t\tthis.endDate = dto.endDate;\r\n\t\t}\r\n\t\tif (dto.id) {\r\n\t\t\tthis.id = dto.id;\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { MainArea } from '../../../core/enums/main-area.enum';\r\nimport { HttpBodyReqPaginationModel } from '../../../core/models';\r\nimport { Parameter } from '../../../core/models/util/api-adapter-service-models';\r\nimport { AppResponse } from '../../../core/models/util/api-dto/response-models/app-response';\r\nimport { ApiAdapterServiceService } from '../../../core/services/api-adapter-service.service';\r\nimport { CampaignTotalDto } from '../../models/campaign-count-final-response-dto.model';\r\nimport {\r\n\tCampaignListTableColumnConst,\r\n\tCampaignListTableLabelConst,\r\n\tTableModel,\r\n} from './models';\r\nimport { CampaignResponseDtoApi } from './models/campaign-response-dto.model';\r\n\r\n@Component({\r\n\tselector: 'lib-campaign-index',\r\n\ttemplateUrl: './campaign-index.component.html',\r\n\tstyleUrls: ['./campaign-index.component.scss'],\r\n})\r\nexport class CampaignIndexComponent implements OnInit, OnDestroy {\r\n\t@Output() currentView = new EventEmitter<MainArea>();\r\n\r\n\tpublic table: TableModel;\r\n\tpublic filterValue: any;\r\n\tpublic currentViews = MainArea;\r\n\tpublic campaignTotal: CampaignTotalDto;\r\n\r\n\tprivate campaignParam: HttpBodyReqPaginationModel;\r\n\tprivate subscribers: Subscription[] = [];\r\n\r\n\tconstructor(\r\n\t\tprivate datePipe: DatePipe,\r\n\t\tprivate apiAdapterService: ApiAdapterServiceService\r\n\t) {}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.campaignParam = new HttpBodyReqPaginationModel();\r\n\r\n\t\tthis.initTable();\r\n\t\tthis.campaignCountService();\r\n\t\tthis.getCampaignList();\r\n\r\n\t\tlocalStorage.removeItem('telin.campaign');\r\n\t}\r\n\r\n\tprivate initTable(): void {\r\n\t\tthis.table = new TableModel();\r\n\t\tthis.table.labels = CampaignListTableLabelConst;\r\n\t\tthis.table.columns = CampaignListTableColumnConst;\r\n\t}\r\n\r\n\tprivate campaignCountService() {\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest([], '/campaign/totals', 'GET')\r\n\t\t\t.subscribe((response: AppResponse<CampaignTotalDto>) => {\r\n\t\t\t\tthis.campaignTotal = response?.data;\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tpublic getCampaignList(searchValue: string = ''): void {\r\n\t\tconst parameterList: Array<Parameter> = [\r\n\t\t\tthis.initParam('pageNo', this.campaignParam.pageNo, 'number'),\r\n\t\t\tthis.initParam('rowPerPage', this.campaignParam.pageSize, 'number'),\r\n\t\t\tthis.initParam('filter', searchValue, 'string'),\r\n\t\t];\r\n\r\n\t\tif (this.filterValue?.businessName)\r\n\t\t\tparameterList.push(\r\n\t\t\t\tthis.initParam(\r\n\t\t\t\t\t'clientId',\r\n\t\t\t\t\tthis.filterValue.businessName,\r\n\t\t\t\t\t'string'\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\tif (this.filterValue?.medium)\r\n\t\t\tparameterList.push(\r\n\t\t\t\tthis.initParam('channel', this.filterValue.medium, 'string')\r\n\t\t\t);\r\n\t\tif (this.filterValue?.templateName)\r\n\t\t\tparameterList.push(\r\n\t\t\t\tthis.initParam(\r\n\t\t\t\t\t'templateName',\r\n\t\t\t\t\tthis.filterValue.templateName?.name,\r\n\t\t\t\t\t'string'\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\tif (this.filterValue?.status)\r\n\t\t\tparameterList.push(\r\n\t\t\t\tthis.initParam('status', this.filterValue.status, 'string')\r\n\t\t\t);\r\n\t\tif (this.filterValue?.startDate)\r\n\t\t\tparameterList.push(\r\n\t\t\t\tthis.initParam(\r\n\t\t\t\t\t'startDate',\r\n\t\t\t\t\tthis.datePipe.transform(\r\n\t\t\t\t\t\tthis.filterValue.startDate,\r\n\t\t\t\t\t\t'yyyy-MM-dd'\r\n\t\t\t\t\t),\r\n\t\t\t\t\t'string'\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\tif (this.filterValue?.endDate)\r\n\t\t\tparameterList.push(\r\n\t\t\t\tthis.initParam(\r\n\t\t\t\t\t'endDate',\r\n\t\t\t\t\tthis.datePipe.transform(\r\n\t\t\t\t\t\tthis.filterValue.endDate,\r\n\t\t\t\t\t\t'yyyy-MM-dd'\r\n\t\t\t\t\t),\r\n\t\t\t\t\t'string'\r\n\t\t\t\t)\r\n\t\t\t);\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(parameterList, '/campaign', 'GET')\r\n\t\t\t.subscribe((resp: AppResponse<CampaignResponseDtoApi[]>) => {\r\n\t\t\t\tthis.table.dataSource.data = resp.data;\r\n\t\t\t\tthis.table.setNextPage(resp.haveNext);\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tprivate initParam(_name: string, _value: any, _type: string): Parameter {\r\n\t\treturn {\r\n\t\t\tname: _name,\r\n\t\t\tvalue: _value,\r\n\t\t\tin: 'query',\r\n\t\t\ttype: _type,\r\n\t\t};\r\n\t}\r\n\r\n\tpublic updatePage(event: any): void {\r\n\t\tif (event.pageSize) {\r\n\t\t\tthis.table.totalData = event.pageSize;\r\n\t\t\tthis.table.setPageSize(event.pageSize);\r\n\t\t\tthis.table.resetPage();\r\n\t\t} else {\r\n\t\t\tthis.table.setPage(event);\r\n\t\t}\r\n\r\n\t\tthis.campaignParam.pageNo = this.table.page;\r\n\t\tthis.campaignParam.pageSize = this.table.pageSize;\r\n\t\tthis.getCampaignList();\r\n\t}\r\n\r\n\tpublic updateFilter(_filter: any) {\r\n\t\tthis.table.resetPage();\r\n\t\tthis.campaignParam.pageNo = this.table.page;\r\n\t\tthis.campaignParam.pageSize = this.table.pageSize;\r\n\t\tthis.filterValue = _filter;\r\n\r\n\t\tthis.getCampaignList();\r\n\t}\r\n\r\n\tpublic updateSearch(searchValue: string) {\r\n\t\tthis.table.resetPage();\r\n\t\tthis.campaignParam.pageNo = this.table.page;\r\n\t\tthis.getCampaignList(searchValue);\r\n\t}\r\n\r\n\tpublic addCampaign(): void {\r\n\t\tlocalStorage.removeItem('telin.campaign');\r\n\t\tthis.changeCurrentView(this.currentViews.NewCampaign);\r\n\t}\r\n\r\n\tpublic changeCurrentView(area: MainArea) {\r\n\t\tthis.currentView.emit(area);\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.subscribers.forEach(each => each.unsubscribe());\r\n\t}\r\n}\r\n","export const PlatformOptionConst = [\r\n\t{\r\n\t\ticon: 'icon_wa',\r\n\t\tinputSvgIcon: 'icon-wa-gray',\r\n\t\timage: 'whatsapp.png',\r\n\t\tlabel: 'WhatsApp',\r\n\t\tvalue: 'WA',\r\n\t},\r\n\t{\r\n\t\ticon: 'menu_sms',\r\n\t\tinputSvgIcon: 'icon-sms-gray',\r\n\t\timage: 'sms.png',\r\n\t\tlabel: 'SMS',\r\n\t\tvalue: 'SMS',\r\n\t},\r\n\t{\r\n\t\ticon: 'icon_email',\r\n\t\tinputSvgIcon: 'icon-email-gray',\r\n\t\timage: 'email-contact.png',\r\n\t\tlabel: 'Email',\r\n\t\tvalue: 'EMAIL',\r\n\t},\r\n\t{\r\n\t\ticon: 'icon_line',\r\n\t\tinputSvgIcon: 'icon-line-gray',\r\n\t\timage: 'line.png',\r\n\t\tlabel: 'Line',\r\n\t\tvalue: 'LINE',\r\n\t},\r\n];\r\n\r\nexport const MsgTypeWAOptionConst = [\r\n\t{\r\n\t\tname: 'Text',\r\n\t\tcode: 'TEXT',\r\n\t},\r\n\t{\r\n\t\tname: 'Media',\r\n\t\tcode: 'MEDIA',\r\n\t},\r\n\t{\r\n\t\tname: 'Template',\r\n\t\tcode: 'TEMPLATE',\r\n\t},\r\n\t/* {\r\n\t\tname: 'Catalogue',\r\n\t\tcode: 'CATALOGUE',\r\n\t}, */\r\n];\r\n\r\nexport const MsgTypeEmailOptionConst = [\r\n\t{\r\n\t\tname: 'Text',\r\n\t\tcode: 'HTML',\r\n\t},\r\n\t{\r\n\t\tname: 'Template',\r\n\t\tcode: 'TEMPLATE',\r\n\t},\r\n];\r\n\r\nexport const MsgTypeLineOptionConst = [\r\n\t{\r\n\t\tname: 'Text',\r\n\t\tcode: 'TEXT',\r\n\t},\r\n\t{\r\n\t\tname: 'Template',\r\n\t\tcode: 'TEMPLATE',\r\n\t},\r\n\t/* {\r\n\t\tname: 'Button',\r\n\t\tcode: 'BUTTON',\r\n\t},\r\n\t{\r\n\t\tname: 'Confirmation',\r\n\t\tcode: 'CONFIRMATION',\r\n\t},\r\n\t{\r\n\t\tname: 'Carousel',\r\n\t\tcode: 'CAROUSEL',\r\n\t},\r\n\t{\r\n\t\tname: 'Image Carousel',\r\n\t\tcode: 'IMAGE_CAROUSEL',\r\n\t},\r\n\t{\r\n\t\tname: 'Flex Bubble',\r\n\t\tcode: 'FLEX_BUBBLE',\r\n\t},\r\n\t{\r\n\t\tname: 'Flex Carousel',\r\n\t\tcode: 'FLEX_CAROUSEL',\r\n\t}, */\r\n];\r\n\r\nexport const MediaTypeOptionConst = [\r\n\t{\r\n\t\tname: 'Image',\r\n\t\tcode: 'IMAGE',\r\n\t},\r\n\t{\r\n\t\tname: 'Video',\r\n\t\tcode: 'VIDEO',\r\n\t},\r\n\t{\r\n\t\tname: 'Document',\r\n\t\tcode: 'DOCUMENT',\r\n\t},\r\n\t/* {\r\n\t\tname: 'Location',\r\n\t\tcode: 'LOCATION',\r\n\t}, */\r\n];\r\n\r\nexport const WidgetLiveCampaignConst: {\r\n\ttitle: string;\r\n\tarrow: string;\r\n\tvalue: number;\r\n\tdate: string;\r\n\ticon: string;\r\n\tdateclass: string;\r\n}[] = [\r\n\t{\r\n\t\ttitle: 'Total Campaigns',\r\n\t\tarrow: '../../../../assets/svg/icon-down-arrow.svg',\r\n\t\tvalue: 0,\r\n\t\tdate: '',\r\n\t\ticon: '../../../../assets/svg/icon-total-campaign.svg',\r\n\t\tdateclass: 'redpercent',\r\n\t},\r\n\t{\r\n\t\ttitle: 'Live Campaigns',\r\n\t\tarrow: '../../../../assets/svg/icon-down-arrow.svg',\r\n\t\tvalue: 0,\r\n\t\tdate: '',\r\n\t\ticon: '../../../../assets/svg/icon-use-campaign.svg',\r\n\t\tdateclass: 'redpercent',\r\n\t},\r\n\t{\r\n\t\ttitle: 'Pending Approval',\r\n\t\tarrow: '../../../../assets/svg/icon-down-arrow.svg',\r\n\t\tvalue: 0,\r\n\t\tdate: '',\r\n\t\ticon: '../../../../assets/svg/icon-pending-approval-campaign.svg',\r\n\t\tdateclass: 'redpercent',\r\n\t},\r\n];\r\n\r\nexport const CampaignPerformanceChartConfig = {\r\n\tlegend: {\r\n\t\ticon: 'circle',\r\n\t\torient: 'horizontal',\r\n\t\tx: 'center',\r\n\t\ty: 'bottom',\r\n\t},\r\n\ttooltip: {},\r\n\tdataset: {\r\n\t\tsource: [['', 'WA Text', 'WA Template', 'WA Media', 'Product Catalog']],\r\n\t},\r\n\txAxis: { type: 'category' },\r\n\tyAxis: {},\r\n\tseries: [\r\n\t\t{ type: 'bar', color: '#E666DA' },\r\n\t\t{ type: 'bar', color: '#EB7215' },\r\n\t\t{ type: 'bar', color: '#F3B435' },\r\n\t\t{ type: 'bar', color: '#35CDF3' },\r\n\t],\r\n};\r\n\r\nexport const ConversationInsightsChartConfig = {\r\n\ttooltip: {\r\n\t\ttrigger: 'axis',\r\n\t},\r\n\tlegend: {\r\n\t\ticon: 'circle',\r\n\t\tdata: [\r\n\t\t\t'Delivery Rate of Campaigns',\r\n\t\t\t'Total Number of Campaigns',\r\n\t\t\t'Cost Distribution',\r\n\t\t],\r\n\t\tx: 'center',\r\n\t\ty: 'bottom',\r\n\t},\r\n\txAxis: {\r\n\t\ttype: 'category',\r\n\t\tdata: [],\r\n\t},\r\n\tyAxis: {\r\n\t\ttype: 'value',\r\n\t},\r\n\tseries: [\r\n\t\t{\r\n\t\t\tname: 'Delivery Rate of Campaigns',\r\n\t\t\tdata: [],\r\n\t\t\ttype: 'line',\r\n\t\t\tsmooth: true,\r\n\t\t\titemStyle: { normal: { color: 'blue' } },\r\n\t\t},\r\n\t\t{\r\n\t\t\tname: 'Total Number of Campaigns',\r\n\t\t\tdata: [],\r\n\t\t\ttype: 'line',\r\n\t\t\tsmooth: true,\r\n\t\t\titemStyle: { normal: { color: 'green' } },\r\n\t\t},\r\n\t\t{\r\n\t\t\tname: 'Cost Distribution',\r\n\t\t\tdata: [],\r\n\t\t\ttype: 'line',\r\n\t\t\tsmooth: true,\r\n\t\t\titemStyle: { normal: { color: '#E666DA' } },\r\n\t\t},\r\n\t],\r\n};\r\n","import { WhatsAppAccountDto } from '../../campaign-management/models';\r\n\r\nexport let isLoadingOption: {\r\n\tWA: boolean;\r\n\tSMS: boolean;\r\n\tLINE: boolean;\r\n\tEMAIL: boolean;\r\n\tVOICE: boolean;\r\n} = {\r\n\tWA: false,\r\n\tSMS: false,\r\n\tLINE: false,\r\n\tEMAIL: false,\r\n\tVOICE: false,\r\n};\r\n\r\nexport let isHaveNextOption: {\r\n\tWA: boolean;\r\n\tSMS: boolean;\r\n\tLINE: boolean;\r\n\tEMAIL: boolean;\r\n\tVOICE: boolean;\r\n} = {\r\n\tWA: true,\r\n\tSMS: true,\r\n\tLINE: true,\r\n\tEMAIL: true,\r\n\tVOICE: true,\r\n};\r\n\r\nexport let pageNoOption: {\r\n\tWA: number;\r\n\tSMS: number;\r\n\tLINE: number;\r\n\tEMAIL: number;\r\n\tVOICE: number;\r\n} = {\r\n\tWA: 1,\r\n\tSMS: 1,\r\n\tLINE: 1,\r\n\tEMAIL: 1,\r\n\tVOICE: 1,\r\n};\r\n\r\nexport let optionList: {\r\n\tWA: WhatsAppAccountDto[];\r\n\tSMS: WhatsAppAccountDto[];\r\n\tLINE: WhatsAppAccountDto[];\r\n\tEMAIL: WhatsAppAccountDto[];\r\n\tVOICE: WhatsAppAccountDto[];\r\n} = {\r\n\tWA: [],\r\n\tSMS: [],\r\n\tLINE: [],\r\n\tEMAIL: [],\r\n\tVOICE: [],\r\n};\r\n","export const GeneralInformationMessageValidationConst = {\r\n campaignName: [\r\n { type: 'required', message: 'General Information is required' },\r\n { type: 'maxlength', message: 'Maximum character 100' },\r\n ],\r\n medium: [{ type: 'required', message: 'Channel is required' }],\r\n};\r\n\r\nexport const GeneralInformationWAMessageValidationConst = {\r\n channel: [{ type: 'required', message: 'Message Type is required' }],\r\n from: [{ type: 'required', message: 'From is required' }],\r\n text: [{ type: 'required', message: 'Text is required' }],\r\n media: [{ type: 'required', message: 'Media Type is required' }],\r\n fileName: [{ type: 'required', message: 'File is required' }],\r\n template: [{ type: 'required', message: 'Template is required' }],\r\n category: [{ type: 'required', message: 'Category is required' }],\r\n catalogue: [{ type: 'required', message: 'Catalog is required' }],\r\n product: [{ type: 'required', message: 'Product is required' }],\r\n body: [{ type: 'maxlength', message: 'Maximum character 100' }],\r\n};\r\n\r\nexport const GeneralInformationEmailMessageValidationConst = {\r\n channel: [{ type: 'required', message: 'Message Type is required' }],\r\n from: [{ type: 'required', message: 'From is required' }],\r\n text: [{ type: 'required', message: 'Text is required' }],\r\n template: [{ type: 'required', message: 'Template is required' }],\r\n};\r\n\r\nexport const GeneralInformationSMSMessageValidationConst = {\r\n channel: [{ type: 'required', message: 'Message Type is required' }],\r\n from: [{ type: 'required', message: 'From is required' }],\r\n text: [{ type: 'required', message: 'Text is required' }],\r\n template: [{ type: 'required', message: 'Template is required' }],\r\n};\r\n\r\nexport const GeneralInformationLineMessageValidationConst = {\r\n channel: [{ type: 'required', message: 'Message Type is required' }],\r\n from: [{ type: 'required', message: 'From is required' }],\r\n text: [{ type: 'required', message: 'Text is required' }],\r\n template: [{ type: 'required', message: 'Template is required' }],\r\n};\r\n\r\nexport const FailoverMechanismValidationConst = {\r\n interval: [\r\n { type: 'required', message: 'Interval Time is required' },\r\n {\r\n type: 'intervalTime',\r\n message: 'Must be greater than 0 and without decimal',\r\n },\r\n ],\r\n type: [{ type: 'required', message: 'Main Rules is required' }],\r\n accountId: [{ type: 'required', message: 'Account is required' }],\r\n subject: [{ type: 'required', message: 'Subject is required' }],\r\n message: [{ type: 'required', message: 'Message is required' }],\r\n templateName: [{ type: 'required', message: 'Template is required' }],\r\n};\r\n\r\nexport const SchedulerMessageValidationConst = {\r\n startDate: [{ type: 'required', message: 'Select Date is required' }],\r\n startTime: [{ type: 'required', message: 'Select Time is required' }],\r\n};\r\n","export enum EnumData {\r\n\tGOOGLE_MAP_API_KEY = 'AIzaSyCHReBe_RpzAgLTrUC5QIDyeKttQ817wRY',\r\n\r\n\t// MEDIUM TYPES\r\n\tMEDIUM_TYPE_WHATSAPP = 'WHATSAPP',\r\n\r\n\t// MEDIA TYPE\r\n\tMEDIA_TYPE_IMAGE = 'IMAGE',\r\n\tMEDIA_TYPE_VIDEO = 'VIDEO',\r\n\tMEDIA_TYPE_DOCUMENT = 'DOCUMENT',\r\n\tMEDIA_TYPE_LOCATION = 'LOCATION',\r\n\r\n\t// SCHEDULER TYPES\r\n\tSCHEDULER_TYPE_NOW = 'NOW',\r\n\tSCHEDULER_TYPE_SINGLE = 'SINGLE',\r\n\tSCHEDULER_TYPE_MULTIPLE = 'MULTIPLE',\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatPaginatorIntl } from '@angular/material/paginator';\r\n\r\n@Injectable()\r\nexport class CustomPaginator extends MatPaginatorIntl {\r\n\titemsPerPageLabel = 'Listing per Page';\r\n\r\n\tgetRangeLabel = function (page, pageSize, length) {\r\n\t\tif (length === 0 || pageSize === 0) {\r\n\t\t\treturn 'Show 0';\r\n\t\t}\r\n\r\n\t\tlength = Math.max(length, 0);\r\n\r\n\t\tconst startIndex = page * pageSize;\r\n\t\tconst endIndex =\r\n\t\t\tstartIndex < length\r\n\t\t\t\t? Math.min(startIndex + pageSize, length)\r\n\t\t\t\t: startIndex + pageSize;\r\n\t\tconst sumStartIndex = startIndex + 1;\r\n\r\n\t\treturn 'Show ' + sumStartIndex + ' - ' + endIndex;\r\n\t};\r\n}\r\n","import { BaseOptionModel } from '../models';\r\n\r\nexport const generateEnumOption = (enumObject: Object): BaseOptionModel[] => {\r\n\tif (!enumObject) {\r\n\t\treturn [];\r\n\t}\r\n\r\n\treturn Object.keys(enumObject).reduce((result, each) => {\r\n\t\tif (isNaN(Number(each))) {\r\n\t\t\tconst inputOption = new BaseOptionModel();\r\n\t\t\tconst label = each\r\n\t\t\t\t.replace(/([A-Z])/g, ' $1')\r\n\t\t\t\t.replace(/([0-9])/g, ' $1');\r\n\r\n\t\t\tinputOption.label = label;\r\n\r\n\t\t\tif (isNaN(Number(enumObject[each]))) {\r\n\t\t\t\tinputOption.value = enumObject[each];\r\n\t\t\t} else {\r\n\t\t\t\tinputOption.value = Number(enumObject[each]);\r\n\t\t\t}\r\n\r\n\t\t\tresult.push(inputOption);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}, []);\r\n};\r\n","import {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInjectable,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput,\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { PlatformOptionConst } from '../../../../../core/const';\r\nimport { StatusCampaignEnum } from '../../../../../core/enums';\r\nimport { BaseOptionModel } from '../../../../../core/models';\r\nimport { Parameter } from '../../../../../core/models/util/api-adapter-service-models';\r\nimport { AppResponse } from '../../../../../core/models/util/api-dto/response-models';\r\nimport { ApiAdapterServiceService } from '../../../../../core/services';\r\nimport { generateEnumOption } from '../../../../../core/util';\r\nimport { TemplateWAModel } from '../../../../models';\r\nimport { ClientDto } from '../../models';\r\n\r\n@Component({\r\n\tselector: 'lib-filter-in-list-of-campaign',\r\n\ttemplateUrl: './filter-in-list-of-campaign.component.html',\r\n\tstyleUrls: ['./filter-in-list-of-campaign.component.scss'],\r\n})\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class FilterInListOfCampaignComponent implements OnInit, OnDestroy {\r\n\t@Output()\r\n\tpublic onChangeFilter: EventEmitter<string>;\r\n\r\n\t@Output()\r\n\tpublic closeDropdown: EventEmitter<void>;\r\n\r\n\tpublic form: FormGroup;\r\n\tpublic channelOption: any[] = PlatformOptionConst;\r\n\tpublic businessNameOption: ClientDto[] = [];\r\n\tpublic statusOption: BaseOptionModel[] = [];\r\n\tpublic templateOption: TemplateWAModel[] = [];\r\n\tpublic isHaveNextTemplateOption: boolean = true;\r\n\tpublic isLoadingTemplateOption: boolean = false;\r\n\r\n\tprivate pageNoTemplateOption: number = 1;\r\n\tprivate subscribers: Subscription[] = [];\r\n\r\n\t@Input()\r\n\tpublic filterValue: any;\r\n\r\n\tconstructor(private apiAdapterService: ApiAdapterServiceService) {\r\n\t\tthis.closeDropdown = new EventEmitter();\r\n\t\tthis.onChangeFilter = new EventEmitter();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.statusOption = generateEnumOption(StatusCampaignEnum);\r\n\r\n\t\tthis.initForm();\r\n\t\tthis.getBusinessNameOptionService();\r\n\t}\r\n\r\n\tprivate initForm(): void {\r\n\t\tthis.form = new FormGroup({\r\n\t\t\tbusinessName: new FormControl(this.filterValue?.businessName ?? ''),\r\n\t\t\tmedium: new FormControl(this.filterValue?.medium ?? ''),\r\n\t\t\ttemplateName: new FormControl(this.filterValue?.templateName ?? ''),\r\n\t\t\tstatus: new FormControl(this.filterValue?.status ?? ''),\r\n\t\t\tstartDate: new FormControl(this.filterValue?.startDate ?? ''),\r\n\t\t\tendDate: new FormControl(this.filterValue?.endDate ?? ''),\r\n\t\t});\r\n\r\n\t\tif (this.filterValue?.templateName)\r\n\t\t\tthis.templateOption = [\r\n\t\t\t\t...this.templateOption,\r\n\t\t\t\tthis.filterValue?.templateName,\r\n\t\t\t];\r\n\t}\r\n\r\n\tpublic getBusinessNameOptionService(): void {\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(\r\n\t\t\t\t[],\r\n\t\t\t\t'/admin/client/all-with-child?pageNo=1&rowPerPage=1000',\r\n\t\t\t\t'GET'\r\n\t\t\t)\r\n\t\t\t.subscribe((res: AppResponse<ClientDto[]>) => {\r\n\t\t\t\tthis.businessNameOption = res.data;\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tpublic getTemplateOptionService(\r\n\t\tfilter: string = '',\r\n\t\tisInfinite: boolean = false\r\n\t): void {\r\n\t\tthis.isLoadingTemplateOption = true;\r\n\r\n\t\tconst parameterList: Array<Parameter> = [\r\n\t\t\tthis.initParam('pageNo', this.pageNoTemplateOption, 'number'),\r\n\t\t\tthis.initParam('rowPerPage', 20, 'number'),\r\n\t\t\tthis.initParam('platform', this.form.get('medium').value, 'string'),\r\n\t\t\tthis.initParam('filter', filter, 'string'),\r\n\t\t\tthis.initParam('status', 'APPROVED', 'string'),\r\n\t\t];\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(parameterList, '/message/template', 'GET')\r\n\t\t\t.subscribe((resp: AppResponse<TemplateWAModel[]>) => {\r\n\t\t\t\tthis.templateOption = isInfinite\r\n\t\t\t\t\t? [...this.templateOption, ...resp.data]\r\n\t\t\t\t\t: resp.data;\r\n\t\t\t\tthis.isHaveNextTemplateOption = resp.haveNext;\r\n\t\t\t\tthis.isLoadingTemplateOption = false;\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tprivate initParam(_name: string, _value: any, _type: string): Parameter {\r\n\t\treturn {\r\n\t\t\tname: _name,\r\n\t\t\tvalue: _value,\r\n\t\t\tin: 'query',\r\n\t\t\ttype: _type,\r\n\t\t};\r\n\t}\r\n\r\n\tpublic getNextTemplateBatch() {\r\n\t\tif (!this.isHaveNextTemplateOption) return;\r\n\r\n\t\tthis.pageNoTemplateOption += 1;\r\n\t\tthis.getTemplateOptionService('', true);\r\n\t}\r\n\r\n\tpublic templateSelectedDisplay(\r\n\t\tattribute1: TemplateWAModel,\r\n\t\tattribute2: TemplateWAModel\r\n\t): string {\r\n\t\treturn attribute1 && attribute2 && attribute1.name == attribute2.name\r\n\t\t\t? `${attribute1.name}`\r\n\t\t\t: '';\r\n\t}\r\n\r\n\tpublic templateSearch(searchValue: string): void {\r\n\t\tthis.pageNoTemplateOption = 1;\r\n\t\tthis.getTemplateOptionService(searchValue);\r\n\t}\r\n\r\n\tpublic clearDate(): void {\r\n\t\tthis.form.get('startDate').setValue(null);\r\n\t\tthis.form.get('endDate').setValue(null);\r\n\t}\r\n\r\n\tpublic validateBackDate(): void {\r\n\t\tif (new Date(this.form.get('startDate').value).getTime() > new Date(this.form.get('endDate').value).getTime())\r\n\t\t\tthis.form.get('endDate').setValue('');\r\n\t}\r\n\r\n\tpublic onReset(): void {\r\n\t\tthis.form.reset();\r\n\t\tthis.onChangeFilter.emit(this.form.getRawValue());\r\n\t}\r\n\r\n\tpublic onCancel(): void {\r\n\t\tthis.closeDropdown.emit();\r\n\t}\r\n\r\n\tpublic onApply(): void {\r\n\t\tthis.onChangeFilter.emit(this.form.getRawValue());\r\n\t\tthis.closeDropdown.emit();\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.subscribers.forEach(each => each.unsubscribe());\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SharedServicesService {\r\n\r\n private subject = new Subject<any>();\r\n\r\n sendClickEvent(){\r\n this.subject.next();\r\n }\r\n\r\n getEvent(): Observable<any>{\r\n return this.subject.asObservable();\r\n }\r\n\r\n constructor() { }\r\n}\r\n","export class ConfirmationModel {\r\n public title: string;\r\n public content: string;\r\n public btnSubmit: string;\r\n public btnSubmitRed: string;\r\n public btnCancel: string;\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { SharedServicesService } from '../../../global/confirmation/shared/shared-services.service';\r\nimport { ConfirmationModel } from '../shared/model';\r\n\r\n@Component({\r\n\tselector: 'app-confirmation',\r\n\ttemplateUrl: './confirmation.component.html',\r\n\tstyleUrls: ['./confirmation.component.scss'],\r\n})\r\nexport class ConfirmationComponent {\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA)\r\n\t\tpublic data: ConfirmationModel,\r\n\t\tprivate sharedService: SharedServicesService\r\n\t) {}\r\n\r\n\tdeleteRowOn() {\r\n\t\tthis.sharedService.sendClickEvent();\r\n\t}\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription } from 'rxjs';\r\nimport { AppResponse } from '../../../../../core/models/util/api-dto/response-models';\r\nimport { ApiAdapterServiceService } from '../../../../../core/services';\r\n\r\n@Component({\r\n\tselector: 'lib-pending-approval-dialog-view',\r\n\ttemplateUrl: './pending-approval-dialog-view.component.html',\r\n\tstyleUrls: ['./pending-approval-dialog-view.component.scss'],\r\n})\r\nexport class PendingApprovalDialogViewComponent implements OnInit, OnDestroy {\r\n\tpublic isLoading: boolean = false;\r\n\tpublic isSubmit: boolean = false;\r\n\tpublic isShowButton: boolean = false;\r\n\r\n\tprivate subscribers: Subscription[] = [];\r\n\r\n\tconstructor(\r\n\t\tprivate dialogRef: MatDialogRef<PendingApprovalDialogViewComponent>,\r\n\t\tprivate apiAdapterService: ApiAdapterServiceService,\r\n\t\tprivate toastr: ToastrService\r\n\t) {}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.getCampaignDetailService();\r\n\r\n\t\tthis.isShowButton =\r\n\t\t\tthis.getCampaignStorage?.generalInformation?.isShowButton ?? false;\r\n\t}\r\n\r\n\tget getCampaignStorage(): any {\r\n\t\treturn localStorage.getItem('telin.campaign')\r\n\t\t\t? JSON.parse(localStorage.getItem('telin.campaign'))\r\n\t\t\t: {};\r\n\t}\r\n\r\n\tprivate convertUTCDateToLocalDate(date: Date) {\r\n\t\tconst newDate = new Date(\r\n\t\t\tdate.getTime() - date.getTimezoneOffset() * 60 * 1000\r\n\t\t);\r\n\t\treturn newDate;\r\n\t}\r\n\r\n\tprivate getCampaignDetailService(): void {\r\n\t\tif (!this.getCampaignStorage?.generalInformation?.id) return;\r\n\r\n\t\tthis.isLoading = true;\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(\r\n\t\t\t\t[],\r\n\t\t\t\t`/campaign/${this.getCampaignStorage?.generalInformation?.id}`,\r\n\t\t\t\t'GET'\r\n\t\t\t)\r\n\t\t\t.subscribe(\r\n\t\t\t\t(resp: AppResponse<any>) => {\r\n\t\t\t\t\tif (!resp) return;\r\n\r\n\t\t\t\t\tconst generalInformation = {\r\n\t\t\t\t\t\tcampaignName: resp.data?.name,\r\n\t\t\t\t\t\tmedium: resp.data?.platform,\r\n\t\t\t\t\t\tchannel: ['image', 'video', 'document'].includes(\r\n\t\t\t\t\t\t\tresp.data?.type\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t? 'MEDIA'\r\n\t\t\t\t\t\t\t: resp.data?.type?.toUpperCase(),\r\n\t\t\t\t\t\tmedia: resp.data?.type?.toUpperCase(),\r\n\t\t\t\t\t\tfrom: {\r\n\t\t\t\t\t\t\tid: resp.data?.accountId,\r\n\t\t\t\t\t\t\tname: resp.data?.accountName,\r\n\t\t\t\t\t\t\tplatform: resp.data?.platform,\r\n\t\t\t\t\t\t\tclientId: resp.data?.clientId,\r\n\t\t\t\t\t\t\tclientName: resp.data?.clientName,\r\n\t\t\t\t\t\t\taccountNo: resp.data?.accountNo,\r\n\t\t\t\t\t\t\twabaId: resp.data?.wabaId ?? '',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\ttext: resp.data?.details?.text,\r\n\t\t\t\t\t\ttargetURL:\r\n\t\t\t\t\t\t\tresp.data?.details?.image?.url ??\r\n\t\t\t\t\t\t\tresp.data?.details?.document?.url ??\r\n\t\t\t\t\t\t\tresp.data?.details?.video?.url ??\r\n\t\t\t\t\t\t\tresp.data?.details?.template?.headerURL,\r\n\t\t\t\t\t\tparamHeader: resp.data?.details?.template?.header,\r\n\t\t\t\t\t\tparamBody: resp.data?.details?.template?.data,\r\n\t\t\t\t\t\tparamButton: resp.data?.details?.template?.button,\r\n\t\t\t\t\t\totpValue: [\r\n\t\t\t\t\t\t\t...(resp.data?.details?.template?.data ?? []),\r\n\t\t\t\t\t\t]?.pop(),\r\n\t\t\t\t\t\ttemplate: {\r\n\t\t\t\t\t\t\tID: resp.data?.details?.template?.id,\r\n\t\t\t\t\t\t\tname: resp.data?.details?.template?.name,\r\n\t\t\t\t\t\t\tlang: resp.data?.details?.template?.lang,\r\n\t\t\t\t\t\t\tplatform: resp.data?.platform,\r\n\t\t\t\t\t\t\theaderURL: resp.data?.details?.template?.headerURL,\r\n\t\t\t\t\t\t\theader: {\r\n\t\t\t\t\t\t\t\texamples: resp.data?.details?.template?.header,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tbody: {\r\n\t\t\t\t\t\t\t\texamples: resp.data?.details?.template?.data,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tbuttons: resp.data?.details?.template?.button,\r\n\t\t\t\t\t\t\tClientId: resp.data?.clientId,\r\n\t\t\t\t\t\t\tClientName: resp.data?.clientName,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tisUpload: resp.data?.fileId !== '',\r\n\t\t\t\t\t\tfileId: resp.data?.fileId,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tlocalStorage.setItem(\r\n\t\t\t\t\t\t'telin.campaign',\r\n\t\t\t\t\t\tJSON.stringify({\r\n\t\t\t\t\t\t\t...this.getCampaignStorage,\r\n\t\t\t\t\t\t\t...{\r\n\t\t\t\t\t\t\t\tgeneralInformation: {\r\n\t\t\t\t\t\t\t\t\tid: resp.data?.id,\r\n\t\t\t\t\t\t\t\t\tform: generalInformation,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tfailover: resp.data?.failover,\r\n\t\t\t\t\t\t\t\ttargetAudience: resp.data?.targets,\r\n\t\t\t\t\t\t\t\ttargetAudienceFile: {\r\n\t\t\t\t\t\t\t\t\tname: resp.data?.fileName,\r\n\t\t\t\t\t\t\t\t\ttargetURL: resp.data?.targetURL,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tscheduler: {\r\n\t\t\t\t\t\t\t\t\tschedulerType:\r\n\t\t\t\t\t\t\t\t\t\tresp.data?.scheduleType === 'MULTI'\r\n\t\t\t\t\t\t\t\t\t\t\t? 'ONE_TIME'\r\n\t\t\t\t\t\t\t\t\t\t\t: resp.data?.scheduleType,\r\n\t\t\t\t\t\t\t\t\tstartDate:\r\n\t\t\t\t\t\t\t\t\t\tresp.data?.startTime?.split(' ')[0],\r\n\t\t\t\t\t\t\t\t\tstartTime:\r\n\t\t\t\t\t\t\t\t\t\tresp.data?.startTime?.split(' ')[1],\r\n\t\t\t\t\t\t\t\t\tisRepeat:\r\n\t\t\t\t\t\t\t\t\t\tresp.data?.scheduleType === 'MULTI',\r\n\t\t\t\t\t\t\t\t\tdelivery: resp.data?.repeat,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t},\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tpublic rejectCampaignService(): void {\r\n\t\tthis.isSubmit = true;\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(\r\n\t\t\t\t[],\r\n\t\t\t\t`/campaign/${this.getCampaignStorage?.generalInformation?.id}/reject`,\r\n\t\t\t\t'POST'\r\n\t\t\t)\r\n\t\t\t.subscribe(\r\n\t\t\t\t(resp: AppResponse<any>) => {\r\n\t\t\t\t\tthis.isSubmit = false;\r\n\r\n\t\t\t\t\tif (!resp || !resp?.data)\r\n\t\t\t\t\t\treturn this.toastr.error('Error Rejecting Campaign!');\r\n\r\n\t\t\t\t\tthis.toastr.success('Campaign Rejected Successfully!');\r\n\t\t\t\t\tthis.onClose();\r\n\t\t\t\t},\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.toastr.error('Error Rejecting Campaign!');\r\n\t\t\t\t\tthis.isSubmit = false;\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tpublic approveCampaignService(): void {\r\n\t\tthis.isSubmit = true;\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(\r\n\t\t\t\t[],\r\n\t\t\t\t`/campaign/${this.getCampaignStorage?.generalInformation?.id}/approve`,\r\n\t\t\t\t'POST'\r\n\t\t\t)\r\n\t\t\t.subscribe(\r\n\t\t\t\t(resp: AppResponse<any>) => {\r\n\t\t\t\t\tthis.isSubmit = false;\r\n\r\n\t\t\t\t\tif (!resp || !resp?.data)\r\n\t\t\t\t\t\treturn this.toastr.error('Error Approving Campaign!');\r\n\r\n\t\t\t\t\tthis.toastr.success('Campaign Approved Successfully!');\r\n\t\t\t\t\tthis.onClose();\r\n\t\t\t\t},\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.toastr.error('Error Approving Campaign!');\r\n\t\t\t\t\tthis.isSubmit = false;\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tpublic onClose(): void {\r\n\t\tlocalStorage.removeItem('telin.campaign');\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.subscribers.forEach(each => each.unsubscribe());\r\n\t}\r\n}\r\n","import {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput,\r\n\tViewChild,\r\n} from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription } from 'rxjs';\r\nimport { MainArea } from '../../../../../core/enums';\r\nimport { ApiAdapterServiceService } from '../../../../../core/services';\r\nimport { ConfirmationComponent } from '../../../../../global/confirmation/confirmation';\r\nimport { ConfirmationModel } from '../../../../../global/confirmation/shared/model';\r\nimport { PendingApprovalDialogViewComponent } from '../../dialog/pending-approval-dialog-view';\r\nimport { CampaignsListModel, TableModel } from '../../models';\r\nimport { CampaignResponseDtoApi } from '../../models/campaign-response-dto.model';\r\n\r\n@Component({\r\n\tselector: 'lib-viewing-list-of-campaign-table',\r\n\ttemplateUrl: './viewing-list-of-campaign-table.component.html',\r\n\tstyleUrls: ['./viewing-list-of-campaign-table.component.scss'],\r\n})\r\nexport class ViewingListOfCampaignTableComponent implements OnInit, OnDestroy {\r\n\t@Output() currentView = new EventEmitter<MainArea>();\r\n\r\n\t@Output() updateTable = new EventEmitter<void>();\r\n\r\n\tprivate currentViews = MainArea;\r\n\tprivate subscribers: Subscription[] = [];\r\n\r\n\t@Input() public table: TableModel;\r\n\r\n\t@ViewChild(MatSort, { static: false }) public matSort: MatSort;\r\n\r\n\tconstructor(\r\n\t\tprivate dialog: MatDialog,\r\n\t\tprivate apiAdapterService: ApiAdapterServiceService,\r\n\t\tprivate toastr: ToastrService\r\n\t) {}\r\n\r\n\tngOnInit(): void {}\r\n\r\n\tpublic sort(): void {\r\n\t\tthis.table.dataSource.sort = this.matSort;\r\n\t}\r\n\r\n\tpublic actionRow(row: CampaignsListModel, action: string): void {\r\n\t\tswitch (action) {\r\n\t\t\tcase 'pause':\r\n\t\t\t\tthis.campaignConfirmationDialog(row.id, {\r\n\t\t\t\t\ttitle: 'Pause Campaign',\r\n\t\t\t\t\tcontent: 'Are you sure you want to Pause this Campaign?',\r\n\t\t\t\t\turl: `/campaign/${row.id}/pause`,\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\tmessage: 'Selected campaign is successfully paused',\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'stop':\r\n\t\t\t\tthis.campaignConfirmationDialog(row.id, {\r\n\t\t\t\t\ttitle: 'Stop Campaign',\r\n\t\t\t\t\tcontent: 'Are you sure you want to Stop this Campaign?',\r\n\t\t\t\t\turl: `/campaign/${row.id}/stop`,\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\tmessage: 'Selected campaign is successfully stop',\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'delete':\r\n\t\t\t\tif (row.status !== 'COMPLETED') {\r\n\t\t\t\t\tthis.campaignConfirmationDialog(row.id, {\r\n\t\t\t\t\t\ttitle: 'Delete Campaign',\r\n\t\t\t\t\t\tcontent:\r\n\t\t\t\t\t\t\t'Are you sure you want to Delete this Campaign?',\r\n\t\t\t\t\t\turl: `/campaign/${row.id}/delete`,\r\n\t\t\t\t\t\tmethod: 'DELETE',\r\n\t\t\t\t\t\tmessage: 'Selected campaign is successfully deleted',\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'live':\r\n\t\t\t\tthis.campaignConfirmationDialog(row.id, {\r\n\t\t\t\t\ttitle: 'Resume Campaign',\r\n\t\t\t\t\tcontent: 'Are you sure you want to Resume this Campaign?',\r\n\t\t\t\t\turl: `/campaign/${row.id}/resume`,\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\tmessage: 'Selected campaign is successfully resume',\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate campaignConfirmationDialog(\r\n\t\tid: string,\r\n\t\tdata: {\r\n\t\t\ttitle: string;\r\n\t\t\tcontent: string;\r\n\t\t\turl: string;\r\n\t\t\tmethod: string;\r\n\t\t\tmessage: string;\r\n\t\t}\r\n\t): void {\r\n\t\tconst confirmation = new ConfirmationModel();\r\n\t\tconfirmation.title = data.title;\r\n\t\tconfirmation.content = data.content;\r\n\t\tconfirmation.btnSubmit = 'Yes';\r\n\t\tconfirmation.btnCancel = 'No';\r\n\r\n\t\tconst subs = this.dialog\r\n\t\t\t.open(ConfirmationComponent, {\r\n\t\t\t\tautoFocus: false,\r\n\t\t\t\tbackdropClass: 'overlay-backdrop-dialog',\r\n\t\t\t\tdata: confirmation,\r\n\t\t\t})\r\n\t\t\t.afterClosed()\r\n\t\t\t.subscribe(resp => {\r\n\t\t\t\tif (!resp) return;\r\n\r\n\t\t\t\tthis.campaignService(data);\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tprivate campaignService(data: {\r\n\t\turl: string;\r\n\t\tmethod: string;\r\n\t\tmessage: string;\r\n\t}): void {\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest([], data.url, data.method)\r\n\t\t\t.subscribe(() => {\r\n\t\t\t\tthis.toastr.error(data.message);\r\n\t\t\t\tthis.updateTable.emit();\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\teditCampaign(row: CampaignsListModel): void {\r\n\t\tlocalStorage.removeItem('telin.campaign');\r\n\t\twindow.history.replaceState({}, '', `/secure/campaign/${row.id}`);\r\n\t\tthis.currentView.emit(this.currentViews.NewCampaign);\r\n\t}\r\n\r\n\tpublic openViewDialog(\r\n\t\trow: CampaignResponseDtoApi,\r\n\t\tisShowButton: boolean = false\r\n\t): void {\r\n\t\tlocalStorage.setItem(\r\n\t\t\t'telin.campaign',\r\n\t\t\tJSON.stringify({\r\n\t\t\t\tgeneralInformation: {\r\n\t\t\t\t\tid: row?.id,\r\n\t\t\t\t\tisShowButton: isShowButton,\r\n\t\t\t\t},\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\tconst subs = this.dialog\r\n\t\t\t.open(PendingApprovalDialogViewComponent, {\r\n\t\t\t\tautoFocus: false,\r\n\t\t\t\theight: 'calc(100% - 30px)',\r\n\t\t\t\twidth: 'calc(100% - 30px)',\r\n\t\t\t\tmaxWidth: '100%',\r\n\t\t\t\tmaxHeight: '100%',\r\n\t\t\t\tbackdropClass: 'overlay-backdrop-dialog',\r\n\t\t\t})\r\n\t\t\t.afterClosed()\r\n\t\t\t.subscribe(() => {\r\n\t\t\t\tthis.updateTable.emit();\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tprivate convertUTCDateToLocalDate(date: Date) {\r\n\t\tconst newDate = new Date(\r\n\t\t\tdate.getTime() - date.getTimezoneOffset() * 60 * 1000\r\n\t\t);\r\n\t\treturn newDate;\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.subscribers.forEach(each => each.unsubscribe());\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport {\r\n\tNgbDropdownModule,\r\n\tNgbPaginationModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { MatSelectInfiniteScrollDirective } from '../../../core/directives';\r\nimport { SearchModule } from '../../../global/search/search.module';\r\nimport { CampaignIndexComponent } from './campaign-index.component';\r\nimport { FilterInListOfCampaignComponent } from './component/filter-in-list-of-campaign';\r\nimport { ViewingListOfCampaignTableComponent } from './component/viewing-list-of-campaign-table';\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tViewingListOfCampaignTableComponent,\r\n\t\tFilterInListOfCampaignComponent,\r\n\t\tCampaignIndexComponent,\r\n\t\tMatSelectInfiniteScrollDirective,\r\n\t],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tReactiveFormsModule,\r\n\t\tMatFormFieldModule,\r\n\t\tMatInputModule,\r\n\t\tMatDatepickerModule,\r\n\t\tMatTableModule,\r\n\t\tMatSortModule,\r\n\t\tMatPaginatorModule,\r\n\t\tMatDialogModule,\r\n\t\tMatTabsModule,\r\n\t\tMatCardModule,\r\n\t\tMatCheckboxModule,\r\n\t\tMatSelectModule,\r\n\t\tMatRadioModule,\r\n\t\tMatButtonModule,\r\n\t\tMatIconModule,\r\n\t\tMatChipsModule,\r\n\t\tNgbPaginationModule,\r\n\t\tNgbDropdownModule,\r\n\t\tMatChipsModule,\r\n\t\tMatGridListModule,\r\n\t\tMatNativeDateModule,\r\n\t\tSearchModule,\r\n\t\tMatToolbarModule,\r\n\t\tMatTooltipModule,\r\n\t],\r\n\texports: [CampaignIndexComponent, MatSelectInfiniteScrollDirective],\r\n})\r\nexport class CampaignIndexModule {}\r\n","import {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput,\r\n} from '@angular/core';\r\nimport { EChartsOption } from 'echarts';\r\nimport { Subscription } from 'rxjs';\r\nimport {\r\n\tCampaignPerformanceChartConfig,\r\n\tConversationInsightsChartConfig,\r\n\tPlatformOptionConst,\r\n\tWidgetLiveCampaignConst,\r\n} from '../../../core/const';\r\nimport { PastTimeEnum } from '../../../core/enums';\r\nimport { MainArea } from '../../../core/enums/main-area.enum';\r\nimport { Parameter } from '../../../core/models/util/api-adapter-service-models';\r\nimport { AppResponse } from '../../../core/models/util/api-dto/response-models/app-response';\r\nimport { AppResponseAdl } from '../../../core/models/util/api-dto/response-models/app-response-adl';\r\nimport { ApiAdapterServiceService } from '../../../core/services';\r\nimport { CampaignCountFinalResponseDtoExternal } from '../../models/campaign-count-final-response-dto.model';\r\nimport { ConversationChartResponseDto } from '../campaign-index/models/conversation-chart-response-dto.model';\r\nimport { PerformanceChartResponseDto } from '../campaign-index/models/performance-chart-response-dto.model';\r\n\r\n@Component({\r\n\tselector: 'lib-dashboard',\r\n\ttemplateUrl: './dashboard.component.html',\r\n\tstyleUrls: ['./dashboard.component.scss'],\r\n})\r\nexport class DashboardComponent implements OnInit, OnDestroy {\r\n\tpublic currentViews = MainArea;\r\n\tpublic pastTime = PastTimeEnum;\r\n\r\n\tpublic channelOption: any[] = PlatformOptionConst;\r\n\tpublic performanceCategories: string[] = [];\r\n\tpublic totalCmpn: number[] = [];\r\n\tpublic deliveryRt: number[] = [];\r\n\tpublic costDesc: number[] = [];\r\n\tpublic convsData: any[][] = [];\r\n\r\n\tpublic widgetLiveCampaign = WidgetLiveCampaignConst;\r\n\tpublic conversationChartData: EChartsOption;\r\n\tpublic performanceChartData: EChartsOption;\r\n\tpublic selectedPlatform: any = '';\r\n\tpublic filterEvent: any = 'currentWeek';\r\n\r\n\tprivate subscribers: Subscription[] = [];\r\n\r\n\t@Output() currentView = new EventEmitter<MainArea>();\r\n\r\n\tconstructor(private apiAdapterService: ApiAdapterServiceService) {}\r\n\r\n\tngOnInit(): void {}\r\n\r\n\tpublic changeCurrentView(area: MainArea) {\r\n\t\tthis.currentView.emit(area);\r\n\t}\r\n\r\n\tpublic filterChart(event: string) {\r\n\t\tif (!this.selectedPlatform) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst timeUnit =\r\n\t\t\tevent == PastTimeEnum.Today\r\n\t\t\t\t? 'daily'\r\n\t\t\t\t: event == PastTimeEnum.CurrentWeek\r\n\t\t\t\t? 'weekly'\r\n\t\t\t\t: event == PastTimeEnum.CurrentMonth\r\n\t\t\t\t? 'monthly'\r\n\t\t\t\t: '';\r\n\r\n\t\t/* const parameterList: Array<Parameter> = [\r\n\t\t\t{\r\n\t\t\t\tname: 'timeUnit',\r\n\t\t\t\tvalue: timeUnit,\r\n\t\t\t\tin: 'query',\r\n\t\t\t\ttype: 'String',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'clientId',\r\n\t\t\t\tvalue: localStorage.getItem('telin.clientId'),\r\n\t\t\t\tin: 'query',\r\n\t\t\t\ttype: 'String',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'platform',\r\n\t\t\t\tvalue: this.selectedPlatform,\r\n\t\t\t\tin: 'query',\r\n\t\t\t\ttype: 'String',\r\n\t\t\t},\r\n\t\t]; */\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest([], '/campaign/count', 'GET')\r\n\t\t\t.subscribe(\r\n\t\t\t\t(res: AppResponse<CampaignCountFinalResponseDtoExternal>) => {\r\n\t\t\t\t\tconst date =\r\n\t\t\t\t\t\t(res?.data?.totalCampaignPercent ?? 0) +\r\n\t\t\t\t\t\t'% Since ' +\r\n\t\t\t\t\t\tthis.getStatictsWidgetString(event);\r\n\r\n\t\t\t\t\tthis.widgetLiveCampaign[0].arrow =\r\n\t\t\t\t\t\tres?.data?.totalCampaignPercent > 0\r\n\t\t\t\t\t\t\t? '../../../../assets/svg/icon-up-arrow.svg'\r\n\t\t\t\t\t\t\t: '../../../../assets/svg/icon-down-arrow.svg';\r\n\t\t\t\t\tthis.widgetLiveCampaign[0].value =\r\n\t\t\t\t\t\tres?.data?.totalCampaign ?? 0;\r\n\t\t\t\t\tthis.widgetLiveCampaign[0].date = date;\r\n\t\t\t\t\tthis.widgetLiveCampaign[0].dateclass =\r\n\t\t\t\t\t\tres?.data?.totalCampaignPercent > 0\r\n\t\t\t\t\t\t\t? 'greenpercent'\r\n\t\t\t\t\t\t\t: 'redpercent';\r\n\r\n\t\t\t\t\tthis.widgetLiveCampaign[1].arrow =\r\n\t\t\t\t\t\tres?.data?.totalCampaignPercent > 0\r\n\t\t\t\t\t\t\t? '../../../../assets/svg/icon-up-arrow.svg'\r\n\t\t\t\t\t\t\t: '../../../../assets/svg/icon-down-arrow.svg';\r\n\t\t\t\t\tthis.widgetLiveCampaign[1].value =\r\n\t\t\t\t\t\tres?.data?.totalLive ?? 0;\r\n\t\t\t\t\tthis.widgetLiveCampaign[1].date = date;\r\n\t\t\t\t\tthis.widgetLiveCampaign[1].dateclass =\r\n\t\t\t\t\t\tres?.data?.totalCampaignPercent > 0\r\n\t\t\t\t\t\t\t? 'greenpercent'\r\n\t\t\t\t\t\t\t: 'redpercent';\r\n\r\n\t\t\t\t\tthis.widgetLiveCampaign[2].arrow =\r\n\t\t\t\t\t\tres?.data?.totalCampaignPercent > 0\r\n\t\t\t\t\t\t\t? '../../../../assets/svg/icon-up-arrow.svg'\r\n\t\t\t\t\t\t\t: '../../../../assets/svg/icon-down-arrow.svg';\r\n\t\t\t\t\tthis.widgetLiveCampaign[2].value =\r\n\t\t\t\t\t\tres?.data?.totalPending ?? 0;\r\n\t\t\t\t\tthis.widgetLiveCampaign[2].date = date;\r\n\t\t\t\t\tthis.widgetLiveCampaign[2].dateclass =\r\n\t\t\t\t\t\tres?.data?.totalCampaignPercent > 0\r\n\t\t\t\t\t\t\t? 'greenpercent'\r\n\t\t\t\t\t\t\t: 'redpercent';\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\r\n\t\tthis.getPerformanceDetails(timeUnit);\r\n\t\tthis.getConversationDetails(timeUnit);\r\n\t}\r\n\r\n\tprivate getPerformanceDetails(timeUnit: string) {\r\n\t\tif (!this.selectedPlatform) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.setPerformanceChartData();\r\n\r\n\t\tconst parameterList: Array<Parameter> = [\r\n\t\t\t{\r\n\t\t\t\tname: 'timeUnit',\r\n\t\t\t\tvalue: timeUnit,\r\n\t\t\t\tin: 'query',\r\n\t\t\t\ttype: 'String',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'clientId',\r\n\t\t\t\tvalue: localStorage.getItem('telin.clientId'),\r\n\t\t\t\tin: 'query',\r\n\t\t\t\ttype: 'String',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'platform',\r\n\t\t\t\tvalue:\r\n\t\t\t\t\tthis.selectedPlatform === 'WHATSAPP'\r\n\t\t\t\t\t\t? 'WA'\r\n\t\t\t\t\t\t: this.selectedPlatform,\r\n\t\t\t\tin: 'query',\r\n\t\t\t\ttype: 'String',\r\n\t\t\t},\r\n\t\t];\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(\r\n\t\t\t\tparameterList,\r\n\t\t\t\t'/report/campaign/performance',\r\n\t\t\t\t'GET'\r\n\t\t\t)\r\n\t\t\t.subscribe((res: AppResponseAdl<PerformanceChartResponseDto>) => {\r\n\t\t\t\tthis.performanceCategories = [];\r\n\t\t\t\tthis.totalCmpn = [];\r\n\t\t\t\tthis.deliveryRt = [];\r\n\t\t\t\tthis.costDesc = [];\r\n\r\n\t\t\t\tif (res?.data && Object.entries(res.data).length !== 0) {\r\n\t\t\t\t\tfor (let item of res.data.categories) {\r\n\t\t\t\t\t\tthis.performanceCategories.push(item);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfor (let series of res.data.series) {\r\n\t\t\t\t\t\tif (series.name === 'Total Campaign') {\r\n\t\t\t\t\t\t\tthis.totalCmpn = series.data?.map(value => value);\r\n\t\t\t\t\t\t} else if (series.name === 'Delivery Rate') {\r\n\t\t\t\t\t\t\tthis.deliveryRt = series.data?.map(value => value);\r\n\t\t\t\t\t\t} else if (series.name === 'Cost Distribution') {\r\n\t\t\t\t\t\t\tthis.costDesc = series.data?.map(value => value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.setPerformanceChartData();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tprivate setPerformanceChartData() {\r\n\t\tthis.performanceChartData = ConversationInsightsChartConfig;\r\n\t\tthis.performanceChartData.xAxis.data = this.performanceCategories;\r\n\t\tthis.performanceChartData.series[0].data = this.deliveryRt;\r\n\t\tthis.performanceChartData.series[1].data = this.totalCmpn;\r\n\t\tthis.performanceChartData.series[2].data = this.costDesc;\r\n\t}\r\n\r\n\tprivate getConversationDetails(timeUnit: string) {\r\n\t\tif (!this.selectedPlatform) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.setConversationChartData();\r\n\r\n\t\tconst parameterList: Array<Parameter> = [\r\n\t\t\t{\r\n\t\t\t\tname: 'timeUnit',\r\n\t\t\t\tvalue: timeUnit,\r\n\t\t\t\tin: 'query',\r\n\t\t\t\ttype: 'String',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'clientId',\r\n\t\t\t\tvalue: localStorage.getItem('telin.clientId'),\r\n\t\t\t\tin: 'query',\r\n\t\t\t\ttype: 'String',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'platform',\r\n\t\t\t\tvalue:\r\n\t\t\t\t\tthis.selectedPlatform === 'WHATSAPP'\r\n\t\t\t\t\t\t? 'WA'\r\n\t\t\t\t\t\t: this.selectedPlatform,\r\n\t\t\t\tin: 'query',\r\n\t\t\t\ttype: 'String',\r\n\t\t\t},\r\n\t\t];\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(\r\n\t\t\t\tparameterList,\r\n\t\t\t\t'/report/campaign/conversation',\r\n\t\t\t\t'GET'\r\n\t\t\t)\r\n\t\t\t.subscribe((res: AppResponseAdl<ConversationChartResponseDto>) => {\r\n\t\t\t\tthis.convsData = [];\r\n\r\n\t\t\t\tif (res?.data) {\r\n\t\t\t\t\tfor (let i = 0; i < res.data.categories?.length; i++) {\r\n\t\t\t\t\t\tthis.convsData[i] = new Array();\r\n\t\t\t\t\t\tthis.convsData[i].push(res.data.categories[i]);\r\n\r\n\t\t\t\t\t\tfor (let j = 1; j <= res.data.series?.length; j++) {\r\n\t\t\t\t\t\t\tthis.convsData[i].push(\r\n\t\t\t\t\t\t\t\tres.data.series[j - 1].data[i]\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.setConversationChartData();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tprivate setConversationChartData() {\r\n\t\tthis.conversationChartData = CampaignPerformanceChartConfig;\r\n\t\tthis.convsData.forEach(data => {\r\n\t\t\tif (data) {\r\n\t\t\t\tthis.conversationChartData.dataset.source.push(data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getStatictsWidgetString(event: string): string {\r\n\t\treturn event == PastTimeEnum.Today\r\n\t\t\t? PastTimeEnum.Yesterday\r\n\t\t\t: event == PastTimeEnum.CurrentWeek\r\n\t\t\t? PastTimeEnum.LastWeek\r\n\t\t\t: event == PastTimeEnum.CurrentMonth\r\n\t\t\t? PastTimeEnum.LastMonth\r\n\t\t\t: '';\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.subscribers.forEach(each => each.unsubscribe());\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { PickerModule } from '@ctrl/ngx-emoji-mart';\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport { DashboardComponent } from './dashboard.component';\r\n\r\n@NgModule({\r\n\tdeclarations: [DashboardComponent],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tMatAutocompleteModule,\r\n\t\tFormsModule,\r\n\t\tMatGridListModule,\r\n\t\tReactiveFormsModule,\r\n\t\tMatFormFieldModule,\r\n\t\tMatInputModule,\r\n\t\tMatSelectModule,\r\n\t\tMatRadioModule,\r\n\t\tMatListModule,\r\n\t\tMatButtonModule,\r\n\t\tMatIconModule,\r\n\t\tPickerModule,\r\n\t\tAngularEditorModule,\r\n\t\tMatButtonToggleModule,\r\n\t\tMatDialogModule,\r\n\t\tMatTabsModule,\r\n\t\tMatBadgeModule,\r\n\t\tNgbDropdownModule,\r\n\t\tNgxEchartsModule,\r\n\t],\r\n\texports: [DashboardComponent],\r\n})\r\nexport class DashboardModule {}\r\n","export class FailoverReqModel {\r\n\tpublic active: boolean;\r\n\tpublic type: string;\r\n\tpublic interval: number;\r\n\tpublic accounts: FailoverAccountReqModel[];\r\n\r\n\tconstructor() {}\r\n\r\n\tpublic clone(source: any): FailoverReqModel {\r\n\t\tthis.active = source.active;\r\n\t\tthis.interval = source.interval ?? 0;\r\n\t\tthis.type = source.type ?? '';\r\n\r\n\t\tif (source.accounts) {\r\n\t\t\tthis.accounts = source.accounts.reduce((result, each) => {\r\n\t\t\t\tresult.push(new FailoverAccountReqModel().clone(each));\r\n\t\t\t\treturn result;\r\n\t\t\t}, []);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\tpublic convert(): any {\r\n\t\treturn {\r\n\t\t\tfailover: this,\r\n\t\t};\r\n\t}\r\n}\r\n\r\nclass FailoverAccountReqModel {\r\n\tpublic accountId: string;\r\n\tpublic accountName: string;\r\n\tpublic subject: string;\r\n\tpublic platform: string;\r\n\tpublic template: {\r\n\t\tid: string;\r\n\t\tname: string;\r\n\t\tlang: string;\r\n\t\tdata: string[];\r\n\t};\r\n\r\n\tconstructor() {}\r\n\r\n\tpublic clone(source: any): FailoverAccountReqModel {\r\n\t\tthis.accountId = source.accountId?.id ?? '';\r\n\t\tthis.accountName = source.accountName ?? '';\r\n\t\tthis.subject = source.subject ?? '';\r\n\t\tthis.platform = source.platform ?? '';\r\n\t\tthis.template = {\r\n\t\t\tid: source.template?.ID ?? '',\r\n\t\t\tname: source.template?.name ?? source.template ?? '',\r\n\t\t\tlang: source.template?.lang ?? '',\r\n\t\t\tdata: source.paramBody?.map((t: any) => t.name) ?? [],\r\n\t\t};\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\tpublic convert(): any {\r\n\t\treturn this;\r\n\t}\r\n}\r\n","export class GeneralInformationWAReqModel {\r\n public name: string;\r\n public accountId: string;\r\n public type: string;\r\n public text: string;\r\n public subject: string;\r\n public image: {\r\n url: string;\r\n };\r\n public video: {\r\n url: string;\r\n };\r\n public document: {\r\n url: string;\r\n fileName: string;\r\n };\r\n public template: {\r\n id?: string;\r\n name: string;\r\n lang: string;\r\n type: any;\r\n headerUrl?: string;\r\n header: any;\r\n data: any[];\r\n button: any;\r\n };\r\n public list: {\r\n button: string;\r\n sections: {\r\n title: string;\r\n items: {\r\n id: string;\r\n title: string;\r\n description: string;\r\n }[];\r\n }[];\r\n };\r\n public buttons: {\r\n type: string;\r\n id: string;\r\n title: string;\r\n }[];\r\n\r\n public clone(source: any): GeneralInformationWAReqModel {\r\n /* Source Mapping */\r\n if (\r\n source?.media === 'IMAGE' ||\r\n source?.media === 'VIDEO' ||\r\n source?.media === 'DOCUMENT'\r\n ) {\r\n source.channel = source.media;\r\n }\r\n /* ./ Source Mapping */\r\n\r\n if (source.campaignName) {\r\n this.name = source.campaignName;\r\n }\r\n if (source.medium === 'EMAIL') {\r\n this.subject = source.campaignName;\r\n }\r\n if (source.from?.id) {\r\n this.accountId = source.from.id;\r\n }\r\n if (source.channel) {\r\n this.type = source.channel?.toLowerCase();\r\n }\r\n if (source.text) {\r\n this.text = source.text;\r\n }\r\n if (this.type === 'image' && source.fileName) {\r\n this.image = {\r\n url: source.targetURL,\r\n };\r\n }\r\n if (this.type === 'video' && source.fileName) {\r\n this.video = {\r\n url: source.targetURL,\r\n };\r\n }\r\n if (this.type === 'document' && source.fileName) {\r\n this.document = {\r\n url: source.targetURL,\r\n fileName: source.fileName,\r\n };\r\n }\r\n if (source.template) {\r\n this.template = {\r\n id: source.template.ID,\r\n name: source.template.name,\r\n lang: source.template.lang,\r\n type: source.type,\r\n headerUrl: source.targetURL,\r\n header: source.paramHeader?.map((t: any) => t.name) ?? [],\r\n data: source.paramBody?.map((t: any) => t.name) ?? [],\r\n button: source.paramButton?.reduce((result: any[], each: any) => {\r\n result.push(each.name.map((t: any) => t.name) ?? []);\r\n return result;\r\n }, []),\r\n };\r\n\r\n if (source.template.category === 'AUTHENTICATION')\r\n this.template = {\r\n name: source.template.name,\r\n lang: source.template.lang,\r\n header: null,\r\n type: source.type,\r\n data: [source.otpValue],\r\n button: [[source.otpValue]],\r\n };\r\n\r\n if (source.template.ID) this.template.id = source.template.ID;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public convert(): any {\r\n return this;\r\n }\r\n}\r\n","import { DatePipe } from '@angular/common';\r\n\r\nexport class SchedulerReqModel {\r\n\tpublic type: string;\r\n\tpublic startTime: string;\r\n\tpublic repeat: boolean;\r\n\tpublic tz: string;\r\n\tprivate datePipe: DatePipe;\r\n\r\n\tconstructor() {\r\n\t\tthis.datePipe = new DatePipe('en-US');\r\n\t}\r\n\r\n\tpublic clone(source: any): SchedulerReqModel {\r\n\t\tif (source.schedulerType) {\r\n\t\t\tthis.type = source.delivery ? 'MULTI' : source.schedulerType;\r\n\t\t}\r\n\t\tif (source.startDate) {\r\n\t\t\tthis.startTime = `${this.datePipe.transform(\r\n\t\t\t\tsource.startDate,\r\n\t\t\t\t'yyyy-MM-dd'\r\n\t\t\t)} ${source.startTime}`;\r\n\t\t}\r\n\t\tif (source.delivery) {\r\n\t\t\tthis.repeat = source.delivery.toUpperCase();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\tpublic convert(): any {\r\n\t\treturn {\r\n\t\t\ttype: this.type,\r\n\t\t\tstartTime: this.startTime,\r\n\t\t\trepeat: this.repeat,\r\n\t\t\ttz: Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n\t\t};\r\n\t}\r\n}\r\n","import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription } from 'rxjs';\r\nimport { SegmentedMessage } from 'sms-segments-calculator';\r\nimport { MainArea } from '../../../core/enums';\r\nimport { Parameter } from '../../../core/models/util/api-adapter-service-models';\r\nimport { AppResponse } from '../../../core/models/util/api-dto/response-models';\r\nimport { ApiAdapterServiceService } from '../../../core/services';\r\nimport { ConfirmationComponent } from '../../../global/confirmation/confirmation';\r\nimport { ConfirmationModel } from '../../../global/confirmation/shared/model';\r\nimport { FailoverReqModel, GeneralInformationWAReqModel, SchedulerReqModel } from '../../models';\r\n\r\n@Component({\r\n selector: 'lib-new-campaign',\r\n templateUrl: './new-campaign.component.html',\r\n styleUrls: ['./new-campaign.component.scss'],\r\n})\r\nexport class NewCampaignComponent implements OnInit, OnDestroy {\r\n @Output() currentView = new EventEmitter<MainArea>();\r\n\r\n public campaignID: string;\r\n public currentViews = MainArea;\r\n public positionWizard: number = 1;\r\n public dataWizard: string[];\r\n public isLoading: boolean = false;\r\n public isSubmit: boolean = false;\r\n public isGeneralInformationValid: boolean = false;\r\n public isFailoverMechanismValid: boolean = false;\r\n public isNumberBaseInformationValid: boolean = false;\r\n public isSchedulerInformationValid: boolean = false;\r\n public isLine: boolean = false;\r\n public generalInformationData: any;\r\n public failoverMechanismData: any;\r\n public targetAudienceData: string[];\r\n public targetAudienceCount: number;\r\n public targetAudienceFile: any;\r\n public schedulerData: any;\r\n\r\n private isUploadTargetAudience: boolean = false;\r\n private subscribers: Subscription[] = [];\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private apiAdapterService: ApiAdapterServiceService,\r\n private toastr: ToastrService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.campaignID = window.location.pathname?.split('/')?.pop();\r\n\r\n this.initWizard();\r\n this.getCampaignDetailService();\r\n }\r\n\r\n private initWizard(): void {\r\n if (!this.isLine) {\r\n this.dataWizard = [\r\n 'General Information',\r\n 'Failover Mechanism',\r\n 'Target Audience',\r\n 'Scheduler',\r\n 'Summary',\r\n ];\r\n return;\r\n }\r\n\r\n this.dataWizard = ['General Information', 'Target Audience', 'Scheduler', 'Summary'];\r\n }\r\n\r\n private getCampaignDetailService(): void {\r\n if (this.campaignID?.length < 10) return;\r\n\r\n this.isLoading = true;\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest([], `/campaign/${this.campaignID}`, 'GET')\r\n .subscribe(\r\n (resp: AppResponse<any>) => {\r\n if (!resp) return;\r\n\r\n const generalInformation = {\r\n campaignName: resp.data?.name,\r\n medium: resp.data?.platform,\r\n channel: ['image', 'video', 'document'].includes(resp.data?.type)\r\n ? 'MEDIA'\r\n : resp.data?.type?.toUpperCase(),\r\n media: resp.data?.type?.toUpperCase(),\r\n from: {\r\n id: resp.data?.accountId,\r\n name: resp.data?.accountName,\r\n platform: resp.data?.platform,\r\n clientId: resp.data?.clientId,\r\n clientName: resp.data?.clientName,\r\n accountNo: resp.data?.accountNo,\r\n wabaId: resp.data?.wabaId ?? '',\r\n },\r\n text: resp.data?.details?.text,\r\n targetURL:\r\n resp.data?.details?.image?.url ??\r\n resp.data?.details?.document?.url ??\r\n resp.data?.details?.video?.url ??\r\n resp.data?.details?.template?.headerURL,\r\n paramHeader: resp.data?.details?.template?.header,\r\n paramBody: resp.data?.details?.template?.data,\r\n paramButton: resp.data?.details?.template?.button,\r\n otpValue: [...(resp.data?.details?.template?.data ?? [])]?.pop(),\r\n template: {\r\n ID: resp.data?.details?.template?.id,\r\n name: resp.data?.details?.template?.name,\r\n lang: resp.data?.details?.template?.lang,\r\n platform: resp.data?.platform,\r\n headerURL: resp.data?.details?.template?.headerURL,\r\n header: {\r\n examples: resp.data?.details?.template?.header,\r\n },\r\n body: {\r\n examples: resp.data?.details?.template?.data,\r\n },\r\n buttons: resp.data?.details?.template?.button,\r\n ClientId: resp.data?.clientId,\r\n ClientName: resp.data?.clientName,\r\n },\r\n isUpload: resp.data?.fileId !== '',\r\n fileId: resp.data?.fileId,\r\n };\r\n\r\n localStorage.setItem(\r\n 'telin.campaign',\r\n JSON.stringify({\r\n ...this.getCampaignStorage,\r\n ...{\r\n generalInformation: {\r\n id: resp.data?.id,\r\n form: generalInformation,\r\n },\r\n failover: resp.data?.failover,\r\n targetAudience: resp.data?.targets,\r\n targetAudienceFile: {\r\n name: resp.data?.fileName,\r\n targetURL: resp.data?.targetURL,\r\n },\r\n scheduler: {\r\n schedulerType:\r\n resp.data?.scheduleType === 'MULTI'\r\n ? 'ONE_TIME'\r\n : resp.data?.scheduleType,\r\n startDate: resp.data?.startTime?.split(' ')[0],\r\n startTime: resp.data?.startTime?.split(' ')[1],\r\n isRepeat: resp.data?.scheduleType === 'MULTI',\r\n delivery: resp.data?.repeat,\r\n },\r\n },\r\n })\r\n );\r\n\r\n this.isLine = resp.data?.platform === 'LINE';\r\n this.isLoading = false;\r\n\r\n this.initWizard();\r\n },\r\n () => {\r\n this.isLoading = false;\r\n }\r\n );\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n public generalInformation(form: { parent: FormGroup; child: FormGroup }): void {\r\n this.isGeneralInformationValid = form.parent.valid && form.child && form.child?.valid;\r\n this.isLine = form.parent?.getRawValue()?.medium === 'LINE';\r\n\r\n this.initWizard();\r\n\r\n if (form.parent && form.child)\r\n this.generalInformationData = {\r\n ...form.parent.getRawValue(),\r\n ...form.child.getRawValue(),\r\n };\r\n }\r\n\r\n public failoverMechanism(form: FormGroup): void {\r\n this.isFailoverMechanismValid = form.valid;\r\n this.failoverMechanismData = form.getRawValue();\r\n }\r\n\r\n public targetAudience(target: {\r\n targetAudience: string[];\r\n numberCount: number;\r\n isUpload: boolean;\r\n file: any;\r\n }): void {\r\n this.targetAudienceFile = target.file;\r\n this.targetAudienceData = target.targetAudience;\r\n this.targetAudienceCount = target.numberCount;\r\n this.isUploadTargetAudience = target.isUpload;\r\n this.isNumberBaseInformationValid =\r\n (target.isUpload && target.file?.name) ||\r\n (!target.isUpload && target.targetAudience.length > 0) ||\r\n this.getCampaignStorage?.generalInformation?.form?.fileId;\r\n }\r\n\r\n public scheduler(form: FormGroup): void {\r\n this.schedulerData = form.getRawValue();\r\n this.isSchedulerInformationValid = form.valid;\r\n }\r\n\r\n public onClickSaveAndNextButton(): void {\r\n this.isSubmit = true;\r\n\r\n switch (this.positionWizard) {\r\n case 1:\r\n this.saveGeneralInformationService();\r\n break;\r\n case 2:\r\n !this.isLine ? this.saveFailoverMechanismService() : this.saveNumberBasesService();\r\n break;\r\n case 3:\r\n !this.isLine ? this.saveNumberBasesService() : this.saveSchedulerService();\r\n break;\r\n case 4:\r\n if (!this.isLine) this.saveSchedulerService();\r\n break;\r\n default:\r\n this.isSubmit = false;\r\n break;\r\n }\r\n }\r\n\r\n get getCampaignStorage(): any {\r\n return localStorage.getItem('telin.campaign')\r\n ? JSON.parse(localStorage.getItem('telin.campaign'))\r\n : {};\r\n }\r\n\r\n get getBody(): string {\r\n const body =\r\n this.generalInformationData?.text ||\r\n this.generalInformationData?.template?.body?.text ||\r\n this.generalInformationData?.body?.text;\r\n\r\n return (\r\n body\r\n ?.split(/\\\\n|\\n/)\r\n .join('<br />')\r\n .split(/\\\\t|\\t/)\r\n .join(' ') ?? ''\r\n );\r\n }\r\n\r\n public onCheckTwilioCounterValid = (): boolean => {\r\n const valuesGeneral = this.generalInformationData;\r\n\r\n if (valuesGeneral?.medium !== 'SMS') {\r\n return true;\r\n }\r\n\r\n if (valuesGeneral?.channel === 'TEXT') {\r\n const segmentedMessage = new SegmentedMessage(this.getBody);\r\n const result = {\r\n segments: segmentedMessage.segmentsCount,\r\n encoding: segmentedMessage.encodingName,\r\n characters: segmentedMessage.numberOfUnicodeScalars,\r\n };\r\n\r\n if (result.segments > 10) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n let valueResult = this.getBody;\r\n Array.from(valuesGeneral.template?.body?.examples || []).map((entry, index) => {\r\n if (valuesGeneral.paramBody.length > 0) {\r\n const placeholder = `{{${entry}}}`;\r\n const value = valuesGeneral.paramBody[index].name;\r\n valueResult = valueResult.split(placeholder).join(value);\r\n }\r\n });\r\n\r\n const segmentedMessage = new SegmentedMessage(valueResult);\r\n const result = {\r\n segments: segmentedMessage.segmentsCount,\r\n encoding: segmentedMessage.encodingName,\r\n characters: segmentedMessage.numberOfUnicodeScalars,\r\n };\r\n\r\n if (result.segments > 10) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n };\r\n\r\n private saveGeneralInformationService(): void {\r\n if (!this.onCheckTwilioCounterValid()) {\r\n this.toastr.error('Segment cannot more than 10');\r\n this.isSubmit = false;\r\n return;\r\n }\r\n\r\n const bodyReq = new GeneralInformationWAReqModel().clone({\r\n ...this.generalInformationData,\r\n });\r\n\r\n if (bodyReq.type === 'template' && this.generalInformationData.from.platform === 'WA') {\r\n bodyReq.template.type = this.generalInformationData.template.category;\r\n }\r\n\r\n const parameterList: Array<Parameter> = [\r\n {\r\n name: 'data',\r\n value: bodyReq.convert(),\r\n in: 'body',\r\n type: 'object',\r\n withoutKeyData: true,\r\n },\r\n ];\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(\r\n parameterList,\r\n this.generalInformationData.id\r\n ? `/campaign/${this.generalInformationData.id}`\r\n : '/campaign',\r\n this.generalInformationData.id ? 'PUT' : 'POST'\r\n )\r\n .subscribe(\r\n (resp) => {\r\n if (resp?.message?.toLowerCase() !== 'success') {\r\n this.isSubmit = false;\r\n return;\r\n }\r\n\r\n localStorage.setItem(\r\n 'telin.campaign',\r\n JSON.stringify({\r\n ...this.getCampaignStorage,\r\n ...{\r\n generalInformation: {\r\n id: resp.data.id,\r\n form: this.generalInformationData,\r\n },\r\n },\r\n })\r\n );\r\n\r\n this.isSubmit = false;\r\n this.positionWizard += 1;\r\n },\r\n () => (this.isSubmit = false)\r\n );\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n private saveFailoverMechanismService(): void {\r\n const bodyReq = new FailoverReqModel().clone({\r\n ...this.failoverMechanismData,\r\n });\r\n\r\n const parameterList: Array<Parameter> = [\r\n {\r\n name: 'data',\r\n value: bodyReq.convert(),\r\n in: 'body',\r\n type: 'object',\r\n withoutKeyData: true,\r\n },\r\n ];\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(\r\n parameterList,\r\n `/campaign/${this.getCampaignStorage?.generalInformation?.id}/failover`,\r\n 'POST'\r\n )\r\n .subscribe(\r\n (resp) => {\r\n if (resp?.message?.toLowerCase() !== 'success') {\r\n this.isSubmit = false;\r\n return;\r\n }\r\n\r\n localStorage.setItem(\r\n 'telin.campaign',\r\n JSON.stringify({\r\n ...this.getCampaignStorage,\r\n ...{\r\n failover: this.failoverMechanismData,\r\n },\r\n })\r\n );\r\n\r\n this.isSubmit = false;\r\n this.positionWizard += 1;\r\n },\r\n () => (this.isSubmit = false)\r\n );\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n private saveNumberBasesService(): void {\r\n if (this.targetAudienceData.length === 0 || this.isUploadTargetAudience) {\r\n localStorage.setItem(\r\n 'telin.campaign',\r\n JSON.stringify({\r\n ...this.getCampaignStorage,\r\n ...{\r\n targetAudience: this.targetAudienceData,\r\n targetAudienceCount: this.targetAudienceCount,\r\n targetAudienceFile: this.targetAudienceFile,\r\n },\r\n })\r\n );\r\n\r\n this.isSubmit = false;\r\n this.positionWizard += 1;\r\n return;\r\n }\r\n\r\n const parameterList: Array<Parameter> = [\r\n {\r\n name: 'data',\r\n value: {\r\n targets: this.targetAudienceData,\r\n numberCount: this.targetAudienceCount,\r\n },\r\n in: 'body',\r\n type: 'object',\r\n withoutKeyData: true,\r\n },\r\n ];\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(\r\n parameterList,\r\n `/campaign/${this.getCampaignStorage?.generalInformation?.id}/targetcategory`,\r\n 'POST'\r\n )\r\n .subscribe(\r\n (resp) => {\r\n if (resp?.message?.toLowerCase() !== 'success') {\r\n this.isSubmit = false;\r\n return;\r\n }\r\n\r\n localStorage.setItem(\r\n 'telin.campaign',\r\n JSON.stringify({\r\n ...this.getCampaignStorage,\r\n ...{\r\n targetAudience: this.targetAudienceData,\r\n targetAudienceCount: this.targetAudienceCount,\r\n targetAudienceFile: this.targetAudienceFile,\r\n },\r\n })\r\n );\r\n\r\n this.isSubmit = false;\r\n this.positionWizard += 1;\r\n },\r\n () => (this.isSubmit = false)\r\n );\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n private saveSchedulerService(): void {\r\n const bodyReq = new SchedulerReqModel().clone({\r\n ...this.schedulerData,\r\n });\r\n\r\n const parameterList: Array<Parameter> = [\r\n {\r\n name: 'data',\r\n value: bodyReq.convert(),\r\n in: 'body',\r\n type: 'object',\r\n withoutKeyData: true,\r\n },\r\n ];\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(\r\n parameterList,\r\n `/campaign/${this.getCampaignStorage?.generalInformation?.id}/schedule`,\r\n 'POST'\r\n )\r\n .subscribe(\r\n (resp) => {\r\n if (resp?.message?.toLowerCase() !== 'success') {\r\n this.isSubmit = false;\r\n return;\r\n }\r\n\r\n localStorage.setItem(\r\n 'telin.campaign',\r\n JSON.stringify({\r\n ...this.getCampaignStorage,\r\n ...{\r\n scheduler: this.schedulerData,\r\n },\r\n })\r\n );\r\n\r\n this.isSubmit = false;\r\n this.positionWizard += 1;\r\n },\r\n () => (this.isSubmit = false)\r\n );\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n public onPrevious(): void {\r\n this.positionWizard -= 1;\r\n }\r\n\r\n public changeCurrentView(area: MainArea) {\r\n this.openConfirmationDialog(area);\r\n }\r\n\r\n private openConfirmationDialog(area: MainArea): void {\r\n const confirmation = new ConfirmationModel();\r\n\r\n confirmation.title = 'Cancel Add Broadcast';\r\n confirmation.content = `Are you sure you want to cancel<br/> Add Broadcast?`;\r\n confirmation.btnSubmitRed = 'Yes';\r\n confirmation.btnCancel = 'No';\r\n\r\n const subs = this.dialog\r\n .open(ConfirmationComponent, {\r\n autoFocus: false,\r\n backdropClass: 'overlay-backdrop-dialog',\r\n data: confirmation,\r\n })\r\n .afterClosed()\r\n .subscribe((resp) => {\r\n if (resp) {\r\n window.history.replaceState(\r\n {},\r\n `/${this.getCampaignStorage?.generalInformation?.id}`,\r\n '/secure/campaign'\r\n );\r\n\r\n this.currentView.emit(area);\r\n }\r\n });\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n public onSubmitForApproval(): void {\r\n const parameterList: Array<Parameter> = [];\r\n this.isSubmit = true;\r\n\r\n if (this.getCampaignStorage?.targetAudienceFile?.name)\r\n parameterList.push({\r\n name: 'isFile',\r\n value: true,\r\n in: 'query',\r\n type: 'string',\r\n });\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(\r\n parameterList,\r\n `/campaign/${this.getCampaignStorage?.generalInformation?.id}/submit`,\r\n 'POST'\r\n )\r\n .subscribe(\r\n (resp) => {\r\n if (resp?.message?.toLowerCase() !== 'success') {\r\n this.isSubmit = false;\r\n return;\r\n }\r\n\r\n window.history.replaceState(\r\n {},\r\n `/${this.getCampaignStorage?.generalInformation?.id}`,\r\n '/secure/campaign'\r\n );\r\n\r\n this.toastr.success('Campaign submitted for approval!');\r\n this.isSubmit = false;\r\n this.currentView.emit(this.currentViews.CampaignIndex);\r\n },\r\n () => (this.isSubmit = false)\r\n );\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscribers.forEach((each) => each.unsubscribe());\r\n }\r\n}\r\n","import {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput,\r\n} from '@angular/core';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport {\r\n\tGeneralInformationEmailMessageValidationConst,\r\n\tMsgTypeEmailOptionConst,\r\n} from '../../../../../core/const';\r\nimport { Parameter } from '../../../../../core/models/util/api-adapter-service-models';\r\nimport { AppResponse } from '../../../../../core/models/util/api-dto/response-models';\r\nimport { ApiAdapterServiceService } from '../../../../../core/services';\r\nimport { TemplateWAModel, WhatsAppAccountDto } from '../../../../models';\r\n\r\n@Component({\r\n\tselector: 'lib-general-information-email',\r\n\ttemplateUrl: './general-information-email.component.html',\r\n\tstyleUrls: ['./general-information-email.component.scss'],\r\n})\r\nexport class GeneralInformationEmailComponent implements OnInit, OnDestroy {\r\n\t@Output()\r\n\tpublic updateGeneralInformationForm: EventEmitter<FormGroup>;\r\n\r\n\tpublic form: FormGroup;\r\n\tpublic validationMessages: any;\r\n\tpublic msgTypeWAOption: any[] = [];\r\n\tpublic accountOption: WhatsAppAccountDto[] = [];\r\n\tpublic isHaveNextAccountOption: boolean = true;\r\n\tpublic isLoadingAccountOption: boolean = false;\r\n\tpublic templateOption: TemplateWAModel[] = [];\r\n\tpublic isHaveNextTemplateOption: boolean = true;\r\n\tpublic isLoadingTemplateOption: boolean = false;\r\n\tpublic isHaveTemplateParam: boolean = false;\r\n\r\n\tprivate pageNoAccountOption: number = 1;\r\n\tprivate pageNoTemplateOption: number = 1;\r\n\tprivate subscribers: Subscription[] = [];\r\n\r\n\t@Input() public isReadOnlyMode: boolean;\r\n\r\n\t@Input()\r\n\tset isTouchedForm(status: boolean) {\r\n\t\tif (!this.updateGeneralInformationForm) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.updateGeneralInformationForm.emit(this.form);\r\n\t\t});\r\n\t}\r\n\r\n\tconstructor(private apiAdapterService: ApiAdapterServiceService) {\r\n\t\tthis.updateGeneralInformationForm = new EventEmitter();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.validationMessages = GeneralInformationEmailMessageValidationConst;\r\n\t\tthis.msgTypeWAOption = MsgTypeEmailOptionConst;\r\n\r\n\t\tthis.initForm();\r\n\t\tthis.initDisable();\r\n\t\tthis.initEdit();\r\n\t\tthis.initValidation();\r\n\t\tthis.getAccountOptionService(\r\n\t\t\tthis.getCampaignStorage?.generalInformation?.form?.medium ===\r\n\t\t\t\t'EMAIL'\r\n\t\t\t\t? this.getCampaignStorage?.generalInformation?.form?.from?.name\r\n\t\t\t\t: ''\r\n\t\t);\r\n\t}\r\n\r\n\tget getCampaignStorage(): any {\r\n\t\treturn localStorage.getItem('telin.campaign')\r\n\t\t\t? JSON.parse(localStorage.getItem('telin.campaign'))\r\n\t\t\t: {};\r\n\t}\r\n\r\n\tprivate initForm(): void {\r\n\t\tthis.form = new FormGroup({\r\n\t\t\tchannel: new FormControl(null, Validators.required),\r\n\t\t\tfrom: new FormControl(null, Validators.required),\r\n\t\t\ttext: new FormControl(null, Validators.required),\r\n\t\t\ttemplate: new FormControl(null, Validators.required),\r\n\t\t\tparamBody: new FormArray([], Validators.required),\r\n\t\t\tisUpload: new FormControl(false),\r\n\t\t\tfileId: new FormControl(''),\r\n\t\t});\r\n\r\n\t\tthis.form.valueChanges.subscribe(() => {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.updateGeneralInformationForm.emit(this.form);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate initDisable(): void {\r\n\t\tif (!this.isReadOnlyMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.form.disable();\r\n\t}\r\n\r\n\tprivate initEdit(): void {\r\n\t\tif (\r\n\t\t\tObject.entries(this.getCampaignStorage).length === 0 ||\r\n\t\t\tthis.getCampaignStorage?.generalInformation?.form?.medium !==\r\n\t\t\t\t'EMAIL'\r\n\t\t)\r\n\t\t\treturn;\r\n\r\n\t\tthis.form\r\n\t\t\t.get('channel')\r\n\t\t\t.setValue(\r\n\t\t\t\tthis.getCampaignStorage?.generalInformation?.form.channel\r\n\t\t\t);\r\n\t\tthis.form\r\n\t\t\t.get('from')\r\n\t\t\t.setValue(this.getCampaignStorage?.generalInformation?.form.from);\r\n\t\tthis.form\r\n\t\t\t.get('text')\r\n\t\t\t.setValue(this.getCampaignStorage?.generalInformation?.form.text);\r\n\t\tthis.form\r\n\t\t\t.get('template')\r\n\t\t\t.setValue(\r\n\t\t\t\tthis.getCampaignStorage?.generalInformation?.form.template\r\n\t\t\t);\r\n\t\tthis.form\r\n\t\t\t.get('isUpload')\r\n\t\t\t.setValue(\r\n\t\t\t\tthis.getCampaignStorage?.generalInformation?.form.isUpload\r\n\t\t\t);\r\n\t\tthis.form\r\n\t\t\t.get('fileId')\r\n\t\t\t.setValue(this.getCampaignStorage?.generalInformation?.form.fileId);\r\n\r\n\t\tthis.isHaveTemplateParam = this.form.get('isUpload').value;\r\n\t\tthis.getTemplateOptionService(\r\n\t\t\tnull,\r\n\t\t\tthis.form.get('template').value?.name\r\n\t\t);\r\n\t}\r\n\r\n\tget getIsTemplate(): boolean {\r\n\t\treturn (\r\n\t\t\tthis.form.get('channel').value &&\r\n\t\t\tthis.form.get('channel').value?.toLowerCase() === 'template'\r\n\t\t);\r\n\t}\r\n\r\n\tprivate initValidation(): void {\r\n\t\tfor (const key in this.form.controls) {\r\n\t\t\tthis.form.controls[key].clearValidators();\r\n\t\t\tthis.form.controls[key].updateValueAndValidity();\r\n\t\t}\r\n\r\n\t\tthis.form.get('channel').setValidators(Validators.required);\r\n\t\tthis.form.get('from').setValidators(Validators.required);\r\n\r\n\t\tif (this.getIsTemplate) {\r\n\t\t\tthis.form.get('template').setValidators(Validators.required);\r\n\t\t\tthis.form.get('template').updateValueAndValidity();\r\n\t\t\tthis.form.get('paramBody').setValidators(Validators.required);\r\n\t\t\tthis.form.get('paramBody').updateValueAndValidity();\r\n\t\t} else {\r\n\t\t\tthis.form.get('text').setValidators(Validators.required);\r\n\t\t\tthis.form.get('text').updateValueAndValidity();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic formReset(_isMediaType: boolean = false): void {\r\n\t\tthis.form.get('text').reset();\r\n\t\tthis.form.get('template').reset();\r\n\t\t(this.form.get('paramBody') as FormArray).controls = [];\r\n\t\t(this.form.get('paramBody') as FormArray).reset();\r\n\r\n\t\tthis.initValidation();\r\n\t}\r\n\r\n\tprivate initParam(_name: string, _value: any, _type: string): Parameter {\r\n\t\treturn {\r\n\t\t\tname: _name,\r\n\t\t\tvalue: _value,\r\n\t\t\tin: 'query',\r\n\t\t\ttype: _type,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate getAccountOptionService(\r\n\t\tfilter: string = '',\r\n\t\tisInfinite: boolean = false\r\n\t): void {\r\n\t\tthis.isLoadingAccountOption = true;\r\n\r\n\t\tconst parameterList: Array<Parameter> = [\r\n\t\t\tthis.initParam('pageNo', this.pageNoAccountOption, 'number'),\r\n\t\t\tthis.initParam('rowPerPage', 20, 'number'),\r\n\t\t\tthis.initParam('platform', 'EMAIL', 'string'),\r\n\t\t\tthis.initParam('status', 'APPROVED', 'string'),\r\n\t\t\tthis.initParam('filter', filter, 'string'),\r\n\t\t];\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(parameterList, '/admin/account', 'GET')\r\n\t\t\t.subscribe((resp: AppResponse<WhatsAppAccountDto[]>) => {\r\n\t\t\t\tif (!resp.data) return;\r\n\r\n\t\t\t\tthis.accountOption = isInfinite\r\n\t\t\t\t\t? [...this.accountOption, ...resp.data]\r\n\t\t\t\t\t: resp.data;\r\n\t\t\t\tthis.isHaveNextAccountOption = resp.haveNext;\r\n\t\t\t\tthis.isLoadingAccountOption = false;\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tpublic getTemplateOptionService(\r\n\t\tevent: string = null,\r\n\t\tfilter: string = '',\r\n\t\tisInfinite: boolean = false\r\n\t): void {\r\n\t\tthis.isLoadingTemplateOption = true;\r\n\r\n\t\tconst parameterList: Array<Parameter> = [\r\n\t\t\tthis.initParam('pageNo', this.pageNoTemplateOption, 'number'),\r\n\t\t\tthis.initParam('rowPerPage', 20, 'number'),\r\n\t\t\tthis.initParam('platform', 'EMAIL', 'string'),\r\n\t\t\tthis.initParam('filter', filter, 'string'),\r\n\t\t\tthis.initParam(\r\n\t\t\t\t'clientId',\r\n\t\t\t\tthis.form.get('from').value?.clientId,\r\n\t\t\t\t'string'\r\n\t\t\t),\r\n\t\t\tthis.initParam(\r\n\t\t\t\t'wabaId',\r\n\t\t\t\tthis.form.get('from').value?.wabaId ?? '',\r\n\t\t\t\t'string'\r\n\t\t\t),\r\n\t\t];\r\n\r\n\t\tif (this.isReadOnlyMode)\r\n\t\t\tparameterList.push(this.initParam('summary', true, 'string'));\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(parameterList, '/message/template', 'GET')\r\n\t\t\t.subscribe((resp: AppResponse<TemplateWAModel[]>) => {\r\n\t\t\t\tthis.templateOption = isInfinite\r\n\t\t\t\t\t? [...this.templateOption, ...resp.data]\r\n\t\t\t\t\t: resp.data;\r\n\t\t\t\tthis.isHaveNextTemplateOption = resp.haveNext;\r\n\t\t\t\tthis.isLoadingTemplateOption = false;\r\n\r\n\t\t\t\tconst template = this.templateOption?.find(\r\n\t\t\t\t\tt => t.ID === this.form.get('template').value?.ID\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (template) {\r\n\t\t\t\t\tthis.form.get('template').setValue(template);\r\n\r\n\t\t\t\t\tif (this.form.get('isUpload').value)\r\n\t\t\t\t\t\treturn this.updateDownloadCSV(\r\n\t\t\t\t\t\t\tthis.form.get('isUpload').value\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\tthis.updateTemplate(this.form.get('template').value);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tprivate initParameter(value: string = ''): FormGroup {\r\n\t\tconst form = new FormGroup({\r\n\t\t\tname: new FormControl(\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: value,\r\n\t\t\t\t\tdisabled:\r\n\t\t\t\t\t\tthis.isReadOnlyMode ||\r\n\t\t\t\t\t\t['UnsubscribeAccount'].includes(value),\r\n\t\t\t\t},\r\n\t\t\t\tValidators.required\r\n\t\t\t),\r\n\t\t});\r\n\r\n\t\treturn form;\r\n\t}\r\n\r\n\tget getParamBody(): FormGroup[] {\r\n\t\treturn (this.form.get('paramBody') as FormArray)\r\n\t\t\t.controls as FormGroup[];\r\n\t}\r\n\r\n\tpublic addParamBody(value: string = ''): void {\r\n\t\tconst form = this.initParameter(value);\r\n\t\t(this.form.get('paramBody') as FormArray).push(form);\r\n\t}\r\n\r\n\tpublic getNextAccountBatch() {\r\n\t\tif (!this.isHaveNextAccountOption) return;\r\n\r\n\t\tthis.pageNoAccountOption += 1;\r\n\t\tthis.getAccountOptionService('', true);\r\n\t}\r\n\r\n\tpublic accountSelectedDisplay(\r\n\t\tattribute1: WhatsAppAccountDto,\r\n\t\tattribute2: WhatsAppAccountDto\r\n\t): string {\r\n\t\treturn attribute1 && attribute2 && attribute1.id == attribute2.id\r\n\t\t\t? `${attribute1.name} (${attribute1.accountNo})`\r\n\t\t\t: '';\r\n\t}\r\n\r\n\tpublic getNextTemplateBatch() {\r\n\t\tif (!this.isHaveNextTemplateOption) return;\r\n\r\n\t\tthis.pageNoTemplateOption += 1;\r\n\t\tthis.getTemplateOptionService(null, '', true);\r\n\t}\r\n\r\n\tpublic templateSelectedDisplay(\r\n\t\tattribute1: TemplateWAModel,\r\n\t\tattribute2: TemplateWAModel\r\n\t): string {\r\n\t\treturn attribute1 && attribute2 && attribute1.name == attribute2.name\r\n\t\t\t? `${attribute1.name}`\r\n\t\t\t: '';\r\n\t}\r\n\r\n\tpublic updateTemplate(template: TemplateWAModel): void {\r\n\t\tif (!template) return;\r\n\r\n\t\tthis.isHaveTemplateParam = template.body.examples?.length > 0;\r\n\r\n\t\ttemplate.body.examples?.length > 0\r\n\t\t\t? this.form.get('paramBody').setValidators(Validators.required)\r\n\t\t\t: this.form.get('paramBody').clearValidators();\r\n\r\n\t\t(this.form.get('paramBody') as FormArray).controls = [];\r\n\t\t(this.form.get('paramBody') as FormArray).reset();\r\n\t\tthis.form.get('paramBody').updateValueAndValidity();\r\n\r\n\t\tconst formStorage = this.getCampaignStorage?.generalInformation?.form;\r\n\r\n\t\ttemplate.body.examples?.forEach((each, index) => {\r\n\t\t\tlet paramValue =\r\n\t\t\t\tformStorage?.paramBody?.[index]?.name ??\r\n\t\t\t\tformStorage?.paramBody?.[index] ??\r\n\t\t\t\t'';\r\n\r\n\t\t\tif (['UnsubscribeAccount'].includes(each)) paramValue = each;\r\n\r\n\t\t\tthis.addParamBody(paramValue);\r\n\t\t});\r\n\t}\r\n\r\n\tpublic updateSearch(searchValue: string): void {\r\n\t\tthis.pageNoTemplateOption = 1;\r\n\t\tthis.getTemplateOptionService(searchValue);\r\n\t}\r\n\r\n\tpublic updateSearchAccount(searchValue: string): void {\r\n\t\tthis.pageNoAccountOption = 1;\r\n\t\tthis.getAccountOptionService(searchValue);\r\n\t}\r\n\r\n\tpublic updateDownloadCSV(isChecked: boolean): void {\r\n\t\tthis.form.get('isUpload').setValue(isChecked);\r\n\r\n\t\tif (isChecked) {\r\n\t\t\t(this.form.get('paramBody') as FormArray).controls = [];\r\n\t\t\t(this.form.get('paramBody') as FormArray).reset();\r\n\t\t\tthis.form.get('paramBody').clearValidators();\r\n\t\t\tthis.form.get('paramBody').updateValueAndValidity();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.updateTemplate(this.form.get('template').value);\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.subscribers.forEach(each => each.unsubscribe());\r\n\t}\r\n}\r\n","import {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput,\r\n} from '@angular/core';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport {\r\n\tGeneralInformationLineMessageValidationConst,\r\n\tMsgTypeLineOptionConst,\r\n} from '../../../../../core/const';\r\nimport { Parameter } from '../../../../../core/models/util/api-adapter-service-models';\r\nimport { AppResponse } from '../../../../../core/models/util/api-dto/response-models';\r\nimport { ApiAdapterServiceService } from '../../../../../core/services';\r\nimport { TemplateWAModel, WhatsAppAccountDto } from '../../../../models';\r\n@Component({\r\n\tselector: 'lib-general-information-line',\r\n\ttemplateUrl: './general-information-line.component.html',\r\n\tstyleUrls: ['./general-information-line.component.scss'],\r\n})\r\nexport class GeneralInformationLineComponent implements OnInit, OnDestroy {\r\n\t@Output()\r\n\tpublic updateGeneralInformationForm: EventEmitter<FormGroup>;\r\n\r\n\tpublic form: FormGroup;\r\n\tpublic msgTypeWAOption: any[] = [];\r\n\tpublic validationMessages: any;\r\n\tpublic accountOption: WhatsAppAccountDto[] = [];\r\n\tpublic isHaveNextAccountOption: boolean = true;\r\n\tpublic isLoadingAccountOption: boolean = false;\r\n\tpublic templateOption: TemplateWAModel[] = [];\r\n\tpublic isHaveNextTemplateOption: boolean = true;\r\n\tpublic isLoadingTemplateOption: boolean = false;\r\n\r\n\tprivate pageNoAccountOption: number = 1;\r\n\tprivate pageNoTemplateOption: number = 1;\r\n\tprivate subscribers: Subscription[] = [];\r\n\r\n\t@Input() public isReadOnlyMode: boolean;\r\n\r\n\t@Input()\r\n\tset isTouchedForm(status: boolean) {\r\n\t\tif (!this.updateGeneralInformationForm) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.updateGeneralInformationForm.emit(this.form);\r\n\t\t});\r\n\t}\r\n\r\n\tconstructor(private apiAdapterService: ApiAdapterServiceService) {\r\n\t\tthis.updateGeneralInformationForm = new EventEmitter();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.msgTypeWAOption = MsgTypeLineOptionConst;\r\n\t\tthis.validationMessages = GeneralInformationLineMessageValidationConst;\r\n\r\n\t\tthis.initForm();\r\n\t\tthis.initDisable();\r\n\t\tthis.initEdit();\r\n\t\tthis.initValidation();\r\n\t\tthis.getAccountOptionService(\r\n\t\t\tthis.getCampaignStorage?.generalInformation?.form?.medium === 'LINE'\r\n\t\t\t\t? this.getCampaignStorage?.generalInformation?.form?.from?.name\r\n\t\t\t\t: ''\r\n\t\t);\r\n\t}\r\n\r\n\tget getCampaignStorage(): any {\r\n\t\treturn localStorage.getItem('telin.campaign')\r\n\t\t\t? JSON.parse(localStorage.getItem('telin.campaign'))\r\n\t\t\t: {};\r\n\t}\r\n\r\n\tprivate initForm(): void {\r\n\t\tthis.form = new FormGroup({\r\n\t\t\tchannel: new FormControl(null, Validators.required),\r\n\t\t\tfrom: new FormControl(null, Validators.required),\r\n\t\t\ttext: new FormControl(null),\r\n\t\t\ttemplate: new FormControl(null),\r\n\t\t\tisJSON: new FormControl(false),\r\n\t\t\tparamBody: new FormArray([], Validators.required),\r\n\t\t});\r\n\r\n\t\tthis.form.valueChanges.subscribe(() => {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.updateGeneralInformationForm.emit(this.form);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate initDisable(): void {\r\n\t\tif (!this.isReadOnlyMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.form.disable();\r\n\t}\r\n\r\n\tprivate initEdit(): void {\r\n\t\tif (\r\n\t\t\tObject.entries(this.getCampaignStorage).length === 0 ||\r\n\t\t\tthis.getCampaignStorage?.generalInformation?.form?.medium !== 'LINE'\r\n\t\t)\r\n\t\t\treturn;\r\n\r\n\t\tthis.form\r\n\t\t\t.get('channel')\r\n\t\t\t.setValue(\r\n\t\t\t\tthis.getCampaignStorage?.generalInformation?.form.channel\r\n\t\t\t);\r\n\t\tthis.form\r\n\t\t\t.get('from')\r\n\t\t\t.setValue(this.getCampaignStorage?.generalInformation?.form.from);\r\n\t\tthis.form\r\n\t\t\t.get('text')\r\n\t\t\t.setValue(this.getCampaignStorage?.generalInformation?.form.text);\r\n\t\tthis.form\r\n\t\t\t.get('template')\r\n\t\t\t.setValue(\r\n\t\t\t\tthis.getCampaignStorage?.generalInformation?.form.template\r\n\t\t\t);\r\n\r\n\t\tthis.getTemplateOptionService(\r\n\t\t\tnull,\r\n\t\t\tthis.form.get('template').value?.name\r\n\t\t);\r\n\t}\r\n\r\n\tprivate initValidation(): void {\r\n\t\tfor (const key in this.form.controls) {\r\n\t\t\tthis.form.controls[key].clearValidators();\r\n\t\t\tthis.form.controls[key].updateValueAndValidity();\r\n\t\t}\r\n\r\n\t\tthis.form.get('channel').setValidators(Validators.required);\r\n\t\tthis.form.get('from').setValidators(Validators.required);\r\n\r\n\t\tif (this.isText) {\r\n\t\t\tthis.form.get('text').setValidators(Validators.required);\r\n\t\t\tthis.form.get('text').updateValueAndValidity();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.form.get('template').setValidators(Validators.required);\r\n\t\tthis.form.get('template').updateValueAndValidity();\r\n\t\tthis.form.get('paramBody').setValidators(Validators.required);\r\n\t\tthis.form.get('paramBody').updateValueAndValidity();\r\n\t}\r\n\r\n\tpublic formReset(): void {\r\n\t\tthis.form.get('text').reset();\r\n\t\tthis.form.get('template').reset();\r\n\t\t(this.form.get('paramBody') as FormArray).controls = [];\r\n\t\t(this.form.get('paramBody') as FormArray).reset();\r\n\r\n\t\tthis.initValidation();\r\n\t}\r\n\r\n\tprivate initParam(_name: string, _value: any, _type: string): Parameter {\r\n\t\treturn {\r\n\t\t\tname: _name,\r\n\t\t\tvalue: _value,\r\n\t\t\tin: 'query',\r\n\t\t\ttype: _type,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate getAccountOptionService(\r\n\t\tfilter: string = '',\r\n\t\tisInfinite: boolean = false\r\n\t): void {\r\n\t\tthis.isLoadingAccountOption = true;\r\n\r\n\t\tconst parameterList: Array<Parameter> = [\r\n\t\t\tthis.initParam('pageNo', this.pageNoAccountOption, 'number'),\r\n\t\t\tthis.initParam('rowPerPage', 20, 'number'),\r\n\t\t\tthis.initParam('platform', 'LINE', 'string'),\r\n\t\t\tthis.initParam('status', 'APPROVED', 'string'),\r\n\t\t\tthis.initParam('filter', filter, 'string'),\r\n\t\t];\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(parameterList, '/admin/account', 'GET')\r\n\t\t\t.subscribe((resp: AppResponse<WhatsAppAccountDto[]>) => {\r\n\t\t\t\tif (!resp.data) return;\r\n\r\n\t\t\t\tthis.accountOption = isInfinite\r\n\t\t\t\t\t? [...this.accountOption, ...resp.data]\r\n\t\t\t\t\t: resp.data;\r\n\t\t\t\tthis.isHaveNextAccountOption = resp.haveNext;\r\n\t\t\t\tthis.isLoadingAccountOption = false;\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tpublic getTemplateOptionService(\r\n\t\tevent: string = null,\r\n\t\tfilter: string = '',\r\n\t\tisInfinite: boolean = false\r\n\t): void {\r\n\t\tthis.isLoadingTemplateOption = true;\r\n\r\n\t\tconst parameterList: Array<Parameter> = [\r\n\t\t\tthis.initParam('pageNo', this.pageNoTemplateOption, 'number'),\r\n\t\t\tthis.initParam('rowPerPage', 20, 'number'),\r\n\t\t\tthis.initParam('platform', 'LINE', 'string'),\r\n\t\t\tthis.initParam('filter', filter, 'string'),\r\n\t\t\tthis.initParam(\r\n\t\t\t\t'clientId',\r\n\t\t\t\tthis.form.get('from').value?.clientId,\r\n\t\t\t\t'string'\r\n\t\t\t),\r\n\t\t];\r\n\r\n\t\tif (this.isReadOnlyMode)\r\n\t\t\tparameterList.push(this.initParam('summary', true, 'string'));\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(parameterList, '/message/template', 'GET')\r\n\t\t\t.subscribe((resp: AppResponse<TemplateWAModel[]>) => {\r\n\t\t\t\tthis.templateOption = isInfinite\r\n\t\t\t\t\t? [...this.templateOption, ...resp.data]\r\n\t\t\t\t\t: resp.data;\r\n\t\t\t\tthis.isHaveNextTemplateOption = resp.haveNext;\r\n\t\t\t\tthis.isLoadingTemplateOption = false;\r\n\r\n\t\t\t\tconst template = this.templateOption?.find(\r\n\t\t\t\t\tt => t.ID === this.form.get('template').value?.ID\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (template) {\r\n\t\t\t\t\tthis.form.get('template').setValue(template);\r\n\t\t\t\t\tthis.updateTemplate(this.form.get('template').value);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tprivate initParameter(value: string = ''): FormGroup {\r\n\t\tconst form = new FormGroup({\r\n\t\t\tname: new FormControl(\r\n\t\t\t\t{ value: value, disabled: this.isReadOnlyMode },\r\n\t\t\t\tValidators.required\r\n\t\t\t),\r\n\t\t});\r\n\r\n\t\treturn form;\r\n\t}\r\n\r\n\tget getParamBody(): FormGroup[] {\r\n\t\treturn (this.form.get('paramBody') as FormArray)\r\n\t\t\t.controls as FormGroup[];\r\n\t}\r\n\r\n\tpublic addParamBody(value: string = ''): void {\r\n\t\tconst form = this.initParameter(value);\r\n\t\t(this.form.get('paramBody') as FormArray).push(form);\r\n\t}\r\n\r\n\tget isText(): boolean {\r\n\t\treturn (\r\n\t\t\tthis.form.get('channel').value &&\r\n\t\t\tthis.form.get('channel').value?.toLowerCase() === 'text'\r\n\t\t);\r\n\t}\r\n\r\n\tget isTemplate(): boolean {\r\n\t\treturn (\r\n\t\t\tthis.form.get('channel').value &&\r\n\t\t\tthis.form.get('channel').value?.toLowerCase() === 'template'\r\n\t\t);\r\n\t}\r\n\r\n\tpublic getNextAccountBatch() {\r\n\t\tif (!this.isHaveNextAccountOption) return;\r\n\r\n\t\tthis.pageNoAccountOption += 1;\r\n\t\tthis.getAccountOptionService('', true);\r\n\t}\r\n\r\n\tpublic accountSelectedDisplay(\r\n\t\tattribute1: WhatsAppAccountDto,\r\n\t\tattribute2: WhatsAppAccountDto\r\n\t): string {\r\n\t\treturn attribute1 && attribute2 && attribute1.id == attribute2.id\r\n\t\t\t? `${attribute1.name} (${attribute1.accountNo})`\r\n\t\t\t: '';\r\n\t}\r\n\r\n\tpublic getNextTemplateBatch() {\r\n\t\tif (!this.isHaveNextTemplateOption) return;\r\n\r\n\t\tthis.pageNoTemplateOption += 1;\r\n\t\tthis.getTemplateOptionService(null, '', true);\r\n\t}\r\n\r\n\tpublic templateSelectedDisplay(\r\n\t\tattribute1: TemplateWAModel,\r\n\t\tattribute2: TemplateWAModel\r\n\t): string {\r\n\t\treturn attribute1 && attribute2 && attribute1.name == attribute2.name\r\n\t\t\t? `${attribute1.name}`\r\n\t\t\t: '';\r\n\t}\r\n\r\n\tpublic updateTemplate(template: TemplateWAModel): void {\r\n\t\tif (!template) return;\r\n\r\n\t\tlet bodyText = template.body.text;\r\n\r\n\t\tif (this.isJsonString(template.body.text)) {\r\n\t\t\tbodyText = JSON.parse(template.body.text).text;\r\n\t\t}\r\n\r\n\t\tthis.form.get('isJSON').setValue(this.isJsonString(template.body.text));\r\n\t\t(this.form.get('paramBody') as FormArray).controls = [];\r\n\t\t(this.form.get('paramBody') as FormArray).reset();\r\n\r\n\t\tconst findBrackets = bodyText?.match(/{{/g);\r\n\t\tconst formStorage = this.getCampaignStorage?.generalInformation?.form;\r\n\r\n\t\tfindBrackets?.length > 0\r\n\t\t\t? this.form.get('paramBody').setValidators(Validators.required)\r\n\t\t\t: this.form.get('paramBody').clearValidators();\r\n\r\n\t\tfindBrackets?.forEach((_, index) => {\r\n\t\t\tthis.addParamBody(\r\n\t\t\t\tformStorage?.paramBody?.[index]?.name ??\r\n\t\t\t\t\tformStorage?.paramBody?.[index] ??\r\n\t\t\t\t\t''\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\tthis.form.get('paramBody').updateValueAndValidity();\r\n\t}\r\n\r\n\tprivate isJsonString(str: string): boolean {\r\n\t\ttry {\r\n\t\t\tJSON.parse(str);\r\n\t\t} catch (e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic updateSearch(searchValue: string): void {\r\n\t\tthis.pageNoTemplateOption = 1;\r\n\t\tthis.getTemplateOptionService(null, searchValue);\r\n\t}\r\n\r\n\tpublic updateSearchAccount(searchValue: string): void {\r\n\t\tthis.pageNoAccountOption = 1;\r\n\t\tthis.getAccountOptionService(searchValue);\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.subscribers.forEach(each => each.unsubscribe());\r\n\t}\r\n}\r\n","import {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput,\r\n} from '@angular/core';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport {\r\n\tGeneralInformationSMSMessageValidationConst,\r\n\tMsgTypeWAOptionConst,\r\n} from '../../../../../core/const';\r\nimport { Parameter } from '../../../../../core/models/util/api-adapter-service-models';\r\nimport { AppResponse } from '../../../../../core/models/util/api-dto/response-models';\r\nimport { ApiAdapterServiceService } from '../../../../../core/services';\r\nimport { TemplateWAModel, WhatsAppAccountDto } from '../../../../models';\r\n\r\n@Component({\r\n\tselector: 'lib-general-information-sms',\r\n\ttemplateUrl: './general-information-sms.component.html',\r\n\tstyleUrls: ['./general-information-sms.component.scss'],\r\n})\r\nexport class GeneralInformationSMSComponent implements OnInit, OnDestroy {\r\n\t@Output()\r\n\tpublic updateGeneralInformationForm: EventEmitter<FormGroup>;\r\n\r\n\tpublic form: FormGroup;\r\n\tpublic msgTypeWAOption: any[] = [];\r\n\tpublic validationMessages: any;\r\n\tpublic accountOption: WhatsAppAccountDto[] = [];\r\n\tpublic isHaveNextAccountOption: boolean = true;\r\n\tpublic isLoadingAccountOption: boolean = false;\r\n\tpublic templateOption: TemplateWAModel[] = [];\r\n\tpublic isHaveNextTemplateOption: boolean = true;\r\n\tpublic isLoadingTemplateOption: boolean = false;\r\n\tpublic isHaveTemplateParam: boolean = false;\r\n\r\n\tprivate pageNoAccountOption: number = 1;\r\n\tprivate pageNoTemplateOption: number = 1;\r\n\tprivate subscribers: Subscription[] = [];\r\n\r\n\t@Input() public isReadOnlyMode: boolean;\r\n\r\n\t@Input()\r\n\tset isTouchedForm(status: boolean) {\r\n\t\tif (!this.updateGeneralInformationForm) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.updateGeneralInformationForm.emit(this.form);\r\n\t\t});\r\n\t}\r\n\r\n\tconstructor(private apiAdapterService: ApiAdapterServiceService) {\r\n\t\tthis.updateGeneralInformationForm = new EventEmitter();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.msgTypeWAOption = MsgTypeWAOptionConst.filter(\r\n\t\t\tt => t.code === 'TEXT' || t.code === 'TEMPLATE'\r\n\t\t);\r\n\t\tthis.validationMessages = GeneralInformationSMSMessageValidationConst;\r\n\r\n\t\tthis.initForm();\r\n\t\tthis.initDisable();\r\n\t\tthis.initEdit();\r\n\t\tthis.initValidation();\r\n\t\tthis.getAccountOptionService(\r\n\t\t\tthis.getCampaignStorage?.generalInformation?.form?.medium === 'SMS'\r\n\t\t\t\t? this.getCampaignStorage?.generalInformation?.form?.from?.name\r\n\t\t\t\t: ''\r\n\t\t);\r\n\t}\r\n\r\n\tget getCampaignStorage(): any {\r\n\t\treturn localStorage.getItem('telin.campaign')\r\n\t\t\t? JSON.parse(localStorage.getItem('telin.campaign'))\r\n\t\t\t: {};\r\n\t}\r\n\r\n\tprivate initForm(): void {\r\n\t\tthis.form = new FormGroup({\r\n\t\t\tchannel: new FormControl(null, Validators.required),\r\n\t\t\tfrom: new FormControl(null, Validators.required),\r\n\t\t\ttext: new FormControl(null, Validators.required),\r\n\t\t\ttemplate: new FormControl(null, Validators.required),\r\n\t\t\tparamBody: new FormArray([], Validators.required),\r\n\t\t\tisUpload: new FormControl(false),\r\n\t\t\tfileId: new FormControl(''),\r\n\t\t});\r\n\r\n\t\tthis.form.valueChanges.subscribe(() => {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.updateGeneralInformationForm.emit(this.form);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate initDisable(): void {\r\n\t\tif (!this.isReadOnlyMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.form.disable();\r\n\t}\r\n\r\n\tprivate initEdit(): void {\r\n\t\tif (\r\n\t\t\tObject.entries(this.getCampaignStorage).length === 0 ||\r\n\t\t\tthis.getCampaignStorage?.generalInformation?.form?.medium !== 'SMS'\r\n\t\t)\r\n\t\t\treturn;\r\n\r\n\t\tthis.form\r\n\t\t\t.get('channel')\r\n\t\t\t.setValue(\r\n\t\t\t\tthis.getCampaignStorage?.generalInformation?.form.channel\r\n\t\t\t);\r\n\t\tthis.form\r\n\t\t\t.get('from')\r\n\t\t\t.setValue(this.getCampaignStorage?.generalInformation?.form.from);\r\n\t\tthis.form\r\n\t\t\t.get('text')\r\n\t\t\t.setValue(this.getCampaignStorage?.generalInformation?.form.text);\r\n\t\tthis.form\r\n\t\t\t.get('template')\r\n\t\t\t.setValue(\r\n\t\t\t\tthis.getCampaignStorage?.generalInformation?.form.template\r\n\t\t\t);\r\n\t\tthis.form\r\n\t\t\t.get('isUpload')\r\n\t\t\t.setValue(\r\n\t\t\t\tthis.getCampaignStorage?.generalInformation?.form.isUpload\r\n\t\t\t);\r\n\t\tthis.form\r\n\t\t\t.get('fileId')\r\n\t\t\t.setValue(this.getCampaignStorage?.generalInformation?.form.fileId);\r\n\r\n\t\tthis.isHaveTemplateParam = this.form.get('isUpload').value;\r\n\t\tthis.getTemplateOptionService(\r\n\t\t\tnull,\r\n\t\t\tthis.form.get('template').value?.name\r\n\t\t);\r\n\t}\r\n\r\n\tget getIsTemplate(): boolean {\r\n\t\treturn (\r\n\t\t\tthis.form.get('channel').value &&\r\n\t\t\tthis.form.get('channel').value?.toLowerCase() === 'template'\r\n\t\t);\r\n\t}\r\n\r\n\tprivate initValidation(): void {\r\n\t\tfor (const key in this.form.controls) {\r\n\t\t\tthis.form.controls[key].clearValidators();\r\n\t\t\tthis.form.controls[key].updateValueAndValidity();\r\n\t\t}\r\n\r\n\t\tthis.form.get('channel').setValidators(Validators.required);\r\n\t\tthis.form.get('from').setValidators(Validators.required);\r\n\r\n\t\tif (this.getIsTemplate) {\r\n\t\t\tthis.form.get('template').setValidators(Validators.required);\r\n\t\t\tthis.form.get('paramBody').setValidators(Validators.required);\r\n\t\t\tthis.form.get('template').updateValueAndValidity();\r\n\t\t\tthis.form.get('paramBody').updateValueAndValidity();\r\n\t\t} else {\r\n\t\t\tthis.form.get('text').setValidators(Validators.required);\r\n\t\t\tthis.form.get('text').updateValueAndValidity();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic formReset(_isMediaType: boolean = false): void {\r\n\t\tthis.form.get('text').reset();\r\n\t\tthis.form.get('template').reset();\r\n\t\t(this.form.get('paramBody') as FormArray).controls = [];\r\n\t\t(this.form.get('paramBody') as FormArray).reset();\r\n\r\n\t\tthis.initValidation();\r\n\t}\r\n\r\n\tprivate initParam(_name: string, _value: any, _type: string): Parameter {\r\n\t\treturn {\r\n\t\t\tname: _name,\r\n\t\t\tvalue: _value,\r\n\t\t\tin: 'query',\r\n\t\t\ttype: _type,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate getAccountOptionService(\r\n\t\tfilter: string = '',\r\n\t\tisInfinite: boolean = false\r\n\t): void {\r\n\t\tthis.isLoadingAccountOption = true;\r\n\r\n\t\tconst parameterList: Array<Parameter> = [\r\n\t\t\tthis.initParam('pageNo', this.pageNoAccountOption, 'number'),\r\n\t\t\tthis.initParam('rowPerPage', 20, 'number'),\r\n\t\t\tthis.initParam('platform', 'SMS', 'string'),\r\n\t\t\tthis.initParam('status', 'APPROVED', 'string'),\r\n\t\t\tthis.initParam('filter', filter, 'string'),\r\n\t\t];\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(parameterList, '/admin/account', 'GET')\r\n\t\t\t.subscribe((resp: AppResponse<WhatsAppAccountDto[]>) => {\r\n\t\t\t\tif (!resp.data) return;\r\n\r\n\t\t\t\tthis.accountOption = isInfinite\r\n\t\t\t\t\t? [...this.accountOption, ...resp.data]\r\n\t\t\t\t\t: resp.data;\r\n\t\t\t\tthis.isHaveNextAccountOption = resp.haveNext;\r\n\t\t\t\tthis.isLoadingAccountOption = false;\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tpublic getTemplateOptionService(\r\n\t\tevent: string = null,\r\n\t\tfilter: string = '',\r\n\t\tisInfinite: boolean = false\r\n\t): void {\r\n\t\tthis.isLoadingTemplateOption = true;\r\n\r\n\t\tconst parameterList: Array<Parameter> = [\r\n\t\t\tthis.initParam('pageNo', this.pageNoTemplateOption, 'number'),\r\n\t\t\tthis.initParam('rowPerPage', 20, 'number'),\r\n\t\t\tthis.initParam('platform', 'SMS', 'string'),\r\n\t\t\tthis.initParam('filter', filter, 'string'),\r\n\t\t\tthis.initParam(\r\n\t\t\t\t'clientId',\r\n\t\t\t\tthis.form.get('from').value?.clientId,\r\n\t\t\t\t'string'\r\n\t\t\t),\r\n\t\t\tthis.initParam(\r\n\t\t\t\t'wabaId',\r\n\t\t\t\tthis.form.get('from').value?.wabaId ?? '',\r\n\t\t\t\t'string'\r\n\t\t\t),\r\n\t\t];\r\n\r\n\t\tif (this.isReadOnlyMode)\r\n\t\t\tparameterList.push(this.initParam('summary', true, 'string'));\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(parameterList, '/message/template', 'GET')\r\n\t\t\t.subscribe((resp: AppResponse<TemplateWAModel[]>) => {\r\n\t\t\t\tthis.templateOption = isInfinite\r\n\t\t\t\t\t? [...this.templateOption, ...resp.data]\r\n\t\t\t\t\t: resp.data;\r\n\t\t\t\tthis.isHaveNextTemplateOption = resp.haveNext;\r\n\t\t\t\tthis.isLoadingTemplateOption = false;\r\n\r\n\t\t\t\tconst template = this.templateOption?.find(\r\n\t\t\t\t\tt => t.ID === this.form.get('template').value?.ID\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (template) {\r\n\t\t\t\t\tthis.form.get('template').setValue(template);\r\n\r\n\t\t\t\t\tif (this.form.get('isUpload').value)\r\n\t\t\t\t\t\treturn this.updateDownloadCSV(\r\n\t\t\t\t\t\t\tthis.form.get('isUpload').value\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\tthis.updateTemplate(this.form.get('template').value);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tprivate initParameter(value: string = ''): FormGroup {\r\n\t\tconst form = new FormGroup({\r\n\t\t\tname: new FormControl(\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: value,\r\n\t\t\t\t\tdisabled:\r\n\t\t\t\t\t\tthis.isReadOnlyMode ||\r\n\t\t\t\t\t\t['UnsubscribeAccount'].includes(value),\r\n\t\t\t\t},\r\n\t\t\t\tValidators.required\r\n\t\t\t),\r\n\t\t});\r\n\r\n\t\treturn form;\r\n\t}\r\n\r\n\tget getParamBody(): FormGroup[] {\r\n\t\treturn (this.form.get('paramBody') as FormArray)\r\n\t\t\t.controls as FormGroup[];\r\n\t}\r\n\r\n\tpublic addParamBody(value: string = ''): void {\r\n\t\tconst form = this.initParameter(value);\r\n\t\t(this.form.get('paramBody') as FormArray).push(form);\r\n\t}\r\n\r\n\tpublic getNextAccountBatch() {\r\n\t\tif (!this.isHaveNextAccountOption) return;\r\n\r\n\t\tthis.pageNoAccountOption += 1;\r\n\t\tthis.getAccountOptionService('', true);\r\n\t}\r\n\r\n\tpublic accountSelectedDisplay(\r\n\t\tattribute1: WhatsAppAccountDto,\r\n\t\tattribute2: WhatsAppAccountDto\r\n\t): string {\r\n\t\treturn attribute1 && attribute2 && attribute1.id == attribute2.id\r\n\t\t\t? `${attribute1.name} (${attribute1.accountNo})`\r\n\t\t\t: '';\r\n\t}\r\n\r\n\tpublic getNextTemplateBatch() {\r\n\t\tif (!this.isHaveNextTemplateOption) return;\r\n\r\n\t\tthis.pageNoTemplateOption += 1;\r\n\t\tthis.getTemplateOptionService(null, '', true);\r\n\t}\r\n\r\n\tpublic templateSelectedDisplay(\r\n\t\tattribute1: TemplateWAModel,\r\n\t\tattribute2: TemplateWAModel\r\n\t): string {\r\n\t\treturn attribute1 && attribute2 && attribute1.name == attribute2.name\r\n\t\t\t? `${attribute1.name}`\r\n\t\t\t: '';\r\n\t}\r\n\r\n\tpublic updateTemplate(template: TemplateWAModel): void {\r\n\t\tif (!template) return;\r\n\r\n\t\tthis.isHaveTemplateParam = template.body.examples?.length > 0;\r\n\r\n\t\ttemplate.body.examples?.length > 0\r\n\t\t\t? this.form.get('paramBody').setValidators(Validators.required)\r\n\t\t\t: this.form.get('paramBody').clearValidators();\r\n\r\n\t\t(this.form.get('paramBody') as FormArray).controls = [];\r\n\t\t(this.form.get('paramBody') as FormArray).reset();\r\n\t\tthis.form.get('paramBody').updateValueAndValidity();\r\n\r\n\t\tconst formStorage = this.getCampaignStorage?.generalInformation?.form;\r\n\r\n\t\ttemplate.body.examples?.forEach((each, index) => {\r\n\t\t\tlet paramValue =\r\n\t\t\t\tformStorage?.paramBody?.[index]?.name ??\r\n\t\t\t\tformStorage?.paramBody?.[index] ??\r\n\t\t\t\t'';\r\n\r\n\t\t\tif (['UnsubscribeAccount'].includes(each)) paramValue = each;\r\n\r\n\t\t\tthis.addParamBody(paramValue);\r\n\t\t});\r\n\t}\r\n\r\n\tpublic updateSearch(searchValue: string): void {\r\n\t\tthis.pageNoTemplateOption = 1;\r\n\t\tthis.getTemplateOptionService('', searchValue);\r\n\t}\r\n\r\n\tpublic updateSearchAccount(searchValue: string): void {\r\n\t\tthis.pageNoAccountOption = 1;\r\n\t\tthis.getAccountOptionService(searchValue);\r\n\t}\r\n\r\n\tpublic updateDownloadCSV(isChecked: boolean): void {\r\n\t\tthis.form.get('isUpload').setValue(isChecked);\r\n\r\n\t\tif (isChecked) {\r\n\t\t\t(this.form.get('paramBody') as FormArray).controls = [];\r\n\t\t\t(this.form.get('paramBody') as FormArray).reset();\r\n\t\t\tthis.form.get('paramBody').clearValidators();\r\n\t\t\tthis.form.get('paramBody').updateValueAndValidity();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.updateTemplate(this.form.get('template').value);\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.subscribers.forEach(each => each.unsubscribe());\r\n\t}\r\n}\r\n","import { MapsAPILoader } from '@agm/core';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription } from 'rxjs';\r\nimport {\r\n GeneralInformationWAMessageValidationConst,\r\n MediaTypeOptionConst,\r\n MsgTypeWAOptionConst,\r\n} from '../../../../../core/const';\r\nimport { ProductCategoryEnum } from '../../../../../core/enums';\r\nimport { BaseOptionModel } from '../../../../../core/models';\r\nimport { Parameter } from '../../../../../core/models/util/api-adapter-service-models';\r\nimport { AppResponse } from '../../../../../core/models/util/api-dto/response-models';\r\nimport { ApiAdapterServiceService } from '../../../../../core/services';\r\nimport { generateEnumOption } from '../../../../../core/util';\r\nimport { TemplateWAModel, WhatsAppAccountDto } from '../../../../models';\r\nimport { EnumData } from '../../../../util/enums';\r\n\r\ninterface IMaps {\r\n zoom: number;\r\n latitude: number;\r\n longitude: number;\r\n isDraggable: boolean;\r\n isDoubleClickZoom: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-general-information-wa',\r\n templateUrl: './general-information-wa.component.html',\r\n styleUrls: ['./general-information-wa.component.scss'],\r\n})\r\nexport class GeneralInformationWAComponent implements OnInit, OnDestroy {\r\n @Output()\r\n public updateGeneralInformationForm: EventEmitter<FormGroup>;\r\n\r\n public form: FormGroup;\r\n public msgTypeWAOption: any[] = [];\r\n public mediaTypeOption: any[] = [];\r\n public categoryOption: BaseOptionModel[];\r\n public accountOption: WhatsAppAccountDto[] = [];\r\n public isHaveNextAccountOption: boolean = true;\r\n public isLoadingAccountOption: boolean = false;\r\n public templateOption: TemplateWAModel[] = [];\r\n public isHaveNextTemplateOption: boolean = true;\r\n public isLoadingTemplateOption: boolean = false;\r\n public isHaveTemplateParam: boolean = false;\r\n public isShowParameter: boolean = false;\r\n public validationMessages: any;\r\n public extFileAccepted: string = 'image/*';\r\n public maps: IMaps;\r\n\r\n private pageNoAccountOption: number = 1;\r\n private pageNoTemplateOption: number = 1;\r\n private subscribers: Subscription[] = [];\r\n private geoCoder: any;\r\n\r\n @Input() public isReadOnlyMode: boolean;\r\n isshowcard: boolean;\r\n categorytemplate: string;\r\n previousCategorytemplate: string;\r\n nametemplate: string;\r\n isHiddencard: boolean;\r\n\r\n @Input()\r\n set isTouchedForm(status: boolean) {\r\n if (!this.updateGeneralInformationForm) {\r\n return;\r\n }\r\n\r\n setTimeout(() => {\r\n this.updateGeneralInformationForm.emit(this.form);\r\n });\r\n }\r\n\r\n @ViewChild('mapSearch') mapSearchRef: ElementRef;\r\n\r\n constructor(\r\n private ngZone: NgZone,\r\n private mapsAPILoader: MapsAPILoader,\r\n private apiAdapterService: ApiAdapterServiceService,\r\n private toastr: ToastrService\r\n ) {\r\n this.updateGeneralInformationForm = new EventEmitter();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.msgTypeWAOption = MsgTypeWAOptionConst;\r\n this.mediaTypeOption = MediaTypeOptionConst;\r\n this.categoryOption = generateEnumOption(ProductCategoryEnum);\r\n this.validationMessages = GeneralInformationWAMessageValidationConst;\r\n this.maps = {\r\n zoom: 15,\r\n latitude: null,\r\n longitude: null,\r\n isDraggable: true,\r\n isDoubleClickZoom: true,\r\n };\r\n\r\n this.initForm();\r\n this.initDisable();\r\n this.initEdit();\r\n this.initValidation();\r\n this.getAccountOptionService(\r\n this.getCampaignStorage?.generalInformation?.form?.medium === 'WA'\r\n ? this.getCampaignStorage?.generalInformation?.form?.from?.name\r\n : ''\r\n );\r\n /* this.setCurrentLocation(); */\r\n }\r\n\r\n get getCampaignStorage(): any {\r\n return localStorage.getItem('telin.campaign')\r\n ? JSON.parse(localStorage.getItem('telin.campaign'))\r\n : {};\r\n }\r\n\r\n private initForm(): void {\r\n this.form = new FormGroup({\r\n channel: new FormControl(null, Validators.required),\r\n media: new FormControl(null),\r\n from: new FormControl(null),\r\n text: new FormControl(null),\r\n fileName: new FormControl(null),\r\n targetURL: new FormControl(null),\r\n fileType: new FormControl(null),\r\n file: new FormControl(null),\r\n latitude: new FormControl(null),\r\n longitude: new FormControl(null),\r\n template: new FormControl(null),\r\n paramHeader: new FormArray([], Validators.required),\r\n paramBody: new FormArray([], Validators.required),\r\n paramButton: new FormArray([], Validators.required),\r\n otpValue: new FormControl(''),\r\n isUpload: new FormControl(false),\r\n fileId: new FormControl(''),\r\n category: new FormControl(null),\r\n product: new FormControl(null),\r\n catalogue: new FormControl(null),\r\n body: new FormControl(null),\r\n });\r\n\r\n this.form.valueChanges.subscribe(() => {\r\n setTimeout(() => {\r\n this.updateGeneralInformationForm.emit(this.form);\r\n });\r\n });\r\n }\r\n\r\n private initDisable(): void {\r\n if (!this.isReadOnlyMode) {\r\n return;\r\n }\r\n\r\n this.form.disable();\r\n }\r\n\r\n private initEdit(): void {\r\n if (\r\n Object.entries(this.getCampaignStorage).length === 0 ||\r\n this.getCampaignStorage?.generalInformation?.form?.medium !== 'WA'\r\n )\r\n return;\r\n\r\n this.form\r\n .get('channel')\r\n .setValue(this.getCampaignStorage?.generalInformation?.form.channel);\r\n this.form.get('media').setValue(this.getCampaignStorage?.generalInformation?.form.media);\r\n this.form.get('from').setValue(this.getCampaignStorage?.generalInformation?.form.from);\r\n this.form.get('text').setValue(this.getCampaignStorage?.generalInformation?.form.text);\r\n this.form\r\n .get('targetURL')\r\n .setValue(this.getCampaignStorage?.generalInformation?.form.targetURL);\r\n this.form\r\n .get('fileName')\r\n .setValue(\r\n this.getCampaignStorage?.generalInformation?.form.fileName ??\r\n this.form.get('targetURL').value\r\n );\r\n this.form\r\n .get('template')\r\n .setValue(this.getCampaignStorage?.generalInformation?.form.template);\r\n this.form\r\n .get('isUpload')\r\n .setValue(this.getCampaignStorage?.generalInformation?.form.isUpload);\r\n this.form.get('fileId').setValue(this.getCampaignStorage?.generalInformation?.form.fileId);\r\n this.form\r\n .get('otpValue')\r\n .setValue(this.getCampaignStorage?.generalInformation?.form.otpValue);\r\n\r\n this.isHaveTemplateParam = this.form.get('isUpload').value;\r\n this.getTemplateOptionService(null, this.form.get('template').value?.name);\r\n }\r\n\r\n private initValidation(): void {\r\n for (const key in this.form.controls) {\r\n this.form.controls[key].clearValidators();\r\n this.form.controls[key].updateValueAndValidity();\r\n }\r\n\r\n this.form.get('channel').setValidators(Validators.required);\r\n\r\n if (this.getIsText) {\r\n this.form.get('from').setValidators(Validators.required);\r\n this.form.get('text').setValidators(Validators.required);\r\n this.form.get('from').updateValueAndValidity();\r\n this.form.get('text').updateValueAndValidity();\r\n } else if (this.getIsMedia) {\r\n this.form.get('media').setValidators(Validators.required);\r\n this.form.get('from').setValidators(Validators.required);\r\n this.form.get('fileName').setValidators(Validators.required);\r\n this.form.get('media').updateValueAndValidity();\r\n this.form.get('from').updateValueAndValidity();\r\n this.form.get('fileName').updateValueAndValidity();\r\n } else if (this.getIsTemplate) {\r\n this.form.get('from').setValidators(Validators.required);\r\n this.form.get('template').setValidators(Validators.required);\r\n this.form.get('paramHeader').setValidators(Validators.required);\r\n this.form.get('paramBody').setValidators(Validators.required);\r\n this.form.get('paramButton').setValidators(Validators.required);\r\n this.form.get('from').updateValueAndValidity();\r\n this.form.get('template').updateValueAndValidity();\r\n this.form.get('paramHeader').updateValueAndValidity();\r\n this.form.get('paramBody').updateValueAndValidity();\r\n this.form.get('paramButton').updateValueAndValidity();\r\n } else if (this.getIsCatalogue) {\r\n this.form.get('from').setValidators(Validators.required);\r\n this.form.get('category').setValidators(Validators.required);\r\n this.form.get('catalogue').setValidators(Validators.required);\r\n this.form.get('product').setValidators(Validators.required);\r\n this.form.get('body').setValidators(Validators.maxLength(100));\r\n this.form.get('from').updateValueAndValidity();\r\n this.form.get('category').updateValueAndValidity();\r\n this.form.get('catalogue').updateValueAndValidity();\r\n this.form.get('product').updateValueAndValidity();\r\n this.form.get('body').updateValueAndValidity();\r\n } else {\r\n this.form.get('from').setValidators(Validators.required);\r\n this.form.get('text').setValidators(Validators.required);\r\n this.form.get('from').updateValueAndValidity();\r\n this.form.get('text').updateValueAndValidity();\r\n }\r\n }\r\n\r\n public formReset(_isMediaType: boolean = false): void {\r\n if (!_isMediaType) {\r\n this.form.get('media').reset();\r\n this.form.get('from').reset();\r\n }\r\n\r\n this.form.get('text').reset();\r\n this.form.get('fileName').reset();\r\n this.form.get('targetURL').reset();\r\n this.form.get('fileType').reset();\r\n this.form.get('file').reset();\r\n this.form.get('latitude').reset();\r\n this.form.get('longitude').reset();\r\n this.form.get('template').reset();\r\n this.form.get('category').reset();\r\n this.form.get('product').reset();\r\n this.form.get('catalogue').reset();\r\n this.form.get('body').reset();\r\n this.form.get('otpValue').reset();\r\n (this.form.get('paramHeader') as FormArray).controls = [];\r\n (this.form.get('paramHeader') as FormArray).reset();\r\n (this.form.get('paramBody') as FormArray).controls = [];\r\n (this.form.get('paramBody') as FormArray).reset();\r\n (this.form.get('paramButton') as FormArray).controls = [];\r\n (this.form.get('paramButton') as FormArray).reset();\r\n\r\n this.initValidation();\r\n }\r\n\r\n private initParam(_name: string, _value: any, _type: string): Parameter {\r\n return {\r\n name: _name,\r\n value: _value,\r\n in: 'query',\r\n type: _type,\r\n };\r\n }\r\n\r\n private getAccountOptionService(filter: string = '', isInfinite: boolean = false): void {\r\n this.isLoadingAccountOption = true;\r\n\r\n const parameterList: Array<Parameter> = [\r\n this.initParam('pageNo', this.pageNoAccountOption, 'number'),\r\n this.initParam('rowPerPage', 20, 'number'),\r\n this.initParam('platform', 'WA', 'string'),\r\n this.initParam('status', 'APPROVED', 'string'),\r\n this.initParam('filter', filter, 'string'),\r\n ];\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(parameterList, '/admin/account', 'GET')\r\n .subscribe((resp: AppResponse<WhatsAppAccountDto[]>) => {\r\n if (!resp.data) return;\r\n\r\n this.accountOption = isInfinite ? [...this.accountOption, ...resp.data] : resp.data;\r\n this.isHaveNextAccountOption = resp.haveNext;\r\n this.isLoadingAccountOption = false;\r\n });\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n public getTemplateOptionService(\r\n event: string = null,\r\n filter: string = '',\r\n isInfinite: boolean = false\r\n ): void {\r\n this.isLoadingTemplateOption = true;\r\n\r\n const parameterList: Array<Parameter> = [\r\n this.initParam('pageNo', this.pageNoTemplateOption, 'number'),\r\n this.initParam('rowPerPage', 20, 'number'),\r\n this.initParam('platform', 'WA', 'string'),\r\n this.initParam('filter', filter, 'string'),\r\n this.initParam('status', 'APPROVED', 'string'),\r\n this.initParam('clientId', this.form.get('from').value?.clientId, 'string'),\r\n this.initParam('wabaId', this.form.get('from').value?.wabaId ?? '', 'string'),\r\n ];\r\n\r\n if (this.isReadOnlyMode) parameterList.push(this.initParam('summary', true, 'string'));\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(parameterList, '/message/template', 'GET')\r\n .subscribe((resp: AppResponse<TemplateWAModel[]>) => {\r\n\r\n\r\n\r\n this.templateOption = isInfinite\r\n ? [...this.templateOption, ...resp.data]\r\n : resp.data;\r\n\r\n this.isHaveNextTemplateOption = resp.haveNext;\r\n this.isLoadingTemplateOption = false;\r\n\r\n const template = this.templateOption?.find(\r\n (t) => t.ID === this.form.get('template').value?.ID\r\n );\r\n\r\n if (template) {\r\n this.form.get('template').setValue(template);\r\n\r\n if (this.form.get('isUpload').value)\r\n return this.updateDownloadCSV(this.form.get('isUpload').value);\r\n }\r\n this.updateTemplate(this.form.get('template').value);\r\n });\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n private initParameter(isButton: boolean = false, value: string = ''): FormGroup {\r\n const form = isButton\r\n ? new FormGroup({\r\n name: new FormArray([], Validators.required),\r\n })\r\n : new FormGroup({\r\n name: new FormControl(\r\n {\r\n value: value,\r\n disabled: this.isReadOnlyMode || ['$UnsubscribeAccount'].includes(value),\r\n },\r\n Validators.required\r\n ),\r\n });\r\n\r\n return form;\r\n }\r\n\r\n get getParamHeader(): FormGroup[] {\r\n return (this.form.get('paramHeader') as FormArray).controls as FormGroup[];\r\n }\r\n\r\n public addParamHeader(value: string = ''): void {\r\n const form = this.initParameter(false, value);\r\n (this.form.get('paramHeader') as FormArray).push(form);\r\n }\r\n\r\n closeCard() {\r\n this.isHiddencard = true;\r\n }\r\n\r\n get getParamBody(): FormGroup[] {\r\n return (this.form.get('paramBody') as FormArray).controls as FormGroup[];\r\n }\r\n\r\n public addParamBody(value: string = ''): void {\r\n const form = this.initParameter(false, value);\r\n (this.form.get('paramBody') as FormArray).push(form);\r\n }\r\n\r\n get getButton(): FormGroup[] {\r\n return (this.form.get('paramButton') as FormArray).controls as FormGroup[];\r\n }\r\n\r\n public getParamButton(index: number): FormGroup[] {\r\n const form = (this.form.get('paramButton') as FormArray).controls as FormGroup[];\r\n return (form[index].get('name') as FormArray).controls as FormGroup[];\r\n }\r\n\r\n public addParamButton(): void {\r\n const form = this.initParameter(true);\r\n (this.form.get('paramButton') as FormArray).push(form);\r\n }\r\n\r\n get getIsText(): boolean {\r\n return (\r\n this.form.get('channel').value &&\r\n this.form.get('channel').value?.toLowerCase() === 'text'\r\n );\r\n }\r\n\r\n get getIsMedia(): boolean {\r\n return (\r\n this.form.get('channel').value &&\r\n this.form.get('channel').value?.toLowerCase() === 'media'\r\n );\r\n }\r\n\r\n get getIsTemplate(): boolean {\r\n return (\r\n this.form.get('channel').value &&\r\n this.form.get('channel').value?.toLowerCase() === 'template'\r\n );\r\n }\r\n\r\n get getIsCatalogue(): boolean {\r\n return (\r\n this.form.get('channel').value &&\r\n this.form.get('channel').value?.toLowerCase() === 'catalogue'\r\n );\r\n }\r\n\r\n public getNextAccountBatch() {\r\n if (!this.isHaveNextAccountOption) return;\r\n\r\n this.pageNoAccountOption += 1;\r\n this.getAccountOptionService('', true);\r\n }\r\n\r\n public accountSelectedDisplay(\r\n attribute1: WhatsAppAccountDto,\r\n attribute2: WhatsAppAccountDto\r\n ): string {\r\n return attribute1 && attribute2 && attribute1.id == attribute2.id\r\n ? `${attribute1.name} (${attribute1.accountNo})`\r\n : '';\r\n }\r\n\r\n public getNextTemplateBatch() {\r\n if (!this.isHaveNextTemplateOption) return;\r\n\r\n this.pageNoTemplateOption += 1;\r\n this.getTemplateOptionService(null, '', true);\r\n }\r\n\r\n public templateSelectedDisplay(\r\n attribute1: TemplateWAModel,\r\n attribute2: TemplateWAModel\r\n ): string {\r\n return attribute1 && attribute2 && attribute1.name == attribute2.name\r\n ? `${attribute1.name}`\r\n : '';\r\n }\r\n\r\n public onFileSelected(event: Event) {\r\n const file: FileList = (event.target as HTMLInputElement).files;\r\n const accept = this.extFileAccepted.split('/');\r\n let matchType = accept[0];\r\n\r\n if (file.length === 0) return;\r\n\r\n if (this.extFileAccepted === 'application/pdf') matchType = accept[1];\r\n\r\n if (!file[0].type.includes(matchType)) {\r\n this.toastr.error('Sorry, the file you are uploading is not allowed');\r\n return;\r\n }\r\n\r\n if (file[0].size > 10000000) {\r\n this.toastr.error('Upload media failed, max size 10mb');\r\n return;\r\n }\r\n\r\n this.form.get('file').setValue(file[0]);\r\n this.form.get('fileType').setValue('image');\r\n this.form.get('fileName').setValue(file[0].name);\r\n this.form.get('targetURL').setValidators(Validators.required);\r\n this.form.get('targetURL').updateValueAndValidity();\r\n\r\n if (file[0].type.indexOf('video') > -1) this.form.get('fileType').setValue('video');\r\n\r\n this.uploadMediaService();\r\n }\r\n\r\n private uploadMediaService(): void {\r\n const parameterList: Array<Parameter> = [\r\n {\r\n name: 'file',\r\n value: this.form.get('file').value,\r\n in: 'formData',\r\n type: 'object',\r\n },\r\n ];\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(parameterList, '/message/media', 'POST')\r\n .subscribe((resp: AppResponse<any>) => {\r\n this.form.get('targetURL').clearValidators();\r\n this.form.get('targetURL').updateValueAndValidity();\r\n this.form.get('targetURL').setValue(resp.data.targetURL);\r\n this.form.get('file').reset();\r\n\r\n this.toastr.success('Upload media success');\r\n });\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n public updateTemplate(template: TemplateWAModel): void {\r\n this.isShowParameter = false;\r\n\r\n if (!template) return;\r\n\r\n\r\n this.categorytemplate = template.category;\r\n this.previousCategorytemplate = template.previousCategory;\r\n this.nametemplate = template.name;\r\n\r\n \r\n if (this.previousCategorytemplate && this.categorytemplate) {\r\n this.isshowcard = true;\r\n } else if(this.previousCategorytemplate === 'undefined' || this.previousCategorytemplate === '') {\r\n this.isshowcard = false;\r\n }\r\n\r\n this.isHaveTemplateParam =\r\n template.header.examples?.length > 0 ||\r\n template.body.examples?.length > 0 ||\r\n template.buttons?.length > 0;\r\n\r\n if (['image', 'video', 'document'].includes(template?.header?.type?.toLowerCase())) {\r\n this.form\r\n .get('fileName')\r\n .setValue(\r\n this.getCampaignStorage?.generalInformation?.form.fileName ??\r\n this.getCampaignStorage?.generalInformation?.form.targetURL ??\r\n template.header.url\r\n );\r\n this.form\r\n .get('targetURL')\r\n .setValue(\r\n this.getCampaignStorage?.generalInformation?.form.targetURL ??\r\n template.header.url\r\n );\r\n\r\n this.fileTypeChange(template?.header?.type?.toLowerCase());\r\n }\r\n\r\n template.header.examples?.length > 0\r\n ? this.form.get('paramHeader').setValidators(Validators.required)\r\n : this.form.get('paramHeader').clearValidators();\r\n\r\n template.body.examples?.length > 0\r\n ? this.form.get('paramBody').setValidators(Validators.required)\r\n : this.form.get('paramBody').clearValidators();\r\n\r\n template.buttons?.length > 0\r\n ? this.form.get('paramButton').setValidators(Validators.required)\r\n : this.form.get('paramButton').clearValidators();\r\n\r\n (this.form.get('paramHeader') as FormArray).controls = [];\r\n (this.form.get('paramHeader') as FormArray).reset();\r\n this.form.get('paramHeader').updateValueAndValidity();\r\n (this.form.get('paramBody') as FormArray).controls = [];\r\n (this.form.get('paramBody') as FormArray).reset();\r\n this.form.get('paramBody').updateValueAndValidity();\r\n (this.form.get('paramButton') as FormArray).controls = [];\r\n (this.form.get('paramButton') as FormArray).reset();\r\n this.form.get('paramButton').updateValueAndValidity();\r\n this.form.get('otpValue').setValue('');\r\n this.form.get('otpValue').clearValidators();\r\n this.form.get('otpValue').updateValueAndValidity();\r\n\r\n const formStorage = this.getCampaignStorage?.generalInformation?.form;\r\n\r\n if (template.category === 'AUTHENTICATION') {\r\n this.form\r\n .get('otpValue')\r\n .setValue(\r\n formStorage?.otpValue ??\r\n [...(formStorage?.template?.body?.examples ?? [])]?.pop() ??\r\n ''\r\n );\r\n this.form.get('otpValue').setValidators(Validators.required);\r\n this.form.get('otpValue').updateValueAndValidity();\r\n }\r\n\r\n template.header.examples?.forEach((each, index) => {\r\n this.addParamHeader(\r\n formStorage?.paramHeader?.[index]?.name ?? formStorage?.paramHeader?.[index] ?? ''\r\n );\r\n });\r\n\r\n template.body.examples?.forEach((each, index) => {\r\n let paramValue =\r\n formStorage?.paramBody?.[index]?.name ?? formStorage?.paramBody?.[index] ?? '';\r\n\r\n if (['$UnsubscribeAccount'].includes(each)) paramValue = each;\r\n\r\n this.addParamBody(paramValue);\r\n });\r\n\r\n template.buttons?.forEach((each, index) => {\r\n this.addParamButton();\r\n const button = this.getButton;\r\n\r\n if (each.examples?.length > 0) {\r\n each.examples.forEach((_, paramIndex) => {\r\n let form = null;\r\n\r\n if (each.type === 'FLOW') {\r\n form = this.initParameter(false, each.flow_id);\r\n } else {\r\n this.isShowParameter = true;\r\n form = this.initParameter(\r\n false,\r\n formStorage?.paramButton?.[index]?.name?.[paramIndex]?.name ??\r\n formStorage?.paramButton?.[index]?.name?.[paramIndex] ??\r\n formStorage?.paramButton?.[index]?.[paramIndex] ??\r\n ''\r\n );\r\n }\r\n\r\n (button[button.length - 1].get('name') as FormArray).push(form);\r\n });\r\n } else {\r\n button[button.length - 1].get('name').clearValidators();\r\n button[button.length - 1].get('name').updateValueAndValidity();\r\n }\r\n });\r\n }\r\n\r\n public updateMediaType(_mediaType: string): void {\r\n if (_mediaType === EnumData.MEDIA_TYPE_LOCATION) this.initMaps;\r\n\r\n this.formReset(true);\r\n this.fileTypeChange(_mediaType.toLowerCase());\r\n }\r\n\r\n private fileTypeChange(type: string): void {\r\n this.extFileAccepted = 'image/*';\r\n\r\n if (type === EnumData.MEDIA_TYPE_VIDEO.toLowerCase()) {\r\n this.extFileAccepted = 'video/*';\r\n } else if (type === EnumData.MEDIA_TYPE_DOCUMENT.toLowerCase()) {\r\n this.extFileAccepted = 'application/pdf';\r\n }\r\n }\r\n\r\n public updateSearch(searchValue: string): void {\r\n this.pageNoTemplateOption = 1;\r\n this.getTemplateOptionService(null, searchValue);\r\n }\r\n\r\n public updateSearchAccount(searchValue: string): void {\r\n this.pageNoAccountOption = 1;\r\n this.getAccountOptionService(searchValue);\r\n }\r\n\r\n private initMaps(): void {\r\n this.mapsAPILoader.load().then(() => {\r\n this.setCurrentLocation();\r\n\r\n this.geoCoder = new google.maps.Geocoder();\r\n const autocomplete = new google.maps.places.Autocomplete(\r\n this.mapSearchRef.nativeElement\r\n );\r\n autocomplete.addListener('place_changed', () => {\r\n this.ngZone.run(() => {\r\n const place: google.maps.places.PlaceResult = autocomplete.getPlace();\r\n\r\n if (!place.geometry) return;\r\n\r\n this.maps.latitude = place.geometry.location.lat();\r\n this.maps.longitude = place.geometry.location.lng();\r\n this.form.get('latitude').setValue(this.maps.latitude);\r\n this.form.get('longitude').setValue(this.maps.longitude);\r\n });\r\n });\r\n });\r\n }\r\n\r\n private setCurrentLocation() {\r\n if ('geolocation' in navigator) {\r\n navigator.geolocation.getCurrentPosition((position) => {\r\n if (!this.form.get('longitude').value && !this.form.get('latitude').value) {\r\n this.maps.latitude = position.coords.latitude;\r\n this.maps.longitude = position.coords.longitude;\r\n this.form.get('latitude').setValue(this.maps.latitude);\r\n this.form.get('longitude').setValue(this.maps.longitude);\r\n }\r\n });\r\n }\r\n }\r\n\r\n public markerDragEnd(event: google.maps.MouseEvent) {\r\n if (event.latLng) {\r\n this.maps.latitude = event.latLng.lat();\r\n this.maps.longitude = event.latLng.lng();\r\n this.form.get('latitude').setValue(this.maps.latitude);\r\n this.form.get('longitude').setValue(this.maps.longitude);\r\n }\r\n }\r\n\r\n public updateDownloadCSV(isChecked: boolean): void {\r\n this.form.get('isUpload').setValue(isChecked);\r\n\r\n if (isChecked) {\r\n (this.form.get('paramHeader') as FormArray).controls = [];\r\n (this.form.get('paramHeader') as FormArray).reset();\r\n (this.form.get('paramBody') as FormArray).controls = [];\r\n (this.form.get('paramBody') as FormArray).reset();\r\n (this.form.get('paramButton') as FormArray).controls = [];\r\n (this.form.get('paramButton') as FormArray).reset();\r\n this.form.get('paramHeader').clearValidators();\r\n this.form.get('paramBody').clearValidators();\r\n this.form.get('paramButton').clearValidators();\r\n this.form.get('paramHeader').updateValueAndValidity();\r\n this.form.get('paramBody').updateValueAndValidity();\r\n this.form.get('paramButton').updateValueAndValidity();\r\n this.form.get('otpValue').reset();\r\n this.form.get('otpValue').clearValidators();\r\n this.form.get('otpValue').updateValueAndValidity();\r\n return;\r\n }\r\n\r\n this.updateTemplate(this.form.get('template').value);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscribers.forEach((each) => each.unsubscribe());\r\n }\r\n}\r\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput,\r\n} from '@angular/core';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport {\r\n\tFailoverMechanismValidationConst,\r\n\tPlatformOptionConst,\r\n\tisHaveNextOption,\r\n\tisLoadingOption,\r\n\toptionList,\r\n\tpageNoOption,\r\n} from '../../../../core/const';\r\nimport { intervalTimeValidator } from '../../../../core/const/form-validators';\r\nimport { Parameter } from '../../../../core/models/util/api-adapter-service-models';\r\nimport { AppResponse } from '../../../../core/models/util/api-dto/response-models';\r\nimport { ApiAdapterServiceService } from '../../../../core/services';\r\nimport { TemplateWAModel, WhatsAppAccountDto } from '../../../models';\r\n\r\n@Component({\r\n\tselector: 'lib-failover-mechanism',\r\n\ttemplateUrl: './failover-mechanism.component.html',\r\n\tstyleUrls: ['./failover-mechanism.component.scss'],\r\n})\r\nexport class FailoverMechanismComponent implements OnInit, OnDestroy {\r\n\t@Output()\r\n\tpublic failover: EventEmitter<FormGroup>;\r\n\r\n\tpublic form: FormGroup;\r\n\tpublic channelOption: any;\r\n\tpublic validationMessages: any;\r\n\tpublic isHaveNextTemplateOption = { ...isHaveNextOption };\r\n\tpublic isLoadingTemplateOption = { ...isLoadingOption };\r\n\tpublic templateOption = { ...optionList };\r\n\tpublic isLoadingAccountOption = { ...isLoadingOption };\r\n\tpublic isHaveNextAccountOption = { ...isHaveNextOption };\r\n\tpublic accountOption = { ...optionList };\r\n\r\n\tprivate subscribers: Subscription[] = [];\r\n\tprivate pageNoTemplateOption = { ...pageNoOption };\r\n\tprivate pageNoAccountOption = { ...pageNoOption };\r\n\r\n\t@Input() public isReadOnlyMode: boolean;\r\n\r\n\tconstructor(private apiAdapterService: ApiAdapterServiceService) {\r\n\t\tthis.failover = new EventEmitter();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.validationMessages = FailoverMechanismValidationConst;\r\n\t\tthis.channelOption = [\r\n\t\t\t...PlatformOptionConst,\r\n\t\t\t/* {\r\n icon: '',\r\n inputSvgIcon: 'icon-voice-gray',\r\n image: 'line.png',\r\n label: 'Voice',\r\n value: 'VOICE',\r\n }, */\r\n\t\t].filter(\r\n\t\t\tt =>\r\n\t\t\t\t![\r\n\t\t\t\t\t'LINE',\r\n\t\t\t\t\tthis.getCampaignStorage?.generalInformation?.form?.medium,\r\n\t\t\t\t].includes(t.value)\r\n\t\t);\r\n\r\n\t\tthis.initForm();\r\n\t\tthis.initDisable();\r\n\t\tthis.initEdit();\r\n\t\tthis.failover.emit(this.form);\r\n\t}\r\n\r\n\tget getCampaignStorage(): any {\r\n\t\treturn localStorage.getItem('telin.campaign')\r\n\t\t\t? JSON.parse(localStorage.getItem('telin.campaign'))\r\n\t\t\t: {};\r\n\t}\r\n\r\n\tget interval() {\r\n\t\treturn this.form.get('interval');\r\n\t}\r\n\r\n\tprivate initForm(): void {\r\n\t\tthis.form = new FormGroup({\r\n\t\t\tactive: new FormControl(false, Validators.required),\r\n\t\t\ttype: new FormControl(''),\r\n\t\t\tinterval: new FormControl(null),\r\n\t\t\taccounts: new FormArray([]),\r\n\t\t});\r\n\r\n\t\tthis.form.valueChanges.subscribe(() => {\r\n\t\t\tif (this.interval.touched && this.interval.value === 0) {\r\n\t\t\t\tthis.form.get('interval').setErrors({ intervalTime: true });\r\n\t\t\t}\r\n\t\t\tthis.failover.emit(this.form);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate initDisable(): void {\r\n\t\tif (!this.isReadOnlyMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.form.disable();\r\n\t}\r\n\r\n\tprivate initEdit(): void {\r\n\t\tif (\r\n\t\t\tObject.entries(this.getCampaignStorage).length === 0 ||\r\n\t\t\t!this.getCampaignStorage?.failover\r\n\t\t)\r\n\t\t\treturn;\r\n\r\n\t\tthis.form\r\n\t\t\t.get('active')\r\n\t\t\t.setValue(this.getCampaignStorage?.failover?.active);\r\n\t\tthis.form\r\n\t\t\t.get('type')\r\n\t\t\t.setValue(this.getCampaignStorage?.failover?.type ?? '');\r\n\t\tthis.form\r\n\t\t\t.get('interval')\r\n\t\t\t.setValue(this.getCampaignStorage?.failover?.interval ?? null);\r\n\r\n\t\tthis.activeChange(this.getCampaignStorage?.failover?.active);\r\n\t\tthis.validationAccount();\r\n\t}\r\n\r\n\tprivate initAccount(data: any = null, _channel: any = null): FormGroup {\r\n\t\tconst form = new FormGroup({\r\n\t\t\tchannel: new FormControl(_channel),\r\n\t\t\tplatform: new FormControl(_channel?.value),\r\n\t\t\taccountId: new FormControl(\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue:\r\n\t\t\t\t\t\tdata?.accountId && typeof data?.accountId === 'string'\r\n\t\t\t\t\t\t\t? {\r\n\t\t\t\t\t\t\t\t\tid: data?.accountId,\r\n\t\t\t\t\t\t\t\t\tname: data?.accountName,\r\n\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t: data?.accountId ?? '',\r\n\t\t\t\t\tdisabled: this.isReadOnlyMode,\r\n\t\t\t\t},\r\n\t\t\t\tValidators.required\r\n\t\t\t),\r\n\t\t\taccountName: new FormControl(data?.accountName ?? ''),\r\n\t\t\tsubject: new FormControl({\r\n\t\t\t\tvalue: data?.subject ?? '',\r\n\t\t\t\tdisabled: this.isReadOnlyMode,\r\n\t\t\t}),\r\n\t\t\ttemplate: new FormControl({\r\n\t\t\t\tvalue: data?.template ?? '',\r\n\t\t\t\tdisabled: this.isReadOnlyMode,\r\n\t\t\t}),\r\n\t\t\tparamBody: new FormArray([]),\r\n\t\t});\r\n\r\n\t\treturn form;\r\n\t}\r\n\r\n\tget getAccount(): FormGroup[] {\r\n\t\treturn (this.form.get('accounts') as FormArray).controls as FormGroup[];\r\n\t}\r\n\r\n\tpublic addAccount(data: any = null, channel: any = null): void {\r\n\t\tconst form = this.initAccount(data, channel);\r\n\t\t(this.form.get('accounts') as FormArray).push(form);\r\n\r\n\t\tthis.getAccountOptionService(channel?.value, data?.accountName ?? '');\r\n\t\tthis.getTemplateOptionService(channel?.value, {}, data?.template?.name);\r\n\t}\r\n\r\n\tprivate initParameter(): FormGroup {\r\n\t\tconst form = new FormGroup({\r\n\t\t\tname: new FormControl('', Validators.required),\r\n\t\t});\r\n\r\n\t\treturn form;\r\n\t}\r\n\r\n\tpublic getParamBody(account: FormGroup): FormGroup[] {\r\n\t\treturn (account.get('paramBody') as FormArray).controls as FormGroup[];\r\n\t}\r\n\r\n\tpublic addParamBody(account: FormGroup): void {\r\n\t\tconst form = this.initParameter();\r\n\t\t(account.get('paramBody') as FormArray).push(form);\r\n\t}\r\n\r\n\tpublic deleteParamBody(account: FormGroup, index: number): void {\r\n\t\t(account.get('paramBody') as FormArray).removeAt(index);\r\n\t}\r\n\r\n\tprivate initParam(_name: string, _value: any, _type: string): Parameter {\r\n\t\treturn {\r\n\t\t\tname: _name,\r\n\t\t\tvalue: _value,\r\n\t\t\tin: 'query',\r\n\t\t\ttype: _type,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate getAccountOptionService(\r\n\t\tplatform: string,\r\n\t\tfilter: string = '',\r\n\t\tisInfinite: boolean = false\r\n\t): void {\r\n\t\tthis.isLoadingAccountOption[platform] = true;\r\n\r\n\t\tconst parameterList: Array<Parameter> = [\r\n\t\t\tthis.initParam(\r\n\t\t\t\t'pageNo',\r\n\t\t\t\tthis.pageNoAccountOption[platform],\r\n\t\t\t\t'number'\r\n\t\t\t),\r\n\t\t\tthis.initParam('rowPerPage', 20, 'number'),\r\n\t\t\tthis.initParam('status', 'APPROVED', 'string'),\r\n\t\t\tthis.initParam('platform', platform, 'string'),\r\n\t\t\tthis.initParam('filter', filter, 'string'),\r\n\t\t];\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(parameterList, '/admin/account', 'GET')\r\n\t\t\t.subscribe((resp: AppResponse<WhatsAppAccountDto[]>) => {\r\n\t\t\t\tif (!resp.data) return;\r\n\r\n\t\t\t\tthis.accountOption[platform] = isInfinite\r\n\t\t\t\t\t? [...this.accountOption[platform], ...resp.data]\r\n\t\t\t\t\t: resp.data;\r\n\r\n\t\t\t\tthis.isHaveNextAccountOption[platform] = resp.haveNext;\r\n\t\t\t\tthis.isLoadingAccountOption[platform] = false;\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tpublic getTemplateOptionService(\r\n\t\tplatform: string,\r\n\t\taccount: any,\r\n\t\tfilter: string = '',\r\n\t\tisInfinite: boolean = false\r\n\t): void {\r\n\t\tthis.isLoadingTemplateOption[platform] = true;\r\n\r\n\t\tconst parameterList: Array<Parameter> = [\r\n\t\t\tthis.initParam(\r\n\t\t\t\t'pageNo',\r\n\t\t\t\tthis.pageNoTemplateOption[platform],\r\n\t\t\t\t'number'\r\n\t\t\t),\r\n\t\t\tthis.initParam('rowPerPage', 20, 'number'),\r\n\t\t\tthis.initParam('platform', platform, 'string'),\r\n\t\t\tthis.initParam('filter', filter, 'string'),\r\n\t\t\tthis.initParam('clientId', account?.clientId ?? '', 'string'),\r\n\t\t\tthis.initParam('wabaId', account?.wabaId ?? '', 'string'),\r\n\t\t];\r\n\r\n\t\tif (platform === 'WA')\r\n\t\t\tparameterList.push(this.initParam('status', 'APPROVED', 'string'));\r\n\r\n\t\tconst subs = this.apiAdapterService\r\n\t\t\t.executeApiRequest(parameterList, '/message/template', 'GET')\r\n\t\t\t.subscribe((resp: AppResponse<TemplateWAModel[]>) => {\r\n\t\t\t\tthis.templateOption[platform] = isInfinite\r\n\t\t\t\t\t? [...this.templateOption[platform], ...resp.data]\r\n\t\t\t\t\t: resp.data;\r\n\r\n\t\t\t\tthis.isHaveNextTemplateOption[platform] = resp.haveNext;\r\n\t\t\t\tthis.isLoadingTemplateOption[platform] = false;\r\n\t\t\t});\r\n\r\n\t\tthis.subscribers.push(subs);\r\n\t}\r\n\r\n\tpublic getNextAccountBatch(platform: string) {\r\n\t\tif (!this.isHaveNextAccountOption[platform]) return;\r\n\r\n\t\tthis.pageNoAccountOption[platform] += 1;\r\n\t\tthis.getAccountOptionService(platform, '', true);\r\n\t}\r\n\r\n\tpublic accountSelectedDisplay(\r\n\t\tattribute1: WhatsAppAccountDto,\r\n\t\tattribute2: WhatsAppAccountDto\r\n\t): string {\r\n\t\treturn attribute1 && attribute2 && attribute1.id == attribute2.id\r\n\t\t\t? `${attribute1.name} (${attribute1.accountNo})`\r\n\t\t\t: '';\r\n\t}\r\n\r\n\tpublic templateSelectedDisplay(\r\n\t\tattribute1: TemplateWAModel,\r\n\t\tattribute2: TemplateWAModel\r\n\t): string {\r\n\t\treturn attribute1 && attribute2 && attribute1.name == attribute2.name\r\n\t\t\t? `${attribute1.name}`\r\n\t\t\t: '';\r\n\t}\r\n\r\n\tpublic getNextTemplateBatch(platform: string, account: any) {\r\n\t\tif (!this.isHaveNextTemplateOption[platform]) return;\r\n\r\n\t\tthis.pageNoTemplateOption[platform] += 1;\r\n\t\tthis.getTemplateOptionService(platform, account, '', true);\r\n\t}\r\n\r\n\tpublic updateSearch(\r\n\t\tsearchValue: string,\r\n\t\tplatform: string,\r\n\t\taccount: any\r\n\t): void {\r\n\t\tthis.pageNoTemplateOption[platform] = 1;\r\n\t\tthis.getTemplateOptionService(platform, account, searchValue);\r\n\t}\r\n\r\n\tpublic updateSearchAccount(searchValue: string, platform: string): void {\r\n\t\tthis.pageNoAccountOption[platform] = 1;\r\n\t\tthis.getAccountOptionService(platform, searchValue);\r\n\t}\r\n\r\n\tpublic activeChange(_active: boolean): void {\r\n\t\tthis.form\r\n\t\t\t.get('type')\r\n\t\t\t.setValue(this.getCampaignStorage?.failover?.type ?? '');\r\n\t\tthis.form.get('type').setValidators(Validators.required);\r\n\t\tthis.form.get('type').updateValueAndValidity();\r\n\r\n\t\tif (_active) {\r\n\t\t\tconst accounts =\r\n\t\t\t\tthis.getCampaignStorage?.failover?.accounts?.filter(\r\n\t\t\t\t\t(t: any) =>\r\n\t\t\t\t\t\tt.platform !==\r\n\t\t\t\t\t\tthis.getCampaignStorage?.generalInformation?.form\r\n\t\t\t\t\t\t\t?.medium\r\n\t\t\t\t);\r\n\r\n\t\t\tif (accounts) {\r\n\t\t\t\taccounts.map(account =>\r\n\t\t\t\t\tthis.addAccount(\r\n\t\t\t\t\t\taccount,\r\n\t\t\t\t\t\tthis.channelOption.find(\r\n\t\t\t\t\t\t\t(t: any) => t.value === account.platform\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tthis.channelOption\r\n\t\t\t\t\t.filter((t: any) => {\r\n\t\t\t\t\t\treturn !accounts.find((account: any) => {\r\n\t\t\t\t\t\t\treturn account.platform === t.value;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.map(channel => this.addAccount({}, channel));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.channelOption.map(channel => this.addAccount({}, channel));\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.form.get('type').clearValidators();\r\n\t\tthis.form.get('type').updateValueAndValidity();\r\n\t\t(this.form.get('accounts') as FormArray).controls = [];\r\n\t\t(this.form.get('accounts') as FormArray).reset();\r\n\t\tthis.form.get('accounts').updateValueAndValidity();\r\n\r\n\t\tthis.typeChange('Status');\r\n\t}\r\n\r\n\tpublic typeChange(_type: string): void {\r\n\t\tif (_type === 'Time') {\r\n\t\t\tthis.form\r\n\t\t\t\t.get('interval')\r\n\t\t\t\t.setValue(this.getCampaignStorage?.failover?.interval ?? null);\r\n\t\t\tthis.form\r\n\t\t\t\t.get('interval')\r\n\t\t\t\t.setValidators([Validators.required, intervalTimeValidator()]);\r\n\t\t\tthis.form.get('interval').updateValueAndValidity();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.form.get('interval').clearValidators();\r\n\t\tthis.form.get('interval').updateValueAndValidity();\r\n\t}\r\n\r\n\tpublic validationAccount(\r\n\t\taccount: WhatsAppAccountDto = null,\r\n\t\taccountControl: FormGroup = null\r\n\t): void {\r\n\t\taccountControl\r\n\t\t\t?.get('accountName')\r\n\t\t\t.setValue(\r\n\t\t\t\tthis.accountOption[accountControl.get('platform').value].find(\r\n\t\t\t\t\tt => t.id === account?.id\r\n\t\t\t\t)?.name ?? ''\r\n\t\t\t);\r\n\r\n\t\tconst isChooseAccount = this.getAccount.filter(\r\n\t\t\tcontrol => control.get('accountId').value\r\n\t\t);\r\n\r\n\t\tthis.getAccount.forEach(control => {\r\n\t\t\tcontrol.get('accountId').setValidators(Validators.required);\r\n\t\t\tcontrol.get('subject').setValidators(Validators.required);\r\n\t\t\tcontrol.get('template').setValidators(Validators.required);\r\n\r\n\t\t\tif (\r\n\t\t\t\t!control.get('accountId').value &&\r\n\t\t\t\tisChooseAccount?.length > 0\r\n\t\t\t) {\r\n\t\t\t\tcontrol.get('accountId').clearValidators();\r\n\t\t\t\tcontrol.get('subject').setValue('');\r\n\t\t\t\tcontrol.get('subject').clearValidators();\r\n\t\t\t\tcontrol.get('template').setValue('');\r\n\t\t\t\tcontrol.get('template').clearValidators();\r\n\t\t\t} else if (\r\n\t\t\t\t['WA', 'SMS', 'VOICE'].includes(control.get('platform').value)\r\n\t\t\t) {\r\n\t\t\t\tcontrol.get('subject').clearValidators();\r\n\t\t\t}\r\n\r\n\t\t\tcontrol.get('accountId').updateValueAndValidity();\r\n\t\t\tcontrol.get('subject').updateValueAndValidity();\r\n\t\t\tcontrol.get('template').updateValueAndValidity();\r\n\t\t});\r\n\r\n\t\tif (accountControl)\r\n\t\t\tthis.getTemplateOptionService(\r\n\t\t\t\taccountControl.get('platform').value,\r\n\t\t\t\taccountControl.get('accountId').value\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic drop(event: CdkDragDrop<any[]>) {\r\n\t\tmoveItemInArray(\r\n\t\t\tthis.getAccount,\r\n\t\t\tevent.previousIndex,\r\n\t\t\tevent.currentIndex\r\n\t\t);\r\n\r\n\t\tthis.failover.emit(this.form);\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.subscribers.forEach(each => each.unsubscribe());\r\n\t}\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nexport function duplicateValidator(\r\n compareArray: any[],\r\n compareProperty: string,\r\n originalValue?: any\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const inputValue = control.value ? String(control.value).trim() : '';\r\n\r\n if (!inputValue || (!!originalValue && String(originalValue) === inputValue)) {\r\n return null;\r\n }\r\n\r\n const isDuplicate = compareArray.some(\r\n (data) => inputValue === String(data[compareProperty]).trim()\r\n );\r\n\r\n return isDuplicate ? { duplicateValue: true } : null;\r\n };\r\n}\r\n\r\nexport function intervalTimeValidator(): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (!control.value) {\r\n return null;\r\n }\r\n\r\n const number = Number(control.value);\r\n\r\n if (Number.isNaN(number) || number % 1 !== 0 || number < 1) {\r\n return { intervalTime: true };\r\n }\r\n\r\n return null;\r\n };\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { SegmentedMessage } from 'sms-segments-calculator';\r\nimport {\r\n\tGeneralInformationMessageValidationConst,\r\n\tPlatformOptionConst,\r\n} from '../../../../core/const';\r\n\r\ninterface IMaps {\r\n\tzoom: number;\r\n\tlatitude: number;\r\n\tlongitude: number;\r\n\tisDraggable: boolean;\r\n\tisDoubleClickZoom: boolean;\r\n}\r\n\r\n@Component({\r\n\tselector: 'lib-new-campaign-general-information',\r\n\ttemplateUrl: './general-information.component.html',\r\n\tstyleUrls: ['./general-information.component.scss'],\r\n})\r\nexport class GeneralInformationComponent implements OnInit {\r\n\t@Output()\r\n\tpublic generalInformation: EventEmitter<{\r\n\t\tparent: FormGroup;\r\n\t\tchild: FormGroup;\r\n\t}>;\r\n\r\n\tpublic form: FormGroup;\r\n\tpublic channelOption: any[];\r\n\tpublic generalInformationForm: FormGroup;\r\n\tpublic isTouchedWAForm: boolean = false;\r\n\tpublic isTouchedSMSForm: boolean = false;\r\n\tpublic isTouchedEmailForm: boolean = false;\r\n\tpublic isShowMore: boolean = false;\r\n\tpublic validationMessages: any;\r\n\tpublic maps: IMaps;\r\n\tpublic twilioResultCounter = {\r\n\t\tsegments: 0,\r\n\t\tcharacters: 0,\r\n\t\tencoding: '',\r\n\t\tfulltext: `Encode - / Chars 0 / Segment 1`,\r\n\t};\r\n\r\n\t@Input() public isReadOnlyMode: boolean;\r\n\r\n\tconstructor(private sanitizer: DomSanitizer) {\r\n\t\tthis.generalInformation = new EventEmitter();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.channelOption = PlatformOptionConst;\r\n\t\tthis.validationMessages = GeneralInformationMessageValidationConst;\r\n\t\tthis.maps = {\r\n\t\t\tzoom: 15,\r\n\t\t\tlatitude: null,\r\n\t\t\tlongitude: null,\r\n\t\t\tisDraggable: true,\r\n\t\t\tisDoubleClickZoom: true,\r\n\t\t};\r\n\r\n\t\tthis.initForm();\r\n\t\tthis.initEdit();\r\n\t\tthis.initDisable();\r\n\t}\r\n\r\n\tprivate initForm(): void {\r\n\t\tthis.form = new FormGroup({\r\n\t\t\tid: new FormControl(null),\r\n\t\t\tcampaignName: new FormControl(null, [\r\n\t\t\t\tValidators.required,\r\n\t\t\t\tValidators.maxLength(100),\r\n\t\t\t]),\r\n\t\t\tmedium: new FormControl(null, [Validators.required]),\r\n\t\t});\r\n\r\n\t\tthis.form.valueChanges.subscribe(() => {\r\n\t\t\tthis.isTouchedWAForm = !this.isTouchedWAForm;\r\n\t\t\tthis.isTouchedSMSForm = !this.isTouchedSMSForm;\r\n\t\t\tthis.isTouchedEmailForm = !this.isTouchedEmailForm;\r\n\r\n\t\t\tthis.generalInformation.emit({\r\n\t\t\t\tparent: this.form,\r\n\t\t\t\tchild: this.generalInformationForm,\r\n\t\t\t});\r\n\t\t});\r\n\t\tsetInterval(() => {\r\n\t\t\tthis.onCheckTwilioCounter();\r\n\t\t}, 400);\r\n\t}\r\n\r\n\tprivate initEdit(): void {\r\n\t\tconst campaign = localStorage.getItem('telin.campaign')\r\n\t\t\t? JSON.parse(localStorage.getItem('telin.campaign'))\r\n\t\t\t: {};\r\n\r\n\t\tif (Object.entries(campaign).length === 0) return;\r\n\r\n\t\tthis.form.get('id').setValue(campaign?.generalInformation?.id);\r\n\t\tthis.form\r\n\t\t\t.get('campaignName')\r\n\t\t\t.setValue(campaign?.generalInformation?.form.campaignName);\r\n\t\tthis.form\r\n\t\t\t.get('medium')\r\n\t\t\t.setValue(campaign?.generalInformation?.form.medium);\r\n\t}\r\n\r\n\tprivate initDisable(): void {\r\n\t\tif (!this.isReadOnlyMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.form.disable();\r\n\t}\r\n\r\n\tpublic updateGeneralInformationForm(form: FormGroup): void {\r\n\t\tthis.generalInformationForm = form;\r\n\t\tthis.isShowMore = false;\r\n\r\n\t\tthis.generalInformation.emit({\r\n\t\t\tparent: this.form,\r\n\t\t\tchild: this.generalInformationForm,\r\n\t\t});\r\n\r\n\t\tif (this.getMedia === 'LOCATION') this.getLocation();\r\n\t}\r\n\r\n\tget getHeader(): string {\r\n\t\treturn this.generalInformationForm?.getRawValue()?.from?.name || '';\r\n\t}\r\n\r\n\tget getBodyString(): string {\r\n\t\tconst body =\r\n\t\t\tthis.generalInformationForm?.getRawValue()?.text ||\r\n\t\t\tthis.generalInformationForm?.getRawValue()?.template?.body?.text ||\r\n\t\t\tthis.generalInformationForm?.getRawValue()?.body?.text;\r\n\r\n\t\treturn (\r\n\t\t\tbody\r\n\t\t\t\t?.split(/\\\\n|\\n/)\r\n\t\t\t\t.join('<br />')\r\n\t\t\t\t.split(/\\\\t|\\t/)\r\n\t\t\t\t.join(' ') ?? ''\r\n\t\t);\r\n\t}\r\n\r\n\tget getBody(): any {\r\n\t\tconst body =\r\n\t\t\tthis.generalInformationForm?.getRawValue()?.text ||\r\n\t\t\tthis.generalInformationForm?.getRawValue()?.template?.body?.text ||\r\n\t\t\tthis.generalInformationForm?.getRawValue()?.body?.text;\r\n\r\n\t\treturn this.sanitizer.bypassSecurityTrustHtml(\r\n\t\t\tthis.fixGeneratedHtml(\r\n\t\t\t\tbody\r\n\t\t\t\t\t?.split(/\\\\n|\\n/)\r\n\t\t\t\t\t.join('<br />')\r\n\t\t\t\t\t.split(/\\\\t|\\t/)\r\n\t\t\t\t\t.join(' ') ?? ''\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tget getMedia(): string {\r\n\t\treturn this.generalInformationForm?.getRawValue()?.media || '';\r\n\t}\r\n\r\n\tget getTemplate(): any {\r\n\t\treturn this.generalInformationForm?.getRawValue()?.template || {};\r\n\t}\r\n\r\n\tget getTemplateButton(): any {\r\n\t\tconst limit =\r\n\t\t\t!this.isShowMore && this.getTemplate?.buttons?.length > 3\r\n\t\t\t\t? 2\r\n\t\t\t\t: this.getTemplate?.buttons?.length;\r\n\r\n\t\treturn [...this.getTemplate?.buttons].splice(0, limit) || [];\r\n\t}\r\n\r\n\tget displayFile(): string {\r\n\t\treturn (\r\n\t\t\t(\r\n\t\t\t\tthis.generalInformationForm?.getRawValue()?.targetURL ||\r\n\t\t\t\tthis.generalInformationForm?.getRawValue()?.template?.header\r\n\t\t\t\t\t?.url\r\n\t\t\t)?.replace('adlsandbox.com', 'adlsandbox.net') ?? ''\r\n\t\t);\r\n\t}\r\n\r\n\t/* LINE */\r\n\tget isText(): boolean {\r\n\t\treturn this.generalInformationForm?.getRawValue()?.channel === 'TEXT';\r\n\t}\r\n\r\n\tget isJSON(): boolean {\r\n\t\treturn this.generalInformationForm?.getRawValue()?.isJSON;\r\n\t}\r\n\r\n\tget getTemplateLine(): any {\r\n\t\treturn this.isJSON\r\n\t\t\t? JSON.parse(\r\n\t\t\t\t\tthis.generalInformationForm?.getRawValue()?.template?.body\r\n\t\t\t\t\t\t?.text\r\n\t\t\t )\r\n\t\t\t: this.generalInformationForm?.getRawValue()?.template?.body?.text;\r\n\t}\r\n\t/* ./ LINE */\r\n\r\n\tprivate getLocation(): void {\r\n\t\tthis.maps.latitude =\r\n\t\t\tthis.generalInformationForm?.getRawValue()?.latitude;\r\n\t\tthis.maps.longitude =\r\n\t\t\tthis.generalInformationForm?.getRawValue()?.longitude;\r\n\t}\r\n\r\n\tprivate fixGeneratedHtml(htmlString) {\r\n\t\treturn htmlString\r\n\t\t\t.replaceAll(/div src=\"http/g, 'img src=\"http')\r\n\t\t\t.replaceAll(/div src=\"data:image/g, 'img src=\"data:image')\r\n\t\t\t.replaceAll(/Drag and drop your image here/g, '');\r\n\t}\r\n\r\n\tpublic onCheckTwilioCounter = (): void => {\r\n\t\tconst valuesGeneral = this.generalInformationForm?.getRawValue();\r\n\t\tif (valuesGeneral?.channel === 'TEXT') {\r\n\t\t\tconst segmentedMessage = new SegmentedMessage(this.getBodyString);\r\n\t\t\tconst result = {\r\n\t\t\t\tsegments: segmentedMessage.segmentsCount,\r\n\t\t\t\tencoding: segmentedMessage.encodingName,\r\n\t\t\t\tcharacters: segmentedMessage.numberOfUnicodeScalars,\r\n\t\t\t};\r\n\r\n\t\t\tthis.twilioResultCounter = {\r\n\t\t\t\t...result,\r\n\t\t\t\tfulltext: `Encode ${result.encoding} / Chars ${result.characters} / Segment ${result.segments}`,\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tlet valueResult = this.getBodyString;\r\n\t\t\tArray.from(valuesGeneral?.template?.body?.examples || []).map(\r\n\t\t\t\t(entry, index) => {\r\n\t\t\t\t\tconst placeholder = `{{${entry}}}`;\r\n\t\t\t\t\tconst value = valuesGeneral.paramBody[index]?.name;\r\n\t\t\t\t\tvalueResult = valueResult.split(placeholder).join(value);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\tconst segmentedMessage = new SegmentedMessage(valueResult);\r\n\t\t\tconst result = {\r\n\t\t\t\tsegments: segmentedMessage.segmentsCount,\r\n\t\t\t\tencoding: segmentedMessage.encodingName,\r\n\t\t\t\tcharacters: segmentedMessage.numberOfUnicodeScalars,\r\n\t\t\t};\r\n\r\n\t\t\tthis.twilioResultCounter = {\r\n\t\t\t\t...result,\r\n\t\t\t\tfulltext: `Encode ${result.encoding} / Chars ${result.characters} / Segment ${result.segments}`,\r\n\t\t\t};\r\n\t\t}\r\n\t};\r\n}\r\n","import { SelectionModel } from '@angular/cdk/collections';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription } from 'rxjs';\r\nimport { HttpBodyReqPaginationModel } from '../../../../core/models';\r\nimport { Parameter } from '../../../../core/models/util/api-adapter-service-models';\r\nimport { AppResponse } from '../../../../core/models/util/api-dto/response-models';\r\nimport { ApiAdapterServiceService } from '../../../../core/services';\r\nimport { downloadBlobFile } from '../../../../core/util';\r\nimport { ContactCategoryModel } from '../../../models';\r\nimport { TableModel } from '../../campaign-index/models';\r\n\r\n@Component({\r\n selector: 'lib-new-number-bases',\r\n templateUrl: './new-number-bases.component.html',\r\n styleUrls: ['./new-number-bases.component.scss'],\r\n})\r\nexport class NewNumberBasesComponent implements OnInit, OnDestroy {\r\n @Output()\r\n public targetAudience: EventEmitter<{\r\n targetAudience: string[];\r\n numberCount: number;\r\n isUpload: boolean;\r\n file: any;\r\n }>;\r\n\r\n public table: TableModel;\r\n public isUpload: boolean = false;\r\n public isLoading: boolean = false;\r\n public isShowUploadCSV: boolean = false;\r\n public categorySelected: ContactCategoryModel[] = [];\r\n public selection = new SelectionModel<ContactCategoryModel>(true, []);\r\n public extFileAccepted: string[] = [\r\n 'application/vnd.ms-excel',\r\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n '.csv',\r\n ];\r\n public fileSelected: {\r\n name: string;\r\n targetURL: string;\r\n } = null;\r\n\r\n private categoryParam: HttpBodyReqPaginationModel;\r\n private subscribers: Subscription[] = [];\r\n\r\n @Input() public isReadOnlyMode: boolean;\r\n\r\n @ViewChild(MatSort) matSort: MatSort;\r\n\r\n constructor(\r\n private apiAdapterService: ApiAdapterServiceService,\r\n private toastr: ToastrService\r\n ) {\r\n this.targetAudience = new EventEmitter();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.categoryParam = new HttpBodyReqPaginationModel();\r\n\r\n this.initTable();\r\n this.getCategoryList();\r\n\r\n this.targetAudience.emit({\r\n targetAudience: [],\r\n numberCount: 0,\r\n isUpload: this.getCampaignStorage?.generalInformation?.form?.isUpload,\r\n file: {\r\n name: this.getCampaignStorage?.targetAudienceFile?.name,\r\n targetURL: this.getCampaignStorage?.targetAudienceFile?.targetURL,\r\n },\r\n });\r\n }\r\n\r\n private initTable(): void {\r\n this.table = new TableModel();\r\n this.table.labels = [\r\n 'select',\r\n 'Category',\r\n 'No. Of Customer',\r\n 'Created Date',\r\n 'Updated Date',\r\n ];\r\n this.table.columns = ['select', 'name', 'totalMembers', 'createdDate', 'updatedDate'];\r\n }\r\n\r\n get getCampaignStorage(): any {\r\n return localStorage.getItem('telin.campaign')\r\n ? JSON.parse(localStorage.getItem('telin.campaign'))\r\n : {};\r\n }\r\n\r\n private initEdit(): void {\r\n if (Object.entries(this.getCampaignStorage).length === 0) return;\r\n\r\n this.isShowUploadCSV = this.getCampaignStorage?.generalInformation?.form?.isUpload;\r\n\r\n this.fileSelected = {\r\n name: this.getCampaignStorage?.targetAudienceFile?.name,\r\n targetURL: this.getCampaignStorage?.targetAudienceFile?.targetURL,\r\n };\r\n\r\n this.table.dataSource.data?.forEach((each) => {\r\n if (this.getCampaignStorage?.targetAudience?.includes(each.id))\r\n this.onChecked(true, each);\r\n });\r\n }\r\n\r\n private getCategoryList(filter: string = ''): void {\r\n this.isLoading = true;\r\n\r\n if (this.isReadOnlyMode) this.categoryParam.pageSize = 1000;\r\n\r\n const parameterList: Array<Parameter> = [\r\n this.initParam('pageNo', this.categoryParam.pageNo, 'number'),\r\n this.initParam('rowPerPage', this.categoryParam.pageSize, 'number'),\r\n this.initParam('filter', filter, 'string'),\r\n this.initParam(\r\n 'platform',\r\n this.getCampaignStorage?.generalInformation?.form?.medium,\r\n 'string'\r\n ),\r\n ];\r\n\r\n if (this.getCampaignStorage?.generalInformation?.form?.medium === 'LINE')\r\n parameterList.push(\r\n this.initParam(\r\n 'accountId',\r\n this.getCampaignStorage?.generalInformation?.form?.from?.id,\r\n 'string'\r\n )\r\n );\r\n\r\n if (this.isReadOnlyMode) parameterList.push(this.initParam('summary', true, 'string'));\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(parameterList, '/admin/category', 'GET')\r\n .subscribe((resp: AppResponse<ContactCategoryModel[]>) => {\r\n if (this.isReadOnlyMode) {\r\n this.table.dataSource.data = resp.data?.filter((each) =>\r\n this.getCampaignStorage?.targetAudience?.includes(each.id)\r\n );\r\n\r\n this.categorySelected = this.table.dataSource.data;\r\n this.isLoading = false;\r\n this.initEdit();\r\n return;\r\n }\r\n\r\n this.table.dataSource.data = resp.data;\r\n this.table.setNextPage(resp.haveNext);\r\n this.isLoading = false;\r\n this.initEdit();\r\n });\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n private initParam(_name: string, _value: any, _type: string): Parameter {\r\n return {\r\n name: _name,\r\n value: _value,\r\n in: 'query',\r\n type: _type,\r\n };\r\n }\r\n\r\n public updateSearch(searchValue: string): void {\r\n this.table.resetPage();\r\n this.categoryParam.pageNo = this.table.page;\r\n this.getCategoryList(searchValue);\r\n }\r\n\r\n public updatePage(event: any): void {\r\n if (this.table.pageSize !== event?.pageSize) this.table.resetPage();\r\n\r\n this.table.page =\r\n this.table.pageSize !== event?.pageSize ? this.table.page : event?.pageIndex + 1;\r\n this.table.pageSize = event?.pageSize;\r\n this.categoryParam.pageNo = this.table.page;\r\n this.categoryParam.pageSize = this.table.pageSize;\r\n\r\n this.getCategoryList();\r\n }\r\n\r\n public sort(): void {\r\n this.table.dataSource.sort = this.matSort;\r\n }\r\n\r\n public checkboxLabel(row?: ContactCategoryModel): string {\r\n if (!row) return `${this.isAllSelected() ? 'deselect' : 'select'} all`;\r\n\r\n return `${this.selection.isSelected(row) ? 'deselect' : 'select'} row ${row.name + 1}`;\r\n }\r\n\r\n public isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.table.dataSource.data?.length ?? 0;\r\n\r\n if (\r\n this.table.dataSource.data &&\r\n this.table.dataSource.data.length > 0 &&\r\n this.selection.selected &&\r\n this.selection.selected.length > 0\r\n ) {\r\n for (const data of this.table.dataSource.data) {\r\n if (this.selection.selected.filter((t) => t.id === data.id).length > 0) continue;\r\n\r\n return false;\r\n }\r\n }\r\n\r\n return numSelected === numRows;\r\n }\r\n\r\n public masterToggle(isChecked: boolean) {\r\n if (!isChecked) {\r\n this.selection.clear();\r\n this.categorySelected = [];\r\n\r\n this.targetAudience.emit({\r\n targetAudience: [],\r\n numberCount: 0,\r\n isUpload: this.isShowUploadCSV,\r\n file: {\r\n name: this.getCampaignStorage?.targetAudienceFile?.name,\r\n targetURL: this.getCampaignStorage?.targetAudienceFile?.targetURL,\r\n },\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.selection.select(...this.table.dataSource.data);\r\n this.categorySelected = this.selection.selected;\r\n\r\n this.targetAudience.emit({\r\n targetAudience: this.categorySelected.map((t) => t.id),\r\n numberCount: this.categorySelected.reduce((sum, x) => sum + x.totalMembers, 0),\r\n isUpload: this.isShowUploadCSV,\r\n file: {\r\n name: this.getCampaignStorage?.targetAudienceFile?.name,\r\n targetURL: this.getCampaignStorage?.targetAudienceFile?.targetURL,\r\n },\r\n });\r\n }\r\n\r\n public onChecked(isChecked: boolean, row: ContactCategoryModel) {\r\n if (!isChecked) {\r\n this.selection.deselect(...this.selection.selected.filter((x) => x.id === row.id));\r\n this.categorySelected = this.selection.selected;\r\n\r\n this.targetAudience.emit({\r\n targetAudience: this.categorySelected.map((t) => t.id),\r\n numberCount: this.categorySelected.reduce((sum, x) => sum + x.totalMembers, 0),\r\n isUpload: this.isShowUploadCSV,\r\n file: {\r\n name: this.getCampaignStorage?.targetAudienceFile?.name,\r\n targetURL: this.getCampaignStorage?.targetAudienceFile?.targetURL,\r\n },\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.selection.select(row);\r\n this.categorySelected = this.selection.selected;\r\n\r\n this.targetAudience.emit({\r\n targetAudience: this.categorySelected.map((t) => t.id),\r\n numberCount: this.categorySelected.reduce((sum, x) => sum + x.totalMembers, 0),\r\n isUpload: this.isShowUploadCSV,\r\n file: {\r\n name: this.getCampaignStorage?.targetAudienceFile?.name,\r\n targetURL: this.getCampaignStorage?.targetAudienceFile?.targetURL,\r\n },\r\n });\r\n }\r\n\r\n public isChecked(row: ContactCategoryModel) {\r\n const found = this.selection.selected.find((x) => x.id === row.id);\r\n return found ? true : false;\r\n }\r\n\r\n public onDownloadSampleService(): void {\r\n const parameterList: Array<Parameter> = [\r\n this.initParam(\r\n 'platform',\r\n this.getCampaignStorage?.generalInformation?.form?.template?.platform,\r\n 'string'\r\n ),\r\n this.initParam(\r\n 'templateName',\r\n this.getCampaignStorage?.generalInformation?.form?.template?.name,\r\n 'string'\r\n ),\r\n this.initParam(\r\n 'templateLang',\r\n this.getCampaignStorage?.generalInformation?.form?.template?.lang,\r\n 'string'\r\n ),\r\n this.initParam(\r\n 'category',\r\n this.categorySelected?.map((t) => t.id).join() ?? [],\r\n 'string'\r\n ),\r\n ];\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(parameterList, '/message/bulkupload/template', 'GET', true)\r\n .subscribe((resp: AppResponse<any>) => {\r\n downloadBlobFile(resp, 'Sample-UploadParameter.xlsx');\r\n });\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n public onFileSelected(event: Event) {\r\n const file: FileList = (event.target as HTMLInputElement).files;\r\n const MAXIMUM_SIZE = 10 * 1024 * 1024; // In MegaBytes\r\n\r\n console.log(MAXIMUM_SIZE);\r\n\r\n if (file.length === 0) return;\r\n\r\n if (file[0].size > MAXIMUM_SIZE) {\r\n this.toastr.error('Upload media failed, max size 10mb');\r\n return;\r\n }\r\n\r\n this.uploadMediaService(file[0]);\r\n }\r\n\r\n private uploadMediaService(file: File): void {\r\n this.isUpload = true;\r\n\r\n const parameterList: Array<Parameter> = [\r\n {\r\n name: 'file',\r\n value: file,\r\n in: 'formData',\r\n type: 'object',\r\n },\r\n ];\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(parameterList, '/message/media', 'POST')\r\n .subscribe(\r\n (resp: AppResponse<any>) => {\r\n if (!resp) return;\r\n\r\n this.setFileService(resp.data);\r\n },\r\n () => (this.isUpload = false)\r\n );\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n private setFileService(media: any): void {\r\n const parameterList: Array<Parameter> = [\r\n {\r\n name: 'fileId',\r\n value: {\r\n fileId: media.id,\r\n },\r\n in: 'body',\r\n type: 'object',\r\n withoutKeyData: true,\r\n },\r\n ];\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(\r\n parameterList,\r\n `/campaign/${this.getCampaignStorage?.generalInformation?.id}/targetfile`,\r\n 'POST'\r\n )\r\n .subscribe(\r\n (resp: AppResponse<any>) => {\r\n if (!resp) return;\r\n\r\n this.toastr.info('Upload XLSX has been uploaded successfully');\r\n this.isUpload = false;\r\n this.targetAudience.emit({\r\n targetAudience: this.categorySelected.map((t) => t.id),\r\n numberCount: this.categorySelected.reduce(\r\n (sum, x) => sum + x.totalMembers,\r\n 0\r\n ),\r\n isUpload: true,\r\n file: {\r\n name: media.fileName,\r\n targetURL: media.targetURL,\r\n },\r\n });\r\n },\r\n () => (this.isUpload = false)\r\n );\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscribers.forEach((each) => each.unsubscribe());\r\n }\r\n}\r\n","export const downloadBlobFile = (blob: any, name: string = 'file.csv'): any => {\r\n\tconst blobUrl = URL.createObjectURL(blob);\r\n\r\n\tconst link = document.createElement('a');\r\n\r\n\tlink.href = blobUrl;\r\n\tlink.download = name;\r\n\r\n\tdocument.body.appendChild(link);\r\n\r\n\tlink.dispatchEvent(\r\n\t\tnew MouseEvent('click', {\r\n\t\t\tbubbles: true,\r\n\t\t\tcancelable: true,\r\n\t\t\tview: window,\r\n\t\t})\r\n\t);\r\n\r\n\tdocument.body.removeChild(link);\r\n};\r\n","import { DatePipe } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { SchedulerMessageValidationConst } from '../../../../core/const';\r\n\r\n@Component({\r\n\tselector: 'lib-new-campaign-scheduler',\r\n\ttemplateUrl: './scheduler.component.html',\r\n\tstyleUrls: ['./scheduler.component.scss'],\r\n})\r\nexport class SchedulerComponent implements OnInit {\r\n\t@Output()\r\n\tpublic scheduler: EventEmitter<FormGroup>;\r\n\r\n\tpublic form: FormGroup;\r\n\tpublic minDate: Date;\r\n\tpublic validationMessages: any;\r\n\r\n\tprivate datePipe: DatePipe;\r\n\r\n\t@Input() public isReadOnlyMode: boolean;\r\n\r\n\tconstructor(private toastr: ToastrService) {\r\n\t\tthis.datePipe = new DatePipe('en-US');\r\n\t\tthis.scheduler = new EventEmitter();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.validationMessages = SchedulerMessageValidationConst;\r\n\t\tthis.minDate = new Date();\r\n\r\n\t\tthis.initForm();\r\n\t\tthis.initEdit();\r\n\t\tthis.initDisable();\r\n\t}\r\n\r\n\tprivate initForm(): void {\r\n\t\tthis.form = new FormGroup({\r\n\t\t\tschedulerType: new FormControl(null, Validators.required),\r\n\t\t\tstartDate: new FormControl(null),\r\n\t\t\tstartTime: new FormControl(null),\r\n\t\t\tisRepeat: new FormControl(false),\r\n\t\t\tdelivery: new FormControl(null),\r\n\t\t});\r\n\r\n\t\tthis.form.valueChanges.subscribe(() => {\r\n\t\t\tthis.scheduler.emit(this.form);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate initDisable(): void {\r\n\t\tif (!this.isReadOnlyMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.form.disable();\r\n\t}\r\n\r\n\tprivate initEdit(isEdit: boolean = true): void {\r\n\t\tconst campaign = localStorage.getItem('telin.campaign')\r\n\t\t\t? JSON.parse(localStorage.getItem('telin.campaign'))\r\n\t\t\t: {};\r\n\r\n\t\tif (Object.entries(campaign).length === 0) return;\r\n\r\n\t\tif (isEdit)\r\n\t\t\tthis.form\r\n\t\t\t\t.get('schedulerType')\r\n\t\t\t\t.setValue(campaign?.scheduler?.schedulerType);\r\n\r\n\t\tthis.form.get('startDate').setValue(campaign?.scheduler?.startDate);\r\n\t\tthis.form.get('startTime').setValue(campaign?.scheduler?.startTime);\r\n\t\tthis.form.get('isRepeat').setValue(campaign?.scheduler?.isRepeat);\r\n\t\tthis.form\r\n\t\t\t.get('delivery')\r\n\t\t\t.setValue(\r\n\t\t\t\tthis.capitalizeFirstLetter(campaign?.scheduler?.delivery)\r\n\t\t\t);\r\n\t}\r\n\r\n\tprivate capitalizeFirstLetter(value: string): string {\r\n\t\tif (!value) return '';\r\n\r\n\t\treturn (\r\n\t\t\tvalue?.charAt(0).toUpperCase() + value?.slice(1).toLowerCase() ?? ''\r\n\t\t);\r\n\t}\r\n\r\n\tpublic updateSchedulerType(type: string): void {\r\n\t\tthis.form.get('schedulerType').setValue(type);\r\n\r\n\t\tif (this.form.get('schedulerType').value === 'NOW') {\r\n\t\t\tthis.form.get('startDate').setValue(null);\r\n\t\t\tthis.form.get('startDate').clearValidators();\r\n\t\t\tthis.form.get('startDate').updateValueAndValidity();\r\n\t\t\tthis.form.get('startTime').setValue(null);\r\n\t\t\tthis.form.get('startTime').clearValidators();\r\n\t\t\tthis.form.get('startTime').updateValueAndValidity();\r\n\t\t\tthis.form.get('delivery').setValue(null);\r\n\t\t\tthis.form.get('delivery').clearValidators();\r\n\t\t\tthis.form.get('delivery').updateValueAndValidity();\r\n\t\t\tthis.form.get('isRepeat').setValue(false);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.form.get('startDate').setValidators(Validators.required);\r\n\t\tthis.form.get('startDate').updateValueAndValidity();\r\n\t\tthis.form.get('startTime').setValidators(Validators.required);\r\n\t\tthis.form.get('startTime').updateValueAndValidity();\r\n\t\tthis.initEdit(false);\r\n\t}\r\n\r\n\tpublic updateTime(): void {\r\n\t\tif (!this.form.get('startDate').value) return;\r\n\r\n\t\tconst dateNow = new Date().getTime();\r\n\t\tconst startDate = new Date(\r\n\t\t\t`${this.datePipe.transform(\r\n\t\t\t\tthis.form.get('startDate').value,\r\n\t\t\t\t'yyyy-MM-dd'\r\n\t\t\t)} ${this.form.get('startTime').value}`\r\n\t\t).getTime();\r\n\r\n\t\tif (dateNow > startDate) {\r\n\t\t\tthis.form.get('startTime').setValue(null);\r\n\t\t\tthis.toastr.error('Selected time has been surpassed');\r\n\t\t}\r\n\t}\r\n\r\n\tpublic updateRepeat(isChecked: boolean): void {\r\n\t\tif (isChecked) {\r\n\t\t\tthis.form.get('delivery').setValidators(Validators.required);\r\n\t\t\tthis.form.get('delivery').updateValueAndValidity();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.form.get('isRepeat').setValue(null);\r\n\t\tthis.form.get('delivery').setValue(null);\r\n\t\tthis.form.get('delivery').clearValidators();\r\n\t\tthis.form.get('delivery').updateValueAndValidity();\r\n\t}\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'lib-new-campaign-summary',\r\n\ttemplateUrl: './summary.component.html',\r\n\tstyleUrls: ['./summary.component.scss'],\r\n})\r\nexport class SummaryComponent {\r\n\t@Input() public isShowLabel: boolean;\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'lib-wizard',\r\n\ttemplateUrl: './wizard.component.html',\r\n\tstyleUrls: ['./wizard.component.scss'],\r\n})\r\nexport class WizardComponent implements OnInit {\r\n\t@Input() positionWizard: number = 1;\r\n\t@Input() dataWizard: string[] = [];\r\n\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","import { AgmCoreModule } from '@agm/core';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { PickerModule } from '@ctrl/ngx-emoji-mart';\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\nimport {\r\n\tNgbDropdownModule,\r\n\tNgbPaginationModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport * as echarts from 'echarts';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport { SearchModule } from '../global/search/search.module';\r\nimport { CampaignManagementComponent } from './campaign-management.component';\r\nimport { CampaignIndexModule } from './modules/campaign-index/campaign-index.module';\r\nimport { PendingApprovalDialogViewComponent } from './modules/campaign-index/dialog/pending-approval-dialog-view';\r\nimport { DashboardModule } from './modules/dashboard/dashboard.module';\r\nimport { NewCampaignComponent } from './modules/new-campaign';\r\nimport { GeneralInformationEmailComponent } from './modules/new-campaign/components/general-information-email';\r\nimport { GeneralInformationLineComponent } from './modules/new-campaign/components/general-information-line';\r\nimport { GeneralInformationSMSComponent } from './modules/new-campaign/components/general-information-sms';\r\nimport { GeneralInformationWAComponent } from './modules/new-campaign/components/general-information-wa';\r\nimport { FailoverMechanismComponent } from './modules/new-campaign/failover-mechanism';\r\nimport { GeneralInformationComponent } from './modules/new-campaign/general-information';\r\nimport { NewNumberBasesComponent } from './modules/new-campaign/new-number-bases';\r\nimport { SchedulerComponent } from './modules/new-campaign/scheduler';\r\nimport { SummaryComponent } from './modules/new-campaign/summary';\r\nimport { WizardComponent } from './modules/wizard';\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tCampaignManagementComponent,\r\n\t\tWizardComponent,\r\n\t\tNewCampaignComponent,\r\n\t\tGeneralInformationComponent,\r\n\t\tSchedulerComponent,\r\n\t\tSummaryComponent,\r\n\t\tNewNumberBasesComponent,\r\n\t\tGeneralInformationLineComponent,\r\n\t\tGeneralInformationWAComponent,\r\n\t\tGeneralInformationSMSComponent,\r\n\t\tGeneralInformationEmailComponent,\r\n\t\tPendingApprovalDialogViewComponent,\r\n\t\tFailoverMechanismComponent,\r\n\t],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tAgmCoreModule.forRoot({\r\n\t\t\tapiKey: 'AIzaSyCHReBe_RpzAgLTrUC5QIDyeKttQ817wRY',\r\n\t\t\tlibraries: ['places'],\r\n\t\t}),\r\n\t\tDashboardModule,\r\n\t\tMatAutocompleteModule,\r\n\t\tFormsModule,\r\n\t\tReactiveFormsModule,\r\n\t\tMatFormFieldModule,\r\n\t\tMatInputModule,\r\n\t\tMatSelectModule,\r\n\t\tMatRadioModule,\r\n\t\tMatListModule,\r\n\t\tMatButtonModule,\r\n\t\tNgxEchartsModule.forRoot({\r\n\t\t\techarts,\r\n\t\t}),\r\n\t\tMatIconModule,\r\n\t\tPickerModule,\r\n\t\tAngularEditorModule,\r\n\t\tMatDialogModule,\r\n\t\tMatTabsModule,\r\n\t\tMatBadgeModule,\r\n\t\tNgbDropdownModule,\r\n\t\tNgbPaginationModule,\r\n\t\tMatCardModule,\r\n\t\tMatTableModule,\r\n\t\tMatCheckboxModule,\r\n\t\tMatPaginatorModule,\r\n\t\tMatGridListModule,\r\n\t\tMatDatepickerModule,\r\n\t\tMatSortModule,\r\n\t\tSearchModule,\r\n\t\tMatDividerModule,\r\n\t\tMatProgressSpinnerModule,\r\n\t\tMatSlideToggleModule,\r\n\t\tDragDropModule,\r\n\t\tCampaignIndexModule,\r\n\t],\r\n\texports: [CampaignManagementComponent, SummaryComponent],\r\n\tentryComponents: [PendingApprovalDialogViewComponent],\r\n\tproviders: [DatePipe],\r\n})\r\nexport class CampaignManagementModule {}\r\n","import { AgmCoreModule } from '@agm/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { AdlCampaignManagementLibraryInternalComponent } from './adl-campaign-management-library-internal.component';\r\nimport { CampaignManagementModule } from './campaign-management/campaign-management.module';\r\nimport { CustomPaginator } from './core/util';\r\n\r\n@NgModule({\r\n\tdeclarations: [AdlCampaignManagementLibraryInternalComponent],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tAgmCoreModule.forRoot({\r\n\t\t\tapiKey: 'AIzaSyCHReBe_RpzAgLTrUC5QIDyeKttQ817wRY',\r\n\t\t\tlibraries: ['places'],\r\n\t\t}),\r\n\t\tCampaignManagementModule,\r\n\t\tNgxEchartsModule,\r\n\t\tMatCardModule,\r\n\t\tHttpClientModule,\r\n\t\tToastrModule.forRoot(),\r\n\t],\r\n\texports: [AdlCampaignManagementLibraryInternalComponent],\r\n\tproviders: [{ provide: MatPaginatorIntl, useClass: CustomPaginator }],\r\n})\r\nexport class AdlCampaignManagementLibraryInternalModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { ConfirmationComponent } from './confirmation';\r\n\r\n@NgModule({\r\n\tdeclarations: [ConfirmationComponent],\r\n\timports: [CommonModule, MatDialogModule, MatButtonModule],\r\n\texports: [ConfirmationComponent]\r\n})\r\nexport class ConfirmationModule {}\r\n"]}
|