@adlfe/campaign-management-library 2.11.3 → 2.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/adlfe-campaign-management-library.d.ts +6 -4
  2. package/adlfe-campaign-management-library.metadata.json +1 -1
  3. package/bundles/adlfe-campaign-management-library.umd.js +285 -86
  4. package/bundles/adlfe-campaign-management-library.umd.js.map +1 -1
  5. package/bundles/adlfe-campaign-management-library.umd.min.js +1 -1
  6. package/bundles/adlfe-campaign-management-library.umd.min.js.map +1 -1
  7. package/esm2015/adlfe-campaign-management-library.js +7 -5
  8. package/esm2015/lib/campaign-management/campaign-management.module.js +4 -2
  9. package/esm2015/lib/campaign-management/components/input-numeric/input-numeric.component.js +113 -0
  10. package/esm2015/lib/campaign-management/components/input-numeric/input-numeric.module.js +18 -0
  11. package/esm2015/lib/campaign-management/models/general-information-wa-req.model.js +2 -1
  12. package/esm2015/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.js +40 -38
  13. package/esm2015/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +17 -7
  14. package/esm2015/lib/campaign-management/modules/new-campaign/new-campaign.component.js +41 -39
  15. package/esm2015/lib/campaign-management/validators/index.js +12 -0
  16. package/esm2015/lib/campaign-management/validators/max.validator.js +14 -0
  17. package/esm2015/lib/campaign-management/validators/min.validator.js +14 -0
  18. package/esm2015/lib/campaign-management/validators/required.validator.js +10 -0
  19. package/esm2015/lib/core/const/validation-message.const.js +5 -2
  20. package/esm5/adlfe-campaign-management-library.js +7 -5
  21. package/esm5/lib/campaign-management/campaign-management.module.js +4 -2
  22. package/esm5/lib/campaign-management/components/input-numeric/input-numeric.component.js +127 -0
  23. package/esm5/lib/campaign-management/components/input-numeric/input-numeric.module.js +21 -0
  24. package/esm5/lib/campaign-management/models/general-information-wa-req.model.js +2 -1
  25. package/esm5/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.js +40 -38
  26. package/esm5/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +17 -7
  27. package/esm5/lib/campaign-management/modules/new-campaign/new-campaign.component.js +41 -39
  28. package/esm5/lib/campaign-management/validators/index.js +12 -0
  29. package/esm5/lib/campaign-management/validators/max.validator.js +14 -0
  30. package/esm5/lib/campaign-management/validators/min.validator.js +14 -0
  31. package/esm5/lib/campaign-management/validators/required.validator.js +10 -0
  32. package/esm5/lib/core/const/validation-message.const.js +5 -2
  33. package/fesm2015/adlfe-campaign-management-library.js +345 -165
  34. package/fesm2015/adlfe-campaign-management-library.js.map +1 -1
  35. package/fesm5/adlfe-campaign-management-library.js +362 -165
  36. package/fesm5/adlfe-campaign-management-library.js.map +1 -1
  37. package/lib/campaign-management/components/input-numeric/input-numeric.component.d.ts +30 -0
  38. package/lib/campaign-management/components/input-numeric/input-numeric.module.d.ts +2 -0
  39. package/lib/campaign-management/models/general-information-wa-req.model.d.ts +1 -0
  40. package/lib/campaign-management/validators/index.d.ts +8 -0
  41. package/lib/campaign-management/validators/max.validator.d.ts +2 -0
  42. package/lib/campaign-management/validators/min.validator.d.ts +2 -0
  43. package/lib/campaign-management/validators/required.validator.d.ts +2 -0
  44. package/package.json +1 -1
  45. package/types.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@adlfe/campaign-management-library/lib/core/enums/main-area.enum.ts","ng://@adlfe/campaign-management-library/lib/adl-campaign-management-library-internal.component.ts","ng://@adlfe/campaign-management-library/lib/global/search/search/search.component.ts","ng://@adlfe/campaign-management-library/lib/global/search/search.module.ts","ng://@adlfe/campaign-management-library/lib/core/enums/constant.enum.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/campaign-management.component.ts","ng://@adlfe/campaign-management-library/lib/core/directives/mat-select-infinite-scroll.ts","ng://@adlfe/campaign-management-library/lib/core/models/base-option.model.ts","ng://@adlfe/campaign-management-library/lib/core/models/Package.ts","ng://@adlfe/campaign-management-library/lib/core/models/util/http-body-req/http-body-req-pagination.model.ts","ng://@adlfe/campaign-management-library/lib/core/models/util/http-body-req/http-body-req-pagination-global-var.model.ts","ng://@adlfe/campaign-management-library/environments/environment.ts","ng://@adlfe/campaign-management-library/lib/core/models/billing-param-req.component.ts","ng://@adlfe/campaign-management-library/lib/core/models/country.model.ts","ng://@adlfe/campaign-management-library/lib/core/models/create-package-param.model.ts","ng://@adlfe/campaign-management-library/lib/core/models/http-body-resp.model.ts","ng://@adlfe/campaign-management-library/lib/core/services/api-adapter-service.service.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/models/campaign-table-config.const.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/models/table.model.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/models/campaigns-list.model.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/campaign-index.component.ts","ng://@adlfe/campaign-management-library/lib/core/const/constants.const.ts","ng://@adlfe/campaign-management-library/lib/core/const/failover.const.ts","ng://@adlfe/campaign-management-library/lib/core/const/validation-message.const.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/util/enums.ts","ng://@adlfe/campaign-management-library/lib/core/util/custom-paginator.ts","ng://@adlfe/campaign-management-library/lib/core/util/enum-to-option-generator.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/filter-in-list-of-campaign.component.ts","ng://@adlfe/campaign-management-library/lib/global/confirmation/shared/shared-services.service.ts","ng://@adlfe/campaign-management-library/lib/global/confirmation/shared/model/confirmation.model.ts","ng://@adlfe/campaign-management-library/lib/global/confirmation/confirmation/confirmation.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/component/viewing-list-of-campaign-table/viewing-list-of-campaign-table.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/campaign-index.module.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/dashboard/dashboard.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/dashboard/dashboard.module.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/models/failover-req.model.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/models/general-information-wa-req.model.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/models/scheduler-req.model.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/new-campaign.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/components/general-information-email/general-information-email.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/components/general-information-line/general-information-line.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/components/general-information-sms/general-information-sms.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/failover-mechanism/failover-mechanism.component.ts","ng://@adlfe/campaign-management-library/lib/core/const/form-validators.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/general-information/general-information.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/new-number-bases/new-number-bases.component.ts","ng://@adlfe/campaign-management-library/lib/core/util/download-blob-file.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/scheduler/scheduler.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/summary/summary.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/wizard/wizard.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/campaign-management.module.ts","ng://@adlfe/campaign-management-library/lib/adl-campaign-management-library-internal.module.ts","ng://@adlfe/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","origin","_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","environment","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","uploadFileToS3","s3Url","file","put","Content-Type","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","filteredChannelOption","businessNameOption","filteredBusinessNameOption","statusOption","filteredStatusOption","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","businessNameSearch","option","channelSearch","statusSearch","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","isDirectSend","toUpperCase","isPrevTemplate","accountName","clientName","_q","accountNo","_r","wabaId","_t","_s","_v","_u","details","targetURL","_z","_y","_x","_w","_3","_2","_1","_0","document","_7","_6","_5","_4","video","_10","_9","_8","headerURL","paramHeader","_13","_12","_11","header","paramBody","_16","_15","_14","paramButton","_19","_18","_17","button","otpValue","_24","_23","_22","_21","_20","pop","ID","_27","_26","_25","_30","_29","_28","lang","_33","_32","_31","_34","_37","_36","_35","examples","_40","_39","_38","_43","_42","_41","buttons","_46","_45","_44","ClientId","_47","ClientName","_48","isUpload","_49","fileId","_50","setItem","stringify","_51","failover","_52","targetAudience","_53","targets","targetAudienceFile","_54","_55","scheduler","schedulerType","_56","scheduleType","_57","_59","_58","split","_61","_60","isRepeat","_62","delivery","_63","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","isUseExistingTemplate","isNeedSave","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","_64","parent","valid","child","failoverMechanism","failoverMechanismData","targetAudienceData","targetAudienceCount","schedulerData","onClickSaveAndNextButton","saveGeneralInformationService","saveNumberBasesService","saveFailoverMechanismService","saveSchedulerService","payloadValue","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","templates","categoryOption","maps","zoom","latitude","longitude","isDraggable","isDoubleClickZoom","fileType","getIsText","getIsMedia","getIsCatalogue","maxLength","getIsUtility","isButton","addParamHeader","getParamButton","addParamButton","onFileSelected","files","accept","matchType","indexOf","uploadMediaService","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","handleChangeTemplate","useExisting","handleChangeFrom","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","getPresignedUrlService","uploadToS3Service","fileNameS3","finalizeTargetFileService","console","campaignId","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\n// if (location.origin.includes('dashboard.neuapix'))\r\n// \tAPI_CONST = 'https://api.neuapix.com';\r\n// else if (location.origin.includes('dashboard-staging.neuapix'))\r\n// \tAPI_CONST = 'https://api-staging.neuapix.com';\r\n// else if (location.origin.includes('dashboard-qa.adlsandbox'))\r\n// \tAPI_CONST = 'https://apibsp-qa.adlsandbox.net';\r\n// else if (location.origin.includes('demo-dev.adlsandbox.net'))\r\n// \tAPI_CONST = 'https://apibsp-dev.adlsandbox.net';\r\n// else API_CONST = 'https://apibsp-dev.adlsandbox.net';\r\n\r\n// export const environment = {\r\n// \tproduction: false,\r\n// \tapi: API_CONST,\r\n// };\r\nlet API_CONST = '';\r\nconst origin = location.origin;\r\n\r\n// 1. Cek Production\r\nif (origin.includes('dashboard.neuapix.com')) {\r\n API_CONST = 'https://api.neuapix.com';\r\n}\r\n// 2. Cek Staging\r\nelse if (origin.includes('dashboard-staging')) {\r\n API_CONST = 'https://api-staging.neuapix.com';\r\n}\r\n// 3. Cek QA\r\nelse if (origin.includes('dashboard-qa')) {\r\n API_CONST = 'https://apibsp-qa.adlsandbox.net';\r\n}\r\n// 4. Cek Demo Dev secara spesifik\r\nelse if (origin.includes('demo-dev')) {\r\n API_CONST = 'https://apibsp-dev.adlsandbox.net';\r\n}\r\n// 5. Default (Localhost atau lainnya)\r\nelse {\r\n API_CONST = 'https://apibsp-dev.adlsandbox.net';\r\n}\r\n\r\nexport const environment = {\r\n production: false,\r\n api: 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 { HttpClient, HttpErrorResponse, HttpHeaders } 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 { Parameter, ServerInBuiltError } 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 providedIn: 'root',\r\n})\r\nexport class ApiAdapterServiceService {\r\n private queryCount = 0;\r\n\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public executeApiRequest<T>(\r\n parameterList: Array<Parameter>,\r\n path: string,\r\n httpVerb: string,\r\n isFile: boolean = false\r\n ): Observable<any> {\r\n let url = path;\r\n let bodyData: {};\r\n let parameter: Parameter;\r\n let formData = new FormData();\r\n\r\n parameterList\r\n ?.filter((rt) => rt.in !== 'header')\r\n .forEach((requestType) => {\r\n parameter = parameterList.find(\r\n (parameter) => parameter.name === requestType.name\r\n ) as Parameter;\r\n\r\n if (!parameter && requestType.required && requestType.in !== 'header') {\r\n window.alert(\r\n `Parameter \"${requestType.name}\" is required!, Try again with \"${requestType.name}\"`\r\n );\r\n } else if (!parameter && !requestType.required) {\r\n // continue;\r\n } else {\r\n switch (requestType.in) {\r\n case 'body': {\r\n bodyData = parameter.value;\r\n break;\r\n }\r\n case 'path': {\r\n url = url.replace(`{${parameter.name}}`, parameter.value);\r\n break;\r\n }\r\n case 'query': {\r\n url = this.setQuery(parameter.name, parameter.value, url);\r\n break;\r\n }\r\n case 'formData': {\r\n formData = this.setFormData(parameter, formData);\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n parameter = undefined;\r\n });\r\n\r\n this.queryCount = 0;\r\n\r\n url = `${environment.api}${url}`;\r\n const appRequest: AppRequest<any> = {\r\n ...(parameterList?.[0]?.withoutKeyData ? bodyData : { data: bodyData }),\r\n };\r\n\r\n const headers = new HttpHeaders()\r\n .set('Authorization', 'Bearer ' + localStorage.getItem('telin.accessToken'))\r\n .set('Access-Control-Allow-Origin', '*');\r\n\r\n return this.httpClient\r\n .request<AppResponse<T>>(httpVerb, url, {\r\n body: !bodyData ? formData : appRequest,\r\n responseType: isFile ? ('blob' as 'json') : ('json' as 'json'),\r\n headers,\r\n })\r\n .pipe(\r\n catchError((err: HttpErrorResponse) => {\r\n if (err.error instanceof ErrorEvent) {\r\n return of<AppResponse<any>>({\r\n error: {\r\n title: 'Network error!',\r\n detail: err.message,\r\n source: err.statusText,\r\n status: err.status.toString(),\r\n },\r\n meta: {\r\n code: err.status,\r\n message: err.message,\r\n },\r\n });\r\n }\r\n\r\n return of<ServerInBuiltError>(err.error);\r\n })\r\n );\r\n }\r\n\r\n public uploadFileToS3(s3Url: string, file: File): Observable<any> {\r\n // Kita kirim raw binary/file dengan header Content-Type yang sesuai\r\n return this.httpClient.put(s3Url, file, {\r\n headers: { 'Content-Type': file.type },\r\n });\r\n }\r\n\r\n private setQuery(name: string, value: any, url: string): string {\r\n url = this.queryCount === 0 ? `${url}?${name}=${value}` : `${url}&${name}=${value}`;\r\n this.queryCount++;\r\n return url;\r\n }\r\n\r\n private setFormData(parameter: Parameter, formData: FormData): FormData {\r\n if (parameter.type === 'array') {\r\n for (let i = 0; parameter.value.length > i; i++) {\r\n formData.append(parameter.name, parameter.value[i], parameter.value[i].name);\r\n }\r\n } else {\r\n formData.append(parameter.name, parameter.value ? parameter.value : null);\r\n }\r\n return formData;\r\n }\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 {\r\n icon: 'icon_wa',\r\n inputSvgIcon: 'icon-wa-gray',\r\n image: 'whatsapp.png',\r\n label: 'WhatsApp',\r\n value: 'WA',\r\n },\r\n {\r\n icon: 'menu_sms',\r\n inputSvgIcon: 'icon-sms-gray',\r\n image: 'sms.png',\r\n label: 'SMS',\r\n value: 'SMS',\r\n },\r\n {\r\n icon: 'icon_email',\r\n inputSvgIcon: 'icon-email-gray',\r\n image: 'email-contact.png',\r\n label: 'Email',\r\n value: 'EMAIL',\r\n },\r\n {\r\n icon: 'icon_line',\r\n inputSvgIcon: 'icon-line-gray',\r\n image: 'line.png',\r\n label: 'Line',\r\n value: 'LINE',\r\n },\r\n];\r\n\r\nexport const MsgTypeWAOptionConst = [\r\n {\r\n name: 'Text',\r\n code: 'TEXT',\r\n },\r\n {\r\n name: 'Media',\r\n code: 'MEDIA',\r\n },\r\n {\r\n name: 'Template',\r\n code: 'TEMPLATE',\r\n },\r\n {\r\n name: 'Text - Utility',\r\n code: 'utility',\r\n },\r\n /* {\r\n\t\tname: 'Catalogue',\r\n\t\tcode: 'CATALOGUE',\r\n\t}, */\r\n];\r\n\r\nexport const MsgTypeEmailOptionConst = [\r\n {\r\n name: 'Text',\r\n code: 'HTML',\r\n },\r\n {\r\n name: 'Template',\r\n code: 'TEMPLATE',\r\n },\r\n];\r\n\r\nexport const MsgTypeLineOptionConst = [\r\n {\r\n name: 'Text',\r\n code: 'TEXT',\r\n },\r\n {\r\n name: 'Template',\r\n code: 'TEMPLATE',\r\n },\r\n /* {\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 {\r\n name: 'Image',\r\n code: 'IMAGE',\r\n },\r\n {\r\n name: 'Video',\r\n code: 'VIDEO',\r\n },\r\n {\r\n name: 'Document',\r\n code: 'DOCUMENT',\r\n },\r\n /* {\r\n\t\tname: 'Location',\r\n\t\tcode: 'LOCATION',\r\n\t}, */\r\n];\r\n\r\nexport const WidgetLiveCampaignConst: {\r\n title: string;\r\n arrow: string;\r\n value: number;\r\n date: string;\r\n icon: string;\r\n dateclass: string;\r\n}[] = [\r\n {\r\n title: 'Total Campaigns',\r\n arrow: '../../../../assets/svg/icon-down-arrow.svg',\r\n value: 0,\r\n date: '',\r\n icon: '../../../../assets/svg/icon-total-campaign.svg',\r\n dateclass: 'redpercent',\r\n },\r\n {\r\n title: 'Live Campaigns',\r\n arrow: '../../../../assets/svg/icon-down-arrow.svg',\r\n value: 0,\r\n date: '',\r\n icon: '../../../../assets/svg/icon-use-campaign.svg',\r\n dateclass: 'redpercent',\r\n },\r\n {\r\n title: 'Pending Approval',\r\n arrow: '../../../../assets/svg/icon-down-arrow.svg',\r\n value: 0,\r\n date: '',\r\n icon: '../../../../assets/svg/icon-pending-approval-campaign.svg',\r\n dateclass: 'redpercent',\r\n },\r\n];\r\n\r\nexport const CampaignPerformanceChartConfig = {\r\n legend: {\r\n icon: 'circle',\r\n orient: 'horizontal',\r\n x: 'center',\r\n y: 'bottom',\r\n },\r\n tooltip: {},\r\n dataset: {\r\n source: [['', 'WA Text', 'WA Template', 'WA Media', 'Product Catalog']],\r\n },\r\n xAxis: { type: 'category' },\r\n yAxis: {},\r\n series: [\r\n { type: 'bar', color: '#E666DA' },\r\n { type: 'bar', color: '#EB7215' },\r\n { type: 'bar', color: '#F3B435' },\r\n { type: 'bar', color: '#35CDF3' },\r\n ],\r\n};\r\n\r\nexport const ConversationInsightsChartConfig = {\r\n tooltip: {\r\n trigger: 'axis',\r\n },\r\n legend: {\r\n icon: 'circle',\r\n data: ['Delivery Rate of Campaigns', 'Total Number of Campaigns', 'Cost Distribution'],\r\n x: 'center',\r\n y: 'bottom',\r\n },\r\n xAxis: {\r\n type: 'category',\r\n data: [],\r\n },\r\n yAxis: {\r\n type: 'value',\r\n },\r\n series: [\r\n {\r\n name: 'Delivery Rate of Campaigns',\r\n data: [],\r\n type: 'line',\r\n smooth: true,\r\n itemStyle: { normal: { color: 'blue' } },\r\n },\r\n {\r\n name: 'Total Number of Campaigns',\r\n data: [],\r\n type: 'line',\r\n smooth: true,\r\n itemStyle: { normal: { color: 'green' } },\r\n },\r\n {\r\n name: 'Cost Distribution',\r\n data: [],\r\n type: 'line',\r\n smooth: true,\r\n itemStyle: { normal: { color: '#E666DA' } },\r\n },\r\n ],\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 filteredChannelOption: any[] = [];\r\n\tpublic businessNameOption: ClientDto[] = [];\r\n\tpublic filteredBusinessNameOption: ClientDto[] = [];\r\n\tpublic statusOption: BaseOptionModel[] = [];\r\n\tpublic filteredStatusOption: 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\t\tthis.filteredStatusOption = [...this.statusOption];\r\n\t\tthis.filteredChannelOption = [...this.channelOption];\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\tthis.filteredBusinessNameOption = [...this.businessNameOption];\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 businessNameSearch(searchValue: string): void {\r\n\t\tconst value = searchValue.toLowerCase();\r\n\t\tthis.filteredBusinessNameOption = this.businessNameOption.filter(option =>\r\n\t\t\toption.name.toLowerCase().includes(value)\r\n\t\t);\r\n\t}\r\n\r\n\tpublic channelSearch(searchValue: string): void {\r\n\t\tconst value = searchValue.toLowerCase();\r\n\t\tthis.filteredChannelOption = this.channelOption.filter(option =>\r\n\t\t\toption.label.toLowerCase().includes(value)\r\n\t\t);\r\n\t}\r\n\r\n\tpublic statusSearch(searchValue: string): void {\r\n\t\tconst value = searchValue.toLowerCase();\r\n\t\tthis.filteredStatusOption = this.statusOption.filter(option =>\r\n\t\t\toption.label.toLowerCase().includes(value)\r\n\t\t);\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 selector: 'lib-pending-approval-dialog-view',\r\n templateUrl: './pending-approval-dialog-view.component.html',\r\n styleUrls: ['./pending-approval-dialog-view.component.scss'],\r\n})\r\nexport class PendingApprovalDialogViewComponent implements OnInit, OnDestroy {\r\n public isLoading: boolean = false;\r\n public isSubmit: boolean = false;\r\n public isShowButton: boolean = false;\r\n\r\n private subscribers: Subscription[] = [];\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef<PendingApprovalDialogViewComponent>,\r\n private apiAdapterService: ApiAdapterServiceService,\r\n private toastr: ToastrService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.getCampaignDetailService();\r\n\r\n this.isShowButton = this.getCampaignStorage?.generalInformation?.isShowButton ?? false;\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 convertUTCDateToLocalDate(date: Date) {\r\n const newDate = new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000);\r\n return newDate;\r\n }\r\n\r\n private getCampaignDetailService(): void {\r\n if (!this.getCampaignStorage?.generalInformation?.id) return;\r\n\r\n this.isLoading = true;\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(\r\n [],\r\n `/campaign/${this.getCampaignStorage?.generalInformation?.id}`,\r\n 'GET'\r\n )\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?.isDirectSend\r\n ? 'utility'\r\n : resp.data?.type?.toUpperCase(),\r\n media: resp.data?.type?.toUpperCase(),\r\n isPrevTemplate: resp?.data?.isPrevTemplate,\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.isLoading = false;\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 rejectCampaignService(): void {\r\n this.isSubmit = true;\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(\r\n [],\r\n `/campaign/${this.getCampaignStorage?.generalInformation?.id}/reject`,\r\n 'POST'\r\n )\r\n .subscribe(\r\n (resp: AppResponse<any>) => {\r\n this.isSubmit = false;\r\n\r\n if (!resp || !resp?.data) return this.toastr.error('Error Rejecting Campaign!');\r\n\r\n this.toastr.success('Campaign Rejected Successfully!');\r\n this.onClose();\r\n },\r\n () => {\r\n this.toastr.error('Error Rejecting Campaign!');\r\n this.isSubmit = false;\r\n }\r\n );\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n public approveCampaignService(): void {\r\n this.isSubmit = true;\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(\r\n [],\r\n `/campaign/${this.getCampaignStorage?.generalInformation?.id}/approve`,\r\n 'POST'\r\n )\r\n .subscribe(\r\n (resp: AppResponse<any>) => {\r\n this.isSubmit = false;\r\n\r\n if (!resp || !resp?.data) return this.toastr.error('Error Approving Campaign!');\r\n\r\n this.toastr.success('Campaign Approved Successfully!');\r\n this.onClose();\r\n },\r\n () => {\r\n this.toastr.error('Error Approving Campaign!');\r\n this.isSubmit = false;\r\n }\r\n );\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n public onClose(): void {\r\n localStorage.removeItem('telin.campaign');\r\n this.dialogRef.close();\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\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 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 category: string;\r\n public isNeedSave: boolean;\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 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 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 if (this.type === 'utility') {\r\n this.type = 'template';\r\n this.category = 'utility';\r\n this.template = source?.isUseExistingTemplate\r\n ? source?.template\r\n : { name: '', lang: 'id', header: null, button: null, data: [] };\r\n this.isNeedSave = source.isNeedSave;\r\n\r\n if (source?.isUseExistingTemplate) {\r\n this.text = source?.template?.body?.text;\r\n }\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?.isDirectSend\r\n ? 'utility'\r\n : resp.data?.type?.toUpperCase(),\r\n media: resp.data?.type?.toUpperCase(),\r\n isPrevTemplate: resp?.data?.isPrevTemplate,\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 const payloadValue = bodyReq.convert();\r\n\r\n if (payloadValue.template && this.generalInformationData.template) {\r\n payloadValue.template.type =\r\n payloadValue.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: payloadValue,\r\n in: 'body',\r\n type: 'object',\r\n withoutKeyData: true,\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 public templates = [\r\n { label: 'Create New', value: false },\r\n { label: 'Use existing template', value: true },\r\n ];\r\n\r\n @Input() public isReadOnlyMode: 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 isUseExistingTemplate: new FormControl(false),\r\n isNeedSave: new FormControl(false),\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 this.form\r\n .get('isUseExistingTemplate')\r\n .setValue(!!this.getCampaignStorage?.generalInformation?.form?.isPrevTemplate);\r\n this.form\r\n .get('isNeedSave')\r\n .setValue(!!this.getCampaignStorage?.generalInformation?.form?.isNeedSave);\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 if (this.getIsUtility) {\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 {\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 messageType = this.form.value?.channel;\r\n\r\n if (messageType === 'utility') {\r\n parameterList.push(this.initParam('isDirectSend', true, 'string'));\r\n }\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(parameterList, '/message/template', 'GET')\r\n .subscribe((resp: AppResponse<TemplateWAModel[]>) => {\r\n this.templateOption = isInfinite\r\n ? [...this.templateOption, ...resp.data]\r\n : resp.data;\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 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 get getIsUtility(): boolean {\r\n return (\r\n this.form.get('channel').value &&\r\n this.form.get('channel').value?.toLowerCase() === 'utility'\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 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 public handleChangeTemplate(useExisting: boolean): void {\r\n if (useExisting) {\r\n this.form.get('template').setValidators(Validators.required);\r\n this.form.get('text').reset();\r\n this.form.get('text').clearValidators();\r\n\r\n this.form.get('text').updateValueAndValidity();\r\n this.form.get('template').updateValueAndValidity();\r\n } else {\r\n this.form.get('template').reset();\r\n this.form.get('template').clearValidators();\r\n this.form.get('text').setValidators(Validators.required);\r\n\r\n this.form.get('text').updateValueAndValidity();\r\n this.form.get('template').updateValueAndValidity();\r\n }\r\n }\r\n\r\n public handleChangeFrom(value: any): void {\r\n const { isUseExistingTemplate } = this.form.value;\r\n if (!isUseExistingTemplate) return;\r\n this.getTemplateOptionService(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 = 30 * 1024 * 1024;\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 30mb');\r\n return;\r\n }\r\n\r\n this.getPresignedUrlService(file[0]);\r\n }\r\n\r\n private getPresignedUrlService(file: File): void {\r\n this.isUpload = true;\r\n\r\n const parameterList: Array<Parameter> = [\r\n { name: 'fileName', value: file.name, in: 'query', type: 'string' },\r\n { name: 'fileType', value: file.type, in: 'query', type: 'string' },\r\n ];\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(parameterList, '/campaign/upload/pre-signed-url', 'GET')\r\n .subscribe(\r\n (resp: AppResponse<any>) => {\r\n if (resp && resp.data) {\r\n this.uploadToS3Service(file, resp.data.url, resp.data.fileName);\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 private uploadToS3Service(file: File, s3Url: string, fileNameS3: string): void {\r\n this.apiAdapterService.uploadFileToS3(s3Url, file).subscribe(\r\n () => {\r\n this.finalizeTargetFileService(fileNameS3);\r\n },\r\n (err) => {\r\n this.toastr.error('Failed uploading to S3 storage');\r\n this.isUpload = false;\r\n console.error('S3 Upload Error:', err);\r\n }\r\n );\r\n }\r\n\r\n private finalizeTargetFileService(fileNameS3: string): void {\r\n const campaignId = this.getCampaignStorage?.generalInformation?.id;\r\n const parameterList: Array<Parameter> = [\r\n {\r\n name: 'body',\r\n value: { fileName: fileNameS3 },\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(parameterList, `/campaign/${campaignId}/targetfile`, 'POST')\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\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: fileNameS3,\r\n targetURL: resp.data?.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"]}
1
+ {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@adlfe/campaign-management-library/lib/core/enums/main-area.enum.ts","ng://@adlfe/campaign-management-library/lib/adl-campaign-management-library-internal.component.ts","ng://@adlfe/campaign-management-library/lib/global/search/search/search.component.ts","ng://@adlfe/campaign-management-library/lib/global/search/search.module.ts","ng://@adlfe/campaign-management-library/lib/core/enums/constant.enum.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/campaign-management.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/components/input-numeric/input-numeric.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/components/input-numeric/input-numeric.module.ts","ng://@adlfe/campaign-management-library/lib/core/directives/mat-select-infinite-scroll.ts","ng://@adlfe/campaign-management-library/lib/core/models/base-option.model.ts","ng://@adlfe/campaign-management-library/lib/core/models/Package.ts","ng://@adlfe/campaign-management-library/lib/core/models/util/http-body-req/http-body-req-pagination.model.ts","ng://@adlfe/campaign-management-library/lib/core/models/util/http-body-req/http-body-req-pagination-global-var.model.ts","ng://@adlfe/campaign-management-library/environments/environment.ts","ng://@adlfe/campaign-management-library/lib/core/models/billing-param-req.component.ts","ng://@adlfe/campaign-management-library/lib/core/models/country.model.ts","ng://@adlfe/campaign-management-library/lib/core/models/create-package-param.model.ts","ng://@adlfe/campaign-management-library/lib/core/models/http-body-resp.model.ts","ng://@adlfe/campaign-management-library/lib/core/services/api-adapter-service.service.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/models/campaign-table-config.const.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/models/table.model.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/models/campaigns-list.model.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/campaign-index.component.ts","ng://@adlfe/campaign-management-library/lib/core/const/constants.const.ts","ng://@adlfe/campaign-management-library/lib/core/const/failover.const.ts","ng://@adlfe/campaign-management-library/lib/core/const/validation-message.const.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/util/enums.ts","ng://@adlfe/campaign-management-library/lib/core/util/custom-paginator.ts","ng://@adlfe/campaign-management-library/lib/core/util/enum-to-option-generator.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/filter-in-list-of-campaign.component.ts","ng://@adlfe/campaign-management-library/lib/global/confirmation/shared/shared-services.service.ts","ng://@adlfe/campaign-management-library/lib/global/confirmation/shared/model/confirmation.model.ts","ng://@adlfe/campaign-management-library/lib/global/confirmation/confirmation/confirmation.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/component/viewing-list-of-campaign-table/viewing-list-of-campaign-table.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/campaign-index/campaign-index.module.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/dashboard/dashboard.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/dashboard/dashboard.module.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/models/failover-req.model.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/models/general-information-wa-req.model.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/models/scheduler-req.model.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/new-campaign.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/components/general-information-email/general-information-email.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/components/general-information-line/general-information-line.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/components/general-information-sms/general-information-sms.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/validators/index.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/validators/max.validator.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/validators/min.validator.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/failover-mechanism/failover-mechanism.component.ts","ng://@adlfe/campaign-management-library/lib/core/const/form-validators.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/general-information/general-information.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/new-number-bases/new-number-bases.component.ts","ng://@adlfe/campaign-management-library/lib/core/util/download-blob-file.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/scheduler/scheduler.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/new-campaign/summary/summary.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/modules/wizard/wizard.component.ts","ng://@adlfe/campaign-management-library/lib/campaign-management/campaign-management.module.ts","ng://@adlfe/campaign-management-library/lib/adl-campaign-management-library-internal.module.ts","ng://@adlfe/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","InputNumericComponent","controlContainer","allowDecimal","handleInput","numeric","replace","parts","split","slice","join","disallowLeadingZero","startsWith","finalValue","trimLeadingZeros","includes","formControl","patchValue","emitEvent","setBaseStateInitialization","formControlName","formGroup","control","get","touched","_b","valid","invalid","errors","writeValue","_value","registerOnChange","fn","_onBaseChange","registerOnTouched","_onBaseTouched","setDisabledState","isDisabled","_isDisabled","ControlContainer","ContentChild","InputNumericComponent_1","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","InputNumericModule","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","origin","_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","environment","ApiAdapterServiceService","httpClient","queryCount","executeApiRequest","parameterList","path","httpVerb","isFile","bodyData","parameter","url","formData","FormData","rt","in","forEach","requestType","find","required","window","alert","setQuery","setFormData","undefined","appRequest","_c","withoutKeyData","headers","HttpHeaders","set","localStorage","getItem","request","body","responseType","catchError","err","ErrorEvent","of","title","detail","statusText","toString","meta","uploadFileToS3","s3Url","file","put","Content-Type","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","_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","filteredChannelOption","businessNameOption","filteredBusinessNameOption","statusOption","filteredStatusOption","templateOption","isHaveNextTemplateOption","isLoadingTemplateOption","pageNoTemplateOption","closeDropdown","onChangeFilter","initForm","getBusinessNameOptionService","FormGroup","_h","_k","_j","_m","_l","_o","_p","res","getTemplateOptionService","isInfinite","getNextTemplateBatch","templateSelectedDisplay","attribute1","attribute2","templateSearch","businessNameSearch","option","channelSearch","statusSearch","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","isDirectSend","toUpperCase","isPrevTemplate","ttl","ttlSeconds","_q","_r","accountName","_s","_t","clientName","_u","accountNo","_v","wabaId","_x","_w","_z","_y","details","targetURL","_3","_2","_1","_0","_7","_6","_5","_4","document","_11","_10","_9","_8","video","_14","_13","_12","headerURL","paramHeader","_17","_16","_15","header","paramBody","_20","_19","_18","paramButton","_23","_22","_21","button","otpValue","_28","_27","_26","_25","_24","pop","ID","_31","_30","_29","_34","_33","_32","lang","_37","_36","_35","_38","_41","_40","_39","examples","_44","_43","_42","_47","_46","_45","buttons","_50","_49","_48","ClientId","_51","ClientName","_52","isUpload","_53","fileId","_54","setItem","stringify","_55","failover","_56","targetAudience","_57","targets","targetAudienceFile","_58","_59","scheduler","schedulerType","_60","scheduleType","_61","_63","_62","_65","_64","isRepeat","_66","delivery","_67","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","isUseExistingTemplate","isNeedSave","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","pathname","initWizard","dataWizard","_68","parent","child","failoverMechanism","failoverMechanismData","targetAudienceData","targetAudienceCount","schedulerData","onClickSaveAndNextButton","saveGeneralInformationService","saveNumberBasesService","saveFailoverMechanismService","saveSchedulerService","payloadValue","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","AngularValidators","compose","composeAsync","AC","actual","GeneralInformationWAComponent","mapsAPILoader","mediaTypeOption","isShowParameter","extFileAccepted","templates","categoryOption","maps","zoom","latitude","longitude","isDraggable","isDoubleClickZoom","fileType","getIsText","getIsMedia","getIsCatalogue","maxLength","getIsUtility","CustomValidators","isButton","addParamHeader","getParamButton","addParamButton","onFileSelected","files","accept","matchType","indexOf","uploadMediaService","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","handleChangeTemplate","handleChangeFrom","MapsAPILoader","FailoverMechanismComponent","setErrors","intervalTime","activeChange","validationAccount","initAccount","_channel","addAccount","getParamBody","account","deleteParamBody","removeAt","_active","accounts_1","typeChange","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","getPresignedUrlService","uploadToS3Service","fileNameS3","finalizeTargetFileService","console","campaignId","info","SchedulerComponent","minDate","isEdit","capitalizeFirstLetter","charAt","updateSchedulerType","updateTime","updateRepeat","SummaryComponent","WizardComponent","CampaignManagementModule","AgmCoreModule","forRoot","apiKey","libraries","echarts","MatDividerModule","MatProgressSpinnerModule","MatSlideToggleModule","DragDropModule","entryComponents","AdlCampaignManagementLibraryInternalModule","HttpClientModule","ToastrModule","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 { Component, ContentChild, forwardRef, Input, OnInit, TemplateRef } from '@angular/core';\r\nimport {\r\n ControlContainer,\r\n ControlValueAccessor,\r\n FormControl,\r\n FormGroup,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-input[type=numeric]',\r\n templateUrl: './input-numeric.component.html',\r\n styleUrls: ['./input-numeric.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputNumericComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class InputNumericComponent implements ControlValueAccessor, OnInit {\r\n @Input() formControlName: string;\r\n @Input() formControl: FormControl;\r\n @Input() trimLeadingZeros: boolean;\r\n @Input() disallowLeadingZero: boolean;\r\n @Input() allowDecimal: boolean = true;\r\n @Input() identifier: string;\r\n @Input() placeholder: string;\r\n @Input() label: string;\r\n @Input() maxLength: number;\r\n\r\n @ContentChild('suffix') suffixTmpl: TemplateRef<any>;\r\n\r\n private _value: any;\r\n private _isDisabled: boolean;\r\n private _onBaseChange: () => void;\r\n private _onBaseTouched: () => void;\r\n\r\n constructor(private controlContainer: ControlContainer) {}\r\n\r\n public handleInput(event: Event): void {\r\n const inputElement = event.target as HTMLInputElement;\r\n const value = inputElement.value || '';\r\n\r\n let numeric = this.allowDecimal ? value.replace(/[^0-9.]/g, '') : value.replace(/\\D/g, '');\r\n\r\n if (this.allowDecimal) {\r\n const parts = numeric.split('.');\r\n if (parts.length > 2) {\r\n numeric = parts[0] + '.' + parts.slice(1).join('');\r\n }\r\n }\r\n\r\n if (\r\n this.disallowLeadingZero &&\r\n numeric.startsWith('0') &&\r\n numeric.length > 1 &&\r\n numeric[1] !== '.'\r\n ) {\r\n numeric = numeric.replace(/^0+/, '');\r\n }\r\n\r\n let finalValue: string | number = numeric;\r\n if (this.trimLeadingZeros && numeric !== '' && !numeric.includes('.')) {\r\n finalValue = +numeric;\r\n }\r\n\r\n this.formControl.patchValue(finalValue, { emitEvent: false });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setBaseStateInitialization();\r\n }\r\n\r\n private setBaseStateInitialization(): void {\r\n if (!this.formControlName) return;\r\n const formGroup = this.controlContainer.control as FormGroup;\r\n this.formControl = formGroup.get(this.formControlName) as FormControl;\r\n }\r\n\r\n public get isValid(): boolean {\r\n return !!(this.formControl?.touched && this.formControl?.valid);\r\n }\r\n\r\n public get isInvalid(): boolean {\r\n return !!(this.formControl?.touched && this.formControl?.invalid);\r\n }\r\n\r\n public get errors(): ValidationErrors | null {\r\n return this.formControl.errors;\r\n }\r\n\r\n writeValue(value: any): void {\r\n this._value = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onBaseChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onBaseTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this._isDisabled = isDisabled;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { InputNumericComponent } from './input-numeric.component';\r\n\r\n@NgModule({\r\n imports: [MatFormFieldModule, MatInputModule, ReactiveFormsModule, CommonModule],\r\n declarations: [InputNumericComponent],\r\n exports: [InputNumericComponent],\r\n})\r\nexport class InputNumericModule {}\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\n// if (location.origin.includes('dashboard.neuapix'))\r\n// \tAPI_CONST = 'https://api.neuapix.com';\r\n// else if (location.origin.includes('dashboard-staging.neuapix'))\r\n// \tAPI_CONST = 'https://api-staging.neuapix.com';\r\n// else if (location.origin.includes('dashboard-qa.adlsandbox'))\r\n// \tAPI_CONST = 'https://apibsp-qa.adlsandbox.net';\r\n// else if (location.origin.includes('demo-dev.adlsandbox.net'))\r\n// \tAPI_CONST = 'https://apibsp-dev.adlsandbox.net';\r\n// else API_CONST = 'https://apibsp-dev.adlsandbox.net';\r\n\r\n// export const environment = {\r\n// \tproduction: false,\r\n// \tapi: API_CONST,\r\n// };\r\nlet API_CONST = '';\r\nconst origin = location.origin;\r\n\r\n// 1. Cek Production\r\nif (origin.includes('dashboard.neuapix.com')) {\r\n API_CONST = 'https://api.neuapix.com';\r\n}\r\n// 2. Cek Staging\r\nelse if (origin.includes('dashboard-staging')) {\r\n API_CONST = 'https://api-staging.neuapix.com';\r\n}\r\n// 3. Cek QA\r\nelse if (origin.includes('dashboard-qa')) {\r\n API_CONST = 'https://apibsp-qa.adlsandbox.net';\r\n}\r\n// 4. Cek Demo Dev secara spesifik\r\nelse if (origin.includes('demo-dev')) {\r\n API_CONST = 'https://apibsp-dev.adlsandbox.net';\r\n}\r\n// 5. Default (Localhost atau lainnya)\r\nelse {\r\n API_CONST = 'https://apibsp-dev.adlsandbox.net';\r\n}\r\n\r\nexport const environment = {\r\n production: false,\r\n api: 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 { HttpClient, HttpErrorResponse, HttpHeaders } 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 { Parameter, ServerInBuiltError } 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 providedIn: 'root',\r\n})\r\nexport class ApiAdapterServiceService {\r\n private queryCount = 0;\r\n\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public executeApiRequest<T>(\r\n parameterList: Array<Parameter>,\r\n path: string,\r\n httpVerb: string,\r\n isFile: boolean = false\r\n ): Observable<any> {\r\n let url = path;\r\n let bodyData: {};\r\n let parameter: Parameter;\r\n let formData = new FormData();\r\n\r\n parameterList\r\n ?.filter((rt) => rt.in !== 'header')\r\n .forEach((requestType) => {\r\n parameter = parameterList.find(\r\n (parameter) => parameter.name === requestType.name\r\n ) as Parameter;\r\n\r\n if (!parameter && requestType.required && requestType.in !== 'header') {\r\n window.alert(\r\n `Parameter \"${requestType.name}\" is required!, Try again with \"${requestType.name}\"`\r\n );\r\n } else if (!parameter && !requestType.required) {\r\n // continue;\r\n } else {\r\n switch (requestType.in) {\r\n case 'body': {\r\n bodyData = parameter.value;\r\n break;\r\n }\r\n case 'path': {\r\n url = url.replace(`{${parameter.name}}`, parameter.value);\r\n break;\r\n }\r\n case 'query': {\r\n url = this.setQuery(parameter.name, parameter.value, url);\r\n break;\r\n }\r\n case 'formData': {\r\n formData = this.setFormData(parameter, formData);\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n parameter = undefined;\r\n });\r\n\r\n this.queryCount = 0;\r\n\r\n url = `${environment.api}${url}`;\r\n const appRequest: AppRequest<any> = {\r\n ...(parameterList?.[0]?.withoutKeyData ? bodyData : { data: bodyData }),\r\n };\r\n\r\n const headers = new HttpHeaders()\r\n .set('Authorization', 'Bearer ' + localStorage.getItem('telin.accessToken'))\r\n .set('Access-Control-Allow-Origin', '*');\r\n\r\n return this.httpClient\r\n .request<AppResponse<T>>(httpVerb, url, {\r\n body: !bodyData ? formData : appRequest,\r\n responseType: isFile ? ('blob' as 'json') : ('json' as 'json'),\r\n headers,\r\n })\r\n .pipe(\r\n catchError((err: HttpErrorResponse) => {\r\n if (err.error instanceof ErrorEvent) {\r\n return of<AppResponse<any>>({\r\n error: {\r\n title: 'Network error!',\r\n detail: err.message,\r\n source: err.statusText,\r\n status: err.status.toString(),\r\n },\r\n meta: {\r\n code: err.status,\r\n message: err.message,\r\n },\r\n });\r\n }\r\n\r\n return of<ServerInBuiltError>(err.error);\r\n })\r\n );\r\n }\r\n\r\n public uploadFileToS3(s3Url: string, file: File): Observable<any> {\r\n // Kita kirim raw binary/file dengan header Content-Type yang sesuai\r\n return this.httpClient.put(s3Url, file, {\r\n headers: { 'Content-Type': file.type },\r\n });\r\n }\r\n\r\n private setQuery(name: string, value: any, url: string): string {\r\n url = this.queryCount === 0 ? `${url}?${name}=${value}` : `${url}&${name}=${value}`;\r\n this.queryCount++;\r\n return url;\r\n }\r\n\r\n private setFormData(parameter: Parameter, formData: FormData): FormData {\r\n if (parameter.type === 'array') {\r\n for (let i = 0; parameter.value.length > i; i++) {\r\n formData.append(parameter.name, parameter.value[i], parameter.value[i].name);\r\n }\r\n } else {\r\n formData.append(parameter.name, parameter.value ? parameter.value : null);\r\n }\r\n return formData;\r\n }\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 {\r\n icon: 'icon_wa',\r\n inputSvgIcon: 'icon-wa-gray',\r\n image: 'whatsapp.png',\r\n label: 'WhatsApp',\r\n value: 'WA',\r\n },\r\n {\r\n icon: 'menu_sms',\r\n inputSvgIcon: 'icon-sms-gray',\r\n image: 'sms.png',\r\n label: 'SMS',\r\n value: 'SMS',\r\n },\r\n {\r\n icon: 'icon_email',\r\n inputSvgIcon: 'icon-email-gray',\r\n image: 'email-contact.png',\r\n label: 'Email',\r\n value: 'EMAIL',\r\n },\r\n {\r\n icon: 'icon_line',\r\n inputSvgIcon: 'icon-line-gray',\r\n image: 'line.png',\r\n label: 'Line',\r\n value: 'LINE',\r\n },\r\n];\r\n\r\nexport const MsgTypeWAOptionConst = [\r\n {\r\n name: 'Text',\r\n code: 'TEXT',\r\n },\r\n {\r\n name: 'Media',\r\n code: 'MEDIA',\r\n },\r\n {\r\n name: 'Template',\r\n code: 'TEMPLATE',\r\n },\r\n {\r\n name: 'Text - Utility',\r\n code: 'utility',\r\n },\r\n /* {\r\n\t\tname: 'Catalogue',\r\n\t\tcode: 'CATALOGUE',\r\n\t}, */\r\n];\r\n\r\nexport const MsgTypeEmailOptionConst = [\r\n {\r\n name: 'Text',\r\n code: 'HTML',\r\n },\r\n {\r\n name: 'Template',\r\n code: 'TEMPLATE',\r\n },\r\n];\r\n\r\nexport const MsgTypeLineOptionConst = [\r\n {\r\n name: 'Text',\r\n code: 'TEXT',\r\n },\r\n {\r\n name: 'Template',\r\n code: 'TEMPLATE',\r\n },\r\n /* {\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 {\r\n name: 'Image',\r\n code: 'IMAGE',\r\n },\r\n {\r\n name: 'Video',\r\n code: 'VIDEO',\r\n },\r\n {\r\n name: 'Document',\r\n code: 'DOCUMENT',\r\n },\r\n /* {\r\n\t\tname: 'Location',\r\n\t\tcode: 'LOCATION',\r\n\t}, */\r\n];\r\n\r\nexport const WidgetLiveCampaignConst: {\r\n title: string;\r\n arrow: string;\r\n value: number;\r\n date: string;\r\n icon: string;\r\n dateclass: string;\r\n}[] = [\r\n {\r\n title: 'Total Campaigns',\r\n arrow: '../../../../assets/svg/icon-down-arrow.svg',\r\n value: 0,\r\n date: '',\r\n icon: '../../../../assets/svg/icon-total-campaign.svg',\r\n dateclass: 'redpercent',\r\n },\r\n {\r\n title: 'Live Campaigns',\r\n arrow: '../../../../assets/svg/icon-down-arrow.svg',\r\n value: 0,\r\n date: '',\r\n icon: '../../../../assets/svg/icon-use-campaign.svg',\r\n dateclass: 'redpercent',\r\n },\r\n {\r\n title: 'Pending Approval',\r\n arrow: '../../../../assets/svg/icon-down-arrow.svg',\r\n value: 0,\r\n date: '',\r\n icon: '../../../../assets/svg/icon-pending-approval-campaign.svg',\r\n dateclass: 'redpercent',\r\n },\r\n];\r\n\r\nexport const CampaignPerformanceChartConfig = {\r\n legend: {\r\n icon: 'circle',\r\n orient: 'horizontal',\r\n x: 'center',\r\n y: 'bottom',\r\n },\r\n tooltip: {},\r\n dataset: {\r\n source: [['', 'WA Text', 'WA Template', 'WA Media', 'Product Catalog']],\r\n },\r\n xAxis: { type: 'category' },\r\n yAxis: {},\r\n series: [\r\n { type: 'bar', color: '#E666DA' },\r\n { type: 'bar', color: '#EB7215' },\r\n { type: 'bar', color: '#F3B435' },\r\n { type: 'bar', color: '#35CDF3' },\r\n ],\r\n};\r\n\r\nexport const ConversationInsightsChartConfig = {\r\n tooltip: {\r\n trigger: 'axis',\r\n },\r\n legend: {\r\n icon: 'circle',\r\n data: ['Delivery Rate of Campaigns', 'Total Number of Campaigns', 'Cost Distribution'],\r\n x: 'center',\r\n y: 'bottom',\r\n },\r\n xAxis: {\r\n type: 'category',\r\n data: [],\r\n },\r\n yAxis: {\r\n type: 'value',\r\n },\r\n series: [\r\n {\r\n name: 'Delivery Rate of Campaigns',\r\n data: [],\r\n type: 'line',\r\n smooth: true,\r\n itemStyle: { normal: { color: 'blue' } },\r\n },\r\n {\r\n name: 'Total Number of Campaigns',\r\n data: [],\r\n type: 'line',\r\n smooth: true,\r\n itemStyle: { normal: { color: 'green' } },\r\n },\r\n {\r\n name: 'Cost Distribution',\r\n data: [],\r\n type: 'line',\r\n smooth: true,\r\n itemStyle: { normal: { color: '#E666DA' } },\r\n },\r\n ],\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: [\r\n { type: 'required', message: 'Text is required' },\r\n { type: 'maxlength', message: 'Maximum character 1024' },\r\n ],\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 filteredChannelOption: any[] = [];\r\n\tpublic businessNameOption: ClientDto[] = [];\r\n\tpublic filteredBusinessNameOption: ClientDto[] = [];\r\n\tpublic statusOption: BaseOptionModel[] = [];\r\n\tpublic filteredStatusOption: 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\t\tthis.filteredStatusOption = [...this.statusOption];\r\n\t\tthis.filteredChannelOption = [...this.channelOption];\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\tthis.filteredBusinessNameOption = [...this.businessNameOption];\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 businessNameSearch(searchValue: string): void {\r\n\t\tconst value = searchValue.toLowerCase();\r\n\t\tthis.filteredBusinessNameOption = this.businessNameOption.filter(option =>\r\n\t\t\toption.name.toLowerCase().includes(value)\r\n\t\t);\r\n\t}\r\n\r\n\tpublic channelSearch(searchValue: string): void {\r\n\t\tconst value = searchValue.toLowerCase();\r\n\t\tthis.filteredChannelOption = this.channelOption.filter(option =>\r\n\t\t\toption.label.toLowerCase().includes(value)\r\n\t\t);\r\n\t}\r\n\r\n\tpublic statusSearch(searchValue: string): void {\r\n\t\tconst value = searchValue.toLowerCase();\r\n\t\tthis.filteredStatusOption = this.statusOption.filter(option =>\r\n\t\t\toption.label.toLowerCase().includes(value)\r\n\t\t);\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 selector: 'lib-pending-approval-dialog-view',\r\n templateUrl: './pending-approval-dialog-view.component.html',\r\n styleUrls: ['./pending-approval-dialog-view.component.scss'],\r\n})\r\nexport class PendingApprovalDialogViewComponent implements OnInit, OnDestroy {\r\n public isLoading: boolean = false;\r\n public isSubmit: boolean = false;\r\n public isShowButton: boolean = false;\r\n\r\n private subscribers: Subscription[] = [];\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef<PendingApprovalDialogViewComponent>,\r\n private apiAdapterService: ApiAdapterServiceService,\r\n private toastr: ToastrService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.getCampaignDetailService();\r\n\r\n this.isShowButton = this.getCampaignStorage?.generalInformation?.isShowButton ?? false;\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 convertUTCDateToLocalDate(date: Date) {\r\n const newDate = new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000);\r\n return newDate;\r\n }\r\n\r\n private getCampaignDetailService(): void {\r\n if (!this.getCampaignStorage?.generalInformation?.id) return;\r\n\r\n this.isLoading = true;\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(\r\n [],\r\n `/campaign/${this.getCampaignStorage?.generalInformation?.id}`,\r\n 'GET'\r\n )\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?.isDirectSend\r\n ? 'utility'\r\n : resp.data?.type?.toUpperCase(),\r\n media: resp.data?.type?.toUpperCase(),\r\n isPrevTemplate: resp?.data?.isPrevTemplate,\r\n templateName: resp?.data?.templateName,\r\n ttl: resp?.data?.ttlSeconds,\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.isLoading = false;\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 rejectCampaignService(): void {\r\n this.isSubmit = true;\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(\r\n [],\r\n `/campaign/${this.getCampaignStorage?.generalInformation?.id}/reject`,\r\n 'POST'\r\n )\r\n .subscribe(\r\n (resp: AppResponse<any>) => {\r\n this.isSubmit = false;\r\n\r\n if (!resp || !resp?.data) return this.toastr.error('Error Rejecting Campaign!');\r\n\r\n this.toastr.success('Campaign Rejected Successfully!');\r\n this.onClose();\r\n },\r\n () => {\r\n this.toastr.error('Error Rejecting Campaign!');\r\n this.isSubmit = false;\r\n }\r\n );\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n public approveCampaignService(): void {\r\n this.isSubmit = true;\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(\r\n [],\r\n `/campaign/${this.getCampaignStorage?.generalInformation?.id}/approve`,\r\n 'POST'\r\n )\r\n .subscribe(\r\n (resp: AppResponse<any>) => {\r\n this.isSubmit = false;\r\n\r\n if (!resp || !resp?.data) return this.toastr.error('Error Approving Campaign!');\r\n\r\n this.toastr.success('Campaign Approved Successfully!');\r\n this.onClose();\r\n },\r\n () => {\r\n this.toastr.error('Error Approving Campaign!');\r\n this.isSubmit = false;\r\n }\r\n );\r\n\r\n this.subscribers.push(subs);\r\n }\r\n\r\n public onClose(): void {\r\n localStorage.removeItem('telin.campaign');\r\n this.dialogRef.close();\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\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 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 category: string;\r\n public isNeedSave: boolean;\r\n public ttlSeconds: number;\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 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 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 if (this.type === 'utility') {\r\n this.type = 'template';\r\n this.category = 'utility';\r\n this.template = source?.isUseExistingTemplate\r\n ? source?.template\r\n : { name: '', lang: 'id', header: null, button: null, data: [] };\r\n this.isNeedSave = source.isNeedSave;\r\n this.ttlSeconds = source.ttl;\r\n\r\n if (source?.isUseExistingTemplate) {\r\n this.text = source?.template?.body?.text;\r\n }\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?.isDirectSend\r\n ? 'utility'\r\n : resp.data?.type?.toUpperCase(),\r\n media: resp.data?.type?.toUpperCase(),\r\n isPrevTemplate: resp?.data?.isPrevTemplate,\r\n templateName: resp?.data?.templateName,\r\n ttl: resp?.data?.ttlSeconds,\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 const payloadValue = bodyReq.convert();\r\n\r\n if (payloadValue.template && this.generalInformationData.template) {\r\n payloadValue.template.type =\r\n payloadValue.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: payloadValue,\r\n in: 'body',\r\n type: 'object',\r\n withoutKeyData: true,\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 { Validators as AngularValidators } from '@angular/forms';\r\nimport { maxValidator } from './max.validator';\r\nimport { minValidator } from './min.validator';\r\nimport { requiredValidator } from './required.validator';\r\n\r\nexport const Validators = {\r\n compose: AngularValidators.compose,\r\n composeAync: AngularValidators.composeAsync,\r\n max: maxValidator,\r\n min: minValidator,\r\n required: requiredValidator,\r\n};\r\n","import { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\r\nexport const maxValidator = (max: number, message: string) => {\r\n\treturn (AC: AbstractControl): ValidationErrors | null => {\r\n\t\tconst isError = Validators.max(max)(AC);\r\n\t\tif (isError)\r\n\t\t\treturn {\r\n\t\t\t\tmax: max,\r\n\t\t\t\tactual: AC.value,\r\n\t\t\t\tmessage: message || `Max Value equals to ${max}`,\r\n\t\t\t};\r\n\t\treturn null;\r\n\t};\r\n};\r\n","import { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\r\nexport const minValidator = (min: number, message: string) => {\r\n\treturn (AC: AbstractControl): ValidationErrors | null => {\r\n\t\tconst isError = Validators.min(min)(AC);\r\n\t\tif (isError)\r\n\t\t\treturn {\r\n\t\t\t\tmin: min,\r\n\t\t\t\tactual: AC.value,\r\n\t\t\t\tmessage: message || `Min Value equals to ${min}`,\r\n\t\t\t};\r\n\t\treturn null;\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\nimport { Validators as CustomValidators } from '../../../../validators';\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 public templates = [\r\n { label: 'Create New', value: false },\r\n { label: 'Use existing template', value: true },\r\n ];\r\n\r\n @Input() public isReadOnlyMode: 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 isUseExistingTemplate: new FormControl(false),\r\n isNeedSave: new FormControl(false),\r\n ttl: 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 this.form\r\n .get('isUseExistingTemplate')\r\n .setValue(!!this.getCampaignStorage?.generalInformation?.form?.templateName);\r\n this.form\r\n .get('isNeedSave')\r\n .setValue(!!this.getCampaignStorage?.generalInformation?.form?.isNeedSave);\r\n this.form.get('ttl').setValue(this.getCampaignStorage?.generalInformation?.form?.ttl);\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 if (this.getIsUtility) {\r\n this.form.get('from').setValidators(Validators.required);\r\n this.form.get('text').setValidators([Validators.required, Validators.maxLength(1024)]);\r\n this.form\r\n .get('ttl')\r\n .setValidators([\r\n CustomValidators.min(30, 'Minimum TTL 30'),\r\n CustomValidators.max(43200, 'Maximum TTL 43200'),\r\n ]);\r\n this.form.get('from').updateValueAndValidity();\r\n this.form.get('text').updateValueAndValidity();\r\n this.form.get('ttl').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 messageType = this.form.value?.channel;\r\n\r\n if (messageType === 'utility') {\r\n parameterList.push(this.initParam('isDirectSend', true, 'string'));\r\n }\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(parameterList, '/message/template', 'GET')\r\n .subscribe((resp: AppResponse<TemplateWAModel[]>) => {\r\n this.templateOption = isInfinite\r\n ? [...this.templateOption, ...resp.data]\r\n : resp.data;\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 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 get getIsUtility(): boolean {\r\n return (\r\n this.form.get('channel').value &&\r\n this.form.get('channel').value?.toLowerCase() === 'utility'\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 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 public handleChangeTemplate(useExisting: boolean): void {\r\n if (useExisting) {\r\n this.form.get('template').setValidators(Validators.required);\r\n this.form.get('text').reset();\r\n this.form.get('text').clearValidators();\r\n\r\n this.form.get('text').updateValueAndValidity();\r\n this.form.get('template').updateValueAndValidity();\r\n } else {\r\n this.form.get('template').reset();\r\n this.form.get('template').clearValidators();\r\n this.form.get('text').setValidators([Validators.required, Validators.max(1024)]);\r\n\r\n this.form.get('text').updateValueAndValidity();\r\n this.form.get('template').updateValueAndValidity();\r\n }\r\n }\r\n\r\n public handleChangeFrom(value: any): void {\r\n const { isUseExistingTemplate } = this.form.value;\r\n if (!isUseExistingTemplate) return;\r\n this.getTemplateOptionService(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 = 30 * 1024 * 1024;\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 30mb');\r\n return;\r\n }\r\n\r\n this.getPresignedUrlService(file[0]);\r\n }\r\n\r\n private getPresignedUrlService(file: File): void {\r\n this.isUpload = true;\r\n\r\n const parameterList: Array<Parameter> = [\r\n { name: 'fileName', value: file.name, in: 'query', type: 'string' },\r\n { name: 'fileType', value: file.type, in: 'query', type: 'string' },\r\n ];\r\n\r\n const subs = this.apiAdapterService\r\n .executeApiRequest(parameterList, '/campaign/upload/pre-signed-url', 'GET')\r\n .subscribe(\r\n (resp: AppResponse<any>) => {\r\n if (resp && resp.data) {\r\n this.uploadToS3Service(file, resp.data.url, resp.data.fileName);\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 private uploadToS3Service(file: File, s3Url: string, fileNameS3: string): void {\r\n this.apiAdapterService.uploadFileToS3(s3Url, file).subscribe(\r\n () => {\r\n this.finalizeTargetFileService(fileNameS3);\r\n },\r\n (err) => {\r\n this.toastr.error('Failed uploading to S3 storage');\r\n this.isUpload = false;\r\n console.error('S3 Upload Error:', err);\r\n }\r\n );\r\n }\r\n\r\n private finalizeTargetFileService(fileNameS3: string): void {\r\n const campaignId = this.getCampaignStorage?.generalInformation?.id;\r\n const parameterList: Array<Parameter> = [\r\n {\r\n name: 'body',\r\n value: { fileName: fileNameS3 },\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(parameterList, `/campaign/${campaignId}/targetfile`, 'POST')\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\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: fileNameS3,\r\n targetURL: resp.data?.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 { NgbDropdownModule, NgbPaginationModule } 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 { InputNumericModule } from './components/input-numeric/input-numeric.module';\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 declarations: [\r\n CampaignManagementComponent,\r\n WizardComponent,\r\n NewCampaignComponent,\r\n GeneralInformationComponent,\r\n SchedulerComponent,\r\n SummaryComponent,\r\n NewNumberBasesComponent,\r\n GeneralInformationLineComponent,\r\n GeneralInformationWAComponent,\r\n GeneralInformationSMSComponent,\r\n GeneralInformationEmailComponent,\r\n PendingApprovalDialogViewComponent,\r\n FailoverMechanismComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n AgmCoreModule.forRoot({\r\n apiKey: 'AIzaSyCHReBe_RpzAgLTrUC5QIDyeKttQ817wRY',\r\n libraries: ['places'],\r\n }),\r\n DashboardModule,\r\n MatAutocompleteModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatRadioModule,\r\n MatListModule,\r\n MatButtonModule,\r\n NgxEchartsModule.forRoot({\r\n echarts,\r\n }),\r\n MatIconModule,\r\n PickerModule,\r\n AngularEditorModule,\r\n MatDialogModule,\r\n MatTabsModule,\r\n MatBadgeModule,\r\n NgbDropdownModule,\r\n NgbPaginationModule,\r\n MatCardModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatPaginatorModule,\r\n MatGridListModule,\r\n MatDatepickerModule,\r\n MatSortModule,\r\n SearchModule,\r\n MatDividerModule,\r\n MatProgressSpinnerModule,\r\n MatSlideToggleModule,\r\n DragDropModule,\r\n CampaignIndexModule,\r\n InputNumericModule,\r\n ],\r\n exports: [CampaignManagementComponent, SummaryComponent],\r\n entryComponents: [PendingApprovalDialogViewComponent],\r\n providers: [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"]}