@tuki-io/tuki-widgets 0.0.166 → 0.0.167

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 (48) hide show
  1. package/esm2020/di2mt/shared/services/api.service.mjs +3 -3
  2. package/esm2020/user-creation/public-api.mjs +13 -0
  3. package/esm2020/user-creation/src/app.constants.mjs +16 -0
  4. package/esm2020/user-creation/src/classes/site.mjs +53 -0
  5. package/esm2020/user-creation/src/shared/api/api.service.mjs +86 -0
  6. package/esm2020/user-creation/src/shared/material.module.mjs +76 -0
  7. package/esm2020/user-creation/src/shared/services/user-creation-api.service.mjs +112 -0
  8. package/esm2020/user-creation/src/shared/services/utils.mjs +19 -0
  9. package/esm2020/user-creation/src/shared/shared.module.mjs +33 -0
  10. package/esm2020/user-creation/src/user-creation.module.mjs +69 -0
  11. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.mjs +23 -0
  12. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-overview-step/user-overview-step.component.mjs +19 -0
  13. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.mjs +114 -0
  14. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +60 -0
  15. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.mjs +273 -0
  16. package/esm2020/user-creation/tuki-io-tuki-widgets-user-creation.mjs +5 -0
  17. package/esm2020/users-list/src/components/table-toolbar/table-toolbar.component.mjs +9 -3
  18. package/esm2020/users-list/src/users-list.component.mjs +9 -3
  19. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +2 -2
  20. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  21. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +919 -0
  22. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -0
  23. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +16 -4
  24. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  25. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +2 -2
  26. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  27. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +915 -0
  28. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -0
  29. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +16 -4
  30. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  31. package/package.json +9 -1
  32. package/user-creation/index.d.ts +5 -0
  33. package/user-creation/public-api.d.ts +2 -0
  34. package/user-creation/src/app.constants.d.ts +15 -0
  35. package/user-creation/src/classes/site.d.ts +203 -0
  36. package/user-creation/src/shared/api/api.service.d.ts +20 -0
  37. package/user-creation/src/shared/material.module.d.ts +15 -0
  38. package/user-creation/src/shared/services/user-creation-api.service.d.ts +24 -0
  39. package/user-creation/src/shared/services/utils.d.ts +1 -0
  40. package/user-creation/src/shared/shared.module.d.ts +10 -0
  41. package/user-creation/src/user-creation.module.d.ts +17 -0
  42. package/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.d.ts +8 -0
  43. package/user-creation/src/widgets/user-creation-wizard/components/user-overview-step/user-overview-step.component.d.ts +11 -0
  44. package/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.d.ts +37 -0
  45. package/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.d.ts +18 -0
  46. package/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.d.ts +87 -0
  47. package/users-list/src/components/table-toolbar/table-toolbar.component.d.ts +3 -1
  48. package/users-list/src/users-list.component.d.ts +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuki-io-tuki-widgets-user-creation.mjs","sources":["../../../../projects/tuki/widgets/user-creation/src/shared/material.module.ts","../../../../projects/tuki/widgets/user-creation/src/shared/services/utils.ts","../../../../projects/tuki/widgets/user-creation/src/classes/site.ts","../../../../projects/tuki/widgets/user-creation/src/app.constants.ts","../../../../projects/tuki/widgets/user-creation/src/shared/api/api.service.ts","../../../../projects/tuki/widgets/user-creation/src/shared/services/user-creation-api.service.ts","../../../../projects/tuki/widgets/user-creation/src/shared/shared.module.ts","../../../../projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.ts","../../../../projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.ts","../../../../projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.html","../../../../projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/components/user-overview-step/user-overview-step.component.ts","../../../../projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/components/user-overview-step/user-overview-step.component.html","../../../../projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.ts","../../../../projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.html","../../../../projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.ts","../../../../projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.html","../../../../projects/tuki/widgets/user-creation/src/user-creation.module.ts","../../../../projects/tuki/widgets/user-creation/public-api.ts","../../../../projects/tuki/widgets/user-creation/tuki-io-tuki-widgets-user-creation.ts"],"sourcesContent":["import { NgModule } from \"@angular/core\";\r\nimport { MatProgressBarModule } from \"@angular/material/progress-bar\"\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatSelectModule } from \"@angular/material/select\";\r\n\r\n@NgModule({\r\n imports: [\r\n MatProgressBarModule,\r\n MatTooltipModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatSelectModule\r\n ],\r\n exports: [\r\n MatProgressBarModule,\r\n MatTooltipModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatSelectModule\r\n ]\r\n})\r\nexport class MaterialModule { }","export const getSavableData = (model: any, exclude?: Array<string>) => {\r\n let result = Object.keys(model);\r\n if (exclude && exclude.length) {\r\n result = result.filter(key => !exclude.some(item => item === key));\r\n }\r\n return result.reduce((result: any, key) => {\r\n if (model[key] instanceof Array && model[key].length && model[key][0].getSavableData) {\r\n result[key] = model[key].map((item: any) => item.getSavableData());\r\n } else if (model[key] instanceof Object && model[key].getSavableData) {\r\n result[key] = model[key].getSavableData();\r\n } else {\r\n result[key] = model[key];\r\n }\r\n return result;\r\n }, {});\r\n};","import { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { getSavableData } from '../shared/services/utils';\r\n\r\nexport interface SiteInterface {\r\n id: number;\r\n name: string;\r\n country: any;\r\n locationName: string;\r\n isAfterTtu: boolean;\r\n shortName: string;\r\n ttuEnableDate?: string;\r\n cucm: any;\r\n cuc: any;\r\n hasActivated?: boolean;\r\n // hqStatus: boolean;\r\n deactivateDate?: string;\r\n siteUniqueId?: number;\r\n form: FormGroup;\r\n\r\n initForm: () => void;\r\n getSavableData: () => void;\r\n getId: () => void;\r\n}\r\n\r\n\r\nexport class Site implements SiteInterface {\r\n id!: number;\r\n name!: string;\r\n country: any;\r\n locationName!: string;\r\n isAfterTtu!: boolean;\r\n shortName!: string;\r\n ttuEnableDate?: string;\r\n cucm: any;\r\n cuc: any;\r\n hasActivated?: boolean;\r\n // hqStatus: boolean;\r\n deactivateDate?: string;\r\n address1?: string;\r\n address2?: string;\r\n city?: string;\r\n state?: string;\r\n zipCode?: string;\r\n form!: FormGroup;\r\n\r\n constructor(site?: SiteInterface) {\r\n Object.assign(this, site);\r\n this.initForm();\r\n }\r\n\r\n initForm() {\r\n const formBuilder = new FormBuilder();\r\n const formSettings = {\r\n name: [this.name || '', [Validators.required]],\r\n shortName: [this.shortName || '', [Validators.required]],\r\n cucm: [this.cucm || ''],\r\n cuc: [this.cuc || ''],\r\n address1: [this.address1 || ''],\r\n zipCode: [this.country || ''],\r\n city: [this.city || ''],\r\n state: [this.state || ''],\r\n country: [this.country || '', [Validators.required]],\r\n isAfterTtu: [this.isAfterTtu || ''],\r\n ttuEnableDate: [this.ttuEnableDate || '']\r\n };\r\n\r\n this.form = formBuilder.group(formSettings);\r\n }\r\n\r\n getSavableData() {\r\n const nonSavableData = ['form'];\r\n return getSavableData(this, nonSavableData);\r\n }\r\n\r\n getId() {\r\n return this.id;\r\n }\r\n}\r\n\r\nexport interface SiteTemplateInterface {\r\n id: number;\r\n routePartitionFilter: string | string[];\r\n devicePoolFilter: string | string[];\r\n cssFilter: string | string[] | undefined;\r\n voicemailProfileFilter: string | string[];\r\n lineCss: string;\r\n deviceCss: string;\r\n callForwardAllCss: string;\r\n location: string;\r\n voicemailUserTemplate: string;\r\n routePartition: string;\r\n devicePool: string;\r\n voicemailProfile: string;\r\n externalCallerId: string;\r\n huntPilotPartition: string;\r\n callPickupGroupPartition: string;\r\n meetMeConferencePartition: string;\r\n callParkPartition: string;\r\n userLocale: string;\r\n networkLocale: string;\r\n cucmGroup: string;\r\n softkeyTemplates: string;\r\n phoneButtonTemplate: string;\r\n phoneSecurityProfile: string;\r\n sipProfile: string;\r\n rdpCss: string;\r\n rdpRerouteCss: string;\r\n commonPhoneProfile: string;\r\n subscribeCss: string;\r\n enableEm: boolean | string;\r\n forwardHuntBusyCSS: string;\r\n forwardHuntNoAnswerCSS: string;\r\n forwardBusyInternalCss: string;\r\n forwardBusyExternalCss: string;\r\n forwardNoAnswerInternalCss: string;\r\n forwardNoAnswerExternalCss: string;\r\n forwardNoCoverageInternalCss: string;\r\n forwardNoCoverageExternalCss: string;\r\n forwardOnCtiFailureCss: string;\r\n forwardUnregisteredInternalCss: string;\r\n forwardUnregisteredExternalCss: string;\r\n rdpExternalCallerId: string;\r\n noAnswerRingDuration: string;\r\n ucServiceProfile: string;\r\n phoneSystem: string;\r\n maxNumberOfCalls: string;\r\n busyTrigger: string;\r\n didPartition: string;\r\n didCss: string;\r\n vossCompatibilitySiteCode: string;\r\n vossCompatibilityRidCode: string;\r\n dialPlanType: string;\r\n emService: string;\r\n emergencyPartition?: string;\r\n cucPartition: string;\r\n alertingName?: string;\r\n displayCallerId?: string;\r\n lineTextLabel?: string;\r\n textLabel?: string;\r\n internalTranslationPartition?: string;\r\n internalTranslationCss?: string;\r\n plarCss?: string;\r\n lineDescription?: string;\r\n deviceDescription?: string;\r\n sharedSitesCssFilter?: string[];\r\n sharedSitesRPFilter?: string[];\r\n reroutingCss?: string;\r\n udpDeviceType: string;\r\n udpDeviceProtocol: string;\r\n udpButtonTemplate: string;\r\n userUserLocale: string;\r\n userAccessControlGroups?: string;\r\n}\r\n\r\nexport class SiteDefaults implements SiteTemplateInterface {\r\n id!: number;\r\n routePartitionFilter: string[];\r\n devicePoolFilter: string[];\r\n cssFilter: string[];\r\n voicemailProfileFilter: string[];\r\n lineCss!: string;\r\n deviceCss!: string;\r\n callForwardAllCss!: string;\r\n location!: string;\r\n voicemailUserTemplate!: string;\r\n routePartition!: string;\r\n devicePool!: string;\r\n voicemailProfile!: string;\r\n externalCallerId!: string;\r\n huntPilotPartition!: string;\r\n callPickupGroupPartition!: string;\r\n meetMeConferencePartition!: string;\r\n callParkPartition!: string;\r\n userLocale!: string;\r\n networkLocale!: string;\r\n cucmGroup!: string;\r\n softkeyTemplates!: string;\r\n phoneButtonTemplate!: string;\r\n phoneSecurityProfile!: string;\r\n sipProfile!: string;\r\n rdpCss!: string;\r\n rdpRerouteCss!: string;\r\n commonPhoneProfile!: string;\r\n subscribeCss!: string;\r\n enableEm!: boolean;\r\n forwardHuntBusyCSS!: string;\r\n forwardHuntNoAnswerCSS!: string;\r\n forwardBusyInternalCss!: string;\r\n forwardBusyExternalCss!: string;\r\n forwardNoAnswerInternalCss!: string;\r\n forwardNoAnswerExternalCss!: string;\r\n forwardNoCoverageInternalCss!: string;\r\n forwardNoCoverageExternalCss!: string;\r\n forwardOnCtiFailureCss!: string;\r\n forwardUnregisteredInternalCss!: string;\r\n forwardUnregisteredExternalCss!: string;\r\n rdpExternalCallerId!: string;\r\n noAnswerRingDuration!: string;\r\n ucServiceProfile!: string;\r\n phoneSystem!: string;\r\n maxNumberOfCalls!: string;\r\n busyTrigger!: string;\r\n didPartition!: string;\r\n didCss!: string;\r\n vossCompatibilitySiteCode!: string;\r\n vossCompatibilityRidCode!: string;\r\n dialPlanType!: string;\r\n emService!: string;\r\n cucPartition!: string;\r\n alertingName?: string;\r\n displayCallerId?: string;\r\n textLabel?: string;\r\n internalTranslationPartition?: string;\r\n internalTranslationCss?: string;\r\n plarCss?: string;\r\n lineDescription?: string;\r\n deviceDescription?: string;\r\n sharedSitesCssFilter!: string[];\r\n sharedSitesRPFilter!: string[];\r\n udpDeviceType!: string;\r\n udpDeviceProtocol!: string;\r\n udpButtonTemplate!: string;\r\n userUserLocale!: string;\r\n userAccessControlGroups?: string;\r\n\r\n constructor(siteDefaults?: SiteTemplateInterface, isSharedLineSite?: boolean) {\r\n this.routePartitionFilter = [];\r\n this.devicePoolFilter = [];\r\n this.cssFilter = [];\r\n this.voicemailProfileFilter = [];\r\n if (siteDefaults) {\r\n Object.assign(this, siteDefaults);\r\n this.enableEm = siteDefaults.enableEm === 'true';\r\n this.routePartitionFilter.sort();\r\n this.devicePoolFilter.sort();\r\n this.cssFilter.sort();\r\n this.voicemailProfileFilter.sort();\r\n }\r\n if (isSharedLineSite) {\r\n this.cssFilter = siteDefaults?.sharedSitesCssFilter || [];\r\n this.routePartitionFilter = siteDefaults?.sharedSitesRPFilter || [];\r\n }\r\n }\r\n}\r\n\r\nexport interface UserTemplateInterface {\r\n id: number;\r\n name: string;\r\n description: string;\r\n customerId: number;\r\n endUser: any;\r\n userRequiredFields?: string[];\r\n deviceRequiredFields?: string[];\r\n lineRequiredFields?: string[];\r\n editMode?: boolean;\r\n isChanged?: boolean;\r\n type?: string;\r\n ownerType?: string;\r\n globalTemplate?: boolean;\r\n}\r\n","export const API = {\r\n WEBEX_CHECK_CONTROL_HUB_INTEGRATION: \"/webex/api/search/webex/customers/:customerId/controlhubexists\",\r\n SITES: \"/api/customers/:customerId/sites\",\r\n SITE: \"/dcp/api/sites/:siteId\",\r\n DEVICE_TYPES: \"/dcp/api/provision/options/:siteId/devicetypes\",\r\n SITE_SETTINGS: \"/dcp/api/sites/:siteId/settings\",\r\n VM_USER_TEMPLATES: \"/dcp/api/provision/options/:siteId/vmusertemplates\",\r\n USER_TEMPLATES_UPLOAD_LIST: \"/dcp/api/searchbulkupdate/uploadedusertemplatelist\",\r\n USER_TEMPLATE_TOKEN: \"/dcp/api/bulkupdate/:customerId/usertemplate/:id/token\",\r\n}\r\n\r\nexport const USER_CREATION_TYPES = {\r\n CUCM: 'CUCM',\r\n MT: 'MT'\r\n};\r\n\r\nexport const MAX_INTEGER = 2147483647;","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class APIService {\r\n public token: any;\r\n apiUrl = window.location.protocol + '//' + window.location.hostname + '/dcp';\r\n constructor(\r\n private httpClient: HttpClient\r\n ) {\r\n this.token = 'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbkBjb3JyZW5ldC5jb20iLCJyb2xlcyI6IlNVUEVSX1VTRVIiLCJpYXQiOjE3NzM5NDcwMTcsImV4cCI6MTc3Mzk2NTAxN30.D2siE2z4BgOHAzRJ9x2jq7kTmTYdxRdq65m-Fs200Hk'\r\n // this.apiUrl = window.location.protocol + '//' + window.location.host + '/dcp';\r\n this.apiUrl = 'https://dev.tuki.io';\r\n // this.apiUrl = 'http://localhost:8088/dcp';\r\n }\r\n\r\n fetch(url: string, params?: any, cache?: boolean): Observable<any> {\r\n const headers = this.getHeaders(cache);\r\n params = params || {};\r\n return this.httpClient.get(this.apiUrl + url, {params: this.prepareEncodedParams(params), headers});\r\n }\r\n\r\n post(url: string, body: any, params = {}): Observable<any> {\r\n body = body || null;\r\n const headers = this.getHeaders();\r\n return this.httpClient.post(this.apiUrl + url, body, {params: this.prepareEncodedParams(params), headers});\r\n }\r\n\r\n // use when response extended data is necessary:\r\n postExtended(url: string, body = null, params = {}, headers = {}) {\r\n headers = headers || this.getHeaders();\r\n return this.httpClient.post(this.apiUrl + url, body, {\r\n headers,\r\n observe: 'response',\r\n params: this.prepareEncodedParams(params)\r\n });\r\n }\r\n\r\n put(url: string, body = null, params = {}) {\r\n const headers = this.getHeaders();\r\n return this.httpClient.put(this.apiUrl + url, body, {headers, params: this.prepareEncodedParams(params)});\r\n }\r\n\r\n delete(url: string, params = {}) {\r\n const headers = this.getHeaders();\r\n return this.httpClient.delete(this.apiUrl + url, {headers, params: this.prepareEncodedParams(params)});\r\n }\r\n\r\n fetchPagination(url: string, pageSize: number, pageNumber: number, additionalParams = {}, cache?: boolean): Observable<any> {\r\n const copyAdditionalParams = JSON.parse(JSON.stringify(additionalParams));\r\n const params = Object.assign(copyAdditionalParams, {size: pageSize.toString(), page: pageNumber.toString()});\r\n return this.fetch(url, params, cache) as Observable<any>;\r\n }\r\n\r\n private prepareEncodedParams(params: any) {\r\n const result: any = {};\r\n\r\n if (!params) {\r\n return {};\r\n }\r\n for (const key of Object.keys(params)) {\r\n if (params[key]) {\r\n const stringParam = params[key].toString();\r\n result[key] = stringParam.includes('+') ? encodeURIComponent(stringParam) : stringParam;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private getHeaders(cache?: boolean): HttpHeaders {\r\n let headers = new HttpHeaders();\r\n if (cache) {\r\n headers = headers.append('_Cache', 'true ');\r\n }\r\n const token = this.token || this.getParameterByName('token');\r\n headers = headers.append('Authorization', 'Bearer '+ token);\r\n return headers;\r\n }\r\n\r\n private getParameterByName(name: any, url = window.location.href) {\r\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\r\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n }\r\n}","import { inject, Injectable } from \"@angular/core\";\r\nimport { BehaviorSubject, forkJoin, map, Observable, tap } from \"rxjs\";\r\nimport { Site, SiteDefaults, SiteInterface, SiteTemplateInterface, UserTemplateInterface } from \"../../classes/site\";\r\n// import { APIService } from \"./api.service\";\r\nimport { API, MAX_INTEGER } from \"../../app.constants\";\r\nimport { APIService } from \"../api/api.service\";\r\n\r\n@Injectable()\r\nexport class UserCreationApiService {\r\n\r\n private _allSites: Site[] = [];\r\n private readonly sitesListSubject$ = new BehaviorSubject<Site[]>([]);\r\n public readonly sitesList$ = this.sitesListSubject$.asObservable();\r\n\r\n private readonly templatesListSubject$ = new BehaviorSubject<UserTemplateInterface[]>([]);\r\n public readonly templatesList$ = this.templatesListSubject$.asObservable();\r\n\r\n private apiService = inject(APIService);\r\n\r\n constructor() { }\r\n\r\n public getSitesList() {\r\n\r\n }\r\n\r\n public checkControlHubIntegration(customerId: string) {\r\n const URL = API.WEBEX_CHECK_CONTROL_HUB_INTEGRATION.replace(':customerId', String(customerId));\r\n return this.apiService.fetch(URL);\r\n // .pipe(this.handleError(true, true));\r\n }\r\n\r\n public getAllCustomerSites(customerId: string, onlySitesWithLocation?: boolean): Observable<Site[]> {\r\n const params: { [key: string]: string } = {};\r\n if (onlySitesWithLocation) {\r\n params['onlySitesWithLocation'] = 'true';\r\n }\r\n return this.apiService.fetchPagination(API.SITES.replace(':customerId', String(customerId)), MAX_INTEGER, 0, params, false)\r\n .pipe(\r\n tap((res: any) => {\r\n // this._allSites = [];\r\n // if (res.pageData && res.pageData.length) {\r\n // this.assignAllSites(customerId, res.pageData);\r\n // }\r\n // this.allCustomerSites$.next(true);\r\n // return this._allSites;\r\n this.sitesListSubject$.next(res.pageData);\r\n })\r\n )\r\n // .pipe(this.handleError(true));\r\n }\r\n\r\n public getSiteData(siteId: number) {\r\n // this.dataPending = true;\r\n return forkJoin([\r\n this.getSite(siteId),\r\n this.getDeviceTypes(siteId),\r\n this.getSiteDefaults(siteId, false),\r\n this.getVoiceMailUserTemplates(siteId)\r\n ]).pipe(\r\n tap(() => {\r\n // this.userFeaturesService.setDefaultUcProfile();\r\n }))\r\n }\r\n\r\n public getSite(siteId: number, isEdit?: boolean): Observable<SiteInterface> {\r\n return this.apiService.fetch(API.SITE.replace(':siteId', String(siteId)), null, false)\r\n .pipe(map((siteData: any) => {\r\n const site = new Site(siteData);\r\n // if (isEdit) {\r\n // this.setEditSite(site);\r\n // } else {\r\n // this.setCurrentSite(site);\r\n // }\r\n return site;\r\n }))\r\n }\r\n\r\n public getDeviceTypes(siteId: number | string): Observable<string[]> {\r\n return this.apiService.fetch(API.DEVICE_TYPES.replace(':siteId', String(siteId)), null, true)\r\n // .pipe(\r\n // map((types: string[]) => {\r\n // // this.deviceTypes = types)\r\n // })\r\n // );\r\n // .pipe(this.handleError(false, true));\r\n }\r\n\r\n public getSiteDefaults(siteId: number, directAccess: boolean, sharedLineSiteIds?: string): Observable<SiteDefaults> {\r\n const params = { directAccess: directAccess };\r\n // if (sharedLineSiteIds) {\r\n // params['sharedLineSiteIds'] = sharedLineSiteIds;\r\n // }\r\n return this.apiService.fetch(API.SITE_SETTINGS.replace(':siteId', String(siteId)), params)\r\n // .pipe(map((siteDefaults: SiteTemplateInterface) => {\r\n // // this.siteDefaults = new SiteDefaults(siteDefaults, !!sharedLineSiteIds);\r\n // // const copiedSiteDefaults = JSON.parse(JSON.stringify(siteDefaults));\r\n // // this.originalSiteDefaults = new SiteDefaults(copiedSiteDefaults, !!sharedLineSiteIds);\r\n // }));\r\n // .pipe(this.handleError(true, true));\r\n }\r\n\r\n public getVoiceMailUserTemplates(siteId: number) {\r\n return this.apiService.fetch(API.VM_USER_TEMPLATES.replace(':siteId', String(siteId)), null, true)\r\n .pipe(map((templates: string[]) => {\r\n // this.voiceMailTemplates = templates;\r\n }));\r\n // .pipe(this.handleError(false, true));\r\n }\r\n\r\n public fetchAllUserTemplates(siteId: number): Observable<UserTemplateInterface[]> {\r\n const params = {\r\n siteId: siteId,\r\n };\r\n return this.apiService.fetch(API.USER_TEMPLATES_UPLOAD_LIST, params)\r\n .pipe(tap((result: UserTemplateInterface[]) => {\r\n this.templatesListSubject$.next(result);\r\n }));\r\n }\r\n\r\n public getUserTemplateToken(id: string, customerId: string): Observable<any> {\r\n return this.apiService.fetch(API.USER_TEMPLATE_TOKEN.replace(':customerId', customerId).replace(':id', id))\r\n // .pipe(this.handleError(false, true));\r\n }\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { MaterialModule } from \"./material.module\";\r\nimport { NgApexchartsModule } from \"ng-apexcharts\"\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n NgApexchartsModule,\r\n HttpClientModule,\r\n ],\r\n exports: [\r\n MaterialModule\r\n ]\r\n})\r\nexport class SharedModule {}","import { inject, Injectable } from \"@angular/core\";\r\nimport { UserCreationApiService } from \"../../shared/services/user-creation-api.service\";\r\n\r\nexport interface LdapUserRow {\r\n userId: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n}\r\n\r\nexport interface OverviewUserRow extends LdapUserRow {\r\n userTemplate: string;\r\n}\r\n\r\nexport interface OverviewLineRow {\r\n number: string;\r\n did: string;\r\n routePartitionName: string;\r\n css: string;\r\n description: string;\r\n}\r\n\r\nexport interface OverviewDeviceRow {\r\n name: string;\r\n deviceType: string;\r\n lines: string;\r\n description: string;\r\n}\r\n\r\nexport type UserCreationType = 'CUCM' | 'MT';\r\n\r\nexport interface UserDetailsForm {\r\n userId: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n}\r\n\r\nexport interface LineOption {\r\n number: string;\r\n did: string;\r\n css: string;\r\n description: string;\r\n}\r\n\r\nexport interface SelectedLineRow {\r\n lineNumber: string | null;\r\n routePartitionName: string | null;\r\n}\r\n\r\nexport interface DeviceEntry {\r\n deviceType: string;\r\n protocol: string;\r\n buttonTemplate: string;\r\n name: string;\r\n}\r\n\r\ninterface TemplateLineLike {\r\n directoryNumber?: {\r\n directoryNumber?: string;\r\n routePartitionName?: string | null;\r\n };\r\n description?: string | null;\r\n callingSearchSpace?: string | { name?: string | null } | null;\r\n didPatterns?: Array<{ pattern?: string | null }> | null;\r\n}\r\n\r\ninterface TemplateDeviceLike {\r\n deviceType?: string | null;\r\n protocol?: string | null;\r\n buttonTemplate?: string | null;\r\n name?: string | null;\r\n lineAssociations?: Array<{\r\n directoryNumber?: {\r\n directoryNumber?: string;\r\n routePartitionName?: string | null;\r\n };\r\n }>;\r\n}\r\n\r\ninterface TemplateEndUserLike {\r\n userid?: string | null;\r\n firstName?: string | null;\r\n lastName?: string | null;\r\n email?: string | null;\r\n lines?: TemplateLineLike[] | null;\r\n devices?: TemplateDeviceLike[] | null;\r\n}\r\n\r\n@Injectable()\r\nexport class UserCreationWizardService {\r\n private readonly api = inject(UserCreationApiService);\r\n\r\n readonly ldapTableColumns: string[] = ['userId', 'firstName', 'lastName', 'email', 'add'];\r\n readonly userCreationTypes: UserCreationType[] = ['CUCM', 'MT'];\r\n\r\n siteOptions: string[] = [];\r\n templateOptions: string[] = [];\r\n lineOptions: LineOption[] = [];\r\n routePartitionOptions: string[] = [];\r\n deviceRows: number[] = [];\r\n ldapUsers: LdapUserRow[] = [];\r\n overviewUsers: OverviewUserRow[] = [];\r\n overviewLines: OverviewLineRow[] = [];\r\n overviewDevices: OverviewDeviceRow[] = [];\r\n userDetailsForm: UserDetailsForm = {\r\n userId: '',\r\n firstName: '',\r\n lastName: '',\r\n email: ''\r\n };\r\n lineSelections: SelectedLineRow[] = [];\r\n deviceEntries: DeviceEntry[] = [];\r\n\r\n selectedSite: string | null = null;\r\n selectedTemplate: string | null = null;\r\n selectedUserCreationType: UserCreationType = 'CUCM';\r\n\r\n constructor() {\r\n this.loadPlaceholderData();\r\n }\r\n\r\n setSelectedSite(site: string | null): void {\r\n this.selectedSite = site;\r\n }\r\n\r\n setSelectedTemplate(template: string | null): void {\r\n this.selectedTemplate = template;\r\n this.rebuildOverviewUsers();\r\n }\r\n\r\n resetTemplateDrivenData(): void {\r\n this.lineOptions = [];\r\n this.routePartitionOptions = [];\r\n this.lineSelections = [];\r\n this.deviceEntries = [];\r\n this.deviceRows = [];\r\n this.rebuildOverviewLines();\r\n this.rebuildOverviewDevices();\r\n }\r\n\r\n applyTemplateTokenPayload(payload: any): void {\r\n const template = this.extractTemplateFromTokenPayload(payload);\r\n const endUser: TemplateEndUserLike = template?.endUser || {};\r\n const linesFromTemplate: TemplateLineLike[] = Array.isArray(endUser.lines) ? endUser.lines : [];\r\n const devicesFromTemplate: TemplateDeviceLike[] = Array.isArray(endUser.devices) ? endUser.devices : [];\r\n\r\n this.userDetailsForm = {\r\n userId: this.valueToString(endUser.userid),\r\n firstName: this.valueToString(endUser.firstName),\r\n lastName: this.valueToString(endUser.lastName),\r\n email: this.valueToString(endUser.email)\r\n };\r\n\r\n const mappedLineOptions: LineOption[] = linesFromTemplate\r\n .map(line => ({\r\n number: this.valueToString(line?.directoryNumber?.directoryNumber),\r\n did: this.valueToString(line?.didPatterns?.[0]?.pattern || line?.directoryNumber?.directoryNumber),\r\n css: this.valueToString(\r\n typeof line?.callingSearchSpace === 'string'\r\n ? line.callingSearchSpace\r\n : line?.callingSearchSpace?.name\r\n ),\r\n description: this.valueToString(line?.description)\r\n }))\r\n .filter(line => line.number.trim().length > 0);\r\n\r\n if (mappedLineOptions.length) {\r\n this.lineOptions = this.uniqueByNumber(mappedLineOptions);\r\n this.lineSelections = this.lineOptions.map(line => ({\r\n lineNumber: line.number,\r\n routePartitionName: linesFromTemplate.find(\r\n source => (source?.directoryNumber?.directoryNumber || '') === line.number\r\n )?.directoryNumber?.routePartitionName || null\r\n }));\r\n } else {\r\n const lineAssociations = devicesFromTemplate.flatMap(device => device.lineAssociations || []);\r\n const associatedLineOptions: LineOption[] = lineAssociations\r\n .map(association => {\r\n const number = association?.directoryNumber?.directoryNumber || '';\r\n return {\r\n number,\r\n did: number,\r\n css: '',\r\n description: ''\r\n };\r\n })\r\n .filter(line => line.number.trim().length > 0);\r\n\r\n this.lineOptions = this.uniqueByNumber(associatedLineOptions);\r\n this.lineSelections = this.lineOptions.map(line => ({\r\n lineNumber: line.number,\r\n routePartitionName: lineAssociations.find(\r\n source => (source?.directoryNumber?.directoryNumber || '') === line.number\r\n )?.directoryNumber?.routePartitionName || null\r\n }));\r\n }\r\n\r\n const routePartitions = this.lineSelections\r\n .map(line => line.routePartitionName)\r\n .filter((value): value is string => !!value && value.trim().length > 0);\r\n this.routePartitionOptions = this.uniqueStrings(routePartitions);\r\n\r\n this.deviceEntries = devicesFromTemplate.map(device => ({\r\n deviceType: this.valueToString(device.deviceType),\r\n protocol: this.valueToString(device.protocol),\r\n buttonTemplate: this.valueToString(device.buttonTemplate),\r\n name: this.valueToString(device.name)\r\n }));\r\n this.deviceRows = this.deviceEntries.map((_, index) => index + 1);\r\n\r\n this.rebuildOverviewUsers();\r\n this.rebuildOverviewLines();\r\n this.rebuildOverviewDevices();\r\n }\r\n\r\n setSelectedUserCreationType(type: UserCreationType): void {\r\n this.selectedUserCreationType = type;\r\n }\r\n\r\n setUserDetailsField(field: keyof UserDetailsForm, value: string): void {\r\n this.userDetailsForm = {\r\n ...this.userDetailsForm,\r\n [field]: value\r\n };\r\n this.rebuildOverviewUsers();\r\n }\r\n\r\n setLineSelection(index: number, lineNumber: string | null): void {\r\n if (!this.lineSelections[index]) {\r\n return;\r\n }\r\n this.lineSelections[index] = {\r\n ...this.lineSelections[index],\r\n lineNumber\r\n };\r\n this.rebuildOverviewLines();\r\n this.rebuildOverviewDevices();\r\n }\r\n\r\n setRoutePartitionSelection(index: number, routePartitionName: string | null): void {\r\n if (!this.lineSelections[index]) {\r\n return;\r\n }\r\n this.lineSelections[index] = {\r\n ...this.lineSelections[index],\r\n routePartitionName\r\n };\r\n this.rebuildOverviewLines();\r\n }\r\n\r\n setDeviceName(index: number, name: string): void {\r\n if (!this.deviceEntries[index]) {\r\n return;\r\n }\r\n this.deviceEntries[index] = {\r\n ...this.deviceEntries[index],\r\n name\r\n };\r\n this.rebuildOverviewDevices();\r\n }\r\n\r\n // Placeholder bootstrap until backend APIs are connected.\r\n loadPlaceholderData(): void {\r\n this.siteOptions = ['Site 1', 'Site 2', 'Site 3'];\r\n this.templateOptions = ['User 8851 Office'];\r\n this.lineOptions = [\r\n {\r\n number: '557046',\r\n did: '+13125557046',\r\n css: 'Atlanta_internal_css',\r\n description: ''\r\n }\r\n ];\r\n this.routePartitionOptions = ['Atlanta_internal_PT', 'Beijing_national_PT'];\r\n this.deviceRows = [1, 2];\r\n this.ldapUsers = [\r\n { userId: 'John.Doe', firstName: 'John', lastName: 'Doe', email: 'john.doe@car.west.io' },\r\n { userId: 'Jane.Smith', firstName: 'Jane', lastName: 'Smith', email: 'jane.smith@car.west.io' }\r\n ];\r\n this.lineSelections = [\r\n {\r\n lineNumber: this.lineOptions[0]?.number || null,\r\n routePartitionName: this.routePartitionOptions[0] || null\r\n }\r\n ];\r\n this.deviceEntries = [\r\n {\r\n deviceType: 'Cisco 8851',\r\n protocol: 'SIP',\r\n buttonTemplate: 'Standard 8851 SIP',\r\n name: ''\r\n },\r\n {\r\n deviceType: 'Cisco Unified Client Services Framework',\r\n protocol: 'SIP',\r\n buttonTemplate: 'Standard Client Services Framework',\r\n name: ''\r\n }\r\n ];\r\n this.selectedTemplate = this.selectedTemplate ?? null;\r\n this.rebuildOverviewUsers();\r\n this.rebuildOverviewLines();\r\n this.rebuildOverviewDevices();\r\n }\r\n\r\n private rebuildOverviewUsers(): void {\r\n const userTemplate = this.selectedTemplate || '';\r\n const hasUserData = Object.values(this.userDetailsForm).some(value => value.trim().length > 0);\r\n this.overviewUsers = hasUserData\r\n ? [{\r\n userId: this.userDetailsForm.userId,\r\n firstName: this.userDetailsForm.firstName,\r\n lastName: this.userDetailsForm.lastName,\r\n email: this.userDetailsForm.email,\r\n userTemplate\r\n }]\r\n : [];\r\n }\r\n\r\n private rebuildOverviewLines(): void {\r\n this.overviewLines = this.lineSelections\r\n .map(selection => {\r\n if (!selection?.lineNumber) {\r\n return null;\r\n }\r\n const selectedLine = this.lineOptions.find(line => line.number === selection.lineNumber);\r\n if (!selectedLine) {\r\n return null;\r\n }\r\n return {\r\n number: selectedLine.number,\r\n did: selectedLine.did,\r\n routePartitionName: selection.routePartitionName || this.routePartitionOptions[0] || '',\r\n css: selectedLine.css,\r\n description: selectedLine.description\r\n };\r\n })\r\n .filter((line): line is OverviewLineRow => !!line);\r\n }\r\n\r\n private rebuildOverviewDevices(): void {\r\n const selectedLineNumbers = this.overviewLines.map(line => line.number).join(', ');\r\n this.overviewDevices = this.deviceEntries\r\n .filter(device => device.name.trim().length > 0 || device.deviceType.trim().length > 0)\r\n .map(device => ({\r\n name: device.name,\r\n deviceType: device.deviceType,\r\n lines: selectedLineNumbers,\r\n description: `${device.protocol} / ${device.buttonTemplate}`\r\n }));\r\n }\r\n\r\n private extractTemplateFromTokenPayload(payload: any): any {\r\n if (!payload || typeof payload !== 'object') {\r\n return null;\r\n }\r\n if (Array.isArray(payload)) {\r\n return payload[0] || null;\r\n }\r\n const firstKey = Object.keys(payload)[0];\r\n return firstKey ? payload[firstKey] : null;\r\n }\r\n\r\n private uniqueByNumber(lines: LineOption[]): LineOption[] {\r\n const seen = new Set<string>();\r\n return lines.filter(line => {\r\n if (seen.has(line.number)) {\r\n return false;\r\n }\r\n seen.add(line.number);\r\n return true;\r\n });\r\n }\r\n\r\n private uniqueStrings(items: string[]): string[] {\r\n return Array.from(new Set(items));\r\n }\r\n\r\n private valueToString(value: unknown): string {\r\n return typeof value === 'string' ? value : '';\r\n }\r\n\r\n // TODO: replace placeholders with real API integration.\r\n loadDataFromApi(): void {\r\n // this.api.getWizardBootstrapData().subscribe(...)\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { UserCreationWizardService } from \"../../user-creation-wizard.service\";\r\n\r\n@Component({\r\n selector: 'tk-user-details-step',\r\n templateUrl: './user-details-step.component.html',\r\n styleUrls: ['./user-details-step.component.scss']\r\n})\r\nexport class UserDetailsStepComponent {\r\n constructor(\r\n public userCreationWizardService: UserCreationWizardService\r\n ) {}\r\n}","<section class=\"details-step-content\">\r\n <div class=\"details-step-sections\">\r\n <section class=\"details-step-section\">\r\n <h3 class=\"details-step-section__title\">User details</h3>\r\n <div class=\"details-step-section__content\">\r\n <div class=\"details-step-section__part\">\r\n <div class=\"details-inline-fields\">\r\n <div class=\"details-inline-field\">\r\n <label class=\"details-inline-field__label\">User ID</label>\r\n <mat-form-field class=\"details-step-input\" appearance=\"outline\">\r\n <input\r\n matInput\r\n placeholder=\"User ID\"\r\n [value]=\"userCreationWizardService.userDetailsForm.userId\"\r\n (input)=\"userCreationWizardService.setUserDetailsField('userId', $any($event.target).value)\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"details-inline-field\">\r\n <label class=\"details-inline-field__label\">First Name</label>\r\n <mat-form-field class=\"details-step-input\" appearance=\"outline\">\r\n <input\r\n matInput\r\n placeholder=\"First Name\"\r\n [value]=\"userCreationWizardService.userDetailsForm.firstName\"\r\n (input)=\"userCreationWizardService.setUserDetailsField('firstName', $any($event.target).value)\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"details-inline-field\">\r\n <label class=\"details-inline-field__label\">Last Name</label>\r\n <mat-form-field class=\"details-step-input\" appearance=\"outline\">\r\n <input\r\n matInput\r\n placeholder=\"Last Name\"\r\n [value]=\"userCreationWizardService.userDetailsForm.lastName\"\r\n (input)=\"userCreationWizardService.setUserDetailsField('lastName', $any($event.target).value)\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"details-inline-field\">\r\n <label class=\"details-inline-field__label\">Email</label>\r\n <mat-form-field class=\"details-step-input\" appearance=\"outline\">\r\n <input\r\n matInput\r\n placeholder=\"Email\"\r\n [value]=\"userCreationWizardService.userDetailsForm.email\"\r\n (input)=\"userCreationWizardService.setUserDetailsField('email', $any($event.target).value)\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"details-inline-field\">\r\n <label class=\"details-inline-field__label\">User Template</label>\r\n <mat-form-field class=\"details-step-input\" appearance=\"outline\">\r\n <input\r\n matInput\r\n placeholder=\"User Template\"\r\n [value]=\"userCreationWizardService.selectedTemplate || ''\"\r\n [disabled]=\"true\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"details-step-section__part\">\r\n <mat-accordion class=\"details-user-accordion\">\r\n <mat-expansion-panel togglePosition=\"before\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>Choose an existing or a LDAP user</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div class=\"details-user-accordion__content\">\r\n <table mat-table [dataSource]=\"userCreationWizardService.ldapUsers\" class=\"details-ldap-table\">\r\n <ng-container matColumnDef=\"userId\">\r\n <th mat-header-cell *matHeaderCellDef>User ID</th>\r\n <td mat-cell *matCellDef=\"let row\">{{ row.userId }}</td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"firstName\">\r\n <th mat-header-cell *matHeaderCellDef>First Name</th>\r\n <td mat-cell *matCellDef=\"let row\">{{ row.firstName }}</td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"lastName\">\r\n <th mat-header-cell *matHeaderCellDef>Last Name</th>\r\n <td mat-cell *matCellDef=\"let row\">{{ row.lastName }}</td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"email\">\r\n <th mat-header-cell *matHeaderCellDef>Email</th>\r\n <td mat-cell *matCellDef=\"let row\">{{ row.email }}</td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"add\">\r\n <th mat-header-cell *matHeaderCellDef>Add</th>\r\n <td mat-cell *matCellDef>\r\n <button mat-button class=\"details-ldap-table__add-btn\" type=\"button\">Add user</button>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"userCreationWizardService.ldapTableColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: userCreationWizardService.ldapTableColumns;\"></tr>\r\n </table>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"details-step-section\">\r\n <h3 class=\"details-step-section__title\">Lines</h3>\r\n <div class=\"details-step-section__content\">\r\n <div class=\"line-route-list\">\r\n <div class=\"line-route-row\" *ngFor=\"let lineSelection of userCreationWizardService.lineSelections; let idx = index\">\r\n <div class=\"line-route-field\">\r\n <mat-form-field class=\"details-step-select line-route-select\" appearance=\"outline\">\r\n <mat-select\r\n placeholder=\"Select line\"\r\n [value]=\"lineSelection.lineNumber\"\r\n (selectionChange)=\"userCreationWizardService.setLineSelection(idx, $event.value)\"\r\n >\r\n <mat-option *ngFor=\"let line of userCreationWizardService.lineOptions\" [value]=\"line.number\">\r\n {{ line.number }} - {{ line.did }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"line-route-field\">\r\n <mat-form-field class=\"details-step-select line-route-select\" appearance=\"outline\">\r\n <mat-select\r\n placeholder=\"Select route partition\"\r\n [value]=\"lineSelection.routePartitionName\"\r\n (selectionChange)=\"userCreationWizardService.setRoutePartitionSelection(idx, $event.value)\"\r\n >\r\n <mat-option *ngFor=\"let partition of userCreationWizardService.routePartitionOptions\" [value]=\"partition\">\r\n {{ partition }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"details-step-section\">\r\n <h3 class=\"details-step-section__title\">Devices</h3>\r\n <div class=\"details-step-section__content\">\r\n <div class=\"devices-rows\">\r\n <div class=\"details-inline-fields details-inline-fields--four\" *ngFor=\"let _row of userCreationWizardService.deviceRows; let idx = index\">\r\n <div class=\"details-inline-field\">\r\n <label class=\"details-inline-field__label\">Device type</label>\r\n <mat-form-field class=\"details-step-input\" appearance=\"outline\">\r\n <input\r\n matInput\r\n placeholder=\"Device type\"\r\n [value]=\"userCreationWizardService.deviceEntries[idx].deviceType || ''\"\r\n [disabled]=\"true\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"details-inline-field\">\r\n <label class=\"details-inline-field__label\">Protocol</label>\r\n <mat-form-field class=\"details-step-input\" appearance=\"outline\">\r\n <input\r\n matInput\r\n placeholder=\"Protocol\"\r\n [value]=\"userCreationWizardService.deviceEntries[idx].protocol || ''\"\r\n [disabled]=\"true\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"details-inline-field\">\r\n <label class=\"details-inline-field__label\">Button Template</label>\r\n <mat-form-field class=\"details-step-input\" appearance=\"outline\">\r\n <input\r\n matInput\r\n placeholder=\"Button Template\"\r\n [value]=\"userCreationWizardService.deviceEntries[idx].buttonTemplate || ''\"\r\n [disabled]=\"true\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"details-inline-field\">\r\n <label class=\"details-inline-field__label\">Name</label>\r\n <mat-form-field class=\"details-step-input\" appearance=\"outline\">\r\n <input\r\n matInput\r\n placeholder=\"Name\"\r\n [value]=\"userCreationWizardService.deviceEntries[idx].name || ''\"\r\n (input)=\"userCreationWizardService.setDeviceName(idx, $any($event.target).value)\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n</section>\r\n","import { Component } from \"@angular/core\";\r\nimport { UserCreationWizardService } from \"../../user-creation-wizard.service\";\r\n\r\n@Component({\r\n selector: 'tk-user-overview-step',\r\n templateUrl: './user-overview-step.component.html',\r\n styleUrls: ['./user-overview-step.component.scss']\r\n})\r\nexport class UserOverviewStepComponent {\r\n readonly USER_DETAILS_COLS = ['User ID', 'First name', 'Last name', 'Email', 'User templates'];\r\n readonly LINES_COLS = ['Number', 'DID', 'Route partition name', 'CSS', 'Description'];\r\n readonly DEVICES_COLS = ['Name', 'Device type', 'Lines', 'Description'];\r\n\r\n constructor(\r\n public userCreationWizardService: UserCreationWizardService\r\n ) {}\r\n}","<section class=\"details-step-content\">\r\n <div class=\"details-step-sections\">\r\n <section class=\"details-step-section\">\r\n <h3 class=\"details-step-section__title\">User details</h3>\r\n <div class=\"details-step-section__content\">\r\n <div class=\"preview-list\" [style.--preview-cols]=\"USER_DETAILS_COLS.length\">\r\n <div class=\"preview-list__header\">\r\n <span *ngFor=\"let col of USER_DETAILS_COLS\">{{ col }}</span>\r\n </div>\r\n <div class=\"preview-list__row\" *ngFor=\"let user of userCreationWizardService.overviewUsers\">\r\n <span>{{ user.userId }}</span>\r\n <span>{{ user.firstName }}</span>\r\n <span>{{ user.lastName }}</span>\r\n <span>{{ user.email }}</span>\r\n <span>{{ user.userTemplate }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n \r\n <div class=\"details-step-divider\"></div>\r\n \r\n <div class=\"details-step-sections\">\r\n <section class=\"details-step-section\">\r\n <h3 class=\"details-step-section__title\">Lines</h3>\r\n <div class=\"details-step-section__content\">\r\n <div class=\"preview-list\" [style.--preview-cols]=\"LINES_COLS.length\">\r\n <div class=\"preview-list__header\">\r\n <span *ngFor=\"let col of LINES_COLS\">{{ col }}</span>\r\n </div>\r\n <div class=\"preview-list__row\" *ngFor=\"let line of userCreationWizardService.overviewLines\">\r\n <span>{{ line.number }}</span>\r\n <span>{{ line.did }}</span>\r\n <span>{{ line.routePartitionName }}</span>\r\n <span>{{ line.css }}</span>\r\n <span>{{ line.description }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n \r\n <div class=\"details-step-divider\"></div>\r\n \r\n <div class=\"details-step-sections\">\r\n <section class=\"details-step-section\">\r\n <h3 class=\"details-step-section__title\">Devices</h3>\r\n <div class=\"details-step-section__content\">\r\n <div class=\"preview-list\" [style.--preview-cols]=\"DEVICES_COLS.length\">\r\n <div class=\"preview-list__header\">\r\n <span *ngFor=\"let col of DEVICES_COLS\">{{ col }}</span>\r\n </div>\r\n <div class=\"preview-list__row\" *ngFor=\"let device of userCreationWizardService.overviewDevices\">\r\n <span>{{ device.name }}</span>\r\n <span>{{ device.deviceType }}</span>\r\n <span>{{ device.lines }}</span>\r\n <span>{{ device.description }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n <div class=\"details-step-divider\"></div>\r\n \r\n <div class=\"details-step-sections\">\r\n <section class=\"details-step-section\">\r\n <h3 class=\"details-step-section__title\">Single Number Reach</h3>\r\n <div class=\"details-step-section__content\"></div>\r\n </section>\r\n </div>\r\n\r\n <div class=\"details-step-divider\"></div>\r\n \r\n <div class=\"details-step-sections\">\r\n <section class=\"details-step-section\">\r\n <h3 class=\"details-step-section__title\">Features</h3>\r\n <div class=\"details-step-section__content\"></div>\r\n </section>\r\n </div>\r\n\r\n</section>\r\n","import { Component, Input } from \"@angular/core\";\r\nimport { UserCreationWizardService } from \"../../user-creation-wizard.service\";\r\nimport { USER_CREATION_TYPES } from '../../../../app.constants';\r\nimport { FormBuilder, FormControl } from \"@angular/forms\";\r\nimport { filter, of, startWith, Subject, switchMap, takeUntil, tap } from \"rxjs\";\r\nimport { UserCreationApiService } from \"../../../../shared/services/user-creation-api.service\";\r\nimport { UserTemplateInterface } from \"../../../../classes/site\";\r\n\r\n@Component({\r\n selector: 'tk-user-template-step',\r\n templateUrl: './user-template-step.component.html',\r\n styleUrls: ['./user-template-step.component.scss']\r\n})\r\nexport class UserTemplateStepComponent {\r\n @Input() customerId!: number;\r\n\r\n public formGroup = this.fb.group({\r\n userType: [USER_CREATION_TYPES.CUCM],\r\n siteId: [null],\r\n userTemplateId: [''],\r\n });\r\n\r\n public userCreationType = USER_CREATION_TYPES.CUCM;\r\n\r\n public readonly USER_CREATION_TYPES = USER_CREATION_TYPES;\r\n readonly defaultTemplateName = 'User 8851 Office';\r\n readonly fallbackTemplateId = '-1';\r\n\r\n private readonly destroy$ = new Subject<void>();\r\n\r\n public readonly sitesList$ = this.userCreationService.sitesList$.pipe(takeUntil(this.destroy$));\r\n public readonly templatesList$ = this.userCreationService.templatesList$.pipe(\r\n tap((templates) => {\r\n this.templates = templates || [];\r\n const templateControl = this.formGroup.get('userTemplateId');\r\n const currentTemplateId = templateControl?.value;\r\n const selectedSiteId = this.formGroup.get('siteId')?.value;\r\n const defaultTemplate = this.templates.find(\r\n template => template.name === this.defaultTemplateName\r\n );\r\n\r\n const hasSelectedSite = selectedSiteId !== null && selectedSiteId !== undefined;\r\n if (hasSelectedSite && defaultTemplate && String(currentTemplateId || '') !== String(defaultTemplate.id)) {\r\n templateControl?.setValue(String(defaultTemplate.id));\r\n }\r\n }),\r\n takeUntil(this.destroy$)\r\n );\r\n\r\n isTemplateSelectable = false;\r\n templates: UserTemplateInterface[] = [];\r\n\r\n public readonly templateToggleFormControl = new FormControl(true);\r\n\r\n constructor(\r\n public userCreationWizardService: UserCreationWizardService,\r\n private readonly userCreationService: UserCreationApiService,\r\n private readonly fb: FormBuilder,\r\n ) {}\r\n\r\n ngOnInit() {\r\n\r\n this.formGroup!.get('userType')!.valueChanges\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((value) => {\r\n const isOnlyWithLocations = value === USER_CREATION_TYPES.MT ? true : false;\r\n this.getSites(isOnlyWithLocations).subscribe();\r\n this.reseFieldstForm();\r\n });\r\n\r\n this.formGroup!.get('siteId')!.valueChanges\r\n .pipe(\r\n filter((value) => value !== null && value !== undefined),\r\n tap(() => {\r\n this.formGroup.get('userTemplateId')?.setValue(this.fallbackTemplateId);\r\n this.userCreationWizardService.setSelectedTemplate(this.defaultTemplateName);\r\n }),\r\n startWith(this.formGroup.get('siteId')?.value),\r\n takeUntil(this.destroy$),\r\n switchMap((value) => this.userCreationService.fetchAllUserTemplates(Number(value))),\r\n // switchMap((value) => this.userCreationService.getSiteData(this.formGroup!.get('siteId')?.value || 7095))\r\n )\r\n .subscribe();\r\n\r\n this.formGroup!.get('userTemplateId')!.valueChanges\r\n .pipe(\r\n filter((value) => value !== null && value !== undefined && String(value).trim().length > 0),\r\n takeUntil(this.destroy$),\r\n switchMap((value) => {\r\n if (String(value) === this.fallbackTemplateId) {\r\n this.userCreationWizardService.setSelectedTemplate(this.defaultTemplateName);\r\n return of(null);\r\n }\r\n return this.userCreationService.getUserTemplateToken(String(value), String(String(this.customerId)))\r\n .pipe(\r\n tap((payload) => {\r\n const selectedTemplate = this.templates.find(template => String(template.id) === String(value));\r\n this.userCreationWizardService.setSelectedTemplate(selectedTemplate?.name || null);\r\n this.userCreationWizardService.applyTemplateTokenPayload(payload);\r\n })\r\n );\r\n })\r\n )\r\n .subscribe();\r\n\r\n // this.templateToggleFormControl.valueChanges\r\n // .pipe(startWith(true), takeUntil(this.destroy$), distinctUntilChanged())\r\n // .subscribe((value) => {\r\n // if(value === true) {\r\n // const siteId = this.formGroup.get('siteId')?.value || 7095;\r\n // this.userCreationService.fetchAllUserTemplates(siteId)\r\n // .subscribe();\r\n // } else {\r\n // this.formGroup.get('userTemplateId')?.reset();\r\n // }\r\n // });\r\n\r\n this.getData();\r\n }\r\n\r\n reseFieldstForm() {\r\n this.formGroup.get('siteId')?.reset();\r\n this.formGroup.get('userTemplateId')?.reset();\r\n this.userCreationWizardService.setSelectedTemplate(null);\r\n this.userCreationWizardService.resetTemplateDrivenData();\r\n }\r\n\r\n private getData() {\r\n const isOnlyWithLocations = this.formGroup!.get('userType')?.value === USER_CREATION_TYPES.MT ? true : false;\r\n\r\n this.userCreationService.checkControlHubIntegration(String(this.customerId))\r\n .pipe(switchMap(() => this.getSites(isOnlyWithLocations)))\r\n .subscribe();\r\n }\r\n\r\n private getSites(isOnlyWithLocations: boolean) {\r\n return this.userCreationService.getAllCustomerSites(String(this.customerId), isOnlyWithLocations);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}","<section class=\"template-step-content\">\r\n <ng-container [formGroup]=\"formGroup\">\r\n <div class=\"template-step-field template-step-field--user-type\">\r\n <label class=\"template-step-label\">User type</label>\r\n <mat-radio-group class=\"user-type-mat-radio-group\" formControlName=\"userType\">\r\n <mat-radio-button class=\"user-type-mat-radio\" id=\"userCreationCucm\" [value]=\"USER_CREATION_TYPES.CUCM\">\r\n CUCM\r\n </mat-radio-button>\r\n <mat-radio-button class=\"user-type-mat-radio\" id=\"userCreationMT\" [value]=\"USER_CREATION_TYPES.MT\">\r\n MT\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"template-step-field\">\r\n <label class=\"template-step-label\">Select site</label>\r\n <mat-form-field class=\"template-step-select\" appearance=\"outline\">\r\n <mat-select\r\n placeholder=\"Site name\"\r\n formControlName=\"siteId\">\r\n <mat-option *ngFor=\"let site of sitesList$ | async\" [value]=\"site.id\">\r\n {{ site.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <ng-container *ngIf=\"formGroup.get('userType')?.value === USER_CREATION_TYPES.CUCM\">\r\n <div class=\"template-step-field\">\r\n <!-- <label class=\"template-step-label\">Would you like to use a template for the user creation?</label>\r\n <mat-radio-group [formControl]=\"templateToggleFormControl\">\r\n <mat-radio-button [color]=\"'primary'\" [value]=\"true\">\r\n {{ 'Yes' }}\r\n </mat-radio-button>\r\n <mat-radio-button [color]=\"'primary'\" [value]=\"false\">\r\n {{ 'No' }}\r\n </mat-radio-button>\r\n </mat-radio-group> -->\r\n\r\n <!-- <ng-container *ngIf=\"templateToggleFormControl.value === true\"> -->\r\n <label class=\"template-step-label\">Select user template</label>\r\n <mat-form-field class=\"template-step-select\" appearance=\"outline\">\r\n <mat-select\r\n placeholder=\"Templates\"\r\n formControlName=\"userTemplateId\">\r\n <mat-option [value]=\"fallbackTemplateId\">\r\n {{ defaultTemplateName }}\r\n </mat-option>\r\n <mat-option *ngFor=\"let template of templatesList$ | async\" [value]=\"template.id\">\r\n {{ template.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- </ng-container> -->\r\n </div>\r\n </ng-container>\r\n \r\n </ng-container>\r\n</section>\r\n","import { Component, EventEmitter, inject, Input, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { APIService } from '../../shared/api/api.service';\r\n\r\n@Component({\r\n selector: 'tk-user-creation-wizard',\r\n templateUrl: './user-creation-wizard.component.html',\r\n styleUrls: ['./user-creation-wizard.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UserCreationWizardComponent implements OnInit, OnDestroy {\r\n private readonly apiService = inject(APIService);\r\n\r\n @Input() title = 'Create User';\r\n \r\n @Input() token!: string;\r\n @Input() customerId!: number;\r\n\r\n @Output() cancel = new EventEmitter<void>();\r\n @Output() submit = new EventEmitter<void>();\r\n isSubmitting = false;\r\n private submitTimerId: number | null = null;\r\n\r\n ngOnInit(): void {\r\n this.apiService.token = this.token;\r\n }\r\n\r\n onCancel(): void {\r\n this.cancel.emit();\r\n }\r\n\r\n onSubmit(): void {\r\n if (this.isSubmitting) {\r\n return;\r\n }\r\n\r\n this.isSubmitting = true;\r\n\r\n const delayMs = 3000 + Math.floor(Math.random() * 1001);\r\n this.submitTimerId = window.setTimeout(() => {\r\n this.isSubmitting = false;\r\n this.submitTimerId = null;\r\n this.submit.emit();\r\n }, delayMs);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.submitTimerId) {\r\n window.clearTimeout(this.submitTimerId);\r\n this.submitTimerId = null;\r\n }\r\n }\r\n}\r\n","<div class=\"move-user-stepper-container\" [attr.aria-busy]=\"isSubmitting\">\r\n <header class=\"move-user-header\">\r\n <div class=\"move-user-header__title\">{{ title }}</div>\r\n <div class=\"move-user-header__close\">\r\n <span class=\"app-icon user-creation-close-icon\" (click)=\"onCancel()\"></span>\r\n </div>\r\n </header>\r\n\r\n <div id=\"user-creation-stepper\">\r\n <mat-stepper [linear]=\"false\" labelPosition=\"bottom\" #stepper>\r\n <mat-step>\r\n <div class=\"step-title\">Step 1: User creation with template</div>\r\n <ng-template matStepLabel>User creation</ng-template>\r\n\r\n <div class=\"move-user-tab-content-box\">\r\n <tk-user-template-step [customerId]=\"customerId\"></tk-user-template-step>\r\n </div>\r\n </mat-step>\r\n\r\n <mat-step>\r\n <div class=\"step-title\">Step 2 : User details</div>\r\n <ng-template matStepLabel>User details</ng-template>\r\n\r\n <div class=\"move-user-tab-content-box\">\r\n <tk-user-details-step></tk-user-details-step>\r\n </div>\r\n </mat-step>\r\n\r\n <mat-step>\r\n <div class=\"step-title\">Step 3: Review</div>\r\n <ng-template matStepLabel>Review</ng-template>\r\n\r\n <div class=\"move-user-tab-content-box\">\r\n <tk-user-overview-step></tk-user-overview-step>\r\n </div>\r\n </mat-step>\r\n </mat-stepper>\r\n\r\n <div class=\"wizard-actions\">\r\n <ng-container [ngSwitch]=\"stepper.selectedIndex\">\r\n <ng-container *ngSwitchCase=\"0\">\r\n <button mat-button class=\"uc-btn uc-btn-primary\" type=\"button\" (click)=\"stepper.next()\">\r\n Next\r\n </button>\r\n <button mat-button class=\"uc-btn uc-btn-secondary\" type=\"button\" (click)=\"onCancel()\">\r\n Cancel\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"1\">\r\n <button mat-button class=\"uc-btn uc-btn-primary\" type=\"button\" (click)=\"stepper.next()\">\r\n Next\r\n </button>\r\n <button mat-button class=\"uc-btn uc-btn-secondary\" type=\"button\" (click)=\"stepper.previous()\">\r\n Previous\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"2\">\r\n <button\r\n mat-button\r\n class=\"uc-btn uc-btn-primary\"\r\n type=\"button\"\r\n [disabled]=\"isSubmitting\"\r\n (click)=\"onSubmit()\"\r\n >\r\n <span class=\"uc-btn__inline-content\">\r\n <span class=\"uc-btn__spinner\" *ngIf=\"isSubmitting\" aria-hidden=\"true\"></span>\r\n <span>{{ isSubmitting ? 'Creating...' : 'Create' }}</span>\r\n </span>\r\n </button>\r\n <button\r\n mat-button\r\n class=\"uc-btn uc-btn-secondary\"\r\n type=\"button\"\r\n [disabled]=\"isSubmitting\"\r\n (click)=\"stepper.previous()\"\r\n >\r\n Previous\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"wizard-loading-overlay\" [class.wizard-loading-overlay--visible]=\"isSubmitting\" aria-hidden=\"true\"></div>\r\n</div>\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatExpansionModule } from \"@angular/material/expansion\";\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatStepperModule } from \"@angular/material/stepper\";\r\nimport { MaterialModule } from \"./shared/material.module\";\r\nimport { UserCreationApiService } from \"./shared/services/user-creation-api.service\";\r\nimport { SharedModule } from \"./shared/shared.module\";\r\nimport { UserDetailsStepComponent } from \"./widgets/user-creation-wizard/components/user-details-step/user-details-step.component\";\r\nimport { UserOverviewStepComponent } from \"./widgets/user-creation-wizard/components/user-overview-step/user-overview-step.component\";\r\nimport { UserTemplateStepComponent } from \"./widgets/user-creation-wizard/components/user-template-step/user-template-step.component\";\r\nimport { UserCreationWizardComponent } from \"./widgets/user-creation-wizard/user-creation-wizard.component\";\r\nimport { UserCreationWizardService } from \"./widgets/user-creation-wizard/user-creation-wizard.service\";\r\n\r\n@NgModule({\r\n declarations: [\r\n UserCreationWizardComponent,\r\n UserTemplateStepComponent,\r\n UserDetailsStepComponent,\r\n UserOverviewStepComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n MaterialModule,\r\n MatStepperModule,\r\n MatExpansionModule,\r\n FormsModule, \r\n ReactiveFormsModule,\r\n MatRadioModule\r\n ],\r\n exports: [\r\n UserCreationWizardComponent\r\n ],\r\n providers: [\r\n UserCreationApiService,\r\n UserCreationWizardService,\r\n ]\r\n})\r\nexport class UserCreationModule {}","/*\r\n * Public API Surface of @tuki-io/tuki-widgets\r\n */\r\n\r\n// Shared Components\r\n// export * from './shared/shared.module';\r\n\r\n// Widget Modules\r\nexport * from './src/user-creation.module';\r\n\r\n// Components\r\n// export * from './shared/components/index';\r\nexport * from './src/widgets/user-creation-wizard/user-creation-wizard.component';\r\n\r\n// Types\r\n// export * from './shared/types/data-table';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.UserCreationWizardService","i2","i4","i2.UserCreationApiService","i3","i6","i7","i8","i1","i4.UserTemplateStepComponent","i5.UserDetailsStepComponent","i6.UserOverviewStepComponent"],"mappings":"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"}