@tuki-io/tuki-widgets 0.0.26 → 0.0.27

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.
@@ -1 +1 @@
1
- {"version":3,"file":"tuki-io-tuki-widgets-user-manage.mjs","sources":["../../../../projects/tuki/widgets/user-manage/src/services/api.service.ts","../../../../projects/tuki/widgets/user-manage/src/app.constants.ts","../../../../projects/tuki/widgets/user-manage/src/services/site-settings.service.ts","../../../../projects/tuki/widgets/user-manage/src/common-functions.ts","../../../../projects/tuki/widgets/user-manage/src/classes/line-directory.ts","../../../../projects/tuki/widgets/user-manage/src/classes/line-call-info-display.ts","../../../../projects/tuki/widgets/user-manage/src/classes/translation-pattern.ts","../../../../projects/tuki/widgets/user-manage/src/classes/line-association.ts","../../../../projects/tuki/widgets/user-manage/src/classes/device.ts","../../../../projects/tuki/widgets/user-manage/src/classes/simplified-user.ts","../../../../projects/tuki/widgets/user-manage/src/services/utils.service.ts","../../../../projects/tuki/widgets/user-manage/src/services/sorting-utils.service.ts","../../../../projects/tuki/widgets/user-manage/src/services/line.service.ts","../../../../projects/tuki/widgets/user-manage/src/services/user.service.ts","../../../../projects/tuki/widgets/user-manage/src/utils/app-loader/app-loader.ts","../../../../projects/tuki/widgets/user-manage/src/utils/app-loader/app-loader.component.html","../../../../projects/tuki/widgets/user-manage/src/interseptors/auth.interceptor.ts","../../../../projects/tuki/widgets/user-manage/src/user-info/user-info.component.ts","../../../../projects/tuki/widgets/user-manage/src/user-info/user-info.component.html","../../../../projects/tuki/widgets/user-manage/src/material.module.ts","../../../../projects/tuki/widgets/user-manage/src/environments/environment.ts","../../../../projects/tuki/widgets/user-manage/src/classes/notification.ts","../../../../projects/tuki/widgets/user-manage/src/services/notification.service.ts","../../../../projects/tuki/widgets/user-manage/src/notifications/notification.component.ts","../../../../projects/tuki/widgets/user-manage/src/notifications/notification.component.html","../../../../projects/tuki/widgets/user-manage/src/classes/user-list.ts","../../../../projects/tuki/widgets/user-manage/src/removeKynFromIBM.service.ts","../../../../projects/tuki/widgets/user-manage/src/services/users-search.service.ts","../../../../projects/tuki/widgets/user-manage/src/utils/pagination/pagination.component.ts","../../../../projects/tuki/widgets/user-manage/src/utils/pagination/pagination.component.html","../../../../projects/tuki/widgets/user-manage/src/services/removeKynFromIBM.service.ts","../../../../projects/tuki/widgets/user-manage/src/lazy-loading-select/lazy-loading-select.component.ts","../../../../projects/tuki/widgets/user-manage/src/lazy-loading-select/lazy-loading-select.component.html","../../../../projects/tuki/widgets/user-manage/src/classes/line.ts","../../../../projects/tuki/widgets/user-manage/src/services/dns.service.ts","../../../../projects/tuki/widgets/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.ts","../../../../projects/tuki/widgets/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.html","../../../../projects/tuki/widgets/user-manage/src/user-calling/user-calling.component.ts","../../../../projects/tuki/widgets/user-manage/src/user-calling/user-calling.component.html","../../../../projects/tuki/widgets/user-manage/src/user-manage-widget.component.ts","../../../../projects/tuki/widgets/user-manage/src/user-manage-widget.component.html","../../../../projects/tuki/widgets/user-manage/src/user-manage.module.ts","../../../../projects/tuki/widgets/user-manage/tuki-io-tuki-widgets-user-manage.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { TableDataInterface } from '../classes/table-data';\nimport { Observable } from 'rxjs';\n\n\n\n@Injectable()\nexport class APIService {\n public token: any;\n apiUrl = window.location.protocol + '//' + window.location.hostname + '/dcp';\n\n constructor(\n private httpClient: HttpClient\n ) {\n }\n\n fetch(url: string, params?: any, cache?: boolean) {\n const headers = this.getHeaders(cache);\n params = params || {};\n return this.httpClient.get(this.apiUrl + url, {params: this.prepareEncodedParams(params), headers});\n }\n\n post(url: string, body: any, params = {}): any {\n body = body || null;\n const headers = this.getHeaders();\n return this.httpClient.post(this.apiUrl + url, body, {params: this.prepareEncodedParams(params), headers});\n }\n\n // use when response extended data is necessary:\n postExtended(url: string, body = null, params = {}, headers = {}) {\n headers = headers || this.getHeaders();\n return this.httpClient.post(this.apiUrl + url, body, {\n headers,\n observe: 'response',\n params: this.prepareEncodedParams(params)\n });\n }\n\n put(url: string, body = null, params = {}) {\n const headers = this.getHeaders();\n return this.httpClient.put(this.apiUrl + url, body, {headers, params: this.prepareEncodedParams(params)});\n }\n\n delete(url: string, params = {}) {\n const headers = this.getHeaders();\n return this.httpClient.delete(this.apiUrl + url, {headers, params: this.prepareEncodedParams(params)});\n }\n\n fetchPagination(url: string, pageSize: number, pageNumber: number, additionalParams = {}, cache?: boolean): Observable<TableDataInterface> {\n const copyAdditionalParams = JSON.parse(JSON.stringify(additionalParams));\n const params = Object.assign(copyAdditionalParams, {size: pageSize.toString(), page: pageNumber.toString()});\n return this.fetch(url, params, cache) as Observable<TableDataInterface>;\n }\n\n private prepareEncodedParams(params: any) {\n const result: any = {};\n\n if (!params) {\n return {};\n }\n for (const key of Object.keys(params)) {\n if (params[key]) {\n const stringParam = params[key].toString();\n result[key] = stringParam.includes('+') ? encodeURIComponent(stringParam) : stringParam;\n }\n }\n return result;\n }\n\n private getHeaders(cache?: boolean): HttpHeaders {\n let headers = new HttpHeaders();\n if (cache) {\n headers = headers.append('_Cache', 'true ');\n }\n const token = this.token || this.getParameterByName('token');\n headers = headers.append('Authorization', 'Bearer '+ token);\n return headers;\n }\n\n private getParameterByName(name: any, url = window.location.href) {\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\n results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return '';\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n }\n\n}\n","export const API = {\n USER_TOKEN: '/api/provision/:siteId/users/:userId/token',\n UPDATE_USER_FIELDS: '/api/provision/:siteId/userFields/:token',\n PERSIST_USER_CACHE: '/api/provision/:siteId/saveUser/:token',\n USER_BY_ID: '/api/provision/:siteId/users/:userId',\n QUICK_USERS_SEARCH: \"/api/search/quickusers\",\n LOCATION: \"/api/provision/options/:siteId/locations\",\n USER_LOCALES: \"/api/provision/options/:siteId/userlocales\",\n USER_PROFILES: \"/api/provision/options/:siteId/userprofiles\",\n AVAILABLE_DN_IN_RANGES: \"/api/sites/:siteId/available-dn-in-ranges\",\n DELETE_LINE: \"/api/provision/:siteId/deleteLine/:pkid/:token\",\n DISASSOCIATE_LINE: \"/api/provision/:siteId/:deviceName/deleteLineAssociation/:linePkid/:token\",\n CHECK_DELETE_LINE: \"/api/provision/:siteId/checklinedeletion\",\n ASSOCIATE_LINE: \"/api/provision/:siteId/:deviceName/createLineAssociation/:token\",\n CHECK_DESTINATION_NUMBER: \"/api/provision/:siteId/check-dn\",\n UPDATE_LINE_FIELDS: \"/api/provision/:siteId/lineFields/:pkid/:token\",\n UPDATE_DEVICE_FIELDS: \"/api/provision/:siteId/deviceFields/:deviceName/:token\"\n};\nexport const REGEX_PATTERN = {\n EMAIL: '^(([^<>()\\\\[\\\\]\\\\\\\\.,;:\\\\s@\"]+(\\\\.[^<>()\\\\[\\\\]\\\\\\\\.,;:\\\\s@\"]+)*)|(\".+\"))' +\n '@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])' +\n '?(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])?)*$'\n};\n\nexport const PAGINATION_DEFAULTS = {\n SIZE: 10,\n INDEX: 0\n}\nexport const PAGINATION_SIZE_OPTIONS = [\n 10,\n 50,\n 100,\n 500\n];\nexport const CUCS_TO_IGNORE = [\n 189,\n 194,\n 191,\n 190\n];\nexport const CUCMS_TO_IGNORE = [\n 249,\n 255,\n 251,\n 250\n];\nexport const RECORDING_MEDIA_SOURCE = [\n \"Gateway Preferred\",\n \"Phone Preferred\"\n];\n","import { Injectable, OnInit } from '@angular/core';\nimport { APIService } from './api.service';\nimport { API } from '../app.constants';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nconst urlMap = {\n locations: API.LOCATION,\n userLocales: API.USER_LOCALES,\n userProfiles: API.USER_PROFILES\n}\n\n@Injectable()\nexport class SiteSettingsService {\n\n constructor(\n private apiService: APIService\n ) {\n\n }\n public getSelectionOptions(siteId: number, token: string): any {\n if(!siteId) {\n return;\n }\n // @ts-ignore\n const URL = urlMap[token];\n return this.apiService.fetch(URL.replace(':siteId', String(siteId)), null, true)\n // @ts-ignore\n .pipe(map((options: string[]) => {\n // @ts-ignore\n this[token] = options ? options.sort() : [];\n // @ts-ignore\n return this[token];\n }))\n }\n}\n","export const getSavableData = (model: any, exclude?: Array<string>) => {\n let result = Object.keys(model);\n if (exclude && exclude.length) {\n result = result.filter(key => !exclude.some(item => item === key));\n }\n return result.reduce((result, key) => {\n if (model[key] instanceof Array && model[key].length && model[key][0].getSavableData) {\n (result as any)[key] = model[key].map((item: any) => item.getSavableData());\n } else if (model[key] instanceof Object && model[key].getSavableData) {\n (result as any)[key] = model[key].getSavableData();\n } else {\n (result as any)[key] = model[key];\n }\n return result;\n }, {});\n};\n","import { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { getSavableData } from '../common-functions';\nimport { LineDirectoryInterface } from './line';\n\nexport class LineDirectory implements LineDirectoryInterface {\n directoryNumber!: string;\n templateDirectoryNumber!: string;\n routePartitionName!: string;\n pkid!: string;\n dnType!: string;\n displayValue!: string;\n subType!: string;\n\n // non-savable data fields\n form!: FormGroup;\n\n constructor(lineDirectory: LineDirectoryInterface) {\n Object.assign(this, lineDirectory || {});\n // @ts-ignore\n if (this.directoryNumber && this.routePartitionName) {\n this.displayValue = `${this.directoryNumber}/${this.routePartitionName}`;\n }\n this.initForm();\n }\n\n getSavableData() {\n return getSavableData(this, ['form', 'displayValue', 'templateDirectoryNumber']);\n }\n\n equal(itemToCompare: any): boolean {\n return JSON.stringify(this.getSavableData()) === JSON.stringify(itemToCompare.getSavableData());\n }\n\n initForm() {\n const formBuilder = new FormBuilder();\n const formSettings = {\n directoryNumber: [{value: this.directoryNumber || '', disabled: true}, [Validators.required]],\n routePartitionName: [{value: this.routePartitionName || '', disabled: true}]\n };\n this.form = formBuilder.group(formSettings);\n }\n}\n","import { LineCallInfoDisplayInterface } from './device';\nimport { FormGroup } from '@angular/forms';\nimport { getSavableData } from '../common-functions';\n\nexport class LineCallInfoDisplay implements LineCallInfoDisplayInterface {\n callerName!: string;\n callerNumber!: string;\n redirectedNumber!: string;\n dialedNumber!: string;\n\n // non-savable data fields\n form!: FormGroup;\n\n constructor(lineCallInfoDisplay: LineCallInfoDisplayInterface) {\n Object.assign(this, lineCallInfoDisplay || {});\n }\n\n getSavableData() {\n return getSavableData(this, ['form']);\n }\n}\n","import {FormBuilder, FormGroup} from '@angular/forms';\nimport { TranslationPatternInterface } from './line';\nimport { getSavableData } from '../common-functions';\n\nexport class TranslationPattern implements TranslationPatternInterface {\n pattern!: string;\n calledPartyTransformationMask!: string;\n description!: string;\n site!: any;\n hasMultipleSites!: boolean;\n multipleSitesId!: string;\n cucmId!: number;\n\n // non-savable data fields\n form!: FormGroup;\n isNewForExistingLine!: boolean;\n\n constructor(translationPattern?: TranslationPatternInterface) {\n Object.assign(this, translationPattern || {});\n this.initForm();\n }\n\n public getSavableData() {\n return getSavableData(this, ['form', 'isNewForExistingLine']);\n }\n\n initForm() {\n const formBuilder = new FormBuilder();\n const formSettings = {\n pattern: [{value: this.pattern || ''}],\n calledPartyTransformationMask: [{value: this.calledPartyTransformationMask || ''}]\n };\n this.form = formBuilder.group(formSettings);\n }\n\n public getSiteId() {\n if (this.site && this.site.id != null) {\n return this.site.id;\n }\n if (this.hasMultipleSiteIds()) {\n return this.multipleSitesId.split(',')[0];\n }\n return null;\n }\n\n private hasMultipleSiteIds(): boolean {\n return this.hasMultipleSites && !!this.multipleSitesId && this.multipleSitesId.length > 0;\n }\n}\n","import { LineDirectory } from './line-directory';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { LineCallInfoDisplay } from './line-call-info-display';\nimport { TranslationPattern } from './translation-pattern';\nimport { RecordingOptions } from './device';\nimport { LineAssociationInterface } from './line-association-interface';\nimport { getSavableData } from '../common-functions';\nimport { RECORDING_MEDIA_SOURCE } from '../app.constants';\n\nexport class LineAssociation implements LineAssociationInterface {\n index!: number;\n position: any;\n e164Mask!: string;\n textLabel!: string;\n displayLabel!: string;\n displayLabelAscii!: string;\n directoryNumber!: any;\n didPattern!: any;\n mappedDids!: Array<string>;\n linePkid!: string;\n maxNumberOfCalls!: number;\n busyTrigger!: number;\n recordingOption!: RecordingOptions;\n recordingProfile!: string;\n recordingMediaSource!: string;\n visualMWI!: string;\n audibleMWI!: string;\n ringSetting_idle!: string;\n ringSetting_active!: string;\n pickupAAS_idle!: string;\n pickupAAS_active!: string;\n monitorCSS!: string;\n logMissedCall!: string;\n callInfoDisplay!: LineCallInfoDisplay;\n lineLocalId!: string;\n callerName!: string;\n callerNumber!: string;\n redirectedNumber!: string;\n dialedNumber!: string;\n // non-savable data fields\n viewMode!: boolean;\n form!: FormGroup;\n sharedUsers = [];\n sharedDevices = [];\n callingSearchSpace!: string;\n ownerUserId!: Array<string>;\n associated!: boolean;\n patternUsage!: boolean;\n plarDestinationNumber!: string;\n prefixDigits!: string;\n plarDescription!: string;\n plarEnabled!: boolean;\n alertingName!: string;\n description!: string;\n populateWithDid!: boolean;\n\n constructor(lineAssociation: any) {\n Object.assign(this, lineAssociation || {});\n if (lineAssociation) {\n this.index = lineAssociation.index || null;\n this.position = lineAssociation.position || null;\n this.e164Mask = lineAssociation.e164Mask || '';\n this.textLabel = lineAssociation.textLabel || '';\n this.displayLabel = lineAssociation.displayLabel || '';\n this.displayLabelAscii = lineAssociation.displayLabelAscii || '';\n this.linePkid = lineAssociation.linePkid || lineAssociation.pkid || '';\n this.maxNumberOfCalls = lineAssociation.maxNumberOfCalls || null;\n this.busyTrigger = lineAssociation.busyTrigger || null;\n this.directoryNumber = new LineDirectory(lineAssociation.directoryNumber);\n this.didPattern = new TranslationPattern(lineAssociation.didPattern);\n this.recordingOption = lineAssociation.recordingOption || RecordingOptions.disabled;\n this.recordingProfile = lineAssociation.recordingProfile || '';\n this.recordingMediaSource = lineAssociation.recordingMediaSource || RECORDING_MEDIA_SOURCE[0];\n this.visualMWI = lineAssociation.visualMWI || '';\n this.audibleMWI = lineAssociation.audibleMWI || '';\n this.ringSetting_idle = lineAssociation.ringSetting_idle || '';\n this.ringSetting_active = lineAssociation. ringSetting_active || '';\n this.pickupAAS_idle = lineAssociation.pickupAAS_idle || '';\n this.pickupAAS_active = lineAssociation.pickupAAS_active || '';\n this.monitorCSS = lineAssociation.monitorCSS || '';\n this.logMissedCall = lineAssociation.logMissedCall || true;\n this.callInfoDisplay = new LineCallInfoDisplay(lineAssociation.callInfoDisplay);\n this.lineLocalId = lineAssociation.lineLocalId || lineAssociation.localId || '';\n this.callingSearchSpace = lineAssociation.callingSearchSpace || '';\n this.ownerUserId = lineAssociation.ownerUserId;\n this.associated = lineAssociation.associated;\n this.alertingName = lineAssociation.alertingName;\n this.description = lineAssociation.description;\n this.patternUsage = lineAssociation.patternUsage;\n this.plarDestinationNumber = lineAssociation.plarDestinationNumber;\n this.prefixDigits = lineAssociation.prefixDigits;\n this.plarDescription = lineAssociation.plarDescription;\n this.plarEnabled = lineAssociation.plarEnabled;\n this.populateWithDid = lineAssociation.populateWithDid;\n }\n this.initForm();\n }\n\n getSavableData() {\n const excludedFields = ['viewMode', 'form', 'callingSearchSpace', 'plarDestinationNumber', 'prefixDigits', 'plarDescription', 'plarEnabled'];\n return getSavableData(this, excludedFields);\n }\n\n getDnSavableData() {\n\n }\n\n initForm() {\n // TEMP simplified line form\n const formBuilder = new FormBuilder();\n const formSettings = {\n directoryNumber: [this.directoryNumber.directoryNumber || ''],\n };\n this.form = formBuilder.group(formSettings);\n }\n\n /*initForm(appValidators: ValidationService) {\n const formBuilder = new FormBuilder();\n const formSettings = {\n displayLabel: [this.displayLabel || '', [Validators.maxLength(30), Validators.pattern('[^%&\\\\[{}|\"<>\\\\]]*')]],\n alertingName: [this.alertingName || ''],\n description: [this.description || ''],\n e164Mask: [this.e164Mask || '', [appValidators.e164MaskLabel]],\n displayLabelAscii: [this.displayLabelAscii || '', [appValidators.displayLabelAscii]],\n textLabel: [this.textLabel || '', [Validators.maxLength(30), Validators.pattern('[^\"]*')]],\n maxNumberOfCalls: [this.maxNumberOfCalls || '', [ Validators.min(0)]],\n busyTrigger: [this.busyTrigger || '', [Validators.min(0), Validators.max(this.maxNumberOfCalls || 200)]],\n recordingOption: [this.recordingOption || ''],\n recordingProfile: [this.recordingProfile || '', [appValidators.conditionalRequired('recordingOption',\n [RecordingOptions.auto_enabled, RecordingOptions.selective_enabled])]],\n recordingMediaSource: [this.recordingMediaSource || ''],\n visualMWI: [this.visualMWI || ''],\n audibleMWI: [this.audibleMWI || ''],\n ringSetting_idle: [this.ringSetting_idle || ''],\n ringSetting_active: [this.ringSetting_active || ''],\n pickupAAS_idle: [this.pickupAAS_idle || ''],\n pickupAAS_active: [this.pickupAAS_active || ''],\n monitorCSS: [this.monitorCSS || ''],\n logMissedCall: [this.logMissedCall === 'true'],\n callerName: [this.callInfoDisplay && this.callInfoDisplay.callerName === 'true'],\n callerNumber: [this.callInfoDisplay && this.callInfoDisplay.callerNumber === 'true'],\n redirectedNumber: [this.callInfoDisplay && this.callInfoDisplay.redirectedNumber === 'true'],\n dialedNumber: [this.callInfoDisplay && this.callInfoDisplay.dialedNumber === 'true' ]\n };\n this.form = formBuilder.group(formSettings);\n if (this.directoryNumber) {\n this.form.addControl('directoryNumber', this.directoryNumber.form);\n }\n if (this.didPattern) {\n this.form.addControl('didPattern', this.didPattern.form);\n }\n }*/\n\n equals(line: LineAssociation | any) {\n if (!line) {\n return false;\n }\n return this.directoryNumber.directoryNumber === line.directoryNumber.directoryNumber &&\n this.directoryNumber.routePartitionName === line.directoryNumber.routePartitionName;\n }\n}\n","import { getSavableData } from '../common-functions';\nimport { EntityChangeType } from './line';\nimport { LineAssociation } from './line-association';\nimport { LineAssociationInterface } from './line-association-interface';\n\nexport class Device {\n // simplified TEMP\n name!: string;\n pkiid!: string\n deviceType!: string;\n lineAssociations!: LineAssociation[] | LineAssociationInterface[];\n\n constructor(device: any) {\n if (device) {\n this.name = device.name;\n this.deviceType = device.deviceType;\n this.pkiid = device.pkiid;\n this.lineAssociations = device.lineAssociations?.length ?\n device.lineAssociations.map((line: any) => new LineAssociation(line)) : [];\n }\n }\n\n getSavableData() {\n const excludedFields: string[] = ['form'];\n return getSavableData(this, excludedFields);\n }\n}\n\nexport interface DeviceInterface {\n name: string;\n newName: string;\n pkid: string;\n entityChangeType: EntityChangeType;\n deviceType: string;\n protocol: string;\n description: string;\n buttonTemplate: string;\n softkeyTemplate: string;\n devicePoolName: string;\n location: string;\n userLocale: string;\n enabledExtensionMobility: boolean;\n callingSearchSpaceName: string;\n services: string[];\n networkLocale: string;\n securityProfile: string;\n lineAssociations: LineAssociationInterface[];\n speedDials: SpeedDialInterface[];\n sipProfile: string;\n subscribeCallingSearchSpaceName: string;\n commonPhoneConfigName: string;\n ctiRemoteDevice: boolean;\n firstExpansionModule: string;\n secondExpansionModule: string;\n thirdExpansionModule: string;\n builtInBridge: string;\n extraOptions: DeviceExtraOptionsInterface;\n formDisabledControls: string[];\n sharedUsers: string[];\n busyLampFields: BusyLampFieldsInterface[];\n meetMeEnabled: boolean;\n deviceKind: any;\n isCtiRoutePoint: boolean;\n cucmId: string;\n plarDevice: boolean;\n firmwareVersion: any;\n certificateOperation: string;\n authenticationMode: string;\n authenticationString: string;\n rsaKeySize: string;\n operationCompletesBy: string;\n certificateStatus: string;\n day: string;\n month: string;\n year: string;\n hour: string;\n securityProfileUuid: string;\n excludeDeviceExtraOptions: boolean;\n webexUUID: string;\n}\nexport interface SpeedDialInterface {\n index: number;\n position: number;\n destination: string;\n label: string;\n editMode: boolean;\n}\nexport enum RecordingOptions {\n disabled = 'Call Recording Disabled',\n auto_enabled = 'Automatic Call Recording Enabled',\n selective_enabled = 'Selective Call Recording Enabled'\n}\nexport interface LineCallInfoDisplayInterface {\n callerName: string;\n callerNumber: string;\n redirectedNumber: string;\n dialedNumber: string;\n}\nexport interface SiteShortDataInterface {\n id: number;\n name: string;\n}\nexport interface DeviceExtraOptionsInterface {\n mediaResourceGroupList: string;\n userHoldMOHAudioSourceId: number;\n userHoldMOHAudioSourceName: string;\n networkMOHAudioSourceId: number;\n networkMOHAudioSourceName: string;\n aarCss: string;\n aarGroup: string;\n privacy: string;\n deviceMobilityMode: string;\n mobilityUserId: string;\n phonePersonalization: string;\n servicesProvisioning: string;\n phoneLoadName: string;\n phoneIdleBLFAlertSetting: string;\n phoneBusyBLFAlertSetting: string;\n useTrustedRelayPoint: string;\n alwaysUsePrimeLine: string;\n alwaysUsePrimeLineForVoiceMessage: string;\n geolocation: string;\n emergencyLocation: string;\n ignorePresentationIndicators: boolean;\n loggedIntoHuntGroup: boolean;\n enabledExtensionMobility: boolean;\n remoteDevice: boolean;\n protectedDevice: boolean;\n hotlineDevice: boolean;\n useDevicePoolCgpnIngressDN: boolean;\n cgpnIngressDN: string;\n useDevicePoolCgpnTransformCss: boolean;\n cgpnTransformationCss: string;\n packetCaptureMode: string;\n packetCaptureDuration: number;\n blfPresenceGroup: string;\n sipDialRules: string;\n mtpPreferredOriginatingCodec: string;\n rerouteCss: string;\n subscribeCss: string;\n mtpRequired: boolean;\n unattendedPort: boolean;\n requireDtmfReception: boolean;\n informationUrl: string;\n directoryUrl: string;\n messagesUrl: string;\n servicesUrl: string;\n authenticationUrl: string;\n proxyServerUrl: string;\n idleUrl: string;\n idleTimeout: string;\n secureAuthenticationUrl: string;\n secureDirectoryUrl: string;\n secureIdleUrl: string;\n secureInformationUrl: string;\n secureMessageUrl: string;\n secureServicesUrl: string;\n mlppDomain: string;\n mlppIndication: string;\n mlppPreemption: string;\n confidentialAccessMode: string;\n confidentialAccessLevel: string;\n confidentialAccessLevelName: string;\n doNotDisturb: boolean;\n dndOption: string;\n dndIncomingCallAlert: string;\n disableSpeakerphone: boolean;\n disableSpeakerphoneAndHeadset: boolean;\n forwardingDelay: boolean;\n pcPort: boolean;\n settingsAccess: string;\n gratuitousARP: boolean;\n pcVoiceVlanAccess: boolean;\n videoCapabilities: boolean;\n webAccess: boolean;\n daysDisplayNotActive: string[];\n displayOnTime: string;\n displayOnDuration: string;\n displayIdleTimeout: string;\n wirelessHeadsetHookswitchControl: boolean;\n minRingVolume: string;\n showAllCallsOnPL: boolean;\n lineMode: string;\n latentCapabilityRegistration: string;\n analogGatewayPortInformation: AnalogGatewayPortInformationInterFace;\n}\nexport interface AnalogGatewayPortInformationInterFace {\n portDirection: string;\n prefixDn: string;\n numDigits: number;\n expectedDigits: number;\n smdiPortNumber: number;\n trunk: string;\n unattendedPort: string;\n}\nexport interface BusyLampFieldsInterface {\n index: number;\n position: number;\n destination: string;\n dnWithRoutePartition: string;\n label: string;\n callPickup: boolean;\n}\n","import { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { getSavableData } from '../common-functions';\nimport { REGEX_PATTERN } from '../app.constants';\nimport { Device } from './device';\nimport { LineAssociation } from './line-association';\nimport { LineAssociationInterface } from './line-association-interface';\n\nexport class SimplifiedUser {\n userid!: string;\n email!: string;\n firstName!: string;\n lastName!: string;\n siteId!: number;\n siteName!: number;\n token!: string;\n // general user info\n department!: string;\n manager!: string;\n associatedPc!: string;\n digestCredentials!: string;\n userProfile!: string;\n enableMobileVoiceAccess!: boolean;\n userLocale!: string;\n confirmDigestCredentials: any;\n\n // contact information\n middleName!: string;\n telephoneNumber!: string;\n mobileNumber!: string;\n directoryUri!: string;\n title!: string;\n homeNumber!: string;\n pagerNumber!: string;\n displayName!: string;\n\n devices!: Device[];\n\n viewMode!: string;\n hasModifiedCache!: boolean;\n newUserId!: string;\n editMode!: boolean;\n ldapIntegrated!: boolean;\n form!: FormGroup;\n\n constructor(user?: any, isLdap?: boolean) {\n // isLdap TEMP because of token response issue\n if (user) {\n this.userid = user.userid;\n this.email = user.email;\n this.firstName = user.firstName;\n this.lastName = user.lastName;\n this.siteId = user.siteId;\n this.siteName = user.siteName;\n this.token = user.token;\n\n this.department = user.department;\n this.manager = user.manager;\n this.associatedPc = user.associatedPc;\n this.digestCredentials = user.digestCredentials;\n this.userProfile = user.userProfile;\n this.enableMobileVoiceAccess = user.enableMobileVoiceAccess;\n this.ldapIntegrated = user.ldapIntegrated || isLdap || false;\n this.userLocale = user.userLocale;\n this.confirmDigestCredentials = user.confirmDigestCredentials;\n\n this.middleName = user.middleName;\n this.telephoneNumber = user.telephoneNumber;\n this.mobileNumber = user.mobileNumber;\n this.directoryUri = user.directoryUri;\n this.title = user.title;\n this.homeNumber = user.homeNumber;\n this.pagerNumber = user.pagerNumber;\n this.displayName = user.displayName;\n\n if (user.devices && user.devices.length) {\n this.devices = user.devices.map((device: any) => new Device(device));\n if (user.lines && user.lines.length) {\n this.devices.forEach(device => {\n if (device && device.lineAssociations && device.lineAssociations.length) {\n device.lineAssociations.forEach(lineAssociation => {\n lineAssociation.callingSearchSpace = this.getLineVal(lineAssociation, user.lines, 'callingSearchSpace');\n lineAssociation.textLabel = lineAssociation.textLabel || this.getLineVal(lineAssociation, user.lines, 'textLabel') || '';\n lineAssociation.alertingName = lineAssociation.alertingName || this.getLineVal(lineAssociation, user.lines, 'alertingName') || '';\n })\n }\n })\n }\n }\n }\n this.initForm()\n }\n\n getLineVal(lineAssociation: LineAssociation | LineAssociationInterface, lines: any, token: string): any {\n const lineForVal = lines.find((line: any) => line.directoryNumber.directoryNumber === lineAssociation.directoryNumber.directoryNumber);\n return lineForVal && lineForVal[token] || '';\n }\n\n getUserDetailsSavableData() {\n const excludedFields: string[] = ['devices', 'deviceProfiles', 'lines', 'singleNumberReach', 'vmPassword', 'vmUnifiedMessagingAccount', 'alternateExtensions', 'callerInput', 'lineAppearances', 'meetMes', 'webAppPasswordSettings', 'form'];\n return getSavableData(this, excludedFields);\n }\n\n initForm() {\n const formBuilder = new FormBuilder();\n const formSettings = {\n userid: [{value: this.userid || '', disabled: this.ldapIntegrated}, [Validators.required, Validators.maxLength(128)]],\n email: [{value: this.email || '', disabled: this.ldapIntegrated}, [\n Validators.pattern(REGEX_PATTERN.EMAIL),\n Validators.required\n ]],\n firstName: [{value: this.firstName || '', disabled: this.ldapIntegrated}],\n lastName: [{value: this.lastName || '', disabled: this.ldapIntegrated}, Validators.required],\n department: [{value: this.department || '', disabled: false}],\n middleName: [{value: this.middleName || '', disabled: false}],\n title: [{value: this.title || '', disabled: false}],\n telephoneNumber: [{value: this.telephoneNumber || '', disabled: false}],\n homeNumber: [{value: this.homeNumber || '', disabled: false}],\n mobileNumber: [{value: this.mobileNumber || '', disabled: false}],\n pagerNumber: [{value: this.pagerNumber || '', disabled: false}],\n displayName: [{value: this.displayName || '', disabled: false}],\n manager: [{value: this.manager || '', disabled: false}],\n associatedPc: [this.associatedPc || ''],\n directoryUri: [this.directoryUri || ''],\n userProfile: [this.userProfile],\n enableMobileVoiceAccess: [this.enableMobileVoiceAccess],\n ldapIntegrated: [this.ldapIntegrated],\n userLocale: [this.userLocale || ''],\n digestCredentials: [''],\n confirmDigestCredentials: ['']\n };\n this.form = formBuilder.group(formSettings);\n }\n\n toggleEditMode() {\n this.editMode = !this.editMode;\n /*['userid', 'email', 'firstName', 'lastName'].forEach(token => {\n if (this.editMode) {\n this.form.get(token)?.enable();\n } else {\n this.form.get(token)?.disable();\n }\n })*/\n }\n\n getSavableData() {\n const excludedFields: string[] = ['form', 'editMode', 'viewMode', 'token', 'hasModifiedCache', 'confirmDigestCredentials'];\n return getSavableData(this, excludedFields);\n }\n\n equal(userToCompare?: SimplifiedUser): boolean {\n if (!userToCompare) {\n return false;\n }\n return JSON.stringify(this.getSavableData()) === JSON.stringify(userToCompare.getSavableData());\n }\n\n}\n\nexport interface SimplifiedUserInterface {\n userid: string;\n email: string;\n firstName: string;\n lastName: string;\n form: FormGroup;\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class UtilsService {\n\n static sortSortArrayByProperty(array: [], sortBy: string) {\n if (!array) {\n return null;\n }\n return array.sort((a, b) => {\n if (!a[sortBy] && !b[sortBy]) {\n return 0;\n }\n if (a[sortBy] && !b[sortBy]) {\n return 1;\n }\n if (!a[sortBy] && b[sortBy]) {\n return -1;\n }\n const positionA = a[sortBy];\n const positionB = b[sortBy];\n return (positionA < positionB) ? -1 : (positionA > positionB) ? 1 : 0;\n });\n }\n\n static diff(origObject: any, updatedObj: any, path: string, keysToIgnore?: string[]) {\n let result: any = [];\n if (Object.is(origObject, updatedObj)) {\n return undefined;\n }\n if (!updatedObj || typeof updatedObj !== 'object') {\n return updatedObj;\n }\n const concat = Array.from(new Set([...Object.keys(origObject || {}), ...Object.keys(updatedObj || {})]));\n const filter = keysToIgnore ? concat.filter(key => !keysToIgnore.includes(key)) : concat;\n filter\n .forEach(key => {\n if (typeof updatedObj[key] === 'object' && typeof origObject[key] === 'object') {\n if (UtilsService.differs(updatedObj[key], origObject[key])) {\n const newPath = `${path}${path ? '.' : ''}${key}`;\n const values = UtilsService.diff(origObject[key], updatedObj[key], newPath, keysToIgnore);\n if (values !== undefined) {\n result = [...result, ...values];\n }\n }\n } else if (updatedObj && !origObject || updatedObj[key] !== origObject[key] && !Object.is(origObject[key], updatedObj[key])) {\n const value = updatedObj ? UtilsService.formatIfEmpty(updatedObj[key]) : null;\n result.push(`${path}${path ? '.' : ''}${key}=${value}`);\n }\n });\n return result;\n }\n\n static formatIfEmpty(value: any) {\n if (value) {\n return value;\n }\n switch (typeof value) {\n case 'boolean':\n return value;\n case 'string':\n return '';\n default:\n return null;\n }\n }\n\n static differs(obj1: any, obj2: any): boolean {\n return JSON.stringify(obj1) !== JSON.stringify(obj2);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { LineAssociationInterface } from '../classes/line-association-interface';\nimport { DeviceInterface } from '../classes/device';\nimport { LineInterface } from '../classes/line';\nimport { LineAssociation } from '../classes/line-association';\n\nconst string_array = function (original: string[], updated: string[], fullKey: string) {\n if (!updated || !SortingUtilsService.differs(original, updated)) {\n return null;\n }\n return `${fullKey}=${updated.join(',')}`;\n};\n\nconst line_reference = function (original: string[], updated: string[], fullKey: string) {\n if (!updated || !SortingUtilsService.differs(original, updated)) {\n return null;\n }\n // @ts-ignore\n return Object.keys(updated).map(key => `${fullKey}.${key}=${updated[key]}`);\n};\n\nconst nullable = function (original: string[], updated: string[], fullKey: string) {\n if (!original && updated) {\n // @ts-ignore\n return Object.keys(updated).map(key => `${fullKey}.${key}=${updated[key]}`);\n } else if (original && !updated) {\n return `${fullKey}=null`;\n } else {\n return SortingUtilsService.diff(original, updated, fullKey, []);\n }\n};\n\n@Injectable()\nexport class SortingUtilsService {\n\n static dictionary = {\n features: string_array,\n services: string_array,\n directoryNumber: line_reference,\n primaryLineReference: line_reference,\n speedDials: function (original: any, updated: any, fullKey: string) {\n if (!updated || !SortingUtilsService.differs(original, updated)) {\n return null;\n }\n // todo only changes, identification\n let map: any = [];\n updated.map((speedDial: any) => {\n const currentFullKey = `${fullKey}.${speedDial.index}`; // ${speedDial.type} CHECk ?\n map = [...map, Object.keys(speedDial).map(key => `${currentFullKey}.${key}=${speedDial[key]}`)];\n });\n return map;\n },\n lineAssociations: function (original: LineAssociationInterface[], updated: LineAssociationInterface[], fullKey: string) {\n if (!updated || !SortingUtilsService.differs(original, updated)) {\n return null;\n }\n let map: any = [];\n updated.map((lineAssociation: LineAssociationInterface) => {\n const currentFullKey = `${fullKey}.${lineAssociation.linePkid ? lineAssociation.linePkid : lineAssociation.lineLocalId}`;\n const originalLineAssociation = original.find(line => line.index === lineAssociation.index);\n if (SortingUtilsService.differs(originalLineAssociation, lineAssociation)) {\n const diff = SortingUtilsService.diff(originalLineAssociation, lineAssociation, currentFullKey, []);\n map = [...map, ...diff];\n }\n });\n return map;\n },\n enterpriseAltNum: nullable,\n e164AltNum: nullable\n };\n\n public static sortDevicesByTypeAndName(array: Array<DeviceInterface>): any {\n if (!array) {\n return null;\n }\n return array.sort((a, b) => {\n if (a.deviceType === b.deviceType) {\n return (a.name < b.name) ? -1 : (a.name > b.name) ? 1 : 0;\n } else {\n return (a.deviceType < b.deviceType) ? -1 : 1;\n }\n });\n }\n\n static sortLinesByDirectoryName(array: LineInterface[]): any {\n if (!array) {\n return null;\n }\n return array.sort((a, b) => {\n if (!a.directoryNumber && !b.directoryNumber) {\n return 0;\n }\n if (a.directoryNumber && !b.directoryNumber) {\n return 1;\n }\n if (!a.directoryNumber && b.directoryNumber) {\n return -1;\n }\n const directoryNumberA = a.directoryNumber.directoryNumber;\n const directoryNumberB = b.directoryNumber.directoryNumber;\n return (directoryNumberA < directoryNumberB) ? -1 : (directoryNumberA > directoryNumberB) ? 1 : 0;\n });\n }\n\n static sortLineAssociationsByPosition(array: LineAssociation[]): any {\n if (!array) {\n return null;\n }\n return array.sort((a, b) => {\n if (!a.position && !b.position) {\n return 0;\n }\n if (a.position && !b.position) {\n return 1;\n }\n if (!a.position && b.position) {\n return -1;\n }\n const positionA = a.position;\n const positionB = b.position;\n return (positionA < positionB) ? -1 : (positionA > positionB) ? 1 : 0;\n });\n }\n\n static sortSortArrayByProperty(array: any, sortBy: string): any {\n if (!array) {\n return null;\n }\n return array.sort((a: any, b: any) => {\n if (!a[sortBy] && !b[sortBy]) {\n return 0;\n }\n if (a[sortBy] && !b[sortBy]) {\n return 1;\n }\n if (!a[sortBy] && b[sortBy]) {\n return -1;\n }\n const positionA = a[sortBy];\n const positionB = b[sortBy];\n return (positionA < positionB) ? -1 : (positionA > positionB) ? 1 : 0;\n });\n }\n\n\n static diff(origObject: any, updatedObj: any, path: string, keysToIgnore: any) {\n let result: any = [];\n if (Object.is(origObject, updatedObj)) {\n return undefined;\n }\n if (!updatedObj || typeof updatedObj !== 'object') {\n return updatedObj;\n }\n const concat = Array.from(new Set([...Object.keys(origObject || {}), ...Object.keys(updatedObj || {})]));\n const filter = keysToIgnore ? concat.filter(key => !keysToIgnore.includes(key)) : concat;\n filter\n .forEach(key => {\n // @ts-ignore\n if (this.dictionary[key]) {\n // @ts-ignore\n const complexResult = this.dictionary[key](origObject[key], updatedObj[key], `${path}${path ? '.' : ''}${key}`);\n if (complexResult) {\n if (Array.isArray(complexResult)) {\n result = [...result, ...complexResult];\n } else {\n result.push(complexResult);\n }\n }\n } else if (typeof updatedObj[key] === 'object' && typeof origObject[key] === 'object') {\n if (SortingUtilsService.differs(updatedObj[key], origObject[key])) {\n const newPath = `${path}${path ? '.' : ''}${key}`;\n const values = SortingUtilsService.diff(origObject[key], updatedObj[key], newPath, keysToIgnore);\n if (values !== undefined) {\n result = [...result, ...values];\n }\n }\n } else if (updatedObj && !origObject || updatedObj[key] !== origObject[key] && !Object.is(origObject[key], updatedObj[key])) {\n const value = updatedObj ? SortingUtilsService.formatIfEmpty(updatedObj[key]) : null;\n result.push(`${path}${path ? '.' : ''}${key}=${value}`);\n }\n });\n return result;\n }\n\n static formatIfEmpty(value: any): any {\n if (value) {\n return value;\n }\n switch (typeof value) {\n case 'boolean':\n return value;\n case 'string':\n return '';\n default:\n return null;\n }\n }\n\n static differs(obj1: any, obj2: any): boolean {\n return JSON.stringify(obj1) !== JSON.stringify(obj2);\n }\n\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class LineService {\n public generateLineAssociationFromLine(lineAssociation?: any) {\n return {\n directoryNumber: lineAssociation ? this.generateLineDirectory(lineAssociation) : null,\n didPattern: lineAssociation ? this.generateDidPatternForLineAssociation(lineAssociation) : null,\n mappedDids: lineAssociation ? '' : 'null',\n index: lineAssociation ? lineAssociation.index : null,\n position: lineAssociation ? lineAssociation.position : null,\n textLabel: lineAssociation ? lineAssociation.textLabel : null,\n // displayLabel: lineAssociation ? lineAssociation.displayLabel : 'null',\n alertingName: lineAssociation ? lineAssociation.alertingName : null,\n callerNumber: lineAssociation ? '' : 'null'\n }\n }\n\n generateLineDirectory(lineAssociation?: any): any {\n return {\n directoryNumber: lineAssociation.directoryNumber.directoryNumber,\n routePartitionName: lineAssociation.directoryNumber.routePartitionName,\n }\n }\n\n generateDidPatternForLineAssociation(lineAssociation?: any): any {\n return {\n calledPartyTransformationMask: lineAssociation.directoryNumber && lineAssociation.directoryNumber.directoryNumber\n }\n }\n}\n","import {Injectable, OnInit} from '@angular/core';\nimport { of, forkJoin, Subject } from 'rxjs';\nimport { SimplifiedUser } from '../classes/simplified-user';\nimport { API } from '../app.constants';\nimport { APIService } from './api.service';\nimport { map } from 'rxjs/operators';\nimport { UtilsService } from './utils.service';\nimport { LineAssociation } from '../classes/line-association';\nimport { LineAssociationInterface } from '../classes/line-association-interface';\nimport { LineService } from './line.service';\nimport { SortingUtilsService } from './sorting-utils.service';\n\n@Injectable()\nexport class UserService implements OnInit{\n siteId: number = -1;\n userId: string = '';\n dataPending = false;\n userIdExistPending = false;\n hasExistedUserId = false;\n user!: SimplifiedUser;\n originUser!: SimplifiedUser;\n onUserLineSaved$ = new Subject<any>();\n\n get lineAssociation(): LineAssociation | LineAssociationInterface {\n return this.user && this.originUser.devices && this.user.devices[0] && this.user.devices[0].lineAssociations && this.user.devices[0].lineAssociations[0];\n }\n\n get originLineAssociation(): LineAssociation | LineAssociationInterface {\n return this.originUser && this.originUser.devices && this.originUser.devices[0] && this.originUser.devices[0].lineAssociations && this.originUser.devices[0].lineAssociations[0];\n }\n\n constructor(\n private apiService: APIService,\n private lineService: LineService\n ) {\n\n }\n\n ngOnInit(): void {\n console.log(this.siteId)\n }\n\n public fetchUserToken(siteId: number, userId: string, isLdap?: boolean, isSetNewTokenOnly?: boolean): any {\n // isLdap TEMP because of token response issue\n this.siteId = siteId;\n this.userId = userId;\n return this.apiService.fetch(API.USER_TOKEN.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))))\n .pipe(map((result: any) => {\n const user = result && Object.values(result)[0];\n const token = Object.keys(result)[0];\n if (user) {\n if (!isSetNewTokenOnly) {\n this.setSimplifiedUser(user);\n this.user.token = user.token ;\n }\n this.user.token = user.token || token;\n this.originUser.token = user.token || token;\n }\n }))\n // .pipe(this.handleError(false, true));\n }\n\n public updateUserFields(body: any): any {\n if (!this.siteId ) {\n return;\n }\n return this.apiService.post(API.UPDATE_USER_FIELDS.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), body)\n // .pipe(this.handleError(false, true));\n }\n\n public fetchUserById(id: string) {\n this.userIdExistPending = true;\n return this.apiService.fetch(API.USER_BY_ID.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(id))))\n .pipe(map(result => {\n this.userIdExistPending = false;\n return result;\n }));\n }\n\n public persistCacheChanges() {\n /*const params = {\n excludeDeviceExtraOptions: true\n };*/\n return this.processUserChangesToCache()\n .pipe(map((result: any) => {\n return this.apiService.post(API.PERSIST_USER_CACHE.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), {})\n .subscribe(() => {\n\n })\n // .pipe(map((user) => {\n // // this.setUser(user, false, this.user.token);\n // this.user.hasModifiedCache = false;\n // }))\n // .pipe(this.handleError(true, true));\n }));\n }\n\n public processUserChangesToCache(): any {\n const calls = [];\n const body = UtilsService.diff(this.originUser.getUserDetailsSavableData(), this.user.getUserDetailsSavableData(), 'user');\n if (body?.length) {\n calls.push(this.updateUserFields(body));\n }\n if (!calls?.length) {\n return of(this.user);\n }\n\n return forkJoin(calls)\n .pipe(map((responses: any) => {\n // ApiUserResponse\n this.handleSaveUserResponse(responses);\n }))\n // .pipe(this.handleError(false, true));\n\n }\n\n public saveNewLine(): any {\n this.dataPending = true;\n this.deleteLine(this.user.siteId, this.lineAssociation.linePkid, encodeURIComponent(this.user.token))\n .subscribe(() => {\n const URL = API.PERSIST_USER_CACHE.replace(':siteId', String(this.siteId)).replace(':token', this.user.token);\n this.apiService.post(URL, {}, )\n .subscribe(() => {\n this.fetchUserToken(this.siteId, this.user.userid, false, true)\n .subscribe(() => {\n this.runNewLineCreation();\n });\n });\n });\n }\n\n public runNewLineCreation(): void {\n // CREATE NEW LINE\n const newLineBody = SortingUtilsService.diff(\n this.lineService.generateLineAssociationFromLine(null),\n this.lineService.generateLineAssociationFromLine(this.lineAssociation),\n 'device.lineAssociations', null\n );\n this.associateLineToUserDevice(\n this.user.siteId,\n this.user.devices[0].name,\n newLineBody,\n null,\n this.lineAssociation.callingSearchSpace\n ).subscribe((response: any) => {\n if (response && response.currentUpdatedUser) {\n const linePkId = this.getLinePkIdFromUser(response?.currentUpdatedUser, 0);\n forkJoin([\n this.updateLineFields(this.siteId, linePkId, this.user.token, this.lineAssociation.alertingName),\n this.updateDeviceFields(this.siteId, this.user.devices[0]?.name, this.user.token)\n ]).subscribe((response: any) => {\n this.originUser.devices[0].lineAssociations[0].directoryNumber.directoryNumber = this.lineAssociation.directoryNumber.directoryNumber;\n this.onUserLineSaved$.next(true);\n });\n }\n })\n // -----\n }\n\n public getLinePkIdFromUser(user: any, index: number): any {\n if (user.devices && user.devices[index] && user.devices[index].lineAssociations && user.devices[index].lineAssociations[index]) {\n return user.devices[index].lineAssociations[index].linePkid || user.devices[index].lineAssociations[index].lineLocalId;\n }\n }\n\n public deleteLine(siteId: number, pkid: string, token: string) {\n return this.apiService.delete(API.DELETE_LINE.replace(':siteId', String(siteId)).replace(':pkid', pkid).replace(':token', encodeURIComponent(token)), {})\n // .pipe(this.handleError(true, false));\n }\n\n public disassociateLine(siteId: number, linePkid: string, token: string, deviceName: string) {\n return this.apiService.delete(\n API.DISASSOCIATE_LINE.replace(':siteId', String(siteId))\n .replace(':linePkid', linePkid)\n .replace(':deviceName', deviceName)\n .replace(':token', encodeURIComponent(token)), {})\n // .pipe(this.handleError(true, false));\n }\n\n public updateLineFields(siteId: number, pkid: string, token: string, alertingName: any) {\n const body = ['line.description=', `line.alertingName=${alertingName}`];\n return this.apiService.post(API.UPDATE_LINE_FIELDS.replace(':siteId', String(siteId)).replace(':pkid', encodeURIComponent(pkid)).replace(':token', encodeURIComponent(token)), body)\n // .pipe(this.handleError(true, false));\n }\n\n public updateDeviceFields(siteId: number, deviceName: string, token: string) {\n const body = ['device.associatedDNs.0=null'];\n return this.apiService.post(API.UPDATE_DEVICE_FIELDS.replace(':siteId', String(siteId)).replace(':deviceName', deviceName).replace(':token', encodeURIComponent(token)), body)\n // .pipe(this.handleError(true, false));\n }\n public checkDestinationNumber(siteId: string, directoryNumber: string, routePartitionName: string) {\n const params = {\n dntype: 'EXTENSION'\n };\n const body = {\n directoryNumber: directoryNumber,\n routePartitionName: routePartitionName\n };\n return this.apiService.post(API.CHECK_DESTINATION_NUMBER.replace(':siteId', siteId), body, params);\n }\n\n public associateLineToUserDevice(siteId: number, deviceName: string, body: any, pkid: any, css: any) {\n let params = {};\n if (pkid) {\n params = {linePkid: pkid};\n }\n if (css) {\n // @ts-ignore\n params['css'] = css;\n }\n return this.apiService.post(API.ASSOCIATE_LINE.replace(':siteId', String(siteId)).replace(':deviceName', deviceName)\n .replace(':token', encodeURIComponent(this.user.token)), body, params)\n // .pipe(this.handleError(true, true));\n }\n\n public hasUnsavedChanges() {\n if (this.user && this.originUser) {\n return !this.user.equal(this.originUser);\n }\n return false;\n }\n\n public setSimplifiedUser(user: any, isLdap?: boolean): void {\n // isLdap TEMP because of token response issue\n this.user = new SimplifiedUser(user, isLdap);\n const copiedUser = JSON.parse(JSON.stringify(user));\n this.originUser = new SimplifiedUser(copiedUser, isLdap);\n }\n\n private handleSaveUserResponse(responses: any) {\n if (!responses?.length) {\n return;\n }\n for (let len = responses.length, i = len - 1; i >= 0; i--) {\n if (responses[i] && responses[i].currentUpdatedUser) {\n // this.setUser(responses[i].currentUpdatedUser, false, this.user.token);\n this.user.hasModifiedCache = true;\n return;\n }\n }\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'app-loader',\n templateUrl: './app-loader.component.html',\n styleUrls: ['./app-loader.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppLoaderComponent {\n constructor() {\n }\n\n}\n","<div class=\"overlay\">\n <mat-progress-spinner\n class=\"page-spinner\"\n mode=\"indeterminate\"\n [diameter]=\"120\"></mat-progress-spinner>\n</div>\n","import { Injectable } from '@angular/core';\nimport {HttpEvent, HttpRequest, HttpInterceptor, HttpHandler, HttpErrorResponse} from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport {catchError } from 'rxjs/operators';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n constructor() {\n }\n\n intercept(\n request: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n request = request.clone({\n setHeaders: {\n // Authorization: basicAuthHeaderString\n }\n , withCredentials: true\n })\n\n return next.handle(request).pipe(catchError(err => {\n if (err instanceof HttpErrorResponse) {\n if (err.status === 401) {\n if (window.history.length < 3) {\n err.error.message = '';\n } else {\n err.error.message = 'SESSION_INACTIVE';\n }\n }\n }\n return throwError(err);\n }));\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-user-info',\n templateUrl: './user-info.component.html',\n styleUrls: ['./user-info.component.scss']\n})\nexport class UserInfoComponent {\n @Input()\n name!: string;\n @Input()\n active!: boolean;\n @Input()\n email!: string;\n @Input()\n position!: string;\n\n\n}\n","<div class=\"info-holder\">\n <div class=\"content-box flex-box\">\n <div class=\"info-holder__user-image\">\n <img src=\"../../../assets/a24749b225874bb3e3a4cb5d2f42e82c.png\" alt=\"\" class=\"avatar\">\n </div>\n <div class=\"info-holder__user-information\">\n <div class=\"info-holder__user-name\">{{name}}</div>\n <div class=\"info-holder__user-breadcrumbs\">\n <div class=\"is-active\" *ngIf=\"active; else notActive\">\n <span class=\"icon-user-status icon-user-status-active\"></span>Active\n </div>\n <div class=\"icon-separator\"></div>\n <div class=\"email\">{{email}}</div>\n <div class=\"icon-separator\"></div>\n <div class=\"position\">{{position}}</div>\n </div>\n </div>\n </div>\n\n</div>\n\n<ng-template #notActive>\n <div class=\"is-active\">\n <svg width=\"8\" height=\"9\" viewBox=\"0 0 8 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 8.5C6.20914 8.5 8 6.70914 8 4.5C8 2.29086 6.20914 0.5 4 0.5C1.79086 0.5 0 2.29086 0 4.5C0 6.70914 1.79086 8.5 4 8.5Z\" fill=\"grey\"/>\n </svg>\n <div>Not active</div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatListModule } from '@angular/material/list';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule } from '@angular/material/paginator';\n\n\n@NgModule({\n imports: [\n DragDropModule,\n MatButtonModule,\n MatListModule,\n MatProgressSpinnerModule,\n MatExpansionModule,\n MatInputModule,\n MatInputModule,\n MatListModule,\n MatTreeModule,\n MatTreeModule,\n MatNativeDateModule,\n MatDatepickerModule,\n MatTooltipModule,\n MatAutocompleteModule,\n MatChipsModule,\n MatSidenavModule,\n MatFormFieldModule,\n MatStepperModule,\n MatTabsModule,\n MatCardModule,\n MatSelectModule,\n MatCheckboxModule,\n MatSlideToggleModule,\n MatTableModule,\n MatPaginatorModule\n ],\n exports: [\n DragDropModule,\n MatButtonModule,\n MatListModule,\n MatProgressSpinnerModule,\n MatExpansionModule,\n MatInputModule,\n MatInputModule,\n MatListModule,\n MatTreeModule,\n MatTreeModule,\n MatNativeDateModule,\n MatDatepickerModule,\n MatTooltipModule,\n MatAutocompleteModule,\n MatChipsModule,\n MatSidenavModule,\n MatFormFieldModule,\n MatStepperModule,\n MatTabsModule,\n MatCardModule,\n MatCheckboxModule,\n MatSelectModule,\n MatSlideToggleModule,\n MatProgressSpinnerModule,\n MatTableModule,\n MatPaginatorModule\n ],\n})\nexport class MaterialModule {\n}\n","export const environment = {\n production: false,\n // apiUrl: 'http://localhost:4200',\n apiUrl: 'http://192.168.0.191:8080',\n notificationsLifetime: 30000,\n longNotificationsLifetime: 45000,\n cashCleanTimer: 900000,\n cashArrayLength: 10000,\n matomoUrl: 'http://192.168.0.136/matomo/',\n};\n","import { environment } from '../environments/environment';\nconst TTL_DEFAULT = environment.notificationsLifetime;\nconst TTL_LONG_DEFAULT = environment.longNotificationsLifetime;\n\nexport enum NotificationType {\n info = 'info',\n error = 'error',\n success = 'success',\n warning = 'warning'\n}\n\nexport class Notification {\n id?: number;\n type?: NotificationType;\n message?: string;\n ttl: number = TTL_DEFAULT;\n timerId?: any;\n\n constructor(data: any) {\n Object.assign(this, data || {});\n\n if(this.ttl === undefined) {\n this.ttl = this.message && this.message.length && this.message.length < 80 ? TTL_DEFAULT : TTL_LONG_DEFAULT;\n }\n }\n\n isInfo(): boolean {\n return this.type === NotificationType.info;\n }\n isError(): boolean {\n return this.type === NotificationType.error;\n }\n isSuccess(): boolean {\n return this.type === NotificationType.success;\n }\n isWarning(): boolean {\n return this.type === NotificationType.warning;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Notification } from '../classes/notification';\nimport { Subject } from 'rxjs';\nconst SUCCESS_TIME = 5000;\nconst INACTIVE_SESSION_MESSAGE = 'Your session was lost due to inactivity. Please login again';\nconst INACTIVE_SESSION = 'SESSION_INACTIVE';\n\n@Injectable()\nexport class NotificationService {\n\n public listChange = new Subject();\n\n private max = 0;\n private list: Notification[] = [];\n\n constructor(\n ) {\n }\n\n error(message: string, ttl?: number): void {\n this.notify('error', message, ttl);\n }\n\n success(message: string, ttl?: number): void {\n this.notify('success', message, (!ttl) ? SUCCESS_TIME : ttl);\n }\n\n warning(message: string, ttl?: number): void {\n this.notify('warning', message, ttl);\n }\n\n info(message: string, ttl?: number): void {\n this.notify('info', message, ttl);\n }\n private notify(type: string, message: string, ttl?: number): void {\n const found = this.list.find((n: Notification) => n.message === message);\n if (found) {\n this.remove(found);\n }\n const notification = new Notification({\n id: ++this.max,\n type, message, ttl\n });\n if (notification.ttl > 0) {\n notification.timerId = setTimeout(() => this.remove(notification, true), notification.ttl);\n }\n this.list.push(notification);\n this.listChange.next(this.list);\n }\n\n remove(notification: Notification, auto?: boolean): void {\n if (!auto && notification.timerId) {\n // clear timeout in case of manual remove\n clearInterval(notification.timerId);\n }\n this.list = this.list.filter(n => n.id !== notification.id);\n this.listChange.next(this.list);\n }\n\n private removeInactiveSessionError(): void {\n if (!this.list || !this.list.length) {\n return;\n }\n this.list = this.list.filter(n => n.message !== INACTIVE_SESSION_MESSAGE && n.message !== INACTIVE_SESSION);\n this.listChange.next(this.list);\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NotificationService } from '../services/notification.service';\nimport { Notification } from '../classes/notification';\n\n@Component({\n selector: 'app-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotificationsComponent implements OnInit, OnDestroy {\n public list!: Notification[];\n public isReadMore!: boolean;\n private listSubscription!: Subscription;\n\n constructor(\n public notificationService: NotificationService,\n private ref: ChangeDetectorRef\n ) {\n }\n\n ngOnInit() {\n this.listChangeSubscribe();\n }\n\n ngOnDestroy() {\n this.listSubscription.unsubscribe();\n }\n\n public readMore(): void {\n this.isReadMore = !this.isReadMore;\n }\n\n public removeNotification(notification: Notification): void {\n this.notificationService.remove(notification);\n }\n\n private listChangeSubscribe(): void {\n this.listSubscription = this.notificationService.listChange\n .subscribe((list: any) => {\n this.list = list;\n this.ref.detectChanges();\n });\n }\n}\n","<!--\n\n<div class=\"notification-block\" role=\"alert\" aria-live=\"assertive\">\n <div class=\"notification\"\n *ngFor=\"let notification of list\"\n [ngClass]=\"{'error': notification.isError(), 'success': notification.isSuccess()}\">\n\n <div class=\"flex-box\">\n <div class=\"notification-icons-block\">\n <i *ngIf=\"notification.isError()\" class=\"fa fa-exclamation-triangle\"></i>\n <i *ngIf=\"notification.isWarning()\" class=\"fa fa-hand-paper-o\"></i>\n <i *ngIf=\"notification.isSuccess()\" class=\"fa fa-check\"></i>\n <i *ngIf=\"notification.isInfo()\" class=\"fa fa-info-circle\"></i>\n </div>\n <div *ngIf=\"!isReadMore\" class=\"message-block\">\n {{notification.message | truncate:[93]}}\n </div>\n <div *ngIf=\"isReadMore\" class=\"message-block\">\n {{notification.message}}\n </div>\n </div>\n <div class=\"read-more-error link clickable\" *ngIf=\"notification.message && notification.message.length > 93\"\n (click)=\"readMore()\">{{(isReadMore ? 'BUTTON.COLLAPSE' : 'BUTTON.READ_MORE') | translate}}</div>\n <button\n class=\"close\"\n mat-icon-button\n matTooltip=\"{{'BUTTON.CLOSE' | translate}} {{'NOTIFICATION_MSG.' + notification.type | translate}} {{'NOTIFICATION_MSG.NOTI' | translate}}\"\n (click)=\"removeNotification(notification)\">\n <img class=\"notification-icon-close\" src=\"assets/icons/close_icon_modal.svg\" alt=\"\">\n </button>\n </div>\n</div>\n-->\n","import { DeviceInterface } from '../classes/device';\nimport { LineInterface } from '../classes/line';\n\nexport class ListUser {\n // @ts-ignore\n userid: string;\n firstName!: string;\n lastName!: string;\n email!: string;\n telephoneNumber!: string;\n devices: DeviceInterface[] = [];\n deviceProfiles: DeviceInterface[] = [];\n lines!: LineInterface[];\n siteId!: number;\n siteName!: string;\n webexUUID!: string;\n cucmId!: number;\n isMigrated!: boolean;\n\n constructor(user?: ListUser) {\n if (user) {\n Object.assign(this, user);\n }\n }\n}\n\nexport interface ListUserInterface {\n userid: string;\n firstName: string;\n lastName: string;\n email: string;\n telephoneNumber: string;\n viewMode: any;\n devices: DeviceInterface[];\n deviceProfiles: DeviceInterface[];\n lines: LineInterface[];\n siteId: number;\n siteName: string;\n webexUUID: string;\n cucmId: number;\n isMigrated: boolean;\n}\n","import { Injectable } from '@angular/core';\nimport { CUCMS_TO_IGNORE, CUCS_TO_IGNORE } from './app.constants';\n\n@Injectable()\nexport class RemoveKynFromIBMService {\n constructor() {\n }\n\n\n removeCUCMS(date: any, customerId: number) {\n if (customerId === 8) {\n return date.filter((val: any) => !CUCMS_TO_IGNORE.includes(Math.round(val.cucmId)));\n }\n return date;\n }\n\n removeCUCS(date: any, customerId: number) {\n if (customerId === 8) {\n return date.filter((val: any) => !CUCS_TO_IGNORE.includes(Math.round(val.cucId)));\n }\n return date;\n }\n\n\n}\n","import { Injectable, OnInit } from '@angular/core';\nimport { SimplifiedUser } from '../classes/simplified-user';\nimport { APIService } from './api.service';\nimport { ListUser, ListUserInterface } from '../classes/user-list';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { API, PAGINATION_DEFAULTS, PAGINATION_SIZE_OPTIONS } from '../app.constants';\nimport { TableDataInterface } from '../classes/table-data';\nimport { map } from 'rxjs/operators';\nimport { RemoveKynFromIBMService } from '../removeKynFromIBM.service';\nimport { PaginationDataDto } from '../classes/pagination';\n\n\n\n@Injectable()\nexport class UsersSearchService {\n siteId: number = -1;\n userId: string = '';\n customerId!: number;\n userIdExistPending = false;\n hasExistedUserId = false;\n pageSize = PAGINATION_DEFAULTS.SIZE;\n pageIndex = PAGINATION_DEFAULTS.SIZE;\n pageSizeOptions = PAGINATION_SIZE_OPTIONS;\n total!: number;\n searchParams!: any;\n foundUsers$!: any;\n\n constructor(\n private apiService: APIService,\n private removeKynFromIBMService: RemoveKynFromIBMService\n ) {\n this.foundUsers$ = new BehaviorSubject(null);\n\n }\n\n public getPagination(): PaginationDataDto {\n return {\n total: this.total,\n pageSizeOptions: this.pageSizeOptions,\n pageSize: this.pageSize,\n pageIndex: this.pageIndex\n };\n }\n\n public quickRegularUsersSearch() {\n this.searchParams = this.searchParams || {customerid: this.customerId};\n return this.apiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, this.pageIndex, this.searchParams)\n .pipe(map((res: TableDataInterface) => {\n this.total = res.total;\n // this.totals = this.totals || {};\n // this.totals['users'] = res.total;\n const users = res.pageData && res.pageData.length ? res.pageData.map(user => new ListUser(user)) : [];\n // this.foundUsers$.next(this.removeKynFromIBMService.removeCUCMS(users, this.customerId));\n this.foundUsers$.next(users);\n }));\n // .pipe(this.handleError(true));\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PaginationDataDto } from '../../classes/pagination';\nimport { PAGINATION_SIZE_OPTIONS } from '../../app.constants';\n\n\n@Component({\n selector: 'app-pagination',\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss'],\n})\nexport class PaginationComponent implements OnInit{\n @Input()\n public pagination!: PaginationDataDto;\n @Input()\n public showPageSizeOptions!: boolean;\n @Input()\n public showRefreshButton!: boolean;\n @Input()\n public lengthPending!: boolean;\n @Output()\n public pageEmitter = new EventEmitter();\n @Output()\n public pageNumberChangeEmitter = new EventEmitter<any>();\n public pageSizeOptions: number[] = PAGINATION_SIZE_OPTIONS;\n\n constructor(\n ) {\n }\n\n ngOnInit(): void {\n }\n\n public pageEvent(event: any) {\n this.pageEmitter.emit(event);\n }\n\n public changePerPageNumber(event: any) {\n this.pageNumberChangeEmitter.emit(event.value);\n }\n\n}\n","<div class=\"flex-box pagination\">\n <div class=\"page-indexes-box\">\n <mat-paginator\n [id]=\"'commonPagination'\"\n [hidePageSize]=\"true\"\n [length]=\"pagination.total\"\n [pageIndex]=\"pagination.pageIndex\"\n [pageSize]=\"pagination.pageSize\"\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\n (page)=\"pageEvent($event)\">\n </mat-paginator>\n <mat-spinner class=\"length-spinner\" [diameter]=\"20\" mode=\"indeterminate\" *ngIf=\"lengthPending\">\n </mat-spinner>\n </div>\n\n <div class=\"flex-box per-page-block\" *ngIf=\"showPageSizeOptions\">\n <div class=\"item_per_page\">Items per page:</div>\n <div class=\"select-box select-page-size\">\n <mat-select [(ngModel)]=\"pagination.pageSize\" (selectionChange)=\"changePerPageNumber($event)\" #page\n [id]=\"'commonPaginationSelect'\">\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\n </mat-select>\n </div>\n\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { CUCMS_TO_IGNORE, CUCS_TO_IGNORE } from '../app.constants';\n\n@Injectable()\nexport class RemoveKynFromIBMService {\n constructor() {\n }\n\n\n removeCUCMS(date: any, customerId: number) {\n if (customerId === 8) {\n return date.filter((val: any) => !CUCMS_TO_IGNORE.includes(Math.round(val.cucmId)));\n }\n return date;\n }\n\n removeCUCS(date: any, customerId: number) {\n if (customerId === 8) {\n return date.filter((val: any) => !CUCS_TO_IGNORE.includes(Math.round(val.cucId)));\n }\n return date;\n }\n\n\n}\n","import { AfterContentInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { NotificationService } from '../services/notification.service';\nimport { SiteSettingsService } from '../services/site-settings.service';\n\nexport interface OptionValue {\n key: string;\n value: string;\n disabled: boolean;\n}\n\n@Component({\n selector: 'app-lazy-loading-select',\n templateUrl: './lazy-loading-select.component.html',\n styleUrls: ['./lazy-loading-select.component.scss']\n})\nexport class LazyLoadingSelectComponent implements AfterContentInit {\n optionsPending!: boolean;\n options!: any;\n\n @Input()\n public siteId!: number\n @Input()\n public form!: FormGroup;\n @Input()\n public standalone = true;\n @Input()\n public placeholder!: string;\n @Input()\n public controlName!: string;\n @Input()\n public optionsToken!: string;\n @Input()\n public appearance = 'standard';\n @Input()\n public errorCode!: string;\n @Input()\n public errorText!: string;\n @Input()\n public default!: OptionValue;\n @Input()\n public id!: string;\n @Output()\n public changeField = new EventEmitter<string>();\n\n get formControl(): FormControl {\n return this.form?.get(this.controlName) as FormControl;\n }\n\n\n constructor(\n private notificationService: NotificationService,\n private siteSettingsService: SiteSettingsService,\n ) {\n }\n\n ngAfterContentInit() {\n this.options = [this.form?.get(this.controlName)?.value];\n }\n\n getOptions() {\n if (!this.siteId && this.options.length > 1) {\n return;\n }\n this.optionsPending = true;\n this.siteSettingsService.getSelectionOptions(this.siteId, this.optionsToken)\n .subscribe(() => {\n this.optionsPending = false;\n // @ts-ignore\n this.options = this.siteSettingsService[this.optionsToken];\n }, () => {\n this.optionsPending = false;\n // this.notificationService.error(this.translate.instant('COMMON.LOAD_SELECT_OPTIONS_FAILED'));\n });\n }\n\n public onFieldChange(token: string) {\n this.changeField.emit(token);\n }\n\n}\n","<ng-container *ngIf=\"standalone\">\n <mat-form-field appearance=\"outline\">\n <mat-select [formControl]=\"formControl\"\n (openedChange)=\"getOptions()\"\n [placeholder]=\"placeholder\"\n (selectionChange)=\"onFieldChange(controlName)\"\n [id]=\"id\">\n <mat-option *ngIf=\"default\" [disabled]=\"default.disabled\" [value]=\"default.key\">{{default.value}}</mat-option>\n <mat-option *ngFor=\"let type of options\" [value]=\"type\">\n {{type}}\n </mat-option>\n <mat-progress-spinner class=\"field-spinner\"\n [diameter]=\"20\"\n mode=\"indeterminate\"\n *ngIf=\"optionsPending\"></mat-progress-spinner>\n </mat-select>\n <mat-error *ngIf=\"form.get(controlName)?.hasError(errorCode)\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n {{errorText}}\n </mat-error>\n </mat-form-field>\n</ng-container>\n\n<!--\nThis duplication is caused by the following bug: https://github.com/angular/components/issues/9411\nWhich doesn't allow projection in mat-form-field\n-->\n\n<ng-container *ngIf=\"!standalone\">\n <mat-select *ngIf=\"form.get(controlName)\"\n [formControl]=\"formControl\"\n (openedChange)=\"getOptions()\"\n [placeholder]=\"placeholder\"\n (selectionChange)=\"onFieldChange(controlName)\"\n [id]=\"id\"\n >\n <mat-option *ngIf=\"default\" [disabled]=\"default.disabled\" [value]=\"default.key\">{{default.value}}</mat-option>\n <mat-option *ngFor=\"let type of options\" [value]=\"type\">\n {{type}}\n </mat-option>\n <mat-progress-spinner class=\"field-spinner\"\n [diameter]=\"20\"\n mode=\"indeterminate\"\n *ngIf=\"optionsPending\"></mat-progress-spinner>\n </mat-select>\n <mat-error *ngIf=\"form.get(controlName)?.hasError(errorCode)\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n {{errorText}}\n </mat-error>\n</ng-container>\n","\nexport interface LineInterface {\n description: string;\n pkid: string;\n entityChangeType: EntityChangeType;\n alertingName: string;\n asciiAlertingName: string;\n callingSearchSpace: string;\n voiceMailProfile: string;\n noAnswerRingDuration: number;\n autoAnswer: string;\n directoryNumber: LineDirectoryInterface;\n didPatterns: Array<TranslationPatternInterface>;\n mappedDids: Array<string>;\n aarSettings: LineAarInterface;\n callForwardAll: CallInterface;\n callForwardAllSecondaryCSS: CallInterface;\n callForwardBusyInternal: CallInterface;\n callForwardBusyExternal: CallInterface;\n callForwardNoAnswerInternal: CallInterface;\n callForwardNoAnswerExternal: CallInterface;\n callForwardNoCoverageInternal: CallInterface;\n callForwardNoCoverageExternal: CallInterface;\n callForwardOnCTIFailure: CallInterface;\n callForwardUnregisteredInternal: CallInterface;\n callForwardUnregisteredExternal: CallInterface;\n parkMonitoringExternal: LineParkMonitoringInterface;\n parkMonitoringInternal: LineParkMonitoringInterface;\n callPickupGroup: string;\n localId: string;\n urgentPriority: boolean;\n blfPresenceGroup: string;\n userHoldMOHAudioSourceId: string;\n userHoldMOHAudioSourceName: string;\n networkMOHAudioSourceId: string;\n networkMOHAudioSourceName: string;\n rejectAnonymousCall: boolean;\n enterpriseAltNum: AlternateNumberInterface;\n e164AltNum: AlternateNumberInterface;\n directoryUris: Array<DirectoryUriInterface>;\n callForwardAlternateParty: ParkMonitoringInterface;\n mlppNoAnswerRingDuration: number;\n confidentialAccessMode: string;\n confidentialAccessLevel: string;\n confidentialAccessLevelName: string;\n callControlAgentProfile: string;\n holdReversionRingDuration: number;\n holdReversionNotificationInterval: number;\n partyEntranceTone: string;\n pstnFailover: string;\n isExistingLine: boolean;\n plarDestinationNumber: string;\n prefixDigits: string;\n plarDescription: string;\n plarEnabled: boolean;\n}\n\nexport enum EntityChangeType {\n added = 'added',\n updated = 'updated',\n existing = 'existing',\n removed = 'removed',\n unassociated = 'unassociated'\n}\nexport interface LineDirectoryInterface {\n directoryNumber: string;\n routePartitionName: string;\n pkid: string;\n dnType: string;\n subType: string;\n templateDirectoryNumber: string;\n}\nexport interface TranslationPatternInterface {\n pattern: string;\n calledPartyTransformationMask: string;\n description: string;\n site: SiteShortDataInterface;\n hasMultipleSites: boolean;\n multipleSitesId: string;\n}\nexport interface SiteShortDataInterface {\n id: number;\n name: string;\n}\nexport interface LineAarInterface {\n aarDestinationMask: string;\n aarGroup: string;\n aarVoiceMailEnabled: boolean;\n aarKeepCallHistory: boolean;\n}\nexport interface CallInterface {\n forwardToVoiceMail: boolean;\n destination: string;\n callingSearchSpace: string;\n}\nexport interface LineParkMonitoringInterface {\n voiceMail: boolean;\n destination: string;\n callingSearchSpace: string;\n}\nexport interface AlternateNumberInterface {\n numberMask: string;\n addLocalRoutePartition: boolean;\n routePartition: string;\n isUrgent: boolean;\n advertiseGloballyIls: boolean;\n}\nexport interface DirectoryUriInterface {\n primary: boolean;\n uri: string;\n routePartition: string;\n advertiseGloballyIls: boolean;\n}\nexport interface ParkMonitoringInterface {\n destination: string;\n callingSearchSpace: string;\n voiceMail: boolean;\n}\nexport enum DnRangeType {\n extension = 'EXTENSION',\n cpg = 'CPG',\n callpark = 'CALLPARK',\n huntgroup = 'HUNTGROUP',\n meetme = 'MEETME',\n did = 'DID'\n}\nexport interface AvailablePhoneNumberRangeInterface {\n phoneNumberRange: DnRangeInterface;\n usedNumbers: string[];\n requestedNumber: string;\n unUsedNumbersWithDids: any;\n}\nexport interface DnRangeInterface {\n from: string;\n to: string;\n prefix: string;\n routePartition: string;\n dnType: DnRangeType;\n tempIdx: number;\n\n getEditableData(): any;\n\n getUsedRangeEditableData(): any;\n}\n","import { Injectable } from '@angular/core';\nimport { API } from '../app.constants';\nimport { APIService } from './api.service';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { Big } from 'big.js';\nimport { AvailablePhoneNumberRangeInterface, DnRangeType } from '../classes/line';\n// import * as Big from 'big.js';\n\n\n@Injectable()\nexport class DnsService {\n availableNumbers = {};\n availableDidPatternsMappedToDn!: any;\n constructor(\n private apiService: APIService\n ) {\n\n }\n public getNumberRange(siteId: string, routePartition: string, withdids?: boolean, from?: string, pageSize?: number): any {\n // @ts-ignore\n if (this.availableNumbers[routePartition] && this.availableNumbers[routePartition].length) {\n return new Observable<any>(observer => {\n // @ts-ignore\n observer.next(this.availableNumbers[routePartition]);\n });\n }\n\n this.availableDidPatternsMappedToDn = {};\n pageSize = pageSize ? pageSize : 20;\n const params = {dntype: DnRangeType.extension, routepartition: routePartition, size: pageSize, page: 0};\n if (withdids) {\n // @ts-ignore\n params['withdids'] = 'true';\n }\n if (from) {\n // @ts-ignore\n params['from'] = from;\n }\n // @ts-ignore\n this.availableNumbers[routePartition] = this.availableNumbers[routePartition] || [];\n\n return this.apiService.fetch(API.AVAILABLE_DN_IN_RANGES.replace(':siteId', siteId), params)\n .pipe(map((res: any) => {\n res.availableNumberList.forEach((availableNumber: AvailablePhoneNumberRangeInterface) => {\n this.setAvailableDidMappedToDn(availableNumber);\n // @ts-ignore\n this.availableNumbers[routePartition] = [...this.availableNumbers[routePartition], ...this.getUnwrapNumberRange(availableNumber)];\n });\n })\n )\n // .pipe(this.handleError(true, false));\n }\n\n public setAvailableDidMappedToDn(availableNumber: any): void {\n if (availableNumber.unUsedNumbersWithDids && availableNumber.unUsedNumbersWithDids.length) {\n\n availableNumber.unUsedNumbersWithDids.forEach((numberWithDids: any) => {\n const dn = numberWithDids['unUsedNumber'];\n this.availableDidPatternsMappedToDn[dn] = [{}];\n if (numberWithDids['translationPatternList'] && numberWithDids['translationPatternList'].length > 0) {\n this.availableDidPatternsMappedToDn[dn] = numberWithDids['translationPatternList'];\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = [{}];\n if (numberWithDids['mappedDids'] && numberWithDids['mappedDids'].length > 0) {\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = numberWithDids['mappedDids'];\n }\n }\n this.availableDidPatternsMappedToDn[dn][0]['vm'] = numberWithDids['vm'];\n });\n }\n }\n\n public getUnwrapNumberRange(availableNumber: any): any {\n const unwrapNumberRangeArray = this.unwrapNumberRange(availableNumber.phoneNumberRange.from, availableNumber.phoneNumberRange.to);\n if (unwrapNumberRangeArray?.length) {\n let unwrapNumberRange = unwrapNumberRangeArray.map((unwrappedNumber: string) => {\n const dn = availableNumber.phoneNumberRange.prefix + unwrappedNumber;\n let str = dn;\n if (this.availableDidPatternsMappedToDn[dn] && this.availableDidPatternsMappedToDn[dn].length > 0) {\n if (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] && this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 0) {\n str += ' DID: ' + (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 1 ? 'multiple' :\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'][0]);\n }\n if (this.availableDidPatternsMappedToDn[dn][0]['vm']) {\n str += ' In Use - VM';\n }\n }\n return str;\n });\n unwrapNumberRange = unwrapNumberRange.filter((unwrappedNumber: string) => !availableNumber.usedNumbers.includes(unwrappedNumber));\n return unwrapNumberRange;\n } else {\n return [];\n }\n\n }\n\n public unwrapNumberRange(start: string, end: string): string[] {\n const regExp = /(^0+)/;\n let leadingZeros = '';\n const matches = start.match(regExp);\n if (matches) {\n leadingZeros = matches[1];\n }\n const startNumeric = new Big(start);\n const endNumeric = new Big(end);\n // @ts-ignore\n return Array.from({length: (endNumeric.minus(startNumeric).plus(new Big(1)).toFixed(0))}, (v, k) => {\n const number = String(startNumeric.plus(new Big(k)).toFixed(0));\n if ((leadingZeros + number).length > start.length) {\n leadingZeros = leadingZeros.substr(1);\n }\n return leadingZeros + number;\n });\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { SimplifiedUser } from '../../classes/simplified-user';\nimport { UserService } from '../../services/user.service';\nimport { DnsService } from '../../services/dns.service';\n\n@Component({\n selector: 'app-user-calling-extension',\n templateUrl: './user-calling-extension.component.html',\n styleUrls: ['./user-calling-extension.component.scss'],\n})\nexport class UserCallingExtensionComponent implements OnInit {\n @Input() control!: FormControl;\n @Input() routePartition!: string;\n @Input() directoryNumber!: string;\n @Input() siteId!: number;\n @Output() onChange = new EventEmitter<string>();\n public dataPending!: boolean;\n\n get user(): SimplifiedUser {\n return this.userService.user;\n }\n\n get availableNumbers(): any {\n // @ts-ignore\n return this.routePartition && this.dnsService.availableNumbers ? this.dnsService.availableNumbers[this.routePartition] : null;\n }\n\n\n constructor(\n public userService: UserService,\n private dnsService: DnsService\n ) {\n }\n\n ngOnInit(): void {\n this.getData();\n }\n\n public onChangeField(event: any): void {\n // if (!token) {\n // return;\n // }\n // (this.userService.user as any)[token] = this.form?.get(token)?.value;\n this.onChange.emit(event?.value);\n\n }\n\n private getData() {\n if (!this.siteId || !this.routePartition) {\n return;\n }\n this.dataPending = true;\n this.dnsService.getNumberRange(String(this.siteId), this.routePartition)\n .subscribe(() => {\n if (this.availableNumbers) {\n // @ts-ignore\n this.dnsService.availableNumbers[this.routePartition].push(this.directoryNumber);\n }\n this.dataPending = false;\n });\n }\n}\n","<div *ngIf=\"this.availableNumbers?.length\" class=\"user-calling-extension\">\n <mat-form-field appearance=\"outline\">\n <mat-select [formControl]=\"control\" name=\"extension\"\n (selectionChange)=\"this.onChangeField($event)\">\n <mat-option *ngFor=\"let option of this.availableNumbers; let i = index;\"[value]=\"option\">{{option}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-spinner *ngIf=\"this.dataPending\" [diameter]=\"50\"></mat-spinner>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { SimplifiedUser } from '../classes/simplified-user';\nimport { LineAssociation } from '../classes/line-association';\nimport { LineAssociationInterface } from '../classes/line-association-interface';\nimport { UserService } from '../services/user.service';\nimport { DnsService } from '../services/dns.service';\n\n@Component({\n selector: 'app-user-calling',\n templateUrl: './user-calling.component.html',\n styleUrls: ['./user-calling.component.scss'],\n})\nexport class UserCallingComponent implements OnInit {\n @Input() siteId!: number;\n @Input() userId!: string;\n @Output() onExtensionChange = new EventEmitter<any>();\n public dataPending!: boolean;\n\n get form(): FormGroup {\n return this.userService?.user?.devices[0] && this.userService?.user?.devices[0].lineAssociations[0].form;\n }\n\n get formControl(): FormControl {\n const control = this.form?.get('directoryNumber') as FormControl;\n return control;\n }\n\n get lineAssociation(): LineAssociation | LineAssociationInterface {\n return this.userService?.user?.devices[0].lineAssociations[0];\n }\n\n get user(): SimplifiedUser {\n return this.userService.user;\n }\n\n\n constructor(\n public userService: UserService,\n private dnsService: DnsService\n ) {\n }\n\n ngOnInit(): void {\n // this.getData();\n }\n\n onDirectoryNumberChange(value: any): void {\n if (this.lineAssociation && this.lineAssociation.directoryNumber) {\n // @ts-ignore\n this.userService.user.devices[0].lineAssociations[0].directoryNumber.directoryNumber = value;\n this.onExtensionChange.next(true);\n }\n }\n\n public onChangeField(token: string): void {\n if (!token) {\n return;\n }\n (this.userService.user as any)[token] = this.form?.get(token)?.value;\n\n }\n\n public toggleEditMode() {\n this.userService.user.toggleEditMode();\n }\n\n public isSavingDisabled(): boolean {\n return !this.userService.hasUnsavedChanges() || this.userService.hasExistedUserId;\n }\n\n public onChangeExtension(value: string): void {\n if (this.lineAssociation && this.lineAssociation.directoryNumber) {\n // @ts-ignore\n this.userService.user.devices[0].lineAssociations[0].directoryNumber.directoryNumber = value;\n }\n }\n\n private getData() {\n this.dataPending = true;\n this.dnsService.getNumberRange(String(this.siteId), this.userId)\n .subscribe({\n complete: (v: any) => {\n this.dataPending = false;\n },\n error: (e: any) => this.dataPending = false,\n });\n }\n}\n","<div id=\"user-calling\" class=\"info-boxes-container\" *ngIf=\"siteId && lineAssociation && form\" [formGroup]=\"form\">\n <!-- USER INFO BOX-->\n <div class=\"user-info-box user-details-box\">\n <h3 class=\"user-box-title\">Numbers</h3>\n <div class=\"form-holder__inputs\">\n <h4>Directory Number</h4>\n <table>\n <tr>\n <th>Type</th>\n <th>Number</th>\n <th>Extension</th>\n </tr>\n <tr >\n <td></td>\n <td></td>\n <td>\n <app-user-calling-extension\n *ngIf=\"formControl\"\n [siteId]=\"this.siteId\"\n [control]=\"formControl\"\n [routePartition]=\"this.lineAssociation?.directoryNumber?.routePartitionName\"\n [directoryNumber]=\"this.lineAssociation?.directoryNumber?.directoryNumber\"\n (onChange)=\"onDirectoryNumberChange($event)\">\n </app-user-calling-extension>\n\n </td>\n </tr>\n </table>\n </div>\n\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, Validators } from '@angular/forms';\nimport { UserService } from './services/user.service';\nimport { APIService } from \"./services/api.service\";\nimport { SimplifiedUser } from './classes/simplified-user';\nimport { LineAssociation } from './classes/line-association';\nimport { LineAssociationInterface } from './classes/line-association-interface';\n\n@Component({\n selector: 'app-user-manage-widget',\n templateUrl: './user-manage-widget.component.html',\n styleUrls: ['./user-manage-widget.component.scss'],\n})\nexport class UserManageWidgetComponent implements OnInit {\n\n public dataPending!: boolean;\n\n @Output() onSave = new EventEmitter<string>();\n @Output() onChange = new EventEmitter<string>();\n @Input() token!: string;\n @Input() host!: string;\n @Input() siteId!: number;\n @Input() userId!: string;\n @Input() isLdap!: boolean;\n\n get form(): FormGroup {\n return this.userService?.user?.form;\n }\n\n get user(): SimplifiedUser {\n return this.userService.user;\n }\n\n get userName(): string {\n return `${this.user?.firstName || ''} ${this.user?.lastName || ''}`;\n }\n\n get lineAssociation(): LineAssociation | LineAssociationInterface {\n return this.userService?.user?.devices[0].lineAssociations[0];\n }\n\n\n constructor(\n public userService: UserService,\n private apiService: APIService,\n ) {\n this.userService.onUserLineSaved$\n .subscribe(() => {\n this.userService.persistCacheChanges()\n .subscribe(() => {\n this.userService.dataPending = false;\n this.onSave.next(\"saved\");\n });\n }, () => this.userService.dataPending = false);\n }\n\n ngOnInit(): void {\n this.apiService.token = this.token;\n this.apiService.apiUrl = this.host;\n this.getData();\n }\n\n public onExtensionChange(): void {\n this.onChange.next(\"start extension change..\");\n }\n\n public onChangeField(token: string): void {\n this.onChange.next(\"start change..\");\n\n if (!token) {\n return;\n }\n (this.userService.user as any)[token] = this.form?.get(token)?.value;\n\n if (token === 'middleName') {\n this.form?.get(token)?.setValidators([Validators.pattern('[ a-zA-Z-]+')]);\n }\n if (token === 'telephoneNumber' || token === 'mobileNumber' || token === 'pagerNumber' || token === 'homeNumber') {\n this.form?.get(token)?.setValidators([Validators.pattern('[ 0-9-+]+')]);\n }\n this.form?.get(token)?.updateValueAndValidity();\n this.validateUserId();\n }\n\n public saveChanges(): void {\n if (!this.userService.hasUnsavedChanges() || this.form?.invalid) {\n return;\n }\n\n if (this.user.devices[0].lineAssociations[0] && !this.user.devices[0].lineAssociations[0].equals(this.userService.originUser.devices[0].lineAssociations[0])) {\n return this.userService.saveNewLine();\n } else {\n this.dataPending = true;\n const subscription = this.userService.persistCacheChanges()\n .subscribe(() => {\n this.dataPending = false;\n this.onSave.next(\"user has been saved successfully..\");\n subscription.unsubscribe();\n }, () => this.dataPending = false);\n }\n }\n\n public toggleEditMode() {\n this.userService.user.toggleEditMode();\n }\n\n public isSavingDisabled(): boolean {\n return !this.userService.hasUnsavedChanges() || this.userService.hasExistedUserId;\n }\n\n public changeField(token: string): void {\n this.onChange.next(\"start change..\");\n const formField = this.user?.form?.get(token);\n if (token !== 'confirmDigestCredentials') {\n // @ts-ignore\n this.user[token] = formField?.value;\n }\n if (token === 'digestCredentials' || token === 'confirmDigestCredentials') {\n this.digestCredentialsHandler(token, formField);\n }\n }\n\n private digestCredentialsHandler(token: string, field: any) {\n const fieldNameToCompare = token === 'digestCredentials' ? 'confirmDigestCredentials' : 'digestCredentials';\n const fieldToCompare = this.userService.user.form.get(fieldNameToCompare);\n if (this.userService.user?.form?.get(token)) {\n this.userService.user?.form?.get(token)?.setErrors(null);\n this.userService.user?.form?.get(fieldNameToCompare)?.setErrors(null);\n\n /* if (!field.value && !fieldToCompare.value) {\n this.userService.user?.digestCredentials = null;\n return;\n }\n\n if (!field.value && fieldToCompare.value || !fieldToCompare.value && field.value) {\n const requiredFieldName = field.value ? fieldNameToCompare : token;\n this.userService.user.form.get(requiredFieldName).setErrors({required: true});\n return;\n }\n if (field.value && fieldToCompare.value && field.value !== fieldToCompare.value) {\n this.userService.user.form.get(token).setErrors({mismatch: true});\n this.userService.user.form.get(fieldNameToCompare).setErrors({mismatch: true});\n }*/\n }\n\n }\n\n private getData() {\n this.dataPending = true;\n this.userService.fetchUserToken(this.siteId, this.userId, this.isLdap)\n .subscribe({\n complete: (v: any) => {\n this.dataPending = false;\n },\n error: (e: any) => this.dataPending = false,\n });\n }\n\n private setCookie(name: string, value: string, days: number) {\n var expires = \"\";\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = \"; expires=\" + date.toUTCString();\n }\n document.cookie = name + \"=\" + (value || \"\") + expires + \"; path=/\";\n }\n\n private validateUserId() {\n const idControl = this.form.get('userid');\n if (idControl?.value !== '' && idControl?.value !== this.userService.originUser.userid) {\n this.userService.fetchUserById(idControl?.value)\n .subscribe(\n (res: any) => {\n this.userService.userIdExistPending = false;\n idControl?.setErrors({exist: true});\n if (this.form?.get('userid')?.hasError('exist')) {\n this.userService.hasExistedUserId = true;\n } else {\n this.userService.hasExistedUserId = false;\n }\n },\n ((error) => {\n this.userService.userIdExistPending = false;\n if (error.status !== 404) {\n // this.notificationService.warning(this.translate.instant('APP_USER_MSG.CHECK_USER_ID_FAILED'));\n } else {\n this.userService.user.newUserId = this.form?.get('userid')?.value\n }\n }));\n } else {\n // delete this.userService?.user?.newUserId;\n }\n }\n\n public save() {\n this.saveChanges()\n }\n\n}\n","<app-loader *ngIf=\"dataPending || userService.dataPending\"></app-loader>\n\n<div *ngIf=\"!dataPending\">\n <div class=\"header-box\">\n <div class=\"content-box\">\n <div class=\"header-back-block\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z\"\n fill=\"black\" fill-opacity=\"0.95\"/>\n </svg>\n Users\n </div>\n </div>\n </div>\n <app-user-info *ngIf=\"user\" [name]=\"userName\" [email]=\"user.email\" [active]=\"true\"\n [position]=\"'Member of ' + user.siteName\"></app-user-info>\n\n <mat-tab-group disableRipple class=\"content-box\">\n <mat-tab label=\"Profile\">\n <ng-container *ngTemplateOutlet=\"userProfile\">\n </ng-container>\n </mat-tab>\n <mat-tab label=\"Calling\" [disabled]=\"!lineAssociation\">\n <app-user-calling *ngIf=\"lineAssociation\" [siteId]=\"siteId\"\n (onExtensionChange)=\"onExtensionChange()\"></app-user-calling>\n </mat-tab>\n <mat-tab label=\"Devices\" [disabled]=\"true\"></mat-tab>\n <mat-tab label=\"Lines\" [disabled]=\"true\"></mat-tab>\n <mat-tab label=\"Features\" [disabled]=\"true\"></mat-tab>\n </mat-tab-group>\n\n <ng-template #userProfile>\n <form *ngIf=\"user && form\" [formGroup]=\"form\">\n <div class=\"info-boxes-container\">\n <!-- USER INFO BOX-->\n <div class=\"user-info-box user-details-box\">\n <h3 class=\"user-box-title\">User Details</h3>\n <div class=\"form-holder__inputs\">\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">User Id</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"userid\" matInput (input)=\"onChangeField('userid')\">\n <mat-error\n *ngIf=\"form.get('userid').hasError('required')\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n This field is required\n </mat-error>\n <mat-error *ngIf=\"form.get('userid').hasError('exist')\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n User ID already exists\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Email</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"email\" matInput (input)=\"onChangeField('email')\">\n <mat-error\n *ngIf=\"form.get('email').touched && form.get('email').hasError('required')\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n This field is required\n </mat-error>\n <mat-error *ngIf=\"form.get('email').touched && form.get('email').hasError('pattern')\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n Please enter valid email\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Fisrt Name</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"firstName\" matInput (input)=\"onChangeField('firstName')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Last Name</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"lastName\" matInput (input)=\"onChangeField('lastName')\">\n <mat-error\n *ngIf=\"form.get('lastName').touched && form.get('lastName').hasError('required')\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n This field is required\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n </div>\n\n </div>\n\n\n <!-- USER INFO BOX-->\n <div class=\"user-info-box user-details-box\">\n <h3 class=\"user-box-title\">General User Info</h3>\n <div class=\"form-holder__inputs\">\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Department</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"department\" matInput type=\"text\" (input)=\"onChangeField('department')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Manager user ID</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"manager\" matInput type=\"text\" (input)=\"onChangeField('manager')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Associated PC</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"associatedPc\" matInput type=\"text\" (input)=\"onChangeField('associatedPc')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Digest credentials</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"digestCredentials\" matInput type=\"text\"\n (input)=\"onChangeField('digestCredentials')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">User profile</div>\n <div class=\"input-holder__input\">\n <app-lazy-loading-select\n [siteId]=\"siteId\"\n [controlName]=\"'userProfile'\"\n [form]=\"user.form\"\n (changeField)=\"changeField('userProfile')\"\n [optionsToken]=\"'userProfiles'\"\n ></app-lazy-loading-select>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Mobile voice access</div>\n <div class=\"input-holder__input\">\n <mat-slide-toggle\n formControlName=\"enableMobileVoiceAccess\"\n (change)=\"onChangeField('enableMobileVoiceAccess')\"\n [checked]=\"user.enableMobileVoiceAccess\">\n </mat-slide-toggle>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Userlocale</div>\n <div class=\"input-holder__input\">\n <app-lazy-loading-select\n [siteId]=\"siteId\"\n [controlName]=\"'userLocale'\"\n [form]=\"user.form\"\n (changeField)=\"changeField($event)\"\n [optionsToken]=\"'userLocales'\"\n [default]=\"{key: '', value: 'None', disabled: false}\">\n </app-lazy-loading-select>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Confirm digest credentials</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"confirmDigestCredentials\" matInput type=\"text\"\n (input)=\"onChangeField('confirmDigestCredentials')\">\n </mat-form-field>\n </div>\n </div>\n </div>\n </div>\n\n <!-- USER INFO BOX-->\n <div class=\"user-info-box user-details-box\">\n <h3 class=\"user-box-title\">Contact Information</h3>\n <div class=\"form-holder__inputs\">\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Middle Name</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"text\" formControlName=\"middleName\" (input)=\"onChangeField('middleName')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Telephone Number</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"number\" formControlName=\"telephoneNumber\"\n (input)=\"onChangeField('telephoneNumber')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Mobile Number</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"number\" formControlName=\"mobileNumber\" (input)=\"onChangeField('mobileNumber')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Digest credentials</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"text\" formControlName=\"digestCredentials\"\n (input)=\"onChangeField('digestCredentials')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Diractory URI</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"text\" formControlName=\"directoryUri\" (input)=\"onChangeField('directoryUri')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Title</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"text\" formControlName=\"title\" (input)=\"onChangeField('title')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Home Number</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"number\" formControlName=\"homeNumber\" (input)=\"onChangeField('homeNumber')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Pager Number</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"number\" formControlName=\"pagerNumber\" (input)=\"onChangeField('pagerNumber')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Display Name</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"text\" formControlName=\"displayName\" (input)=\"onChangeField('displayName')\">\n </mat-form-field>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n\n </form>\n </ng-template>\n</div>\n\n<!--<mat-progress-spinner *ngIf=\"dataPending\"-->\n<!-- class=\"page-spinner\"-->\n<!-- mode=\"indeterminate\"-->\n<!-- [diameter]=\"120\"></mat-progress-spinner>-->\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { APIService } from './services/api.service';\nimport { AppLoaderComponent } from './utils/app-loader/app-loader';\nimport { UserService } from './services/user.service';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { AuthInterceptor } from './interseptors/auth.interceptor';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { CommonModule } from '@angular/common';\nimport { UserInfoComponent } from './user-info/user-info.component';\nimport { MaterialModule } from './material.module';\nimport { NotificationService } from './services/notification.service';\nimport { NotificationsComponent } from './notifications/notification.component';\nimport { UsersSearchService } from './services/users-search.service';\nimport { PaginationComponent } from './utils/pagination/pagination.component';\nimport { RemoveKynFromIBMService } from './services/removeKynFromIBM.service';\nimport { SiteSettingsService } from './services/site-settings.service';\nimport { LazyLoadingSelectComponent } from './lazy-loading-select/lazy-loading-select.component';\nimport { UserManageWidgetComponent } from './user-manage-widget.component';\nimport { DnsService } from './services/dns.service';\nimport { LineService } from './services/line.service';\nimport { UserCallingComponent } from './user-calling/user-calling.component';\nimport { UserCallingExtensionComponent } from './user-calling/user-calling-extension/user-calling-extension.component';\n\n@NgModule({\n declarations: [\n AppLoaderComponent,\n UserInfoComponent,\n NotificationsComponent,\n PaginationComponent,\n LazyLoadingSelectComponent,\n UserManageWidgetComponent,\n UserCallingComponent,\n UserCallingExtensionComponent\n ],\n imports: [\n CommonModule,\n BrowserModule,\n BrowserAnimationsModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n MaterialModule,\n ],\n providers: [\n APIService,\n UserService,\n NotificationService,\n UsersSearchService,\n RemoveKynFromIBMService,\n SiteSettingsService,\n DnsService,\n LineService,\n {provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true}\n ],\n exports: [UserManageWidgetComponent]\n\n})\nexport class UserManageModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.APIService","i2.LineService","i1","i1.NotificationService","RemoveKynFromIBMService","i2.RemoveKynFromIBMService","i2","i3","i4","i5","i2.SiteSettingsService","i6","i1.UserService","i2.DnsService","i5.UserCallingExtensionComponent","i2.APIService","i7","i8","i10.AppLoaderComponent","i11.UserInfoComponent","i12.LazyLoadingSelectComponent","i13.UserCallingComponent"],"mappings":"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"}
1
+ {"version":3,"file":"tuki-io-tuki-widgets-user-manage.mjs","sources":["../../../../projects/tuki/widgets/user-manage/src/services/api.service.ts","../../../../projects/tuki/widgets/user-manage/src/app.constants.ts","../../../../projects/tuki/widgets/user-manage/src/services/site-settings.service.ts","../../../../projects/tuki/widgets/user-manage/src/common-functions.ts","../../../../projects/tuki/widgets/user-manage/src/classes/line-directory.ts","../../../../projects/tuki/widgets/user-manage/src/classes/line-call-info-display.ts","../../../../projects/tuki/widgets/user-manage/src/classes/translation-pattern.ts","../../../../projects/tuki/widgets/user-manage/src/classes/line-association.ts","../../../../projects/tuki/widgets/user-manage/src/classes/device.ts","../../../../projects/tuki/widgets/user-manage/src/classes/simplified-user.ts","../../../../projects/tuki/widgets/user-manage/src/services/utils.service.ts","../../../../projects/tuki/widgets/user-manage/src/services/sorting-utils.service.ts","../../../../projects/tuki/widgets/user-manage/src/services/line.service.ts","../../../../projects/tuki/widgets/user-manage/src/services/user.service.ts","../../../../projects/tuki/widgets/user-manage/src/utils/app-loader/app-loader.ts","../../../../projects/tuki/widgets/user-manage/src/utils/app-loader/app-loader.component.html","../../../../projects/tuki/widgets/user-manage/src/interseptors/auth.interceptor.ts","../../../../projects/tuki/widgets/user-manage/src/user-info/user-info.component.ts","../../../../projects/tuki/widgets/user-manage/src/user-info/user-info.component.html","../../../../projects/tuki/widgets/user-manage/src/material.module.ts","../../../../projects/tuki/widgets/user-manage/src/environments/environment.ts","../../../../projects/tuki/widgets/user-manage/src/classes/notification.ts","../../../../projects/tuki/widgets/user-manage/src/services/notification.service.ts","../../../../projects/tuki/widgets/user-manage/src/notifications/notification.component.ts","../../../../projects/tuki/widgets/user-manage/src/notifications/notification.component.html","../../../../projects/tuki/widgets/user-manage/src/classes/user-list.ts","../../../../projects/tuki/widgets/user-manage/src/removeKynFromIBM.service.ts","../../../../projects/tuki/widgets/user-manage/src/services/users-search.service.ts","../../../../projects/tuki/widgets/user-manage/src/utils/pagination/pagination.component.ts","../../../../projects/tuki/widgets/user-manage/src/utils/pagination/pagination.component.html","../../../../projects/tuki/widgets/user-manage/src/services/removeKynFromIBM.service.ts","../../../../projects/tuki/widgets/user-manage/src/lazy-loading-select/lazy-loading-select.component.ts","../../../../projects/tuki/widgets/user-manage/src/lazy-loading-select/lazy-loading-select.component.html","../../../../projects/tuki/widgets/user-manage/src/classes/line.ts","../../../../projects/tuki/widgets/user-manage/src/services/dns.service.ts","../../../../projects/tuki/widgets/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.ts","../../../../projects/tuki/widgets/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.html","../../../../projects/tuki/widgets/user-manage/src/user-calling/user-calling.component.ts","../../../../projects/tuki/widgets/user-manage/src/user-calling/user-calling.component.html","../../../../projects/tuki/widgets/user-manage/src/user-manage-widget.component.ts","../../../../projects/tuki/widgets/user-manage/src/user-manage-widget.component.html","../../../../projects/tuki/widgets/user-manage/src/user-manage.module.ts","../../../../projects/tuki/widgets/user-manage/tuki-io-tuki-widgets-user-manage.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { TableDataInterface } from '../classes/table-data';\nimport { Observable } from 'rxjs';\n\n\n\n@Injectable()\nexport class APIService {\n public token: any;\n apiUrl = window.location.protocol + '//' + window.location.hostname + '/dcp';\n\n constructor(\n private httpClient: HttpClient\n ) {\n }\n\n fetch(url: string, params?: any, cache?: boolean) {\n const headers = this.getHeaders(cache);\n params = params || {};\n return this.httpClient.get(this.apiUrl + url, {params: this.prepareEncodedParams(params), headers});\n }\n\n post(url: string, body: any, params = {}): any {\n body = body || null;\n const headers = this.getHeaders();\n return this.httpClient.post(this.apiUrl + url, body, {params: this.prepareEncodedParams(params), headers});\n }\n\n // use when response extended data is necessary:\n postExtended(url: string, body = null, params = {}, headers = {}) {\n headers = headers || this.getHeaders();\n return this.httpClient.post(this.apiUrl + url, body, {\n headers,\n observe: 'response',\n params: this.prepareEncodedParams(params)\n });\n }\n\n put(url: string, body = null, params = {}) {\n const headers = this.getHeaders();\n return this.httpClient.put(this.apiUrl + url, body, {headers, params: this.prepareEncodedParams(params)});\n }\n\n delete(url: string, params = {}) {\n const headers = this.getHeaders();\n return this.httpClient.delete(this.apiUrl + url, {headers, params: this.prepareEncodedParams(params)});\n }\n\n fetchPagination(url: string, pageSize: number, pageNumber: number, additionalParams = {}, cache?: boolean): Observable<TableDataInterface> {\n const copyAdditionalParams = JSON.parse(JSON.stringify(additionalParams));\n const params = Object.assign(copyAdditionalParams, {size: pageSize.toString(), page: pageNumber.toString()});\n return this.fetch(url, params, cache) as Observable<TableDataInterface>;\n }\n\n private prepareEncodedParams(params: any) {\n const result: any = {};\n\n if (!params) {\n return {};\n }\n for (const key of Object.keys(params)) {\n if (params[key]) {\n const stringParam = params[key].toString();\n result[key] = stringParam.includes('+') ? encodeURIComponent(stringParam) : stringParam;\n }\n }\n return result;\n }\n\n private getHeaders(cache?: boolean): HttpHeaders {\n let headers = new HttpHeaders();\n if (cache) {\n headers = headers.append('_Cache', 'true ');\n }\n const token = this.token || this.getParameterByName('token');\n headers = headers.append('Authorization', 'Bearer '+ token);\n return headers;\n }\n\n private getParameterByName(name: any, url = window.location.href) {\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\n results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return '';\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n }\n\n}\n","export const API = {\n USER_TOKEN: '/api/provision/:siteId/users/:userId/token',\n UPDATE_USER_FIELDS: '/api/provision/:siteId/userFields/:token',\n PERSIST_USER_CACHE: '/api/provision/:siteId/saveUser/:token',\n USER_BY_ID: '/api/provision/:siteId/users/:userId',\n QUICK_USERS_SEARCH: \"/api/search/quickusers\",\n LOCATION: \"/api/provision/options/:siteId/locations\",\n USER_LOCALES: \"/api/provision/options/:siteId/userlocales\",\n USER_PROFILES: \"/api/provision/options/:siteId/userprofiles\",\n AVAILABLE_DN_IN_RANGES: \"/api/sites/:siteId/available-dn-in-ranges\",\n DELETE_LINE: \"/api/provision/:siteId/deleteLine/:pkid/:token\",\n DISASSOCIATE_LINE: \"/api/provision/:siteId/:deviceName/deleteLineAssociation/:linePkid/:token\",\n CHECK_DELETE_LINE: \"/api/provision/:siteId/checklinedeletion\",\n ASSOCIATE_LINE: \"/api/provision/:siteId/:deviceName/createLineAssociation/:token\",\n CHECK_DESTINATION_NUMBER: \"/api/provision/:siteId/check-dn\",\n UPDATE_LINE_FIELDS: \"/api/provision/:siteId/lineFields/:pkid/:token\",\n UPDATE_DEVICE_FIELDS: \"/api/provision/:siteId/deviceFields/:deviceName/:token\"\n};\nexport const REGEX_PATTERN = {\n EMAIL: '^(([^<>()\\\\[\\\\]\\\\\\\\.,;:\\\\s@\"]+(\\\\.[^<>()\\\\[\\\\]\\\\\\\\.,;:\\\\s@\"]+)*)|(\".+\"))' +\n '@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])' +\n '?(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])?)*$'\n};\n\nexport const PAGINATION_DEFAULTS = {\n SIZE: 10,\n INDEX: 0\n}\nexport const PAGINATION_SIZE_OPTIONS = [\n 10,\n 50,\n 100,\n 500\n];\nexport const CUCS_TO_IGNORE = [\n 189,\n 194,\n 191,\n 190\n];\nexport const CUCMS_TO_IGNORE = [\n 249,\n 255,\n 251,\n 250\n];\nexport const RECORDING_MEDIA_SOURCE = [\n \"Gateway Preferred\",\n \"Phone Preferred\"\n];\n","import { Injectable, OnInit } from '@angular/core';\nimport { APIService } from './api.service';\nimport { API } from '../app.constants';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nconst urlMap = {\n locations: API.LOCATION,\n userLocales: API.USER_LOCALES,\n userProfiles: API.USER_PROFILES\n}\n\n@Injectable()\nexport class SiteSettingsService {\n\n constructor(\n private apiService: APIService\n ) {\n\n }\n public getSelectionOptions(siteId: number, token: string): any {\n if(!siteId) {\n return;\n }\n // @ts-ignore\n const URL = urlMap[token];\n return this.apiService.fetch(URL.replace(':siteId', String(siteId)), null, true)\n // @ts-ignore\n .pipe(map((options: string[]) => {\n // @ts-ignore\n this[token] = options ? options.sort() : [];\n // @ts-ignore\n return this[token];\n }))\n }\n}\n","export const getSavableData = (model: any, exclude?: Array<string>) => {\n let result = Object.keys(model);\n if (exclude && exclude.length) {\n result = result.filter(key => !exclude.some(item => item === key));\n }\n return result.reduce((result, key) => {\n if (model[key] instanceof Array && model[key].length && model[key][0].getSavableData) {\n (result as any)[key] = model[key].map((item: any) => item.getSavableData());\n } else if (model[key] instanceof Object && model[key].getSavableData) {\n (result as any)[key] = model[key].getSavableData();\n } else {\n (result as any)[key] = model[key];\n }\n return result;\n }, {});\n};\n","import { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { getSavableData } from '../common-functions';\nimport { LineDirectoryInterface } from './line';\n\nexport class LineDirectory implements LineDirectoryInterface {\n directoryNumber!: string;\n templateDirectoryNumber!: string;\n routePartitionName!: string;\n pkid!: string;\n dnType!: string;\n displayValue!: string;\n subType!: string;\n\n // non-savable data fields\n form!: FormGroup;\n\n constructor(lineDirectory: LineDirectoryInterface) {\n Object.assign(this, lineDirectory || {});\n // @ts-ignore\n if (this.directoryNumber && this.routePartitionName) {\n this.displayValue = `${this.directoryNumber}/${this.routePartitionName}`;\n }\n this.initForm();\n }\n\n getSavableData() {\n return getSavableData(this, ['form', 'displayValue', 'templateDirectoryNumber']);\n }\n\n equal(itemToCompare: any): boolean {\n return JSON.stringify(this.getSavableData()) === JSON.stringify(itemToCompare.getSavableData());\n }\n\n initForm() {\n const formBuilder = new FormBuilder();\n const formSettings = {\n directoryNumber: [{value: this.directoryNumber || '', disabled: true}, [Validators.required]],\n routePartitionName: [{value: this.routePartitionName || '', disabled: true}]\n };\n this.form = formBuilder.group(formSettings);\n }\n}\n","import { LineCallInfoDisplayInterface } from './device';\nimport { FormGroup } from '@angular/forms';\nimport { getSavableData } from '../common-functions';\n\nexport class LineCallInfoDisplay implements LineCallInfoDisplayInterface {\n callerName!: string;\n callerNumber!: string;\n redirectedNumber!: string;\n dialedNumber!: string;\n\n // non-savable data fields\n form!: FormGroup;\n\n constructor(lineCallInfoDisplay: LineCallInfoDisplayInterface) {\n Object.assign(this, lineCallInfoDisplay || {});\n }\n\n getSavableData() {\n return getSavableData(this, ['form']);\n }\n}\n","import {FormBuilder, FormGroup} from '@angular/forms';\nimport { TranslationPatternInterface } from './line';\nimport { getSavableData } from '../common-functions';\n\nexport class TranslationPattern implements TranslationPatternInterface {\n pattern!: string;\n calledPartyTransformationMask!: string;\n description!: string;\n site!: any;\n hasMultipleSites!: boolean;\n multipleSitesId!: string;\n cucmId!: number;\n\n // non-savable data fields\n form!: FormGroup;\n isNewForExistingLine!: boolean;\n\n constructor(translationPattern?: TranslationPatternInterface) {\n Object.assign(this, translationPattern || {});\n this.initForm();\n }\n\n public getSavableData() {\n return getSavableData(this, ['form', 'isNewForExistingLine']);\n }\n\n initForm() {\n const formBuilder = new FormBuilder();\n const formSettings = {\n pattern: [{value: this.pattern || ''}],\n calledPartyTransformationMask: [{value: this.calledPartyTransformationMask || ''}]\n };\n this.form = formBuilder.group(formSettings);\n }\n\n public getSiteId() {\n if (this.site && this.site.id != null) {\n return this.site.id;\n }\n if (this.hasMultipleSiteIds()) {\n return this.multipleSitesId.split(',')[0];\n }\n return null;\n }\n\n private hasMultipleSiteIds(): boolean {\n return this.hasMultipleSites && !!this.multipleSitesId && this.multipleSitesId.length > 0;\n }\n}\n","import { LineDirectory } from './line-directory';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { LineCallInfoDisplay } from './line-call-info-display';\nimport { TranslationPattern } from './translation-pattern';\nimport { RecordingOptions } from './device';\nimport { LineAssociationInterface } from './line-association-interface';\nimport { getSavableData } from '../common-functions';\nimport { RECORDING_MEDIA_SOURCE } from '../app.constants';\n\nexport class LineAssociation implements LineAssociationInterface {\n index!: number;\n position: any;\n e164Mask!: string;\n textLabel!: string;\n displayLabel!: string;\n displayLabelAscii!: string;\n directoryNumber!: any;\n didPattern!: any;\n mappedDids!: Array<string>;\n linePkid!: string;\n maxNumberOfCalls!: number;\n busyTrigger!: number;\n recordingOption!: RecordingOptions;\n recordingProfile!: string;\n recordingMediaSource!: string;\n visualMWI!: string;\n audibleMWI!: string;\n ringSetting_idle!: string;\n ringSetting_active!: string;\n pickupAAS_idle!: string;\n pickupAAS_active!: string;\n monitorCSS!: string;\n logMissedCall!: string;\n callInfoDisplay!: LineCallInfoDisplay;\n lineLocalId!: string;\n callerName!: string;\n callerNumber!: string;\n redirectedNumber!: string;\n dialedNumber!: string;\n // non-savable data fields\n viewMode!: boolean;\n form!: FormGroup;\n sharedUsers = [];\n sharedDevices = [];\n callingSearchSpace!: string;\n ownerUserId!: Array<string>;\n associated!: boolean;\n patternUsage!: boolean;\n plarDestinationNumber!: string;\n prefixDigits!: string;\n plarDescription!: string;\n plarEnabled!: boolean;\n alertingName!: string;\n description!: string;\n populateWithDid!: boolean;\n\n constructor(lineAssociation: any) {\n Object.assign(this, lineAssociation || {});\n if (lineAssociation) {\n this.index = lineAssociation.index || null;\n this.position = lineAssociation.position || null;\n this.e164Mask = lineAssociation.e164Mask || '';\n this.textLabel = lineAssociation.textLabel || '';\n this.displayLabel = lineAssociation.displayLabel || '';\n this.displayLabelAscii = lineAssociation.displayLabelAscii || '';\n this.linePkid = lineAssociation.linePkid || lineAssociation.pkid || '';\n this.maxNumberOfCalls = lineAssociation.maxNumberOfCalls || null;\n this.busyTrigger = lineAssociation.busyTrigger || null;\n this.directoryNumber = new LineDirectory(lineAssociation.directoryNumber);\n this.didPattern = new TranslationPattern(lineAssociation.didPattern);\n this.recordingOption = lineAssociation.recordingOption || RecordingOptions.disabled;\n this.recordingProfile = lineAssociation.recordingProfile || '';\n this.recordingMediaSource = lineAssociation.recordingMediaSource || RECORDING_MEDIA_SOURCE[0];\n this.visualMWI = lineAssociation.visualMWI || '';\n this.audibleMWI = lineAssociation.audibleMWI || '';\n this.ringSetting_idle = lineAssociation.ringSetting_idle || '';\n this.ringSetting_active = lineAssociation. ringSetting_active || '';\n this.pickupAAS_idle = lineAssociation.pickupAAS_idle || '';\n this.pickupAAS_active = lineAssociation.pickupAAS_active || '';\n this.monitorCSS = lineAssociation.monitorCSS || '';\n this.logMissedCall = lineAssociation.logMissedCall || true;\n this.callInfoDisplay = new LineCallInfoDisplay(lineAssociation.callInfoDisplay);\n this.lineLocalId = lineAssociation.lineLocalId || lineAssociation.localId || '';\n this.callingSearchSpace = lineAssociation.callingSearchSpace || '';\n this.ownerUserId = lineAssociation.ownerUserId;\n this.associated = lineAssociation.associated;\n this.alertingName = lineAssociation.alertingName;\n this.description = lineAssociation.description;\n this.patternUsage = lineAssociation.patternUsage;\n this.plarDestinationNumber = lineAssociation.plarDestinationNumber;\n this.prefixDigits = lineAssociation.prefixDigits;\n this.plarDescription = lineAssociation.plarDescription;\n this.plarEnabled = lineAssociation.plarEnabled;\n this.populateWithDid = lineAssociation.populateWithDid;\n }\n this.initForm();\n }\n\n getSavableData() {\n const excludedFields = ['viewMode', 'form', 'callingSearchSpace', 'plarDestinationNumber', 'prefixDigits', 'plarDescription', 'plarEnabled'];\n return getSavableData(this, excludedFields);\n }\n\n getDnSavableData() {\n\n }\n\n initForm() {\n // TEMP simplified line form\n const formBuilder = new FormBuilder();\n const formSettings = {\n directoryNumber: [this.directoryNumber.directoryNumber || ''],\n };\n this.form = formBuilder.group(formSettings);\n }\n\n /*initForm(appValidators: ValidationService) {\n const formBuilder = new FormBuilder();\n const formSettings = {\n displayLabel: [this.displayLabel || '', [Validators.maxLength(30), Validators.pattern('[^%&\\\\[{}|\"<>\\\\]]*')]],\n alertingName: [this.alertingName || ''],\n description: [this.description || ''],\n e164Mask: [this.e164Mask || '', [appValidators.e164MaskLabel]],\n displayLabelAscii: [this.displayLabelAscii || '', [appValidators.displayLabelAscii]],\n textLabel: [this.textLabel || '', [Validators.maxLength(30), Validators.pattern('[^\"]*')]],\n maxNumberOfCalls: [this.maxNumberOfCalls || '', [ Validators.min(0)]],\n busyTrigger: [this.busyTrigger || '', [Validators.min(0), Validators.max(this.maxNumberOfCalls || 200)]],\n recordingOption: [this.recordingOption || ''],\n recordingProfile: [this.recordingProfile || '', [appValidators.conditionalRequired('recordingOption',\n [RecordingOptions.auto_enabled, RecordingOptions.selective_enabled])]],\n recordingMediaSource: [this.recordingMediaSource || ''],\n visualMWI: [this.visualMWI || ''],\n audibleMWI: [this.audibleMWI || ''],\n ringSetting_idle: [this.ringSetting_idle || ''],\n ringSetting_active: [this.ringSetting_active || ''],\n pickupAAS_idle: [this.pickupAAS_idle || ''],\n pickupAAS_active: [this.pickupAAS_active || ''],\n monitorCSS: [this.monitorCSS || ''],\n logMissedCall: [this.logMissedCall === 'true'],\n callerName: [this.callInfoDisplay && this.callInfoDisplay.callerName === 'true'],\n callerNumber: [this.callInfoDisplay && this.callInfoDisplay.callerNumber === 'true'],\n redirectedNumber: [this.callInfoDisplay && this.callInfoDisplay.redirectedNumber === 'true'],\n dialedNumber: [this.callInfoDisplay && this.callInfoDisplay.dialedNumber === 'true' ]\n };\n this.form = formBuilder.group(formSettings);\n if (this.directoryNumber) {\n this.form.addControl('directoryNumber', this.directoryNumber.form);\n }\n if (this.didPattern) {\n this.form.addControl('didPattern', this.didPattern.form);\n }\n }*/\n\n equals(line: LineAssociation | any) {\n if (!line) {\n return false;\n }\n return this.directoryNumber.directoryNumber === line.directoryNumber.directoryNumber &&\n this.directoryNumber.routePartitionName === line.directoryNumber.routePartitionName;\n }\n}\n","import { getSavableData } from '../common-functions';\nimport { EntityChangeType } from './line';\nimport { LineAssociation } from './line-association';\nimport { LineAssociationInterface } from './line-association-interface';\n\nexport class Device {\n // simplified TEMP\n name!: string;\n pkiid!: string\n deviceType!: string;\n lineAssociations!: LineAssociation[] | LineAssociationInterface[];\n\n constructor(device: any) {\n if (device) {\n this.name = device.name;\n this.deviceType = device.deviceType;\n this.pkiid = device.pkiid;\n this.lineAssociations = device.lineAssociations?.length ?\n device.lineAssociations.map((line: any) => new LineAssociation(line)) : [];\n }\n }\n\n getSavableData() {\n const excludedFields: string[] = ['form'];\n return getSavableData(this, excludedFields);\n }\n}\n\nexport interface DeviceInterface {\n name: string;\n newName: string;\n pkid: string;\n entityChangeType: EntityChangeType;\n deviceType: string;\n protocol: string;\n description: string;\n buttonTemplate: string;\n softkeyTemplate: string;\n devicePoolName: string;\n location: string;\n userLocale: string;\n enabledExtensionMobility: boolean;\n callingSearchSpaceName: string;\n services: string[];\n networkLocale: string;\n securityProfile: string;\n lineAssociations: LineAssociationInterface[];\n speedDials: SpeedDialInterface[];\n sipProfile: string;\n subscribeCallingSearchSpaceName: string;\n commonPhoneConfigName: string;\n ctiRemoteDevice: boolean;\n firstExpansionModule: string;\n secondExpansionModule: string;\n thirdExpansionModule: string;\n builtInBridge: string;\n extraOptions: DeviceExtraOptionsInterface;\n formDisabledControls: string[];\n sharedUsers: string[];\n busyLampFields: BusyLampFieldsInterface[];\n meetMeEnabled: boolean;\n deviceKind: any;\n isCtiRoutePoint: boolean;\n cucmId: string;\n plarDevice: boolean;\n firmwareVersion: any;\n certificateOperation: string;\n authenticationMode: string;\n authenticationString: string;\n rsaKeySize: string;\n operationCompletesBy: string;\n certificateStatus: string;\n day: string;\n month: string;\n year: string;\n hour: string;\n securityProfileUuid: string;\n excludeDeviceExtraOptions: boolean;\n webexUUID: string;\n}\nexport interface SpeedDialInterface {\n index: number;\n position: number;\n destination: string;\n label: string;\n editMode: boolean;\n}\nexport enum RecordingOptions {\n disabled = 'Call Recording Disabled',\n auto_enabled = 'Automatic Call Recording Enabled',\n selective_enabled = 'Selective Call Recording Enabled'\n}\nexport interface LineCallInfoDisplayInterface {\n callerName: string;\n callerNumber: string;\n redirectedNumber: string;\n dialedNumber: string;\n}\nexport interface SiteShortDataInterface {\n id: number;\n name: string;\n}\nexport interface DeviceExtraOptionsInterface {\n mediaResourceGroupList: string;\n userHoldMOHAudioSourceId: number;\n userHoldMOHAudioSourceName: string;\n networkMOHAudioSourceId: number;\n networkMOHAudioSourceName: string;\n aarCss: string;\n aarGroup: string;\n privacy: string;\n deviceMobilityMode: string;\n mobilityUserId: string;\n phonePersonalization: string;\n servicesProvisioning: string;\n phoneLoadName: string;\n phoneIdleBLFAlertSetting: string;\n phoneBusyBLFAlertSetting: string;\n useTrustedRelayPoint: string;\n alwaysUsePrimeLine: string;\n alwaysUsePrimeLineForVoiceMessage: string;\n geolocation: string;\n emergencyLocation: string;\n ignorePresentationIndicators: boolean;\n loggedIntoHuntGroup: boolean;\n enabledExtensionMobility: boolean;\n remoteDevice: boolean;\n protectedDevice: boolean;\n hotlineDevice: boolean;\n useDevicePoolCgpnIngressDN: boolean;\n cgpnIngressDN: string;\n useDevicePoolCgpnTransformCss: boolean;\n cgpnTransformationCss: string;\n packetCaptureMode: string;\n packetCaptureDuration: number;\n blfPresenceGroup: string;\n sipDialRules: string;\n mtpPreferredOriginatingCodec: string;\n rerouteCss: string;\n subscribeCss: string;\n mtpRequired: boolean;\n unattendedPort: boolean;\n requireDtmfReception: boolean;\n informationUrl: string;\n directoryUrl: string;\n messagesUrl: string;\n servicesUrl: string;\n authenticationUrl: string;\n proxyServerUrl: string;\n idleUrl: string;\n idleTimeout: string;\n secureAuthenticationUrl: string;\n secureDirectoryUrl: string;\n secureIdleUrl: string;\n secureInformationUrl: string;\n secureMessageUrl: string;\n secureServicesUrl: string;\n mlppDomain: string;\n mlppIndication: string;\n mlppPreemption: string;\n confidentialAccessMode: string;\n confidentialAccessLevel: string;\n confidentialAccessLevelName: string;\n doNotDisturb: boolean;\n dndOption: string;\n dndIncomingCallAlert: string;\n disableSpeakerphone: boolean;\n disableSpeakerphoneAndHeadset: boolean;\n forwardingDelay: boolean;\n pcPort: boolean;\n settingsAccess: string;\n gratuitousARP: boolean;\n pcVoiceVlanAccess: boolean;\n videoCapabilities: boolean;\n webAccess: boolean;\n daysDisplayNotActive: string[];\n displayOnTime: string;\n displayOnDuration: string;\n displayIdleTimeout: string;\n wirelessHeadsetHookswitchControl: boolean;\n minRingVolume: string;\n showAllCallsOnPL: boolean;\n lineMode: string;\n latentCapabilityRegistration: string;\n analogGatewayPortInformation: AnalogGatewayPortInformationInterFace;\n}\nexport interface AnalogGatewayPortInformationInterFace {\n portDirection: string;\n prefixDn: string;\n numDigits: number;\n expectedDigits: number;\n smdiPortNumber: number;\n trunk: string;\n unattendedPort: string;\n}\nexport interface BusyLampFieldsInterface {\n index: number;\n position: number;\n destination: string;\n dnWithRoutePartition: string;\n label: string;\n callPickup: boolean;\n}\n","import { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { getSavableData } from '../common-functions';\nimport { REGEX_PATTERN } from '../app.constants';\nimport { Device } from './device';\nimport { LineAssociation } from './line-association';\nimport { LineAssociationInterface } from './line-association-interface';\n\nexport class SimplifiedUser {\n userid!: string;\n email!: string;\n firstName!: string;\n lastName!: string;\n siteId!: number;\n siteName!: number;\n token!: string;\n // general user info\n department!: string;\n manager!: string;\n associatedPc!: string;\n digestCredentials!: string;\n userProfile!: string;\n enableMobileVoiceAccess!: boolean;\n userLocale!: string;\n confirmDigestCredentials: any;\n\n // contact information\n middleName!: string;\n telephoneNumber!: string;\n mobileNumber!: string;\n directoryUri!: string;\n title!: string;\n homeNumber!: string;\n pagerNumber!: string;\n displayName!: string;\n\n devices!: Device[];\n\n viewMode!: string;\n hasModifiedCache!: boolean;\n newUserId!: string;\n editMode!: boolean;\n ldapIntegrated!: boolean;\n form!: FormGroup;\n\n constructor(user?: any, isLdap?: boolean) {\n // isLdap TEMP because of token response issue\n if (user) {\n this.userid = user.userid;\n this.email = user.email;\n this.firstName = user.firstName;\n this.lastName = user.lastName;\n this.siteId = user.siteId;\n this.siteName = user.siteName;\n this.token = user.token;\n\n this.department = user.department;\n this.manager = user.manager;\n this.associatedPc = user.associatedPc;\n this.digestCredentials = user.digestCredentials;\n this.userProfile = user.userProfile;\n this.enableMobileVoiceAccess = user.enableMobileVoiceAccess;\n this.ldapIntegrated = user.ldapIntegrated || isLdap || false;\n this.userLocale = user.userLocale;\n this.confirmDigestCredentials = user.confirmDigestCredentials;\n\n this.middleName = user.middleName;\n this.telephoneNumber = user.telephoneNumber;\n this.mobileNumber = user.mobileNumber;\n this.directoryUri = user.directoryUri;\n this.title = user.title;\n this.homeNumber = user.homeNumber;\n this.pagerNumber = user.pagerNumber;\n this.displayName = user.displayName;\n\n if (user.devices && user.devices.length) {\n this.devices = user.devices.map((device: any) => new Device(device));\n if (user.lines && user.lines.length) {\n this.devices.forEach(device => {\n if (device && device.lineAssociations && device.lineAssociations.length) {\n device.lineAssociations.forEach(lineAssociation => {\n lineAssociation.callingSearchSpace = this.getLineVal(lineAssociation, user.lines, 'callingSearchSpace');\n lineAssociation.textLabel = lineAssociation.textLabel || this.getLineVal(lineAssociation, user.lines, 'textLabel') || '';\n lineAssociation.alertingName = lineAssociation.alertingName || this.getLineVal(lineAssociation, user.lines, 'alertingName') || '';\n })\n }\n })\n }\n }\n }\n this.initForm()\n }\n\n getLineVal(lineAssociation: LineAssociation | LineAssociationInterface, lines: any, token: string): any {\n const lineForVal = lines.find((line: any) => line.directoryNumber.directoryNumber === lineAssociation.directoryNumber.directoryNumber);\n return lineForVal && lineForVal[token] || '';\n }\n\n getUserDetailsSavableData() {\n const excludedFields: string[] = ['devices', 'deviceProfiles', 'lines', 'singleNumberReach', 'vmPassword', 'vmUnifiedMessagingAccount', 'alternateExtensions', 'callerInput', 'lineAppearances', 'meetMes', 'webAppPasswordSettings', 'form'];\n return getSavableData(this, excludedFields);\n }\n\n initForm() {\n const formBuilder = new FormBuilder();\n const formSettings = {\n userid: [{value: this.userid || '', disabled: this.ldapIntegrated}, [Validators.required, Validators.maxLength(128)]],\n email: [{value: this.email || '', disabled: this.ldapIntegrated}, [\n Validators.pattern(REGEX_PATTERN.EMAIL),\n Validators.required\n ]],\n firstName: [{value: this.firstName || '', disabled: this.ldapIntegrated}],\n lastName: [{value: this.lastName || '', disabled: this.ldapIntegrated}, Validators.required],\n department: [{value: this.department || '', disabled: false}],\n middleName: [{value: this.middleName || '', disabled: false}],\n title: [{value: this.title || '', disabled: false}],\n telephoneNumber: [{value: this.telephoneNumber || '', disabled: false}],\n homeNumber: [{value: this.homeNumber || '', disabled: false}],\n mobileNumber: [{value: this.mobileNumber || '', disabled: false}],\n pagerNumber: [{value: this.pagerNumber || '', disabled: false}],\n displayName: [{value: this.displayName || '', disabled: false}],\n manager: [{value: this.manager || '', disabled: false}],\n associatedPc: [this.associatedPc || ''],\n directoryUri: [this.directoryUri || ''],\n userProfile: [this.userProfile],\n enableMobileVoiceAccess: [this.enableMobileVoiceAccess],\n ldapIntegrated: [this.ldapIntegrated],\n userLocale: [this.userLocale || ''],\n digestCredentials: [''],\n confirmDigestCredentials: ['']\n };\n this.form = formBuilder.group(formSettings);\n }\n\n toggleEditMode() {\n this.editMode = !this.editMode;\n /*['userid', 'email', 'firstName', 'lastName'].forEach(token => {\n if (this.editMode) {\n this.form.get(token)?.enable();\n } else {\n this.form.get(token)?.disable();\n }\n })*/\n }\n\n getSavableData() {\n const excludedFields: string[] = ['form', 'editMode', 'viewMode', 'token', 'hasModifiedCache', 'confirmDigestCredentials'];\n return getSavableData(this, excludedFields);\n }\n\n equal(userToCompare?: SimplifiedUser): boolean {\n if (!userToCompare) {\n return false;\n }\n return JSON.stringify(this.getSavableData()) === JSON.stringify(userToCompare.getSavableData());\n }\n\n}\n\nexport interface SimplifiedUserInterface {\n userid: string;\n email: string;\n firstName: string;\n lastName: string;\n form: FormGroup;\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class UtilsService {\n\n static sortSortArrayByProperty(array: [], sortBy: string) {\n if (!array) {\n return null;\n }\n return array.sort((a, b) => {\n if (!a[sortBy] && !b[sortBy]) {\n return 0;\n }\n if (a[sortBy] && !b[sortBy]) {\n return 1;\n }\n if (!a[sortBy] && b[sortBy]) {\n return -1;\n }\n const positionA = a[sortBy];\n const positionB = b[sortBy];\n return (positionA < positionB) ? -1 : (positionA > positionB) ? 1 : 0;\n });\n }\n\n static diff(origObject: any, updatedObj: any, path: string, keysToIgnore?: string[]) {\n let result: any = [];\n if (Object.is(origObject, updatedObj)) {\n return undefined;\n }\n if (!updatedObj || typeof updatedObj !== 'object') {\n return updatedObj;\n }\n const concat = Array.from(new Set([...Object.keys(origObject || {}), ...Object.keys(updatedObj || {})]));\n const filter = keysToIgnore ? concat.filter(key => !keysToIgnore.includes(key)) : concat;\n filter\n .forEach(key => {\n if (typeof updatedObj[key] === 'object' && typeof origObject[key] === 'object') {\n if (UtilsService.differs(updatedObj[key], origObject[key])) {\n const newPath = `${path}${path ? '.' : ''}${key}`;\n const values = UtilsService.diff(origObject[key], updatedObj[key], newPath, keysToIgnore);\n if (values !== undefined) {\n result = [...result, ...values];\n }\n }\n } else if (updatedObj && !origObject || updatedObj[key] !== origObject[key] && !Object.is(origObject[key], updatedObj[key])) {\n const value = updatedObj ? UtilsService.formatIfEmpty(updatedObj[key]) : null;\n result.push(`${path}${path ? '.' : ''}${key}=${value}`);\n }\n });\n return result;\n }\n\n static formatIfEmpty(value: any) {\n if (value) {\n return value;\n }\n switch (typeof value) {\n case 'boolean':\n return value;\n case 'string':\n return '';\n default:\n return null;\n }\n }\n\n static differs(obj1: any, obj2: any): boolean {\n return JSON.stringify(obj1) !== JSON.stringify(obj2);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { LineAssociationInterface } from '../classes/line-association-interface';\nimport { DeviceInterface } from '../classes/device';\nimport { LineInterface } from '../classes/line';\nimport { LineAssociation } from '../classes/line-association';\n\nconst string_array = function (original: string[], updated: string[], fullKey: string) {\n if (!updated || !SortingUtilsService.differs(original, updated)) {\n return null;\n }\n return `${fullKey}=${updated.join(',')}`;\n};\n\nconst line_reference = function (original: string[], updated: string[], fullKey: string) {\n if (!updated || !SortingUtilsService.differs(original, updated)) {\n return null;\n }\n // @ts-ignore\n return Object.keys(updated).map(key => `${fullKey}.${key}=${updated[key]}`);\n};\n\nconst nullable = function (original: string[], updated: string[], fullKey: string) {\n if (!original && updated) {\n // @ts-ignore\n return Object.keys(updated).map(key => `${fullKey}.${key}=${updated[key]}`);\n } else if (original && !updated) {\n return `${fullKey}=null`;\n } else {\n return SortingUtilsService.diff(original, updated, fullKey, []);\n }\n};\n\n@Injectable()\nexport class SortingUtilsService {\n\n static dictionary = {\n features: string_array,\n services: string_array,\n directoryNumber: line_reference,\n primaryLineReference: line_reference,\n speedDials: function (original: any, updated: any, fullKey: string) {\n if (!updated || !SortingUtilsService.differs(original, updated)) {\n return null;\n }\n // todo only changes, identification\n let map: any = [];\n updated.map((speedDial: any) => {\n const currentFullKey = `${fullKey}.${speedDial.index}`; // ${speedDial.type} CHECk ?\n map = [...map, Object.keys(speedDial).map(key => `${currentFullKey}.${key}=${speedDial[key]}`)];\n });\n return map;\n },\n lineAssociations: function (original: LineAssociationInterface[], updated: LineAssociationInterface[], fullKey: string) {\n if (!updated || !SortingUtilsService.differs(original, updated)) {\n return null;\n }\n let map: any = [];\n updated.map((lineAssociation: LineAssociationInterface) => {\n const currentFullKey = `${fullKey}.${lineAssociation.linePkid ? lineAssociation.linePkid : lineAssociation.lineLocalId}`;\n const originalLineAssociation = original.find(line => line.index === lineAssociation.index);\n if (SortingUtilsService.differs(originalLineAssociation, lineAssociation)) {\n const diff = SortingUtilsService.diff(originalLineAssociation, lineAssociation, currentFullKey, []);\n map = [...map, ...diff];\n }\n });\n return map;\n },\n enterpriseAltNum: nullable,\n e164AltNum: nullable\n };\n\n public static sortDevicesByTypeAndName(array: Array<DeviceInterface>): any {\n if (!array) {\n return null;\n }\n return array.sort((a, b) => {\n if (a.deviceType === b.deviceType) {\n return (a.name < b.name) ? -1 : (a.name > b.name) ? 1 : 0;\n } else {\n return (a.deviceType < b.deviceType) ? -1 : 1;\n }\n });\n }\n\n static sortLinesByDirectoryName(array: LineInterface[]): any {\n if (!array) {\n return null;\n }\n return array.sort((a, b) => {\n if (!a.directoryNumber && !b.directoryNumber) {\n return 0;\n }\n if (a.directoryNumber && !b.directoryNumber) {\n return 1;\n }\n if (!a.directoryNumber && b.directoryNumber) {\n return -1;\n }\n const directoryNumberA = a.directoryNumber.directoryNumber;\n const directoryNumberB = b.directoryNumber.directoryNumber;\n return (directoryNumberA < directoryNumberB) ? -1 : (directoryNumberA > directoryNumberB) ? 1 : 0;\n });\n }\n\n static sortLineAssociationsByPosition(array: LineAssociation[]): any {\n if (!array) {\n return null;\n }\n return array.sort((a, b) => {\n if (!a.position && !b.position) {\n return 0;\n }\n if (a.position && !b.position) {\n return 1;\n }\n if (!a.position && b.position) {\n return -1;\n }\n const positionA = a.position;\n const positionB = b.position;\n return (positionA < positionB) ? -1 : (positionA > positionB) ? 1 : 0;\n });\n }\n\n static sortSortArrayByProperty(array: any, sortBy: string): any {\n if (!array) {\n return null;\n }\n return array.sort((a: any, b: any) => {\n if (!a[sortBy] && !b[sortBy]) {\n return 0;\n }\n if (a[sortBy] && !b[sortBy]) {\n return 1;\n }\n if (!a[sortBy] && b[sortBy]) {\n return -1;\n }\n const positionA = a[sortBy];\n const positionB = b[sortBy];\n return (positionA < positionB) ? -1 : (positionA > positionB) ? 1 : 0;\n });\n }\n\n\n static diff(origObject: any, updatedObj: any, path: string, keysToIgnore: any) {\n let result: any = [];\n if (Object.is(origObject, updatedObj)) {\n return undefined;\n }\n if (!updatedObj || typeof updatedObj !== 'object') {\n return updatedObj;\n }\n const concat = Array.from(new Set([...Object.keys(origObject || {}), ...Object.keys(updatedObj || {})]));\n const filter = keysToIgnore ? concat.filter(key => !keysToIgnore.includes(key)) : concat;\n filter\n .forEach(key => {\n // @ts-ignore\n if (this.dictionary[key]) {\n // @ts-ignore\n const complexResult = this.dictionary[key](origObject[key], updatedObj[key], `${path}${path ? '.' : ''}${key}`);\n if (complexResult) {\n if (Array.isArray(complexResult)) {\n result = [...result, ...complexResult];\n } else {\n result.push(complexResult);\n }\n }\n } else if (typeof updatedObj[key] === 'object' && typeof origObject[key] === 'object') {\n if (SortingUtilsService.differs(updatedObj[key], origObject[key])) {\n const newPath = `${path}${path ? '.' : ''}${key}`;\n const values = SortingUtilsService.diff(origObject[key], updatedObj[key], newPath, keysToIgnore);\n if (values !== undefined) {\n result = [...result, ...values];\n }\n }\n } else if (updatedObj && !origObject || updatedObj[key] !== origObject[key] && !Object.is(origObject[key], updatedObj[key])) {\n const value = updatedObj ? SortingUtilsService.formatIfEmpty(updatedObj[key]) : null;\n result.push(`${path}${path ? '.' : ''}${key}=${value}`);\n }\n });\n return result;\n }\n\n static formatIfEmpty(value: any): any {\n if (value) {\n return value;\n }\n switch (typeof value) {\n case 'boolean':\n return value;\n case 'string':\n return '';\n default:\n return null;\n }\n }\n\n static differs(obj1: any, obj2: any): boolean {\n return JSON.stringify(obj1) !== JSON.stringify(obj2);\n }\n\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class LineService {\n public generateLineAssociationFromLine(lineAssociation?: any) {\n return {\n directoryNumber: lineAssociation ? this.generateLineDirectory(lineAssociation) : null,\n didPattern: lineAssociation ? this.generateDidPatternForLineAssociation(lineAssociation) : null,\n mappedDids: lineAssociation ? '' : 'null',\n index: lineAssociation ? lineAssociation.index : null,\n position: lineAssociation ? lineAssociation.position : null,\n textLabel: lineAssociation ? lineAssociation.textLabel : null,\n // displayLabel: lineAssociation ? lineAssociation.displayLabel : 'null',\n alertingName: lineAssociation ? lineAssociation.alertingName : null,\n callerNumber: lineAssociation ? '' : 'null'\n }\n }\n\n generateLineDirectory(lineAssociation?: any): any {\n return {\n directoryNumber: lineAssociation.directoryNumber.directoryNumber,\n routePartitionName: lineAssociation.directoryNumber.routePartitionName,\n }\n }\n\n generateDidPatternForLineAssociation(lineAssociation?: any): any {\n return {\n calledPartyTransformationMask: lineAssociation.directoryNumber && lineAssociation.directoryNumber.directoryNumber\n }\n }\n}\n","import {Injectable, OnInit} from '@angular/core';\nimport { of, forkJoin, Subject } from 'rxjs';\nimport { SimplifiedUser } from '../classes/simplified-user';\nimport { API } from '../app.constants';\nimport { APIService } from './api.service';\nimport { map } from 'rxjs/operators';\nimport { UtilsService } from './utils.service';\nimport { LineAssociation } from '../classes/line-association';\nimport { LineAssociationInterface } from '../classes/line-association-interface';\nimport { LineService } from './line.service';\nimport { SortingUtilsService } from './sorting-utils.service';\n\n@Injectable()\nexport class UserService implements OnInit{\n siteId: number = -1;\n userId: string = '';\n dataPending = false;\n userIdExistPending = false;\n hasExistedUserId = false;\n user!: SimplifiedUser;\n originUser!: SimplifiedUser;\n onUserLineSaved$ = new Subject<any>();\n\n get lineAssociation(): LineAssociation | LineAssociationInterface {\n return this.user && this.originUser.devices && this.user.devices[0] && this.user.devices[0].lineAssociations && this.user.devices[0].lineAssociations[0];\n }\n\n get originLineAssociation(): LineAssociation | LineAssociationInterface {\n return this.originUser && this.originUser.devices && this.originUser.devices[0] && this.originUser.devices[0].lineAssociations && this.originUser.devices[0].lineAssociations[0];\n }\n\n constructor(\n private apiService: APIService,\n private lineService: LineService\n ) {\n\n }\n\n ngOnInit(): void {\n console.log(this.siteId)\n }\n\n public fetchUserToken(siteId: number, userId: string, isLdap?: boolean, isSetNewTokenOnly?: boolean): any {\n // isLdap TEMP because of token response issue\n this.siteId = siteId;\n this.userId = userId;\n return this.apiService.fetch(API.USER_TOKEN.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))))\n .pipe(map((result: any) => {\n const user = result && Object.values(result)[0];\n const token = Object.keys(result)[0];\n if (user) {\n if (!isSetNewTokenOnly) {\n this.setSimplifiedUser(user);\n this.user.token = user.token ;\n }\n this.user.token = user.token || token;\n this.originUser.token = user.token || token;\n }\n }))\n // .pipe(this.handleError(false, true));\n }\n\n public updateUserFields(body: any): any {\n if (!this.siteId ) {\n return;\n }\n return this.apiService.post(API.UPDATE_USER_FIELDS.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), body)\n // .pipe(this.handleError(false, true));\n }\n\n public fetchUserById(id: string) {\n this.userIdExistPending = true;\n return this.apiService.fetch(API.USER_BY_ID.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(id))))\n .pipe(map(result => {\n this.userIdExistPending = false;\n return result;\n }));\n }\n\n public persistCacheChanges() {\n /*const params = {\n excludeDeviceExtraOptions: true\n };*/\n return this.processUserChangesToCache()\n .pipe(map((result: any) => {\n return this.apiService.post(API.PERSIST_USER_CACHE.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), {})\n .subscribe(() => {\n\n })\n // .pipe(map((user) => {\n // // this.setUser(user, false, this.user.token);\n // this.user.hasModifiedCache = false;\n // }))\n // .pipe(this.handleError(true, true));\n }));\n }\n\n public processUserChangesToCache(): any {\n const calls = [];\n const body = UtilsService.diff(this.originUser.getUserDetailsSavableData(), this.user.getUserDetailsSavableData(), 'user');\n if (body?.length) {\n calls.push(this.updateUserFields(body));\n }\n if (!calls?.length) {\n return of(this.user);\n }\n\n return forkJoin(calls)\n .pipe(map((responses: any) => {\n // ApiUserResponse\n this.handleSaveUserResponse(responses);\n }))\n // .pipe(this.handleError(false, true));\n\n }\n\n public saveNewLine(): any {\n this.dataPending = true;\n this.deleteLine(this.user.siteId, this.lineAssociation.linePkid, encodeURIComponent(this.user.token))\n .subscribe(() => {\n const URL = API.PERSIST_USER_CACHE.replace(':siteId', String(this.siteId)).replace(':token', this.user.token);\n this.apiService.post(URL, {}, )\n .subscribe(() => {\n this.fetchUserToken(this.siteId, this.user.userid, false, true)\n .subscribe(() => {\n this.runNewLineCreation();\n });\n });\n });\n }\n\n public runNewLineCreation(): void {\n // CREATE NEW LINE\n const newLineBody = SortingUtilsService.diff(\n this.lineService.generateLineAssociationFromLine(null),\n this.lineService.generateLineAssociationFromLine(this.lineAssociation),\n 'device.lineAssociations', null\n );\n this.associateLineToUserDevice(\n this.user.siteId,\n this.user.devices[0].name,\n newLineBody,\n null,\n this.lineAssociation.callingSearchSpace\n ).subscribe((response: any) => {\n if (response && response.currentUpdatedUser) {\n const linePkId = this.getLinePkIdFromUser(response?.currentUpdatedUser, 0);\n forkJoin([\n this.updateLineFields(this.siteId, linePkId, this.user.token, this.lineAssociation.alertingName),\n this.updateDeviceFields(this.siteId, this.user.devices[0]?.name, this.user.token)\n ]).subscribe((response: any) => {\n this.originUser.devices[0].lineAssociations[0].directoryNumber.directoryNumber = this.lineAssociation.directoryNumber.directoryNumber;\n this.onUserLineSaved$.next(true);\n });\n }\n })\n // -----\n }\n\n public getLinePkIdFromUser(user: any, index: number): any {\n if (user.devices && user.devices[index] && user.devices[index].lineAssociations && user.devices[index].lineAssociations[index]) {\n return user.devices[index].lineAssociations[index].linePkid || user.devices[index].lineAssociations[index].lineLocalId;\n }\n }\n\n public deleteLine(siteId: number, pkid: string, token: string) {\n return this.apiService.delete(API.DELETE_LINE.replace(':siteId', String(siteId)).replace(':pkid', pkid).replace(':token', encodeURIComponent(token)), {})\n // .pipe(this.handleError(true, false));\n }\n\n public disassociateLine(siteId: number, linePkid: string, token: string, deviceName: string) {\n return this.apiService.delete(\n API.DISASSOCIATE_LINE.replace(':siteId', String(siteId))\n .replace(':linePkid', linePkid)\n .replace(':deviceName', deviceName)\n .replace(':token', encodeURIComponent(token)), {})\n // .pipe(this.handleError(true, false));\n }\n\n public updateLineFields(siteId: number, pkid: string, token: string, alertingName: any) {\n const body = ['line.description=', `line.alertingName=${alertingName}`];\n return this.apiService.post(API.UPDATE_LINE_FIELDS.replace(':siteId', String(siteId)).replace(':pkid', encodeURIComponent(pkid)).replace(':token', encodeURIComponent(token)), body)\n // .pipe(this.handleError(true, false));\n }\n\n public updateDeviceFields(siteId: number, deviceName: string, token: string) {\n const body = ['device.associatedDNs.0=null'];\n return this.apiService.post(API.UPDATE_DEVICE_FIELDS.replace(':siteId', String(siteId)).replace(':deviceName', deviceName).replace(':token', encodeURIComponent(token)), body)\n // .pipe(this.handleError(true, false));\n }\n public checkDestinationNumber(siteId: string, directoryNumber: string, routePartitionName: string) {\n const params = {\n dntype: 'EXTENSION'\n };\n const body = {\n directoryNumber: directoryNumber,\n routePartitionName: routePartitionName\n };\n return this.apiService.post(API.CHECK_DESTINATION_NUMBER.replace(':siteId', siteId), body, params);\n }\n\n public associateLineToUserDevice(siteId: number, deviceName: string, body: any, pkid: any, css: any) {\n let params = {};\n if (pkid) {\n params = {linePkid: pkid};\n }\n if (css) {\n // @ts-ignore\n params['css'] = css;\n }\n return this.apiService.post(API.ASSOCIATE_LINE.replace(':siteId', String(siteId)).replace(':deviceName', deviceName)\n .replace(':token', encodeURIComponent(this.user.token)), body, params)\n // .pipe(this.handleError(true, true));\n }\n\n public hasUnsavedChanges() {\n if (this.user && this.originUser) {\n return !this.user.equal(this.originUser);\n }\n return false;\n }\n\n public setSimplifiedUser(user: any, isLdap?: boolean): void {\n // isLdap TEMP because of token response issue\n this.user = new SimplifiedUser(user, isLdap);\n const copiedUser = JSON.parse(JSON.stringify(user));\n this.originUser = new SimplifiedUser(copiedUser, isLdap);\n }\n\n private handleSaveUserResponse(responses: any) {\n if (!responses?.length) {\n return;\n }\n for (let len = responses.length, i = len - 1; i >= 0; i--) {\n if (responses[i] && responses[i].currentUpdatedUser) {\n // this.setUser(responses[i].currentUpdatedUser, false, this.user.token);\n this.user.hasModifiedCache = true;\n return;\n }\n }\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'app-loader',\n templateUrl: './app-loader.component.html',\n styleUrls: ['./app-loader.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppLoaderComponent {\n constructor() {\n }\n\n}\n","<div class=\"overlay\">\n <mat-progress-spinner\n class=\"page-spinner\"\n mode=\"indeterminate\"\n [diameter]=\"120\"></mat-progress-spinner>\n</div>\n","import { Injectable } from '@angular/core';\nimport {HttpEvent, HttpRequest, HttpInterceptor, HttpHandler, HttpErrorResponse} from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport {catchError } from 'rxjs/operators';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n constructor() {\n }\n\n intercept(\n request: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n request = request.clone({\n setHeaders: {\n // Authorization: basicAuthHeaderString\n }\n , withCredentials: true\n })\n\n return next.handle(request).pipe(catchError(err => {\n if (err instanceof HttpErrorResponse) {\n if (err.status === 401) {\n if (window.history.length < 3) {\n err.error.message = '';\n } else {\n err.error.message = 'SESSION_INACTIVE';\n }\n }\n }\n return throwError(err);\n }));\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-user-info',\n templateUrl: './user-info.component.html',\n styleUrls: ['./user-info.component.scss']\n})\nexport class UserInfoComponent {\n @Input()\n name!: string;\n @Input()\n active!: boolean;\n @Input()\n email!: string;\n @Input()\n position!: string;\n\n\n}\n","<div class=\"info-holder\">\n <div class=\"content-box flex-box\">\n <div class=\"info-holder__user-image\">\n <img src=\"../../../assets/a24749b225874bb3e3a4cb5d2f42e82c.png\" alt=\"\" class=\"avatar\">\n </div>\n <div class=\"info-holder__user-information\">\n <div class=\"info-holder__user-name\">{{name}}</div>\n <div class=\"info-holder__user-breadcrumbs\">\n <div class=\"is-active\" *ngIf=\"active; else notActive\">\n <span class=\"icon-user-status icon-user-status-active\"></span>Active\n </div>\n <div class=\"icon-separator\"></div>\n <div class=\"email\">{{email}}</div>\n <div class=\"icon-separator\"></div>\n <div class=\"position\">{{position}}</div>\n </div>\n </div>\n </div>\n\n</div>\n\n<ng-template #notActive>\n <div class=\"is-active\">\n <svg width=\"8\" height=\"9\" viewBox=\"0 0 8 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 8.5C6.20914 8.5 8 6.70914 8 4.5C8 2.29086 6.20914 0.5 4 0.5C1.79086 0.5 0 2.29086 0 4.5C0 6.70914 1.79086 8.5 4 8.5Z\" fill=\"grey\"/>\n </svg>\n <div>Not active</div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatListModule } from '@angular/material/list';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule } from '@angular/material/paginator';\n\n\n@NgModule({\n imports: [\n DragDropModule,\n MatButtonModule,\n MatListModule,\n MatProgressSpinnerModule,\n MatExpansionModule,\n MatInputModule,\n MatInputModule,\n MatListModule,\n MatTreeModule,\n MatTreeModule,\n MatNativeDateModule,\n MatDatepickerModule,\n MatTooltipModule,\n MatAutocompleteModule,\n MatChipsModule,\n MatSidenavModule,\n MatFormFieldModule,\n MatStepperModule,\n MatTabsModule,\n MatCardModule,\n MatSelectModule,\n MatCheckboxModule,\n MatSlideToggleModule,\n MatTableModule,\n MatPaginatorModule\n ],\n exports: [\n DragDropModule,\n MatButtonModule,\n MatListModule,\n MatProgressSpinnerModule,\n MatExpansionModule,\n MatInputModule,\n MatInputModule,\n MatListModule,\n MatTreeModule,\n MatTreeModule,\n MatNativeDateModule,\n MatDatepickerModule,\n MatTooltipModule,\n MatAutocompleteModule,\n MatChipsModule,\n MatSidenavModule,\n MatFormFieldModule,\n MatStepperModule,\n MatTabsModule,\n MatCardModule,\n MatCheckboxModule,\n MatSelectModule,\n MatSlideToggleModule,\n MatProgressSpinnerModule,\n MatTableModule,\n MatPaginatorModule\n ],\n})\nexport class MaterialModule {\n}\n","export const environment = {\n production: false,\n // apiUrl: 'http://localhost:4200',\n apiUrl: 'http://192.168.0.191:8080',\n notificationsLifetime: 30000,\n longNotificationsLifetime: 45000,\n cashCleanTimer: 900000,\n cashArrayLength: 10000,\n matomoUrl: 'http://192.168.0.136/matomo/',\n};\n","import { environment } from '../environments/environment';\nconst TTL_DEFAULT = environment.notificationsLifetime;\nconst TTL_LONG_DEFAULT = environment.longNotificationsLifetime;\n\nexport enum NotificationType {\n info = 'info',\n error = 'error',\n success = 'success',\n warning = 'warning'\n}\n\nexport class Notification {\n id?: number;\n type?: NotificationType;\n message?: string;\n ttl: number = TTL_DEFAULT;\n timerId?: any;\n\n constructor(data: any) {\n Object.assign(this, data || {});\n\n if(this.ttl === undefined) {\n this.ttl = this.message && this.message.length && this.message.length < 80 ? TTL_DEFAULT : TTL_LONG_DEFAULT;\n }\n }\n\n isInfo(): boolean {\n return this.type === NotificationType.info;\n }\n isError(): boolean {\n return this.type === NotificationType.error;\n }\n isSuccess(): boolean {\n return this.type === NotificationType.success;\n }\n isWarning(): boolean {\n return this.type === NotificationType.warning;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Notification } from '../classes/notification';\nimport { Subject } from 'rxjs';\nconst SUCCESS_TIME = 5000;\nconst INACTIVE_SESSION_MESSAGE = 'Your session was lost due to inactivity. Please login again';\nconst INACTIVE_SESSION = 'SESSION_INACTIVE';\n\n@Injectable()\nexport class NotificationService {\n\n public listChange = new Subject();\n\n private max = 0;\n private list: Notification[] = [];\n\n constructor(\n ) {\n }\n\n error(message: string, ttl?: number): void {\n this.notify('error', message, ttl);\n }\n\n success(message: string, ttl?: number): void {\n this.notify('success', message, (!ttl) ? SUCCESS_TIME : ttl);\n }\n\n warning(message: string, ttl?: number): void {\n this.notify('warning', message, ttl);\n }\n\n info(message: string, ttl?: number): void {\n this.notify('info', message, ttl);\n }\n private notify(type: string, message: string, ttl?: number): void {\n const found = this.list.find((n: Notification) => n.message === message);\n if (found) {\n this.remove(found);\n }\n const notification = new Notification({\n id: ++this.max,\n type, message, ttl\n });\n if (notification.ttl > 0) {\n notification.timerId = setTimeout(() => this.remove(notification, true), notification.ttl);\n }\n this.list.push(notification);\n this.listChange.next(this.list);\n }\n\n remove(notification: Notification, auto?: boolean): void {\n if (!auto && notification.timerId) {\n // clear timeout in case of manual remove\n clearInterval(notification.timerId);\n }\n this.list = this.list.filter(n => n.id !== notification.id);\n this.listChange.next(this.list);\n }\n\n private removeInactiveSessionError(): void {\n if (!this.list || !this.list.length) {\n return;\n }\n this.list = this.list.filter(n => n.message !== INACTIVE_SESSION_MESSAGE && n.message !== INACTIVE_SESSION);\n this.listChange.next(this.list);\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NotificationService } from '../services/notification.service';\nimport { Notification } from '../classes/notification';\n\n@Component({\n selector: 'app-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotificationsComponent implements OnInit, OnDestroy {\n public list!: Notification[];\n public isReadMore!: boolean;\n private listSubscription!: Subscription;\n\n constructor(\n public notificationService: NotificationService,\n private ref: ChangeDetectorRef\n ) {\n }\n\n ngOnInit() {\n this.listChangeSubscribe();\n }\n\n ngOnDestroy() {\n this.listSubscription.unsubscribe();\n }\n\n public readMore(): void {\n this.isReadMore = !this.isReadMore;\n }\n\n public removeNotification(notification: Notification): void {\n this.notificationService.remove(notification);\n }\n\n private listChangeSubscribe(): void {\n this.listSubscription = this.notificationService.listChange\n .subscribe((list: any) => {\n this.list = list;\n this.ref.detectChanges();\n });\n }\n}\n","<!--\n\n<div class=\"notification-block\" role=\"alert\" aria-live=\"assertive\">\n <div class=\"notification\"\n *ngFor=\"let notification of list\"\n [ngClass]=\"{'error': notification.isError(), 'success': notification.isSuccess()}\">\n\n <div class=\"flex-box\">\n <div class=\"notification-icons-block\">\n <i *ngIf=\"notification.isError()\" class=\"fa fa-exclamation-triangle\"></i>\n <i *ngIf=\"notification.isWarning()\" class=\"fa fa-hand-paper-o\"></i>\n <i *ngIf=\"notification.isSuccess()\" class=\"fa fa-check\"></i>\n <i *ngIf=\"notification.isInfo()\" class=\"fa fa-info-circle\"></i>\n </div>\n <div *ngIf=\"!isReadMore\" class=\"message-block\">\n {{notification.message | truncate:[93]}}\n </div>\n <div *ngIf=\"isReadMore\" class=\"message-block\">\n {{notification.message}}\n </div>\n </div>\n <div class=\"read-more-error link clickable\" *ngIf=\"notification.message && notification.message.length > 93\"\n (click)=\"readMore()\">{{(isReadMore ? 'BUTTON.COLLAPSE' : 'BUTTON.READ_MORE') | translate}}</div>\n <button\n class=\"close\"\n mat-icon-button\n matTooltip=\"{{'BUTTON.CLOSE' | translate}} {{'NOTIFICATION_MSG.' + notification.type | translate}} {{'NOTIFICATION_MSG.NOTI' | translate}}\"\n (click)=\"removeNotification(notification)\">\n <img class=\"notification-icon-close\" src=\"assets/icons/close_icon_modal.svg\" alt=\"\">\n </button>\n </div>\n</div>\n-->\n","import { DeviceInterface } from '../classes/device';\nimport { LineInterface } from '../classes/line';\n\nexport class ListUser {\n // @ts-ignore\n userid: string;\n firstName!: string;\n lastName!: string;\n email!: string;\n telephoneNumber!: string;\n devices: DeviceInterface[] = [];\n deviceProfiles: DeviceInterface[] = [];\n lines!: LineInterface[];\n siteId!: number;\n siteName!: string;\n webexUUID!: string;\n cucmId!: number;\n isMigrated!: boolean;\n\n constructor(user?: ListUser) {\n if (user) {\n Object.assign(this, user);\n }\n }\n}\n\nexport interface ListUserInterface {\n userid: string;\n firstName: string;\n lastName: string;\n email: string;\n telephoneNumber: string;\n viewMode: any;\n devices: DeviceInterface[];\n deviceProfiles: DeviceInterface[];\n lines: LineInterface[];\n siteId: number;\n siteName: string;\n webexUUID: string;\n cucmId: number;\n isMigrated: boolean;\n}\n","import { Injectable } from '@angular/core';\nimport { CUCMS_TO_IGNORE, CUCS_TO_IGNORE } from './app.constants';\n\n@Injectable()\nexport class RemoveKynFromIBMService {\n constructor() {\n }\n\n\n removeCUCMS(date: any, customerId: number) {\n if (customerId === 8) {\n return date.filter((val: any) => !CUCMS_TO_IGNORE.includes(Math.round(val.cucmId)));\n }\n return date;\n }\n\n removeCUCS(date: any, customerId: number) {\n if (customerId === 8) {\n return date.filter((val: any) => !CUCS_TO_IGNORE.includes(Math.round(val.cucId)));\n }\n return date;\n }\n\n\n}\n","import { Injectable, OnInit } from '@angular/core';\nimport { SimplifiedUser } from '../classes/simplified-user';\nimport { APIService } from './api.service';\nimport { ListUser, ListUserInterface } from '../classes/user-list';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { API, PAGINATION_DEFAULTS, PAGINATION_SIZE_OPTIONS } from '../app.constants';\nimport { TableDataInterface } from '../classes/table-data';\nimport { map } from 'rxjs/operators';\nimport { RemoveKynFromIBMService } from '../removeKynFromIBM.service';\nimport { PaginationDataDto } from '../classes/pagination';\n\n\n\n@Injectable()\nexport class UsersSearchService {\n siteId: number = -1;\n userId: string = '';\n customerId!: number;\n userIdExistPending = false;\n hasExistedUserId = false;\n pageSize = PAGINATION_DEFAULTS.SIZE;\n pageIndex = PAGINATION_DEFAULTS.SIZE;\n pageSizeOptions = PAGINATION_SIZE_OPTIONS;\n total!: number;\n searchParams!: any;\n foundUsers$!: any;\n\n constructor(\n private apiService: APIService,\n private removeKynFromIBMService: RemoveKynFromIBMService\n ) {\n this.foundUsers$ = new BehaviorSubject(null);\n\n }\n\n public getPagination(): PaginationDataDto {\n return {\n total: this.total,\n pageSizeOptions: this.pageSizeOptions,\n pageSize: this.pageSize,\n pageIndex: this.pageIndex\n };\n }\n\n public quickRegularUsersSearch() {\n this.searchParams = this.searchParams || {customerid: this.customerId};\n return this.apiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, this.pageIndex, this.searchParams)\n .pipe(map((res: TableDataInterface) => {\n this.total = res.total;\n // this.totals = this.totals || {};\n // this.totals['users'] = res.total;\n const users = res.pageData && res.pageData.length ? res.pageData.map(user => new ListUser(user)) : [];\n // this.foundUsers$.next(this.removeKynFromIBMService.removeCUCMS(users, this.customerId));\n this.foundUsers$.next(users);\n }));\n // .pipe(this.handleError(true));\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PaginationDataDto } from '../../classes/pagination';\nimport { PAGINATION_SIZE_OPTIONS } from '../../app.constants';\n\n\n@Component({\n selector: 'app-pagination',\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss'],\n})\nexport class PaginationComponent implements OnInit{\n @Input()\n public pagination!: PaginationDataDto;\n @Input()\n public showPageSizeOptions!: boolean;\n @Input()\n public showRefreshButton!: boolean;\n @Input()\n public lengthPending!: boolean;\n @Output()\n public pageEmitter = new EventEmitter();\n @Output()\n public pageNumberChangeEmitter = new EventEmitter<any>();\n public pageSizeOptions: number[] = PAGINATION_SIZE_OPTIONS;\n\n constructor(\n ) {\n }\n\n ngOnInit(): void {\n }\n\n public pageEvent(event: any) {\n this.pageEmitter.emit(event);\n }\n\n public changePerPageNumber(event: any) {\n this.pageNumberChangeEmitter.emit(event.value);\n }\n\n}\n","<div class=\"flex-box pagination\">\n <div class=\"page-indexes-box\">\n <mat-paginator\n [id]=\"'commonPagination'\"\n [hidePageSize]=\"true\"\n [length]=\"pagination.total\"\n [pageIndex]=\"pagination.pageIndex\"\n [pageSize]=\"pagination.pageSize\"\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\n (page)=\"pageEvent($event)\">\n </mat-paginator>\n <mat-spinner class=\"length-spinner\" [diameter]=\"20\" mode=\"indeterminate\" *ngIf=\"lengthPending\">\n </mat-spinner>\n </div>\n\n <div class=\"flex-box per-page-block\" *ngIf=\"showPageSizeOptions\">\n <div class=\"item_per_page\">Items per page:</div>\n <div class=\"select-box select-page-size\">\n <mat-select [(ngModel)]=\"pagination.pageSize\" (selectionChange)=\"changePerPageNumber($event)\" #page\n [id]=\"'commonPaginationSelect'\">\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\n </mat-select>\n </div>\n\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { CUCMS_TO_IGNORE, CUCS_TO_IGNORE } from '../app.constants';\n\n@Injectable()\nexport class RemoveKynFromIBMService {\n constructor() {\n }\n\n\n removeCUCMS(date: any, customerId: number) {\n if (customerId === 8) {\n return date.filter((val: any) => !CUCMS_TO_IGNORE.includes(Math.round(val.cucmId)));\n }\n return date;\n }\n\n removeCUCS(date: any, customerId: number) {\n if (customerId === 8) {\n return date.filter((val: any) => !CUCS_TO_IGNORE.includes(Math.round(val.cucId)));\n }\n return date;\n }\n\n\n}\n","import { AfterContentInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { NotificationService } from '../services/notification.service';\nimport { SiteSettingsService } from '../services/site-settings.service';\n\nexport interface OptionValue {\n key: string;\n value: string;\n disabled: boolean;\n}\n\n@Component({\n selector: 'app-lazy-loading-select',\n templateUrl: './lazy-loading-select.component.html',\n styleUrls: ['./lazy-loading-select.component.scss']\n})\nexport class LazyLoadingSelectComponent implements AfterContentInit {\n optionsPending!: boolean;\n options!: any;\n\n @Input()\n public siteId!: number\n @Input()\n public form!: FormGroup;\n @Input()\n public standalone = true;\n @Input()\n public placeholder!: string;\n @Input()\n public controlName!: string;\n @Input()\n public optionsToken!: string;\n @Input()\n public appearance = 'standard';\n @Input()\n public errorCode!: string;\n @Input()\n public errorText!: string;\n @Input()\n public default!: OptionValue;\n @Input()\n public id!: string;\n @Output()\n public changeField = new EventEmitter<string>();\n\n get formControl(): FormControl {\n return this.form?.get(this.controlName) as FormControl;\n }\n\n\n constructor(\n private notificationService: NotificationService,\n private siteSettingsService: SiteSettingsService,\n ) {\n }\n\n ngAfterContentInit() {\n this.options = [this.form?.get(this.controlName)?.value];\n }\n\n getOptions() {\n if (!this.siteId && this.options.length > 1) {\n return;\n }\n this.optionsPending = true;\n this.siteSettingsService.getSelectionOptions(this.siteId, this.optionsToken)\n .subscribe(() => {\n this.optionsPending = false;\n // @ts-ignore\n this.options = this.siteSettingsService[this.optionsToken];\n }, () => {\n this.optionsPending = false;\n // this.notificationService.error(this.translate.instant('COMMON.LOAD_SELECT_OPTIONS_FAILED'));\n });\n }\n\n public onFieldChange(token: string) {\n this.changeField.emit(token);\n }\n\n}\n","<ng-container *ngIf=\"standalone\">\n <mat-form-field appearance=\"outline\">\n <mat-select [formControl]=\"formControl\"\n (openedChange)=\"getOptions()\"\n [placeholder]=\"placeholder\"\n (selectionChange)=\"onFieldChange(controlName)\"\n [id]=\"id\">\n <mat-option *ngIf=\"default\" [disabled]=\"default.disabled\" [value]=\"default.key\">{{default.value}}</mat-option>\n <mat-option *ngFor=\"let type of options\" [value]=\"type\">\n {{type}}\n </mat-option>\n <mat-progress-spinner class=\"field-spinner\"\n [diameter]=\"20\"\n mode=\"indeterminate\"\n *ngIf=\"optionsPending\"></mat-progress-spinner>\n </mat-select>\n <mat-error *ngIf=\"form.get(controlName)?.hasError(errorCode)\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n {{errorText}}\n </mat-error>\n </mat-form-field>\n</ng-container>\n\n<!--\nThis duplication is caused by the following bug: https://github.com/angular/components/issues/9411\nWhich doesn't allow projection in mat-form-field\n-->\n\n<ng-container *ngIf=\"!standalone\">\n <mat-select *ngIf=\"form.get(controlName)\"\n [formControl]=\"formControl\"\n (openedChange)=\"getOptions()\"\n [placeholder]=\"placeholder\"\n (selectionChange)=\"onFieldChange(controlName)\"\n [id]=\"id\"\n >\n <mat-option *ngIf=\"default\" [disabled]=\"default.disabled\" [value]=\"default.key\">{{default.value}}</mat-option>\n <mat-option *ngFor=\"let type of options\" [value]=\"type\">\n {{type}}\n </mat-option>\n <mat-progress-spinner class=\"field-spinner\"\n [diameter]=\"20\"\n mode=\"indeterminate\"\n *ngIf=\"optionsPending\"></mat-progress-spinner>\n </mat-select>\n <mat-error *ngIf=\"form.get(controlName)?.hasError(errorCode)\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n {{errorText}}\n </mat-error>\n</ng-container>\n","\nexport interface LineInterface {\n description: string;\n pkid: string;\n entityChangeType: EntityChangeType;\n alertingName: string;\n asciiAlertingName: string;\n callingSearchSpace: string;\n voiceMailProfile: string;\n noAnswerRingDuration: number;\n autoAnswer: string;\n directoryNumber: LineDirectoryInterface;\n didPatterns: Array<TranslationPatternInterface>;\n mappedDids: Array<string>;\n aarSettings: LineAarInterface;\n callForwardAll: CallInterface;\n callForwardAllSecondaryCSS: CallInterface;\n callForwardBusyInternal: CallInterface;\n callForwardBusyExternal: CallInterface;\n callForwardNoAnswerInternal: CallInterface;\n callForwardNoAnswerExternal: CallInterface;\n callForwardNoCoverageInternal: CallInterface;\n callForwardNoCoverageExternal: CallInterface;\n callForwardOnCTIFailure: CallInterface;\n callForwardUnregisteredInternal: CallInterface;\n callForwardUnregisteredExternal: CallInterface;\n parkMonitoringExternal: LineParkMonitoringInterface;\n parkMonitoringInternal: LineParkMonitoringInterface;\n callPickupGroup: string;\n localId: string;\n urgentPriority: boolean;\n blfPresenceGroup: string;\n userHoldMOHAudioSourceId: string;\n userHoldMOHAudioSourceName: string;\n networkMOHAudioSourceId: string;\n networkMOHAudioSourceName: string;\n rejectAnonymousCall: boolean;\n enterpriseAltNum: AlternateNumberInterface;\n e164AltNum: AlternateNumberInterface;\n directoryUris: Array<DirectoryUriInterface>;\n callForwardAlternateParty: ParkMonitoringInterface;\n mlppNoAnswerRingDuration: number;\n confidentialAccessMode: string;\n confidentialAccessLevel: string;\n confidentialAccessLevelName: string;\n callControlAgentProfile: string;\n holdReversionRingDuration: number;\n holdReversionNotificationInterval: number;\n partyEntranceTone: string;\n pstnFailover: string;\n isExistingLine: boolean;\n plarDestinationNumber: string;\n prefixDigits: string;\n plarDescription: string;\n plarEnabled: boolean;\n}\n\nexport enum EntityChangeType {\n added = 'added',\n updated = 'updated',\n existing = 'existing',\n removed = 'removed',\n unassociated = 'unassociated'\n}\nexport interface LineDirectoryInterface {\n directoryNumber: string;\n routePartitionName: string;\n pkid: string;\n dnType: string;\n subType: string;\n templateDirectoryNumber: string;\n}\nexport interface TranslationPatternInterface {\n pattern: string;\n calledPartyTransformationMask: string;\n description: string;\n site: SiteShortDataInterface;\n hasMultipleSites: boolean;\n multipleSitesId: string;\n}\nexport interface SiteShortDataInterface {\n id: number;\n name: string;\n}\nexport interface LineAarInterface {\n aarDestinationMask: string;\n aarGroup: string;\n aarVoiceMailEnabled: boolean;\n aarKeepCallHistory: boolean;\n}\nexport interface CallInterface {\n forwardToVoiceMail: boolean;\n destination: string;\n callingSearchSpace: string;\n}\nexport interface LineParkMonitoringInterface {\n voiceMail: boolean;\n destination: string;\n callingSearchSpace: string;\n}\nexport interface AlternateNumberInterface {\n numberMask: string;\n addLocalRoutePartition: boolean;\n routePartition: string;\n isUrgent: boolean;\n advertiseGloballyIls: boolean;\n}\nexport interface DirectoryUriInterface {\n primary: boolean;\n uri: string;\n routePartition: string;\n advertiseGloballyIls: boolean;\n}\nexport interface ParkMonitoringInterface {\n destination: string;\n callingSearchSpace: string;\n voiceMail: boolean;\n}\nexport enum DnRangeType {\n extension = 'EXTENSION',\n cpg = 'CPG',\n callpark = 'CALLPARK',\n huntgroup = 'HUNTGROUP',\n meetme = 'MEETME',\n did = 'DID'\n}\nexport interface AvailablePhoneNumberRangeInterface {\n phoneNumberRange: DnRangeInterface;\n usedNumbers: string[];\n requestedNumber: string;\n unUsedNumbersWithDids: any;\n}\nexport interface DnRangeInterface {\n from: string;\n to: string;\n prefix: string;\n routePartition: string;\n dnType: DnRangeType;\n tempIdx: number;\n\n getEditableData(): any;\n\n getUsedRangeEditableData(): any;\n}\n","import { Injectable } from '@angular/core';\nimport { API } from '../app.constants';\nimport { APIService } from './api.service';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { Big } from 'big.js';\nimport { AvailablePhoneNumberRangeInterface, DnRangeType } from '../classes/line';\n// import * as Big from 'big.js';\n\n\n@Injectable()\nexport class DnsService {\n availableNumbers = {};\n availableDidPatternsMappedToDn!: any;\n constructor(\n private apiService: APIService\n ) {\n\n }\n public getNumberRange(siteId: string, routePartition: string, withdids?: boolean, from?: string, pageSize?: number): any {\n // @ts-ignore\n if (this.availableNumbers[routePartition] && this.availableNumbers[routePartition].length) {\n return new Observable<any>(observer => {\n // @ts-ignore\n observer.next(this.availableNumbers[routePartition]);\n });\n }\n\n this.availableDidPatternsMappedToDn = {};\n pageSize = pageSize ? pageSize : 20;\n const params = {dntype: DnRangeType.extension, routepartition: routePartition, size: pageSize, page: 0};\n if (withdids) {\n // @ts-ignore\n params['withdids'] = 'true';\n }\n if (from) {\n // @ts-ignore\n params['from'] = from;\n }\n // @ts-ignore\n this.availableNumbers[routePartition] = this.availableNumbers[routePartition] || [];\n\n return this.apiService.fetch(API.AVAILABLE_DN_IN_RANGES.replace(':siteId', siteId), params)\n .pipe(map((res: any) => {\n res.availableNumberList.forEach((availableNumber: AvailablePhoneNumberRangeInterface) => {\n this.setAvailableDidMappedToDn(availableNumber);\n // @ts-ignore\n this.availableNumbers[routePartition] = [...this.availableNumbers[routePartition], ...this.getUnwrapNumberRange(availableNumber)];\n });\n })\n )\n // .pipe(this.handleError(true, false));\n }\n\n public setAvailableDidMappedToDn(availableNumber: any): void {\n if (availableNumber.unUsedNumbersWithDids && availableNumber.unUsedNumbersWithDids.length) {\n\n availableNumber.unUsedNumbersWithDids.forEach((numberWithDids: any) => {\n const dn = numberWithDids['unUsedNumber'];\n this.availableDidPatternsMappedToDn[dn] = [{}];\n if (numberWithDids['translationPatternList'] && numberWithDids['translationPatternList'].length > 0) {\n this.availableDidPatternsMappedToDn[dn] = numberWithDids['translationPatternList'];\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = [{}];\n if (numberWithDids['mappedDids'] && numberWithDids['mappedDids'].length > 0) {\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = numberWithDids['mappedDids'];\n }\n }\n this.availableDidPatternsMappedToDn[dn][0]['vm'] = numberWithDids['vm'];\n });\n }\n }\n\n public getUnwrapNumberRange(availableNumber: any): any {\n const unwrapNumberRangeArray = this.unwrapNumberRange(availableNumber.phoneNumberRange.from, availableNumber.phoneNumberRange.to);\n if (unwrapNumberRangeArray?.length) {\n let unwrapNumberRange = unwrapNumberRangeArray.map((unwrappedNumber: string) => {\n const dn = availableNumber.phoneNumberRange.prefix + unwrappedNumber;\n let str = dn;\n if (this.availableDidPatternsMappedToDn[dn] && this.availableDidPatternsMappedToDn[dn].length > 0) {\n if (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] && this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 0) {\n str += ' DID: ' + (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 1 ? 'multiple' :\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'][0]);\n }\n if (this.availableDidPatternsMappedToDn[dn][0]['vm']) {\n str += ' In Use - VM';\n }\n }\n return str;\n });\n unwrapNumberRange = unwrapNumberRange.filter((unwrappedNumber: string) => !availableNumber.usedNumbers.includes(unwrappedNumber));\n return unwrapNumberRange;\n } else {\n return [];\n }\n\n }\n\n public unwrapNumberRange(start: string, end: string): string[] {\n const regExp = /(^0+)/;\n let leadingZeros = '';\n const matches = start.match(regExp);\n if (matches) {\n leadingZeros = matches[1];\n }\n const startNumeric = new Big(start);\n const endNumeric = new Big(end);\n // @ts-ignore\n return Array.from({length: (endNumeric.minus(startNumeric).plus(new Big(1)).toFixed(0))}, (v, k) => {\n const number = String(startNumeric.plus(new Big(k)).toFixed(0));\n if ((leadingZeros + number).length > start.length) {\n leadingZeros = leadingZeros.substr(1);\n }\n return leadingZeros + number;\n });\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { SimplifiedUser } from '../../classes/simplified-user';\nimport { UserService } from '../../services/user.service';\nimport { DnsService } from '../../services/dns.service';\n\n@Component({\n selector: 'app-user-calling-extension',\n templateUrl: './user-calling-extension.component.html',\n styleUrls: ['./user-calling-extension.component.scss'],\n})\nexport class UserCallingExtensionComponent implements OnInit {\n @Input() control!: FormControl;\n @Input() routePartition!: string;\n @Input() directoryNumber!: string;\n @Input() siteId!: number;\n @Output() onChange = new EventEmitter<string>();\n public dataPending!: boolean;\n\n get user(): SimplifiedUser {\n return this.userService.user;\n }\n\n get availableNumbers(): any {\n // @ts-ignore\n return this.routePartition && this.dnsService.availableNumbers ? this.dnsService.availableNumbers[this.routePartition] : null;\n }\n\n\n constructor(\n public userService: UserService,\n private dnsService: DnsService\n ) {\n }\n\n ngOnInit(): void {\n this.getData();\n }\n\n public onChangeField(event: any): void {\n // if (!token) {\n // return;\n // }\n // (this.userService.user as any)[token] = this.form?.get(token)?.value;\n this.onChange.emit(event?.value);\n\n }\n\n private getData() {\n if (!this.siteId || !this.routePartition) {\n return;\n }\n this.dataPending = true;\n this.dnsService.getNumberRange(String(this.siteId), this.routePartition)\n .subscribe(() => {\n if (this.availableNumbers) {\n // @ts-ignore\n this.dnsService.availableNumbers[this.routePartition].push(this.directoryNumber);\n }\n this.dataPending = false;\n });\n }\n}\n","<div *ngIf=\"this.availableNumbers?.length\" class=\"user-calling-extension\">\n <mat-form-field appearance=\"outline\">\n <mat-select [formControl]=\"control\" name=\"extension\"\n (selectionChange)=\"this.onChangeField($event)\">\n <mat-option *ngFor=\"let option of this.availableNumbers; let i = index;\"[value]=\"option\">{{option}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-spinner *ngIf=\"this.dataPending\" [diameter]=\"50\"></mat-spinner>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { SimplifiedUser } from '../classes/simplified-user';\nimport { LineAssociation } from '../classes/line-association';\nimport { LineAssociationInterface } from '../classes/line-association-interface';\nimport { UserService } from '../services/user.service';\nimport { DnsService } from '../services/dns.service';\n\n@Component({\n selector: 'app-user-calling',\n templateUrl: './user-calling.component.html',\n styleUrls: ['./user-calling.component.scss'],\n})\nexport class UserCallingComponent implements OnInit {\n @Input() siteId!: number;\n @Input() userId!: string;\n @Output() onExtensionChange = new EventEmitter<any>();\n public dataPending!: boolean;\n\n get form(): FormGroup {\n return this.userService?.user?.devices[0] && this.userService?.user?.devices[0].lineAssociations[0].form;\n }\n\n get formControl(): FormControl {\n const control = this.form?.get('directoryNumber') as FormControl;\n return control;\n }\n\n get lineAssociation(): LineAssociation | LineAssociationInterface {\n return this.userService?.user?.devices[0].lineAssociations[0];\n }\n\n get user(): SimplifiedUser {\n return this.userService.user;\n }\n\n\n constructor(\n public userService: UserService,\n private dnsService: DnsService\n ) {\n }\n\n ngOnInit(): void {\n // this.getData();\n }\n\n onDirectoryNumberChange(value: any): void {\n if (this.lineAssociation && this.lineAssociation.directoryNumber) {\n // @ts-ignore\n this.userService.user.devices[0].lineAssociations[0].directoryNumber.directoryNumber = value;\n this.onExtensionChange.next(true);\n }\n }\n\n public onChangeField(token: string): void {\n if (!token) {\n return;\n }\n (this.userService.user as any)[token] = this.form?.get(token)?.value;\n\n }\n\n public toggleEditMode() {\n this.userService.user.toggleEditMode();\n }\n\n public isSavingDisabled(): boolean {\n return !this.userService.hasUnsavedChanges() || this.userService.hasExistedUserId;\n }\n\n public onChangeExtension(value: string): void {\n if (this.lineAssociation && this.lineAssociation.directoryNumber) {\n // @ts-ignore\n this.userService.user.devices[0].lineAssociations[0].directoryNumber.directoryNumber = value;\n }\n }\n\n private getData() {\n this.dataPending = true;\n this.dnsService.getNumberRange(String(this.siteId), this.userId)\n .subscribe({\n complete: (v: any) => {\n this.dataPending = false;\n },\n error: (e: any) => this.dataPending = false,\n });\n }\n}\n","<div id=\"user-calling\" class=\"info-boxes-container\" *ngIf=\"siteId && lineAssociation && form\" [formGroup]=\"form\">\n <!-- USER INFO BOX-->\n <div class=\"user-info-box user-details-box\">\n <h3 class=\"user-box-title\">Numbers</h3>\n <div class=\"form-holder__inputs\">\n <h4>Directory Number</h4>\n <table>\n <tr>\n <th>Type</th>\n <th>Number</th>\n <th>Extension</th>\n </tr>\n <tr >\n <td></td>\n <td></td>\n <td>\n <app-user-calling-extension\n *ngIf=\"formControl\"\n [siteId]=\"this.siteId\"\n [control]=\"formControl\"\n [routePartition]=\"this.lineAssociation?.directoryNumber?.routePartitionName\"\n [directoryNumber]=\"this.lineAssociation?.directoryNumber?.directoryNumber\"\n (onChange)=\"onDirectoryNumberChange($event)\">\n </app-user-calling-extension>\n\n </td>\n </tr>\n </table>\n </div>\n\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, Validators } from '@angular/forms';\nimport { UserService } from './services/user.service';\nimport { APIService } from \"./services/api.service\";\nimport { SimplifiedUser } from './classes/simplified-user';\nimport { LineAssociation } from './classes/line-association';\nimport { LineAssociationInterface } from './classes/line-association-interface';\n\n@Component({\n selector: 'app-user-manage-widget',\n templateUrl: './user-manage-widget.component.html',\n styleUrls: ['./user-manage-widget.component.scss'],\n})\nexport class UserManageWidgetComponent implements OnInit {\n\n public dataPending!: boolean;\n\n @Output() onSave = new EventEmitter<string>();\n @Output() onChange = new EventEmitter<string>();\n @Input() token!: string;\n @Input() host!: string;\n @Input() siteId!: number;\n @Input() userId!: string;\n @Input() isLdap!: boolean;\n\n get form(): FormGroup {\n return this.userService?.user?.form;\n }\n\n get user(): SimplifiedUser {\n return this.userService.user;\n }\n\n get userName(): string {\n return `${this.user?.firstName || ''} ${this.user?.lastName || ''}`;\n }\n\n get lineAssociation(): LineAssociation | LineAssociationInterface {\n return this.userService?.user?.devices[0].lineAssociations[0];\n }\n\n\n constructor(\n public userService: UserService,\n private apiService: APIService,\n ) {\n this.userService.onUserLineSaved$\n .subscribe(() => {\n this.userService.persistCacheChanges()\n .subscribe(() => {\n this.userService.dataPending = false;\n this.onSave.next(\"saved\");\n });\n }, () => this.userService.dataPending = false);\n }\n\n ngOnInit(): void {\n this.apiService.token = this.token;\n this.apiService.apiUrl = this.host;\n this.getData();\n }\n\n public onExtensionChange(): void {\n this.onChange.next(\"start extension change..\");\n }\n\n public onChangeField(token: string): void {\n this.onChange.next(\"start change..\");\n\n if (!token) {\n return;\n }\n (this.userService.user as any)[token] = this.form?.get(token)?.value;\n\n if (token === 'middleName') {\n this.form?.get(token)?.setValidators([Validators.pattern('[ a-zA-Z-]+')]);\n }\n if (token === 'telephoneNumber' || token === 'mobileNumber' || token === 'pagerNumber' || token === 'homeNumber') {\n this.form?.get(token)?.setValidators([Validators.pattern('[ 0-9-+]+')]);\n }\n this.form?.get(token)?.updateValueAndValidity();\n this.validateUserId();\n }\n\n public saveChanges(): void {\n if (!this.userService.hasUnsavedChanges() || this.form?.invalid) {\n return;\n }\n\n if (this.user.devices[0].lineAssociations[0] && !this.user.devices[0].lineAssociations[0].equals(this.userService.originUser.devices[0].lineAssociations[0])) {\n return this.userService.saveNewLine();\n } else {\n this.dataPending = true;\n const subscription = this.userService.persistCacheChanges()\n .subscribe(() => {\n this.dataPending = false;\n this.onSave.next(\"user has been saved successfully..\");\n subscription.unsubscribe();\n }, () => this.dataPending = false);\n }\n }\n\n public toggleEditMode() {\n this.userService.user.toggleEditMode();\n }\n\n public isSavingDisabled(): boolean {\n return !this.userService.hasUnsavedChanges() || this.userService.hasExistedUserId;\n }\n\n public changeField(token: string): void {\n this.onChange.next(\"start change..\");\n const formField = this.user?.form?.get(token);\n if (token !== 'confirmDigestCredentials') {\n // @ts-ignore\n this.user[token] = formField?.value;\n }\n if (token === 'digestCredentials' || token === 'confirmDigestCredentials') {\n this.digestCredentialsHandler(token, formField);\n }\n }\n\n private digestCredentialsHandler(token: string, field: any) {\n const fieldNameToCompare = token === 'digestCredentials' ? 'confirmDigestCredentials' : 'digestCredentials';\n const fieldToCompare = this.userService.user.form.get(fieldNameToCompare);\n if (this.userService.user?.form?.get(token)) {\n this.userService.user?.form?.get(token)?.setErrors(null);\n this.userService.user?.form?.get(fieldNameToCompare)?.setErrors(null);\n\n /* if (!field.value && !fieldToCompare.value) {\n this.userService.user?.digestCredentials = null;\n return;\n }\n\n if (!field.value && fieldToCompare.value || !fieldToCompare.value && field.value) {\n const requiredFieldName = field.value ? fieldNameToCompare : token;\n this.userService.user.form.get(requiredFieldName).setErrors({required: true});\n return;\n }\n if (field.value && fieldToCompare.value && field.value !== fieldToCompare.value) {\n this.userService.user.form.get(token).setErrors({mismatch: true});\n this.userService.user.form.get(fieldNameToCompare).setErrors({mismatch: true});\n }*/\n }\n\n }\n\n private getData() {\n this.dataPending = true;\n this.userService.fetchUserToken(this.siteId, this.userId, this.isLdap)\n .subscribe({\n complete: (v: any) => {\n this.dataPending = false;\n },\n error: (e: any) => this.dataPending = false,\n });\n }\n\n private setCookie(name: string, value: string, days: number) {\n var expires = \"\";\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = \"; expires=\" + date.toUTCString();\n }\n document.cookie = name + \"=\" + (value || \"\") + expires + \"; path=/\";\n }\n\n private validateUserId() {\n const idControl = this.form.get('userid');\n if (idControl?.value !== '' && idControl?.value !== this.userService.originUser.userid) {\n this.userService.fetchUserById(idControl?.value)\n .subscribe(\n (res: any) => {\n this.userService.userIdExistPending = false;\n idControl?.setErrors({exist: true});\n if (this.form?.get('userid')?.hasError('exist')) {\n this.userService.hasExistedUserId = true;\n } else {\n this.userService.hasExistedUserId = false;\n }\n },\n ((error) => {\n this.userService.userIdExistPending = false;\n if (error.status !== 404) {\n // this.notificationService.warning(this.translate.instant('APP_USER_MSG.CHECK_USER_ID_FAILED'));\n } else {\n this.userService.user.newUserId = this.form?.get('userid')?.value\n }\n }));\n } else {\n // delete this.userService?.user?.newUserId;\n }\n }\n\n public save() {\n this.saveChanges()\n }\n\n}\n","<app-loader *ngIf=\"dataPending || userService.dataPending\"></app-loader>\n\n<div *ngIf=\"!dataPending\">\n <div class=\"header-box\">\n <div class=\"content-box\">\n <div class=\"header-back-block\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z\"\n fill=\"black\" fill-opacity=\"0.95\"/>\n </svg>\n Users\n </div>\n </div>\n </div>\n <app-user-info *ngIf=\"user\" [name]=\"userName\" [email]=\"user.email\" [active]=\"true\"\n [position]=\"'Member of ' + user.siteName\"></app-user-info>\n\n <mat-tab-group disableRipple class=\"content-box\">\n <mat-tab label=\"Profile\">\n <ng-container *ngTemplateOutlet=\"userProfile\">\n </ng-container>\n </mat-tab>\n <mat-tab label=\"Calling\" [disabled]=\"!lineAssociation\">\n <app-user-calling *ngIf=\"lineAssociation\" [siteId]=\"siteId\"\n (onExtensionChange)=\"onExtensionChange()\"></app-user-calling>\n </mat-tab>\n <mat-tab label=\"Devices\" [disabled]=\"true\"></mat-tab>\n <mat-tab label=\"Lines\" [disabled]=\"true\"></mat-tab>\n <mat-tab label=\"Features\" [disabled]=\"true\"></mat-tab>\n </mat-tab-group>\n\n <ng-template #userProfile>\n <form *ngIf=\"user && form\" [formGroup]=\"form\">\n <div class=\"info-boxes-container\">\n <!-- USER INFO BOX-->\n <div class=\"user-info-box user-details-box\">\n <h3 class=\"user-box-title\">User Details</h3>\n <div class=\"form-holder__inputs\">\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">User Id</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"userid\" matInput (input)=\"onChangeField('userid')\">\n <mat-error\n *ngIf=\"form.get('userid').hasError('required')\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n This field is required\n </mat-error>\n <mat-error *ngIf=\"form.get('userid').hasError('exist')\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n User ID already exists\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Email</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"email\" matInput (input)=\"onChangeField('email')\">\n <mat-error\n *ngIf=\"form.get('email').touched && form.get('email').hasError('required')\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n This field is required\n </mat-error>\n <mat-error *ngIf=\"form.get('email').touched && form.get('email').hasError('pattern')\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n Please enter valid email\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Fisrt Name</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"firstName\" matInput (input)=\"onChangeField('firstName')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Last Name</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"lastName\" matInput (input)=\"onChangeField('lastName')\">\n <mat-error\n *ngIf=\"form.get('lastName').touched && form.get('lastName').hasError('required')\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n This field is required\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n </div>\n\n </div>\n\n\n <!-- USER INFO BOX-->\n <div class=\"user-info-box user-details-box\">\n <h3 class=\"user-box-title\">General User Info</h3>\n <div class=\"form-holder__inputs\">\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Department</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"department\" matInput type=\"text\" (input)=\"onChangeField('department')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Manager user ID</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"manager\" matInput type=\"text\" (input)=\"onChangeField('manager')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Associated PC</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"associatedPc\" matInput type=\"text\" (input)=\"onChangeField('associatedPc')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Digest credentials</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"digestCredentials\" matInput type=\"text\"\n (input)=\"onChangeField('digestCredentials')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">User profile</div>\n <div class=\"input-holder__input\">\n <app-lazy-loading-select\n [siteId]=\"siteId\"\n [controlName]=\"'userProfile'\"\n [form]=\"user.form\"\n (changeField)=\"changeField('userProfile')\"\n [optionsToken]=\"'userProfiles'\"\n ></app-lazy-loading-select>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Mobile voice access</div>\n <div class=\"input-holder__input\">\n <mat-slide-toggle\n formControlName=\"enableMobileVoiceAccess\"\n (change)=\"onChangeField('enableMobileVoiceAccess')\"\n [checked]=\"user.enableMobileVoiceAccess\">\n </mat-slide-toggle>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Userlocale</div>\n <div class=\"input-holder__input\">\n <app-lazy-loading-select\n [siteId]=\"siteId\"\n [controlName]=\"'userLocale'\"\n [form]=\"user.form\"\n (changeField)=\"changeField($event)\"\n [optionsToken]=\"'userLocales'\"\n [default]=\"{key: '', value: 'None', disabled: false}\">\n </app-lazy-loading-select>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Confirm digest credentials</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input formControlName=\"confirmDigestCredentials\" matInput type=\"text\"\n (input)=\"onChangeField('confirmDigestCredentials')\">\n </mat-form-field>\n </div>\n </div>\n </div>\n </div>\n\n <!-- USER INFO BOX-->\n <div class=\"user-info-box user-details-box\">\n <h3 class=\"user-box-title\">Contact Information</h3>\n <div class=\"form-holder__inputs\">\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Middle Name</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"text\" formControlName=\"middleName\" (input)=\"onChangeField('middleName')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Telephone Number</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"number\" formControlName=\"telephoneNumber\"\n (input)=\"onChangeField('telephoneNumber')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Mobile Number</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"number\" formControlName=\"mobileNumber\" (input)=\"onChangeField('mobileNumber')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Digest credentials</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"text\" formControlName=\"digestCredentials\"\n (input)=\"onChangeField('digestCredentials')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Diractory URI</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"text\" formControlName=\"directoryUri\" (input)=\"onChangeField('directoryUri')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Title</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"text\" formControlName=\"title\" (input)=\"onChangeField('title')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Home Number</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"number\" formControlName=\"homeNumber\" (input)=\"onChangeField('homeNumber')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Pager Number</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"number\" formControlName=\"pagerNumber\" (input)=\"onChangeField('pagerNumber')\">\n </mat-form-field>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"input-holder\">\n <div class=\"input-holder__name\">Display Name</div>\n <div class=\"input-holder__input\">\n <mat-form-field appearance=\"outline\">\n <input matInput type=\"text\" formControlName=\"displayName\" (input)=\"onChangeField('displayName')\">\n </mat-form-field>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n\n </form>\n </ng-template>\n</div>\n\n<!--<mat-progress-spinner *ngIf=\"dataPending\"-->\n<!-- class=\"page-spinner\"-->\n<!-- mode=\"indeterminate\"-->\n<!-- [diameter]=\"120\"></mat-progress-spinner>-->\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { APIService } from './services/api.service';\nimport { AppLoaderComponent } from './utils/app-loader/app-loader';\nimport { UserService } from './services/user.service';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { AuthInterceptor } from './interseptors/auth.interceptor';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { CommonModule } from '@angular/common';\nimport { UserInfoComponent } from './user-info/user-info.component';\nimport { MaterialModule } from './material.module';\nimport { NotificationService } from './services/notification.service';\nimport { NotificationsComponent } from './notifications/notification.component';\nimport { UsersSearchService } from './services/users-search.service';\nimport { PaginationComponent } from './utils/pagination/pagination.component';\nimport { RemoveKynFromIBMService } from './services/removeKynFromIBM.service';\nimport { SiteSettingsService } from './services/site-settings.service';\nimport { LazyLoadingSelectComponent } from './lazy-loading-select/lazy-loading-select.component';\nimport { UserManageWidgetComponent } from './user-manage-widget.component';\nimport { DnsService } from './services/dns.service';\nimport { LineService } from './services/line.service';\nimport { UserCallingComponent } from './user-calling/user-calling.component';\nimport { UserCallingExtensionComponent } from './user-calling/user-calling-extension/user-calling-extension.component';\n\n@NgModule({\n declarations: [\n AppLoaderComponent,\n UserInfoComponent,\n NotificationsComponent,\n PaginationComponent,\n LazyLoadingSelectComponent,\n UserManageWidgetComponent,\n UserCallingComponent,\n UserCallingExtensionComponent\n ],\n imports: [\n CommonModule,\n BrowserModule,\n BrowserAnimationsModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n MaterialModule,\n ],\n providers: [\n APIService,\n UserService,\n NotificationService,\n UsersSearchService,\n RemoveKynFromIBMService,\n SiteSettingsService,\n DnsService,\n LineService,\n {provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true}\n ],\n exports: [UserManageWidgetComponent]\n\n})\nexport class UserManageModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.APIService","i2.LineService","i1","i1.NotificationService","RemoveKynFromIBMService","i2.RemoveKynFromIBMService","i2","i3","i4","i5","i2.SiteSettingsService","i6","i1.UserService","i2.DnsService","i5.UserCallingExtensionComponent","i2.APIService","i7","i8","i10.AppLoaderComponent","i11.UserInfoComponent","i12.LazyLoadingSelectComponent","i13.UserCallingComponent"],"mappings":"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"}