@csmart/ngc-smart-core 1.13.21 → 1.13.22

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":"csmart-ngc-smart-core.mjs","sources":["../../../../projects/csmart/ngc-smart-core/src/lib/smart-storage/smart-storage-model.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-storage/xdm.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-offender-header/smart-offender-header.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-offender-header/smart-offender-header.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-offender-header/smart-offender-header.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-navbar/smart-navbar.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-navbar/smart-navbar.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-navbar/smart-navbar.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-error.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-error.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-auth.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-access-control.directive.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-authorization-guard.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/ngc-smart-core.module.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-login-staff-resolver.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-selected-offender-resolver.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-access-control-config.ts","../../../../projects/csmart/ngc-smart-core/src/public-api.ts","../../../../projects/csmart/ngc-smart-core/src/csmart-ngc-smart-core.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport class Permission {\n roleId: string;\n appModuleId: string;\n resource: string;\n assignmentStaffRelationId: string;\n readFlag: boolean;\n createFlag: boolean;\n updateFlag: boolean;\n deleteFlag: boolean;\n assignFlag: boolean;\n reopenFlag: boolean;\n closeFlag: boolean;\n expungeFlag: boolean;\n}\n\nexport class Role {\n roleId: string;\n role: string;\n}\n\nexport class Option {\n offenderOptionListId: string;\n name: string;\n serviceApiFieldName: string;\n selectedFlag: boolean;\n}\n\nexport class LoginStaff {\n staffId: number;\n userName: string;\n firstName: string;\n lastName: string;\n phone: string;\n email: string;\n selectedRole: string = '*';\n roles?: Role[];\n permissions?: Permission[];\n options?: Option[];\n}\n\nexport class SelectedOffender {\n offenderId: number;\n name: string;\n pdId: string;\n birthDate: Date;\n gender: string;\n assignmentStaffRelationId?: string;\n intakeFlag?: boolean = false;\n}\n\nexport class OffenderQuery {\n offenders: SelectedOffender[];\n}\n\nexport class StorageKey {\n static selectedOffender = 'smart-selected-offender';\n static loginStaff = 'smart-login-staff';\n static offenderQuery = 'smart-offender-query';\n}\n\nexport const SMART_WEB_STORAGE_LISTENER_URL = new InjectionToken<string>(\n 'SMART Web Storage Listener URL',\n);\nexport const SMART_WEB_PORTAL_URL = new InjectionToken<string>(\n 'SMART Web Portal URL',\n);\nexport const SMART_DATA_SERVICE_URL = new InjectionToken<string>(\n 'SMART Data Service URL',\n);\n\n//exception for redirection\nexport const SMART_DOMAIN_FORMAT = new InjectionToken<string>(\n 'SMART Domain Format URL',\n);\n\n","import { Injectable, Inject, isDevMode } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Subject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n SelectedOffender,\n LoginStaff,\n OffenderQuery,\n StorageKey,\n SMART_WEB_STORAGE_LISTENER_URL,\n SMART_DATA_SERVICE_URL,\n Option,\n} from './smart-storage-model';\n\n// import connectToChild from \"penpal/lib/connectToChild\";\nimport { connectToChild } from 'penpal';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class XdmService {\n private offenderSubject = new Subject<SelectedOffender | void>();\n private staffSubject = new Subject<LoginStaff | void>();\n private offenderQuerySubject = new Subject<OffenderQuery | void>();\n private connection: any;\n\n constructor(\n @Inject(DOCUMENT) private document: any,\n @Inject(SMART_WEB_STORAGE_LISTENER_URL)\n private smartStorageListenerUrl: string,\n private httpClient: HttpClient,\n @Inject(SMART_DATA_SERVICE_URL) private smartDataServiceUrl,\n ) {\n if (isDevMode) {\n console.log('SmartStorage XdmService (Client) - constructor()');\n }\n this.init();\n }\n\n private init(): void {\n const frame = this.document.createElement('iframe');\n frame.src = this.smartStorageListenerUrl;\n frame.id = 'childframe';\n frame.name = Math.random().toString();\n frame.onload = null;\n frame.style.visibility = 'hidden';\n this.document.body.appendChild(frame);\n\n this.connection = connectToChild({\n iframe: frame,\n debug: false,\n });\n }\n\n private getStaffOffenderListOptions(\n staffId: number,\n ): Observable<Array<Option>> {\n const queryString = `{findvStaffOffenderListOptions(input:{\n where:{\n staffId: ${staffId}\n }\n }){\n data{\n offenderListOptionId\n name\n serviceApiFieldName\n selectedFlag\n }\n } }`;\n return this.httpClient\n .post<any>(this.smartDataServiceUrl, { query: queryString })\n .pipe(\n map(({ data }) => {\n data.findvStaffOffenderListOptions.data['offenderOptionListId'] =\n data.findvStaffOffenderListOptions.data['offenderListOptionId'];\n return data.findvStaffOffenderListOptions.data;\n }),\n );\n /*return of([\n { offenderListOptionId: 'genderCode', name: '', selectedFlag: true }]);*/\n }\n\n public clearAll(): void {\n this.connection.promise.then((child) => {\n child.clearAll();\n this.offenderSubject.next();\n this.staffSubject.next();\n });\n }\n\n /*************************************\n * Offender\n **************************************/\n public setSelectedOffender(selectedOffender: SelectedOffender): void {\n this.connection.promise.then((child) => {\n child.setSelectedOffender(selectedOffender);\n this.offenderSubject.next(selectedOffender);\n });\n\n this.getLoginStaff().then((loginStaff) => {\n let now = (new Date()).toISOString();\n const queryString = `mutation { createStaffOffenderAccess(input: {\n staffId: ${loginStaff.staffId},\n offenderId: ${selectedOffender.offenderId},\n accessDate: \"${now}\"\n }) {\n data {\n staffOffenderAccessId\n }\n }}`;\n this.httpClient.post<any>(this.smartDataServiceUrl, { query: queryString }).subscribe();\n });\n }\n\n public getSelectedOffender(): Promise<SelectedOffender> {\n return this.connection.promise.then((child) =>\n child.getSelectedOffender(StorageKey.selectedOffender),\n );\n }\n\n public clearSelectedOffender(): void {\n this.connection.promise.then((child) => {\n child.clearSelectedOffender();\n this.offenderSubject.next();\n });\n }\n\n public getOffenderUpdate(): Observable<SelectedOffender> {\n return this.offenderSubject.asObservable() as Observable<SelectedOffender>;\n }\n\n /************************************************************************\n * Staff\n ************************************************************************/\n public setLoginStaff(loginStaff: LoginStaff) {\n this.connection.promise.then((child) => {\n child.setLoginStaff(loginStaff);\n this.staffSubject.next(loginStaff);\n });\n }\n\n public getLoginStaff(): Promise<LoginStaff> {\n return this.connection.promise.then((child) =>\n child.getLoginStaff(StorageKey.loginStaff),\n );\n }\n\n public clearLoginStaff(): void {\n this.connection.promise.then((child) => {\n child.clearLoginStaff();\n this.staffSubject.next();\n });\n }\n\n public getStaffUpdate(): Observable<LoginStaff> {\n return this.staffSubject.asObservable() as Observable<LoginStaff>;\n }\n\n public refreshLoginStaffOptions() {\n this.getLoginStaff().then((oldLoginStaff) => {\n this.getStaffOffenderListOptions(oldLoginStaff.staffId).subscribe(\n (optionData) => {\n console.log(optionData);\n oldLoginStaff.options = optionData;\n this.setLoginStaff(oldLoginStaff);\n },\n );\n });\n }\n\n /************************************************************************\n * Offender Query\n ************************************************************************/\n public setOffenderQuery(offenderQuery: OffenderQuery) {\n this.connection.promise.then((child) => {\n child.setOffenderQuery(offenderQuery);\n this.offenderQuerySubject.next(offenderQuery);\n });\n }\n\n public getOffenderQuery(): Promise<OffenderQuery> {\n return this.connection.promise.then((child) =>\n child.getOffenderQuery(StorageKey.offenderQuery),\n );\n }\n\n public clearOffenderQuery(): void {\n this.connection.promise.then((child) => {\n child.clearOffenderQuery();\n this.offenderQuerySubject.next();\n });\n }\n\n public getOffenderQueryUpdate(): Observable<OffenderQuery> {\n return this.offenderQuerySubject.asObservable() as Observable<OffenderQuery>;\n }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, from, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n SMART_DATA_SERVICE_URL,\n} from '../smart-storage/smart-storage-model';\n\n\n@Injectable()\nexport class SmartOffenderHeaderService {\n constructor(\n @Inject(SMART_DATA_SERVICE_URL) private smartDataServiceUrl,\n private http: HttpClient,\n ) {}\n\n getStaffOffenders(staffId: number): Observable<AssignedOffender[]> {\n const queryString = `\n query getStaffOffenderList{\n filterOffenderList(input: {staffId: ${staffId}}) {\n data {\n offenderId\n offenderName\n pdId\n birthDate\n gender\n }\n }\n }\n `;\n return this.http\n .post<any>(this.smartDataServiceUrl, { query: queryString })\n .pipe(\n map(({ data }) => {\n return data.filterOffenderList.data;\n }),\n );\n }\n}\n\nexport interface AssignedOffender {\n offenderId: number;\n offenderName: string;\n pdId: string;\n birthDate: Date;\n gender: string;\n}\n","import { Component, OnInit, OnDestroy, NgZone, Output, EventEmitter } from '@angular/core';\nimport { XdmService } from '../smart-storage/xdm.service';\nimport { SelectedOffender, LoginStaff, Role, OffenderQuery } from '../smart-storage/smart-storage-model';\nimport { Subscription, Observable, from, of } from 'rxjs';\nimport { MsalService } from '@azure/msal-angular';\nimport { FormControl } from '@angular/forms';\nimport { map, switchMap } from 'rxjs/operators';\nimport { SmartOffenderHeaderService, AssignedOffender } from './smart-offender-header.service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-smart-offender-header',\n templateUrl: './smart-offender-header.component.html',\n styleUrls: ['./smart-offender-header.component.css'],\n})\nexport class SmartOffenderHeaderComponent implements OnInit, OnDestroy {\n public selectedOffender: SelectedOffender;\n loginStaff: LoginStaff;\n subscription: Subscription;\n selectedOffenderControl$ = new FormControl();\n // assignedOffenders: AssignedOffender[];\n offenderQueryList: SelectedOffender[];\n offenderQuerySubscription: Subscription;\n // public isAuthenticated: boolean;\n\n constructor(\n private xdmService: XdmService,\n private authnService: MsalService,\n private smartOffenderHeaderService: SmartOffenderHeaderService,\n private router: Router,\n ) {}\n\n ngOnInit() {\n // this.isAuthenticated = this.authnService.getAccount() ? true : false;\n this.xdmService.getLoginStaff().then((loginStaff) => {\n this.loginStaff = loginStaff ? loginStaff : null;\n });\n this.xdmService.getSelectedOffender().then((selectedOffender) => {\n this.selectedOffender =\n selectedOffender && selectedOffender.offenderId\n ? selectedOffender\n : null;\n });\n\n this.subscription = this.xdmService\n .getOffenderUpdate()\n .subscribe((selectedOffender) => {\n this.selectedOffender = selectedOffender;\n this.setSelectedOffenderControl();\n });\n\n this.xdmService.getOffenderQuery().then((offenderQuery: OffenderQuery) => {\n if (offenderQuery) {\n this.offenderQueryList = offenderQuery.offenders;\n this.setSelectedOffenderControl();\n }\n });\n\n this.offenderQuerySubscription = this.xdmService\n .getOffenderQueryUpdate()\n .subscribe((offenderList) => {\n if (offenderList && offenderList.offenders) {\n this.offenderQueryList = [...offenderList.offenders];\n }\n });\n\n this.selectedOffenderControl$.valueChanges.subscribe((o) =>\n this.onOffenderSelected(o),\n );\n\n this.router.routeReuseStrategy.shouldReuseRoute = () => {\n return false;\n };\n }\n\n get isAuthenticated() : boolean {\n return this.authnService.instance.getAllAccounts().length > 0;\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n private onOffenderSelected(offender): void {\n if (offender) {\n // const o = offender.offenderName.split(',');\n // if (o.length === 2) {\n // const offenderName = `${o[1]} ${o[0]}`;\n // this.selectedOffender = {\n // offenderId: offender.offenderId,\n // name: offenderName,\n // pdId: offender.pdId,\n // birthDate: offender.birthDate,\n // gender: offender.genderCode,\n // assignmentStaffRelationId: '',\n // intakeFlag: this.loginStaff\n // ? this.hasIntakeRole(this.loginStaff.roles)\n // : false,\n // } as SelectedOffender;\n this.selectedOffender = offender;\n this.xdmService.setSelectedOffender(this.selectedOffender);\n this.reloadCurrentRoute();\n }\n }\n\n private setSelectedOffenderControl() {\n if (\n this.selectedOffender &&\n this.offenderQueryList &&\n this.offenderQueryList.length > 0\n ) {\n const o = this.offenderQueryList.find(\n (x) => x.offenderId === this.selectedOffender.offenderId,\n );\n if (o) {\n this.selectedOffenderControl$.setValue(o, { emitEvent: false });\n }\n\n if (!o && this.offenderQueryList.length > 0) {\n this.selectedOffenderControl$.setValue(this.offenderQueryList[0], {\n emitEvent: false,\n });\n }\n }\n }\n\n private reloadCurrentRoute() {\n try {\n const urlTree = this.router.parseUrl(this.router.url);\n if (\n urlTree &&\n urlTree.root &&\n urlTree.root.segments &&\n urlTree.root.segments.length > 1\n ) {\n this.router.navigate([urlTree.root.segments[0].path]);\n } else if (\n urlTree &&\n urlTree.root &&\n urlTree.root.children &&\n urlTree.root.children.primary &&\n urlTree.root.children.primary.segments &&\n urlTree.root.children.primary.segments.length > 1\n ) {\n this.router.navigate([urlTree.root.children.primary.segments[0].path]);\n } else {\n this.router.navigate([this.router.url]);\n }\n } catch {\n this.router.navigateByUrl('/');\n }\n }\n\n private hasIntakeRole(roles: Role[]) {\n if (roles && roles.length > 0) {\n return roles.findIndex(this.isIntakeRole) > -1;\n }\n return false;\n }\n\n private isIntakeRole(role: Role) {\n switch (role.roleId) {\n case 'OPA':\n case 'OPS':\n case 'SOPS':\n return true;\n default:\n return false;\n }\n }\n}\n","<div\n class=\"offender-header-container\"\n *ngIf=\"selectedOffender && isAuthenticated\">\n <div class=\"offender-header-name-item\">\n <mat-form-field appearance=\"standard\" class=\"switch-offender\">\n <mat-label>Switch Offender</mat-label>\n <mat-select [formControl]=\"selectedOffenderControl$\">\n <mat-option\n *ngFor=\"let offender of offenderQueryList\"\n [value]=\"offender\">\n {{ offender?.name}} ({{offender?.offenderId}})\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div>\n <div class=\"offender-header-id-item\">\n <span class=\"item-label\">PDID:</span> {{ selectedOffender.pdId }}\n </div>\n <div class=\"offender-header-id-item\">\n <span class=\"item-label\">CSOSA ID:</span>\n {{ selectedOffender.offenderId }}\n </div>\n </div>\n</div>\n","import { Injectable, isDevMode } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { SmartNavbarConfig } from './smart-navbar-config';\n\n@Injectable()\nexport class SmartNavbarService {\n configs: SmartNavbarConfig[];\n constructor(private http: HttpClient) {}\n\n /*\n public getNavbarConfigs(): SmartNavbarConfig[] {\n this.configs = [\n {appModuleId: 'SMART', name: 'SMART', url: 'http://localhost:4200', offenderSpecific: false, displayOrder: 1 },\n {appModuleId: 'OFFENDER', name: 'Offender', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 2 },\n {appModuleId: 'SPRVSN', name: 'Supervision', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 3 },\n ];\n\n return this.configs;\n }\n */\n /*\n public getNavbarConfigs(serviceApiUrl: string): Observable<SmartNavbarConfig[]> {\n return this.http.get<SmartNavbarConfig[]>(serviceApiUrl + '/AppModules');\n }\n */\n\n public getNavbarConfigs(\n serviceApiUrl: string,\n ): Observable<SmartNavbarConfig[]> {\n const queryString = `\n {\n findAppModules {\n data {\n appModuleId\n name\n url\n offenderSpecificFlag\n displayOrder\n }\n }\n }`;\n\n /*\n const httpHeaders = new HttpHeaders({\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache'\n });\n const options = {\n headers: httpHeaders\n };\n */\n\n return this.http\n .post<any>(serviceApiUrl, { query: queryString })\n .pipe(\n map(({ data }) => {\n if (isDevMode()) {\n console.log(data);\n }\n return data.findAppModules.data;\n }),\n );\n }\n}\n","import {\n Component,\n OnInit,\n OnChanges,\n OnDestroy,\n Input,\n NgZone,\n ViewChild,\n isDevMode,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MatTabGroup } from '@angular/material/tabs';\nimport { MsalService } from '@azure/msal-angular';\nimport { SmartNavbarConfig } from './smart-navbar-config';\nimport { SmartNavbarService } from './smart-navbar.service';\nimport { XdmService } from '../smart-storage/xdm.service';\nimport {\n SelectedOffender,\n LoginStaff,\n Role,\n} from '../smart-storage/smart-storage-model';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-smart-navbar',\n templateUrl: './smart-navbar.component.html',\n styleUrls: ['./smart-navbar.component.css'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class SmartNavbarComponent implements OnInit, OnChanges, OnDestroy {\n @Input() serviceApiUrl: string;\n @Input() appModuleId = 'SMART';\n @ViewChild('tabs') tabGroup: MatTabGroup;\n selectedOffender: SelectedOffender;\n loginStaff: LoginStaff;\n offenderSubscription: Subscription;\n staffSubscription: Subscription;\n // isAuthenticated = false;\n\n navbarConfigs: SmartNavbarConfig[];\n\n constructor(\n private navbarConfigService: SmartNavbarService,\n private xdmService: XdmService,\n // private zone: NgZone,\n private authnService: MsalService,\n ) {}\n\n ngOnChanges() {\n /*\n console.log(this.selectedTab);\n setTimeout(() => {\n this.tabGroup.selectedIndex = this.selectedTab;\n }, 1000);\n */\n }\n\n ngOnInit() {\n this.xdmService.getSelectedOffender().then((selectedOffender) => {\n this.selectedOffender =\n selectedOffender && selectedOffender.offenderId\n ? selectedOffender\n : null;\n });\n\n this.xdmService.getLoginStaff().then((loginStaff) => {\n // this.zone.run(() => {\n this.loginStaff = loginStaff ? loginStaff : null;\n // });\n });\n\n this.offenderSubscription = this.xdmService\n .getOffenderUpdate()\n .subscribe((selectedOffender) => {\n // this.zone.run(() => {\n this.selectedOffender = selectedOffender;\n // });\n });\n\n this.staffSubscription = this.xdmService\n .getStaffUpdate()\n .subscribe((loginStaff) => {\n // this.zone.run(() => {\n this.loginStaff = loginStaff;\n // });\n });\n\n this.navbarConfigService\n .getNavbarConfigs(this.serviceApiUrl)\n .subscribe((configs) => {\n this.navbarConfigs = configs.sort((a, b) => {\n if (a.displayOrder < b.displayOrder) {\n return -1;\n } else if (a.displayOrder > b.displayOrder) {\n return 1;\n }\n return 0;\n });\n });\n\n // this.isAuthenticated = this.authnService.getAccount() ? true : false;\n }\n\n ngOnDestroy() {\n this.offenderSubscription.unsubscribe();\n this.staffSubscription.unsubscribe();\n }\n\n public logout(): void {\n this.xdmService.clearAll();\n this.authnService.logout();\n }\n\n get isAuthenticated(): boolean {\n return this.authnService.instance.getAllAccounts().length > 0;\n }\n\n public getAppModuleUrl(config: SmartNavbarConfig) {\n return config && this.selectedOffender && config.appModuleId === 'PPMAS'\n // ? `${config.url}?skipAppMetadata=true&OffenderId=${this.selectedOffender.offenderId}`\n ? `${config.url}&OffenderId=${this.selectedOffender.offenderId}`\n : config.url;\n }\n\n public hasAppModulePermission(appModuleId) {\n if (\n this.loginStaff &&\n this.loginStaff.permissions &&\n this.loginStaff.permissions.length > 0\n ) {\n return (\n this.loginStaff.permissions.findIndex(\n (p) => p.appModuleId === appModuleId,\n ) > -1\n );\n }\n\n return false;\n }\n\n public get hasExternalUserRole() {\n if (\n this.loginStaff &&\n this.loginStaff.roles &&\n this.loginStaff.roles.length > 0\n ) {\n return this.loginStaff.roles.findIndex(this.isExternalRole) > -1;\n }\n return false;\n }\n\n public checkDVIPPermission(config: SmartNavbarConfig) : boolean{\n return ((config.appModuleId !== 'DVIP') || (config.appModuleId === \"DVIP\" && this.hasDVIPRole));\n }\n\n public get hasDVIPRole() {\n if (\n this.loginStaff &&\n this.loginStaff.roles &&\n this.loginStaff.roles.length > 0\n ) {\n return this.loginStaff.roles.findIndex(this.isDVIPRole) > -1;\n }\n return false;\n }\n\n private isDVIPRole(role: Role){\n if(role.roleId == 'TSD' || role.roleId == 'TAD' || role.roleId == 'STSD' || role.roleId == 'BC'){\n return true\n }\n return false;\n }\n\n public checkVictimPermission(config: SmartNavbarConfig) : boolean{\n return ((config.appModuleId !== 'VICTIM') || (config.appModuleId === \"VICTIM\" && this.hasVictimRole));\n }\n\n public get hasVictimRole() {\n if (\n this.loginStaff &&\n this.loginStaff.roles &&\n this.loginStaff.roles.length > 0\n ) {\n return this.loginStaff.roles.findIndex(this.isVictimRole) > -1;\n }\n return false;\n }\n\n private isVictimRole(role: Role){\n if(role.roleId == 'BC' || role.roleId == 'VSP'){\n return true\n }\n return false;\n }\n\n private isExternalRole(role: Role) {\n switch (role.roleId) {\n case 'EUDTL':\n case 'EUDUSM':\n case 'EUJDG':\n case 'EUMPD':\n case 'EUSOTV':\n case 'EUUSA2':\n case 'EUUSAO':\n case 'EUUSPC':\n return true;\n default:\n return false;\n }\n }\n}\n\n// EUDTL\n// EUDUSM\n// EUJDG\n\n// EUMPD\n// EUSOTV\n// EUUSA2\n\n// EUUSAO\n// EUUSPC\n","<!--\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\n <i class=\"material-icons\">menu</i>\n</a>\n\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\n <a class=\"smart-navbar-toggle close\" href=\"#\">\n <i class=\"material-icons\">close</i>\n </a>\n\n <span *ngFor=\"let config of navbarConfigs\">\n <a mat-button class=\"smart-navbar-item\" \n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\n </span>\n\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\n <mat-menu #menuTheme=\"matMenu\">\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\n </mat-menu>\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item>Profile</button>\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\n </mat-menu>\n</nav>\n-->\n\n<!-- <nav mat-tab-nav-bar>\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\n</nav> -->\n\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\n <ng-container *ngFor=\"let config of navbarConfigs\">\n <mat-tab\n *ngIf=\"\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\n (!hasExternalUserRole && \n (config.offenderSpecificFlag === false || selectedOffender))) &&\n checkVictimPermission(config) &&\n isAuthenticated &&\n loginStaff\"\n label=\"config.name\">\n <ng-template mat-tab-label>\n <a\n mat-flat-button\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\n [href]=\"getAppModuleUrl(config)\"\n >{{ config.name }}</a>\n </ng-template>\n </mat-tab>\n </ng-container>\n</mat-tab-group>\n","import { Component, OnInit, Inject } from '@angular/core';\n// import { SmartAuthService } from './smart-auth.service';\nimport { MsalService } from '@azure/msal-angular';\nimport { ActivatedRoute } from '@angular/router';\nimport { SMART_WEB_PORTAL_URL } from '../smart-storage/smart-storage-model';\n\n@Component({\n selector: 'app-smart-error',\n templateUrl: './smart-error.component.html',\n styleUrls: ['./smart-error.component.css'],\n})\nexport class SmartErrorComponent implements OnInit {\n type: string;\n message: string;\n\n constructor(\n private authnService: MsalService,\n private route: ActivatedRoute,\n @Inject(SMART_WEB_PORTAL_URL) private smartWebPortalUrl: string,\n ) {}\n\n ngOnInit(): void {\n this.type = this.route.snapshot.queryParamMap.get('type') || 'staff';\n this.message =\n this.route.snapshot.queryParamMap.get('message') || 'Error occured.';\n }\n\n logout() {\n this.authnService.logout();\n }\n\n portal() {\n window.location.href = this.smartWebPortalUrl;\n }\n}\n","<div>\n <h2>\n {{ message }}\n </h2>\n <p>\n Please contact help desk if needed.\n </p>\n <div>\n <button (click)=\"logout()\" *ngIf=\"type === 'staff'\">OK</button>\n <button (click)=\"portal()\" *ngIf=\"type === 'offender'\">OK</button>\n </div>\n</div>\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, from, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { SMART_DATA_SERVICE_URL } from '../smart-storage/smart-storage-model';\n\n@Injectable()\nexport class SmartStaffOffenderOptionsService {\n constructor(\n private http: HttpClient,\n private matSnackBar: MatSnackBar,\n @Inject(SMART_DATA_SERVICE_URL) private serviceApiUrl,\n ) {}\n\n public showMessage(message) {\n this.matSnackBar.open(message, null, {\n duration: 2000,\n });\n }\n\n private convertEmptyToNull(jsonObject: JSON) {\n if (!jsonObject) {\n return;\n }\n\n if (jsonObject instanceof Array) {\n jsonObject.forEach((obj) => {\n this.convertEmptyToNull(obj);\n });\n }\n\n const keys = Object.keys(jsonObject);\n keys.forEach((key) => {\n if (typeof jsonObject[key] === 'object') {\n this.convertEmptyToNull(jsonObject[key]);\n } else if (\n typeof jsonObject[key] === 'string' &&\n jsonObject[key].trim() === ''\n ) {\n jsonObject[key] = null;\n }\n });\n }\n\n private getGraphQueryData(\n queryName: string,\n queryString: string,\n ): Observable<any> {\n return this.http.post<any>(this.serviceApiUrl, { query: queryString }).pipe(\n map(({ data }) => {\n return data[queryName];\n }),\n );\n }\n\n getOffenderListOptions(): Observable<any> {\n const queryString = `{findOffenderListOptions(input:{\n where:{\n deactivatedDate: null\n }\n }){\n data{\n offenderListOptionId\n name\n serviceApiFieldName\n }\n } }`;\n\n return this.http.post<any>(this.serviceApiUrl, { query: queryString }).pipe(\n map(({ data }) => {\n return data['findOffenderListOptions'];\n }),\n );\n }\n\n public getStaffOffenderListOptions(staffId: number): Observable<Array<any>> {\n const queryString = `{findStaffOffenderListOptions(input:{\n where:{\n staffId: ${staffId}\n }\n }){\n data{\n offenderListOptionId\n }\n } }`;\n return this.http.post<any>(this.serviceApiUrl, { query: queryString }).pipe(\n map(({ data }) => {\n return data.findStaffOffenderListOptions.data;\n }),\n );\n }\n\n saveStaffOffenderListOptionsData(dataToSave: any) {\n //}: Observable<any> {\n\n // this.convertEmptyToNull(dataToSave);\n const queryName = 'upsertStaffOffenderListOption';\n const query = `mutation {\n upsertStaffOffenderListOption(input: ${this.convertToString(\n dataToSave,\n )}) {\n message\n }\n }`;\n\n return this.http.post<any>(this.serviceApiUrl, { query });\n /*.pipe(\n map(({ data }) => {\n return data[queryName];\n }));*/\n }\n\n convertToString(obj): string {\n let result = '';\n\n if (!obj) {\n return result;\n }\n\n if (obj instanceof Array) {\n result += ' [';\n obj.forEach((eObj) => {\n result += this.convertToString(eObj);\n });\n result += '],';\n } else {\n result += '{';\n const keys = Object.keys(obj);\n keys.forEach((key) => {\n if (typeof obj[key] === 'object') {\n result += key + ':' + this.convertToString(obj[key]);\n } else {\n if (isNaN(obj[key])) {\n result += key + ':\"' + obj[key] + '\",';\n } else {\n result += key + ':' + obj[key] + ',';\n }\n }\n });\n result = result.substring(0, result.length - 1);\n result += '},';\n }\n return result;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { SmartStaffOffenderOptionsService} from './smart-staff-offender-options.service';\nimport { FormBuilder,\n FormGroup,\n FormControl,\n Validators,\n ValidatorFn,\n AbstractControl,\n} from '@angular/forms';\nimport { LoginStaff } from '../smart-storage/smart-storage-model';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { XdmService} from '../smart-storage/xdm.service';\n\n@Component({\n selector: 'lib-smart-staff-offender-options',\n templateUrl: './smart-staff-offender-options.component.html',\n styleUrls: ['./smart-staff-offender-options.component.css']\n})\nexport class SmartStaffOffenderOptionsComponent implements OnInit {\n loginStaff: LoginStaff;\n offenderListOptions: Array<any> = [];\n frmGroup: FormGroup;\n constructor(\n private route: ActivatedRoute,\n private offenderService: SmartStaffOffenderOptionsService,\n private xdmService: XdmService\n ) { }\n\n ngOnInit() {\n const routData = this.route.snapshot.data;\n this.loginStaff = routData.loginStaff;\n this.offenderListOptions = routData.selectedOffenderResolverService;\n this.frmGroup = this.createForm();\n this.offenderService.getStaffOffenderListOptions(this.loginStaff.staffId).subscribe(data => {\n this.fillForm(data);\n });\n }\n\n private fillForm(data) {\n if (data) {\n const offenderListOptionsFg = this.frmGroup.get('offenderListOptions');\n data.forEach(element => {\n offenderListOptionsFg.get(element.offenderListOptionId).setValue(true);\n });\n }\n\n }\n private createForm() {\n const offenderListOptionsFg = new FormGroup({\n });\n\n this.offenderListOptions.forEach( (dt, i) => {\n offenderListOptionsFg.addControl(dt.offenderListOptionId, new FormControl(false));\n });\n\n return new FormGroup({\n offenderListOptions: offenderListOptionsFg,\n });\n }\n\n onSave() {\n const data = {\n options: [],\n staffId: this.loginStaff.staffId,\n modifiedBy: this.loginStaff.staffId\n };\n\n const offenderListOptionsVal = this.frmGroup.get('offenderListOptions').value;\n const keys = Object.keys(offenderListOptionsVal);\n keys.forEach(key => {\n if (offenderListOptionsVal[key]) {\n data.options.push({'offenderListOptionId': key});\n }\n });\n\n this.offenderService.saveStaffOffenderListOptionsData(data).subscribe(rtrDatea=>{\n if (rtrDatea.message) {\n this.offenderService.showMessage(rtrDatea.message);\n } else {\n this.offenderService.showMessage('Saved successfully');\n this.xdmService.refreshLoginStaffOptions();\n }\n });\n }\n\n}\n","<form class=\"main-form\" [formGroup]=\"frmGroup\">\n <mat-card role=\"group\">\n <mat-card-content>\n <div formGroupName=\"offenderListOptions\">\n <div style=\"float:left;\">\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\">\n <mat-checkbox *ngIf=\"i%2!=0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\n {{offenderListOption.name}}\n </mat-checkbox>\n </div>\n </div>\n <div>\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\" >\n <mat-checkbox *ngIf=\"i%2==0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\n {{offenderListOption.name}}\n </mat-checkbox> \n </div>\n </div>\n </div>\n </mat-card-content>\n <div align=\"center\">\n <button mat-raised-button color=\"accent\" (click)=\"onSave()\">Save</button>\n </div>\n </mat-card>\n </form>\n ","import { Injectable, Inject, isDevMode } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, of, from, throwError, lastValueFrom } from 'rxjs';\nimport { map, switchMap, take, catchError} from 'rxjs/operators';\nimport { MsalService } from '@azure/msal-angular';\nimport { ActivatedRouteSnapshot } from '@angular/router';\n\nimport {\n LoginStaff,\n SelectedOffender,\n SMART_DATA_SERVICE_URL,\n SMART_DOMAIN_FORMAT,\n Role,\n Permission,\n} from '../smart-storage/smart-storage-model';\nimport { XdmService } from '../smart-storage/xdm.service';\nimport { SmartAccessControlConfig } from './smart-access-control-config';\nimport { nullSafeIsEquivalent } from '@angular/compiler/src/output/output_ast';\n// import { stringify } from 'querystring';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SmartAuthService {\n loginStaff: LoginStaff;\n selectedOffender: SelectedOffender;\n\n constructor(\n private http: HttpClient,\n private authnService: MsalService,\n private xdmService: XdmService,\n @Inject(SMART_DATA_SERVICE_URL) private smartDataServiceUrl,\n @Inject(SMART_DOMAIN_FORMAT) private smartDomainFormatUrl: string,\n ) {}\n\n public getLoginStaff(): Observable<LoginStaff> {\n if (isDevMode) {\n console.log('SmartAuthService - getLoginStaff()');\n }\n if (!isDevMode && this.loginStaff) {\n if (this.loginStaff.staffId) {\n if (isDevMode) {\n console.log(\n '##### getLoginStaff(): get internal instance in service',\n this.loginStaff,\n );\n }\n return of(this.loginStaff);\n } else if (this.loginStaff.userName) {\n if (isDevMode) {\n console.log(\n '##### getLoginStaff(): get using preset user name',\n this.loginStaff,\n );\n }\n return this.getStaff(this.loginStaff.userName);\n }\n }\n return from(this.xdmService.getLoginStaff()).pipe(\n switchMap((storedResult) => {\n if (storedResult && storedResult.staffId) {\n if (isDevMode) {\n console.log(\n '##### getLoginStaff(): get from session.',\n storedResult,\n );\n }\n this.loginStaff = storedResult;\n return of(storedResult);\n } else if (storedResult && storedResult.userName) {\n if (isDevMode) {\n console.log(\n '##### getLoginStaff(): get using preset user name',\n this.loginStaff,\n );\n }\n return this.getStaff(storedResult.userName);\n } else {\n const userName = this.userName;\n const staffName = userName.substring(0, userName.indexOf('@'));\n if (isDevMode) {\n console.log(\n '##### loginLoginStaff(): get using login staff name ',\n staffName,\n );\n }\n return this.getStaff(staffName);\n }\n }),\n );\n }\n\n get userName(): string {\n if (this.authnService.instance.getAllAccounts().length > 0) {\n const account = this.authnService.instance.getAllAccounts()[0];\n return account.username;\n }\n\n return '';\n }\n\n private getTeamUrl(app: string, afterHash: string): string {\n return this.smartDomainFormatUrl.replace('${APP}', app) + afterHash;\n }\n private isSameHost(url, app) {\n return this.smartDomainFormatUrl.replace('${APP}', app) === url;\n }\n\n public redirectToTeam(loginStaff: LoginStaff) {\n if (loginStaff.roles.findIndex((role) => role.roleId === 'EUUSPC') > -1) {\n if (!this.isSameHost(window.location.origin, 'investigation')) {\n window.location.href = this.getTeamUrl('investigation', '/assignment');\n }\n } else if (\n loginStaff.roles.findIndex(\n (role) => role.roleId.substring(0, 3) === 'RSC',\n ) > -1\n ) {\n if (!this.isSameHost(window.location.origin, 'rsc')) {\n window.location.href = this.getTeamUrl('rsc', '/offender-list');\n }\n }\n }\n\n public async setSelectedOffender(selectedOffender: SelectedOffender) {\n if (!this.loginStaff) {\n return;\n }\n\n if (selectedOffender) {\n // if (!selectedOffender.assignmentStaffRelationId) {\n const relation = await lastValueFrom(\n this.getStaffOffenderRelation(\n this.loginStaff.staffId,\n selectedOffender.offenderId,\n ),\n );\n if (relation) {\n selectedOffender.assignmentStaffRelationId = relation;\n } else {\n selectedOffender.assignmentStaffRelationId = 'NOASSIGN';\n }\n // }\n }\n this.xdmService.setSelectedOffender(selectedOffender);\n this.selectedOffender = selectedOffender;\n }\n\n public logout(): void {\n this.xdmService.clearAll();\n this.authnService.logout();\n }\n\n public async setPermission(\n appModuleId: string,\n route: ActivatedRouteSnapshot,\n ) {\n if (!this.loginStaff) {\n this.loginStaff = await this.xdmService.getLoginStaff();\n }\n const permissions = this.loginStaff.permissions;\n const resource =\n route.url && route.url.length > 0 ? route.url[0]!.path : '';\n\n if (!this.selectedOffender) {\n this.selectedOffender = await this.xdmService.getSelectedOffender();\n }\n\n if (this.selectedOffender) {\n // if (!this.selectedOffender.assignmentStaffRelationId) {\n const relation = await this.getStaffOffenderRelation(\n this.loginStaff.staffId,\n this.selectedOffender.offenderId,\n ).toPromise();\n if (relation) {\n this.selectedOffender.assignmentStaffRelationId = relation;\n } else {\n this.selectedOffender.assignmentStaffRelationId = 'NOASSIGN';\n }\n this.xdmService.setSelectedOffender(this.selectedOffender);\n // }\n }\n\n const assignmentStaffRelationId =\n this.selectedOffender.assignmentStaffRelationId;\n\n const elements = document.querySelectorAll('[class^=\"sac-\"]');\n const pattern = /^sac-(\\S+)-(\\S+)$/i;\n\n Array.from(elements).forEach((element) => {\n let hide;\n let disable;\n element.classList.forEach((c) => {\n const results = c.match(pattern);\n // console.log(results);\n if (results && results.length > 2) {\n const roleId = results[1] ? results[1].toUpperCase() : null;\n const right = results[2];\n // console.log(results[0]);\n // console.log(results[1]);\n // console.log(results[2]);\n const permission = permissions.find(function (p) {\n return (\n p.appModuleId === appModuleId &&\n p.resource === resource &&\n p.roleId === roleId &&\n p.assignmentStaffRelationId === assignmentStaffRelationId\n );\n });\n /*\n console.log('##### setPermission() resource: ', resource);\n console.log('##### setPermission() appModuleId: ', appModuleId);\n console.log('##### setPermission() roleId: ', roleId);\n console.log(\n '##### setPermission() assignment relation: ',\n assignmentStaffRelationId,\n );\n */\n console.log('##### Matched permission: ', permission);\n\n if (permission) {\n if (right === 'read') {\n if (!permission.readFlag) {\n if (hide !== false) {\n hide = true;\n }\n } else {\n hide = false;\n }\n } else if (\n (right === 'create' && !permission.createFlag) ||\n (right === 'update' && !permission.updateFlag) ||\n (right === 'delete' && !permission.deleteFlag) ||\n (right === 'assign' && !permission.assignFlag) ||\n (right === 'close' && !permission.closeFlag) ||\n (right === 'expunge' && !permission.expungeFlag) ||\n (right === 'reopen' && !permission.reopenFlag)\n ) {\n if (element.nodeName === 'BUTTON') {\n if (hide !== false) {\n hide = true;\n }\n } else {\n if (disable !== false) {\n disable = true;\n }\n }\n } else {\n if (element.nodeName === 'BUTTON') {\n hide = false;\n } else {\n disable = false;\n }\n }\n } else {\n if (right === 'read') {\n if (hide !== false) {\n hide = true;\n }\n } else if (element.nodeName === 'BUTTON') {\n if (hide !== false) {\n hide = true;\n }\n } else if (disable !== false) {\n disable = true;\n }\n }\n }\n });\n console.log('hide: ', hide);\n console.log('disable: ', disable);\n if (hide === true) {\n this.hideHtmlElement(element);\n } else if (disable === true) {\n this.disableHtmlElement(element);\n }\n });\n }\n\n public checkPermission(accessControlConfig: SmartAccessControlConfig) {\n const selData = accessControlConfig.route.data;\n this.loginStaff = selData.loginStaff;\n this.selectedOffender = selData.selectedOffender;\n let routePath = '';\n if (\n accessControlConfig.route.url &&\n accessControlConfig.route.url.length > 0\n ) {\n routePath = accessControlConfig.route.url[0]!.path;\n }\n\n const permissions = this.loginStaff.permissions;\n const resource = routePath;\n const roleId = accessControlConfig.roleId\n ? accessControlConfig.roleId.toUpperCase()\n : null;\n const accessType = accessControlConfig.accessType;\n const assignmentStaffRelationId = (!this.selectedOffender || !this.selectedOffender\n .assignmentStaffRelationId)\n ? 'N/A'\n : this.selectedOffender.assignmentStaffRelationId;\n\n const permission = permissions.find((p) => {\n return (\n p.appModuleId === accessControlConfig.appModuleId &&\n p.resource === resource &&\n (!roleId || p.roleId === roleId) &&\n (p.assignmentStaffRelationId === 'N/A' ||\n p.assignmentStaffRelationId === assignmentStaffRelationId)\n );\n });\n\n if (permission) {\n if (accessType === 'read') {\n if (!permission.readFlag) {\n return false;\n } else {\n return true;\n }\n } else if (\n (accessType === 'create' && !permission.createFlag) ||\n (accessType === 'update' && !permission.updateFlag) ||\n (accessType === 'delete' && !permission.deleteFlag) ||\n (accessType === 'assign' && !permission.assignFlag) ||\n (accessType === 'close' && !permission.closeFlag) ||\n (accessType === 'expunge' && !permission.expungeFlag) ||\n (accessType === 'reopen' && !permission.reopenFlag)\n ) {\n return false;\n } else {\n return true;\n }\n } else {\n if (accessType === 'read') {\n return false;\n }\n }\n return false;\n }\n\n public canAppFeatureActivate(\n loginStaff: LoginStaff,\n feature: string,\n appModuleId = null,\n ) {\n // if (!this.isAuthEnable(loginStaff.roles, appModuleId)) {\n // return true;\n // }\n return this.hasAppFeaturePermission(\n loginStaff.permissions,\n feature,\n appModuleId,\n );\n }\n\n // public isAuthEnable(roles: Role[], appModuleId: string) {\n // if (roles && roles.length > 0) {\n // return roles.map(r => r.roleId).findIndex(this.isExternalRole) > -1 || appModuleId === 'RR';\n // }\n // return false;\n // }\n\n public hasIntakeRole(roles: Role[]) {\n if (roles && roles.length > 0) {\n return roles.findIndex(this.isIntakeRole) > -1;\n }\n return false;\n }\n\n private hasAppFeaturePermission(\n permissions: Permission[],\n feature: string,\n appModuleId: string,\n ) {\n if (permissions && permissions.length > 0) {\n if (appModuleId) {\n return (\n permissions.findIndex(\n (p) => p.resource === feature && p.appModuleId === appModuleId,\n ) > -1\n );\n } else {\n return permissions.findIndex((p) => p.resource === feature) > -1;\n }\n }\n\n return false;\n }\n\n private isExternalRole(roleId) {\n switch (roleId) {\n case 'EUDTL':\n case 'EUDUSM':\n case 'EUJDG':\n case 'EUMPD':\n case 'EUSOTV':\n case 'EUUSA2':\n case 'EUUSAO':\n case 'EUUSPC':\n return true;\n default:\n return false;\n }\n }\n\n private isIntakeRole(role: Role) {\n switch (role.roleId) {\n case 'OPA':\n case 'OPS':\n case 'SOPS':\n return true;\n default:\n return false;\n }\n }\n\n private disableHtmlElement(element: Element): void {\n // console.log(element);\n switch (element.nodeName) {\n case 'A':\n element.setAttribute(\n 'style',\n 'pointer-events: none;cursor: not-allowed;',\n );\n element.setAttribute('tabIndex', '-1');\n break;\n default:\n element.setAttribute('disabled', 'disabled');\n break;\n }\n }\n\n private hideHtmlElement(element: Element): void {\n // element.setAttribute('hidden', 'hidden');\n element.setAttribute('style', 'display: none;');\n }\n\n private getStaff(userName: string): Observable<LoginStaff> {\n return this.query<any>({\n query: this.findStaffQuery,\n variables: {\n input: {\n where: {\n userName: userName,\n activeFlag: true,\n },\n }\n },\n }).pipe(\n take(1),\n map((result) => {\n if (isDevMode) {\n console.log('##### getStaff() from service ', result);\n }\n if (result.findvStaffs.data.length > 0) {\n const data = result.findvStaffs.data[0];\n this.xdmService.setLoginStaff(data);\n this.loginStaff = data;\n return data;\n } else {\n return of(null);\n }\n }),\n catchError((error) => {\n console.log('error ' + error);\n return of(null);\n }),\n );\n }\n\n private query<T>(options: {\n query: string;\n variables?: { [key: string]: any };\n }): Observable<T> {\n return this.http\n .post<{ data: T }>(\n this.smartDataServiceUrl,\n {\n query: options.query,\n variables: options.variables,\n },\n {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n 'No-Auth': 'True',\n }),\n }\n )\n .pipe(map((d) => d.data));\n }\n\n private get findStaffQuery(){\n return `\n query findvStaffs($input: vStaffMultiInput) {\n findvStaffs(input: $input) {\n totalCount\n message\n data {\n staffId\n userName\n lastName\n firstName\n phone\n email\n roles {\n roleId\n role\n }\n permissions {\n roleId\n appModuleId\n resource\n assignmentStaffRelationId\n readFlag\n createFlag\n updateFlag\n deleteFlag\n assignFlag\n reopenFlag\n closeFlag\n expungeFlag\n }\n options {\n offenderListOptionId\n name\n serviceApiFieldName\n selectedFlag\n }\n }\n }\n }\n `;\n }\n\n private getStaffOffenderRelation(\n staffId: number,\n offenderId: number,\n ): Observable<string> {\n const queryString = `\n {\n findvStaffOffenderRelations(input: {where: {staffId: ${staffId}, offenderId: ${offenderId}}}) {\n data {\n assignmentStaffRelationId\n }\n }\n }`;\n\n return this.http\n .post<any>(this.smartDataServiceUrl, { query: queryString })\n .pipe(\n take(1),\n map((result) => {\n if (isDevMode) {\n console.log(\n '##### getStaffOffenderRelation() from service ',\n result,\n );\n }\n if (result.data.findvStaffOffenderRelations.data.length > 0) {\n const data = result.data.findvStaffOffenderRelations.data[0];\n return data.assignmentStaffRelationId;\n } else {\n return null;\n // return throwError('No access right.');\n }\n }),\n catchError((error) => {\n console.log('error ' + error);\n return null;\n }),\n );\n }\n\n private getRolePermissions(\n appModuleId: string,\n resource: string,\n ): Observable<boolean> {\n const queryString = `\n query findvRolePermissionPivots{\n findvRolePermissionPivots(input: {where: {appModuleId: ${appModuleId}, resource: ${resource}}}){\n totalCount\n message\n }\n }`;\n\n return this.http\n .post<any>(this.smartDataServiceUrl, { query: queryString })\n .pipe(\n take(1),\n map((result) => {\n if (isDevMode) {\n console.log(\n '##### findvRolePermissionPivots() from service ',\n result,\n );\n }\n if (result.data.findvRolePermissionPivots.totalCount > 0) {\n return true;\n } else {\n return false;\n // return throwError('No access right.');\n }\n }),\n catchError((error: any) => {\n console.log('error ' + error);\n return throwError(error);\n }),\n );\n }\n}\n","import { Directive, Input, OnInit, ElementRef } from '@angular/core';\nimport { SmartAuthService } from './smart-auth.service';\nimport { SmartAccessControlConfig } from './smart-access-control-config';\nimport { ActivatedRoute } from '@angular/router';\n\n\n@Directive({\n selector: '[accessControl]',\n})\nexport class SmartAccessControlDirective implements OnInit {\n @Input() accessControlConfig: SmartAccessControlConfig;\n constructor(\n private elementRef: ElementRef,\n private auth: SmartAuthService,\n ) {}\n\n public ngOnInit() {\n this.checkAccess();\n }\n\n checkAccess() {\n if (\n !this.accessControlConfig ||\n !this.accessControlConfig.route ||\n !this.accessControlConfig.route.data ||\n !this.accessControlConfig.route.data.loginStaff\n ) {\n return;\n }\n\n // const loginStaff = this.accessControlConfig.route.data.loginStaff;\n // if (!this.auth.isAuthEnable(loginStaff.roles, this.accessControlConfig.appModuleId)) {\n // return;\n // }\n this.elementRef.nativeElement.style.display = this.auth.checkPermission(\n this.accessControlConfig\n )\n ? 'block'\n : 'none';\n }\n}\n","// smart-authorization.service\nimport { Injectable } from '@angular/core';\nimport {\n CanActivate,\n ActivatedRouteSnapshot,\n RouterStateSnapshot,\n} from '@angular/router';\nimport { Router } from '@angular/router';\nimport { take, mergeMap, catchError } from 'rxjs/operators';\nimport { of, Observable } from 'rxjs';\nimport { LoginStaff } from '../smart-storage/smart-storage-model';\nimport { SmartAuthService } from './smart-auth.service';\n\n@Injectable()\nexport class SmartAuthorizationGuard implements CanActivate {\n loginStaff: LoginStaff;\n\n constructor(public authnService: SmartAuthService) { }\n\n canActivate(route: ActivatedRouteSnapshot) {\n return this.authnService.getLoginStaff().pipe(\n take(1),\n mergeMap((loginStaff) => {\n if (!loginStaff || !route || !route.routeConfig) {\n return of(false);\n }\n // if (!this.authnService.isAuthEnable(loginStaff.roles, null)) {\n // return of(true);\n // }\n const resource = route.routeConfig.path\n ? route.routeConfig.path.split('/')[0]\n : '';\n const isFeatureValid = this.authnService.canAppFeatureActivate(\n loginStaff,\n resource,\n );\n return of(isFeatureValid);\n }),\n catchError((error) => {\n return of(false);\n }),\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { HttpClientModule } from '@angular/common/http';\nimport { SmartOffenderHeaderComponent } from './smart-offender-header/smart-offender-header.component';\nimport { SmartNavbarComponent } from './smart-navbar/smart-navbar.component';\nimport { SmartNavbarService } from './smart-navbar/smart-navbar.service';\nimport { SmartErrorComponent } from './smart-auth/smart-error.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { SmartOffenderHeaderService } from './smart-offender-header/smart-offender-header.service';\nimport { SmartStaffOffenderOptionsComponent } from './smart-staff-offender-options/smart-staff-offender-options.component';\n// import { SmartStaffOffenderOptionsComponent } from './smart-staff-offender-options/smart-staff-offender-options.component';\nimport { SmartStaffOffenderOptionsService } from './smart-staff-offender-options/smart-staff-offender-options.service';\nimport { SmartAccessControlDirective } from './smart-auth/smart-access-control.directive';\nimport { SmartAuthorizationGuard } from './smart-auth/smart-authorization-guard.service';\n\n@NgModule({\n declarations: [\n SmartOffenderHeaderComponent,\n SmartNavbarComponent,\n SmartErrorComponent,\n SmartStaffOffenderOptionsComponent,\n SmartAccessControlDirective,\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n MatButtonModule,\n MatMenuModule,\n MatTabsModule,\n MatSelectModule,\n MatCardModule,\n MatCheckboxModule,\n ReactiveFormsModule,\n ],\n exports: [\n SmartOffenderHeaderComponent,\n SmartNavbarComponent,\n SmartErrorComponent,\n SmartStaffOffenderOptionsComponent,\n SmartAccessControlDirective,\n ],\n providers: [\n SmartNavbarService,\n SmartOffenderHeaderService,\n SmartStaffOffenderOptionsService,\n SmartAuthorizationGuard,\n MatSnackBar,\n ],\n})\nexport class NgcSmartCoreModule {}\n","import { Injectable, NgZone, isDevMode } from '@angular/core';\nimport {\n Resolve,\n ActivatedRouteSnapshot,\n RouterStateSnapshot,\n Router,\n} from '@angular/router';\nimport { Observable, EMPTY, of, throwError } from 'rxjs';\nimport { mergeMap, catchError, take } from 'rxjs/operators';\nimport { SmartAuthService } from './smart-auth.service';\nimport { LoginStaff } from '../smart-storage/smart-storage-model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoginStaffResolverService implements Resolve<LoginStaff> {\n constructor(\n private authnService: SmartAuthService,\n // private zone: NgZone,\n private router: Router,\n ) {}\n\n resolve(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n ): Observable<LoginStaff> | Observable<never> {\n return this.authnService.getLoginStaff().pipe(\n take(1),\n mergeMap((loginStaff) => {\n if (isDevMode) {\n console.log('LoginStaffResolverService: ', loginStaff);\n }\n if (loginStaff) {\n return of(loginStaff);\n } else {\n return throwError('Not authorized to access SMART.');\n // return EMPTY;\n /*\n this.zone.run(() => {\n this.router.navigate(['/smart-error'], {\n queryParams: {\n type: 'staff',\n message: 'Not authorized to access SMART.'\n }\n });\n });\n return EMPTY;\n */\n }\n }),\n catchError((error) => {\n console.log('LoginStaffResolverService: ' + error);\n this.router.navigate(['/smart-error'], {\n queryParams: {\n type: 'staff',\n message: 'SMART Authentication: ' + error,\n },\n });\n return EMPTY;\n }),\n );\n }\n}\n","import { Injectable, NgZone, isDevMode } from '@angular/core';\nimport {\n Resolve,\n ActivatedRouteSnapshot,\n RouterStateSnapshot,\n Router,\n} from '@angular/router';\nimport { Observable, from, of, EMPTY, throwError, concat } from 'rxjs';\nimport {\n catchError,\n mergeMap,\n map,\n take,\n retryWhen,\n tap,\n delay,\n} from 'rxjs/operators';\nimport { SelectedOffender } from '../smart-storage/smart-storage-model';\nimport { XdmService } from '../smart-storage/xdm.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SelectedOffenderResolverService\n implements Resolve<SelectedOffender> {\n constructor(\n private service: XdmService,\n private zone: NgZone,\n private router: Router,\n ) {}\n\n resolve(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n ): Observable<SelectedOffender> | Observable<never> {\n return from(this.service.getSelectedOffender()).pipe(\n mergeMap((selectedOffender) => {\n if (isDevMode) {\n console.log(selectedOffender);\n }\n if (!selectedOffender) {\n return throwError('No offender selected.');\n }\n return of(selectedOffender);\n }),\n retryWhen((errors) =>\n errors.pipe(\n // tap(() => console.log('Retry getting selected offender.')),\n delay(1000),\n take(5),\n (o) =>\n concat(\n o,\n throwError('No offender selected (failed after retries).'),\n ),\n ),\n ),\n catchError((error) => {\n /*\n this.zone.run(() => {\n this.router.navigate(['/smart-error'], {\n queryParams: { type: 'offender', message: error }\n });\n });\n */\n this.router.navigate(['/smart-error'], {\n queryParams: { type: 'offender', message: error },\n });\n return EMPTY;\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { SmartStaffOffenderOptionsService} from './smart-staff-offender-options.service';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SmartStaffOffenderOptionsResolverService implements Resolve<Observable<any>> {\n constructor(private offenderService: SmartStaffOffenderOptionsService) {}\n resolve() {\n return this.offenderService.getOffenderListOptions()\n .pipe(\n map(({ data }) => {\n return data;\n }),\n );\n }\n }\n","import { ActivatedRouteSnapshot } from '@angular/router';\n\nexport interface SmartAccessControlConfig {\n appModuleId: string;\n route: ActivatedRouteSnapshot;\n accessType: AccessType;\n roleId: string;\n}\n\nexport enum AccessType {\n READ = 'read',\n CREATE = 'create',\n UPDATE = 'update',\n DELETE = 'delete',\n EXPUNGE = 'expunge',\n ASSIGN = 'assign',\n REOPEN = 'reopen',\n CLOSE = 'close'\n}\n","/*\n * Public API Surface of ngc-smart-core\n */\n\nexport * from './lib/ngc-smart-core.module';\nexport * from './lib/smart-auth/smart-auth.service';\nexport * from './lib/smart-auth/smart-login-staff-resolver.service';\nexport * from './lib/smart-auth/smart-selected-offender-resolver.service';\nexport * from './lib/smart-auth/smart-error.component';\nexport * from './lib/smart-navbar/smart-navbar.service';\nexport * from './lib/smart-navbar/smart-navbar-config';\nexport * from './lib/smart-storage/xdm.service';\nexport * from './lib/smart-storage/smart-storage-model';\nexport * from './lib/smart-staff-offender-options/smart-staff-offender-options.component';\nexport * from './lib/smart-offender-header/smart-offender-header.component';\nexport * from './lib/smart-auth/smart-access-control.directive';\nexport * from './lib/smart-navbar/smart-navbar.component';\nexport * from './lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service';\nexport * from './lib/smart-auth/smart-access-control-config';\nexport * from './lib/smart-auth/smart-authorization-guard.service';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.XdmService","i3.SmartOffenderHeaderService","i4","i9","i1.SmartNavbarService","i2.XdmService","i3","i5","i6","i1","i2.SmartStaffOffenderOptionsService","i3.XdmService","i7","i1.SmartAuthService","i2","i1.SmartStaffOffenderOptionsService"],"mappings":"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"}
1
+ {"version":3,"file":"csmart-ngc-smart-core.mjs","sources":["../../../../projects/csmart/ngc-smart-core/src/lib/smart-storage/smart-storage-model.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-storage/xdm.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-offender-header/smart-offender-header.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-offender-header/smart-offender-header.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-offender-header/smart-offender-header.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-navbar/smart-navbar.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-navbar/smart-navbar.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-navbar/smart-navbar.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-error.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-error.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-auth.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-access-control.directive.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-authorization-guard.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/ngc-smart-core.module.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-login-staff-resolver.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-selected-offender-resolver.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-access-control-config.ts","../../../../projects/csmart/ngc-smart-core/src/public-api.ts","../../../../projects/csmart/ngc-smart-core/src/csmart-ngc-smart-core.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport class Permission {\n roleId: string;\n appModuleId: string;\n resource: string;\n assignmentStaffRelationId: string;\n readFlag: boolean;\n createFlag: boolean;\n updateFlag: boolean;\n deleteFlag: boolean;\n assignFlag: boolean;\n reopenFlag: boolean;\n closeFlag: boolean;\n expungeFlag: boolean;\n}\n\nexport class Role {\n roleId: string;\n role: string;\n}\n\nexport class Option {\n offenderOptionListId: string;\n name: string;\n serviceApiFieldName: string;\n selectedFlag: boolean;\n}\n\nexport class LoginStaff {\n staffId: number;\n userName: string;\n firstName: string;\n lastName: string;\n phone: string;\n email: string;\n selectedRole: string = '*';\n roles?: Role[];\n permissions?: Permission[];\n options?: Option[];\n}\n\nexport class SelectedOffender {\n offenderId: number;\n name: string;\n pdId: string;\n birthDate: Date;\n gender: string;\n assignmentStaffRelationId?: string;\n intakeFlag?: boolean = false;\n}\n\nexport class OffenderQuery {\n offenders: SelectedOffender[];\n}\n\nexport class StorageKey {\n static selectedOffender = 'smart-selected-offender';\n static loginStaff = 'smart-login-staff';\n static offenderQuery = 'smart-offender-query';\n}\n\nexport const SMART_WEB_STORAGE_LISTENER_URL = new InjectionToken<string>(\n 'SMART Web Storage Listener URL',\n);\nexport const SMART_WEB_PORTAL_URL = new InjectionToken<string>(\n 'SMART Web Portal URL',\n);\nexport const SMART_DATA_SERVICE_URL = new InjectionToken<string>(\n 'SMART Data Service URL',\n);\n\n//exception for redirection\nexport const SMART_DOMAIN_FORMAT = new InjectionToken<string>(\n 'SMART Domain Format URL',\n);\n\n","import { Injectable, Inject, isDevMode } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Subject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n SelectedOffender,\n LoginStaff,\n OffenderQuery,\n StorageKey,\n SMART_WEB_STORAGE_LISTENER_URL,\n SMART_DATA_SERVICE_URL,\n Option,\n} from './smart-storage-model';\n\n// import connectToChild from \"penpal/lib/connectToChild\";\nimport { connectToChild } from 'penpal';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class XdmService {\n private offenderSubject = new Subject<SelectedOffender | void>();\n private staffSubject = new Subject<LoginStaff | void>();\n private offenderQuerySubject = new Subject<OffenderQuery | void>();\n private connection: any;\n\n constructor(\n @Inject(DOCUMENT) private document: any,\n @Inject(SMART_WEB_STORAGE_LISTENER_URL)\n private smartStorageListenerUrl: string,\n private httpClient: HttpClient,\n @Inject(SMART_DATA_SERVICE_URL) private smartDataServiceUrl,\n ) {\n if (isDevMode) {\n console.log('SmartStorage XdmService (Client) - constructor()');\n }\n this.init();\n }\n\n private init(): void {\n const frame = this.document.createElement('iframe');\n frame.src = this.smartStorageListenerUrl;\n frame.id = 'childframe';\n frame.name = Math.random().toString();\n frame.onload = null;\n frame.style.visibility = 'hidden';\n this.document.body.appendChild(frame);\n\n this.connection = connectToChild({\n iframe: frame,\n debug: false,\n });\n }\n\n private getStaffOffenderListOptions(\n staffId: number,\n ): Observable<Array<Option>> {\n const queryString = `{findvStaffOffenderListOptions(input:{\n where:{\n staffId: ${staffId}\n }\n }){\n data{\n offenderListOptionId\n name\n serviceApiFieldName\n selectedFlag\n }\n } }`;\n return this.httpClient\n .post<any>(this.smartDataServiceUrl, { query: queryString })\n .pipe(\n map(({ data }) => {\n data.findvStaffOffenderListOptions.data['offenderOptionListId'] =\n data.findvStaffOffenderListOptions.data['offenderListOptionId'];\n return data.findvStaffOffenderListOptions.data;\n }),\n );\n /*return of([\n { offenderListOptionId: 'genderCode', name: '', selectedFlag: true }]);*/\n }\n\n public clearAll(): void {\n this.connection.promise.then((child) => {\n child.clearAll();\n this.offenderSubject.next();\n this.staffSubject.next();\n });\n }\n\n /*************************************\n * Offender\n **************************************/\n public setSelectedOffender(selectedOffender: SelectedOffender): void {\n this.connection.promise.then((child) => {\n child.setSelectedOffender(selectedOffender);\n this.offenderSubject.next(selectedOffender);\n });\n\n this.getLoginStaff().then((loginStaff) => {\n let now = (new Date()).toISOString();\n const queryString = `mutation { createStaffOffenderAccess(input: {\n staffId: ${loginStaff.staffId},\n offenderId: ${selectedOffender.offenderId},\n accessDate: \"${now}\"\n }) {\n data {\n staffOffenderAccessId\n }\n }}`;\n this.httpClient.post<any>(this.smartDataServiceUrl, { query: queryString }).subscribe();\n });\n }\n\n public getSelectedOffender(): Promise<SelectedOffender> {\n return this.connection.promise.then((child) =>\n child.getSelectedOffender(StorageKey.selectedOffender),\n );\n }\n\n public clearSelectedOffender(): void {\n this.connection.promise.then((child) => {\n child.clearSelectedOffender();\n this.offenderSubject.next();\n });\n }\n\n public getOffenderUpdate(): Observable<SelectedOffender> {\n return this.offenderSubject.asObservable() as Observable<SelectedOffender>;\n }\n\n /************************************************************************\n * Staff\n ************************************************************************/\n public setLoginStaff(loginStaff: LoginStaff) {\n this.connection.promise.then((child) => {\n child.setLoginStaff(loginStaff);\n this.staffSubject.next(loginStaff);\n });\n }\n\n public getLoginStaff(): Promise<LoginStaff> {\n return this.connection.promise.then((child) =>\n child.getLoginStaff(StorageKey.loginStaff),\n );\n }\n\n public clearLoginStaff(): void {\n this.connection.promise.then((child) => {\n child.clearLoginStaff();\n this.staffSubject.next();\n });\n }\n\n public getStaffUpdate(): Observable<LoginStaff> {\n return this.staffSubject.asObservable() as Observable<LoginStaff>;\n }\n\n public refreshLoginStaffOptions() {\n this.getLoginStaff().then((oldLoginStaff) => {\n this.getStaffOffenderListOptions(oldLoginStaff.staffId).subscribe(\n (optionData) => {\n console.log(optionData);\n oldLoginStaff.options = optionData;\n this.setLoginStaff(oldLoginStaff);\n },\n );\n });\n }\n\n /************************************************************************\n * Offender Query\n ************************************************************************/\n public setOffenderQuery(offenderQuery: OffenderQuery) {\n this.connection.promise.then((child) => {\n child.setOffenderQuery(offenderQuery);\n this.offenderQuerySubject.next(offenderQuery);\n });\n }\n\n public getOffenderQuery(): Promise<OffenderQuery> {\n return this.connection.promise.then((child) =>\n child.getOffenderQuery(StorageKey.offenderQuery),\n );\n }\n\n public clearOffenderQuery(): void {\n this.connection.promise.then((child) => {\n child.clearOffenderQuery();\n this.offenderQuerySubject.next();\n });\n }\n\n public getOffenderQueryUpdate(): Observable<OffenderQuery> {\n return this.offenderQuerySubject.asObservable() as Observable<OffenderQuery>;\n }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, from, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n SMART_DATA_SERVICE_URL,\n} from '../smart-storage/smart-storage-model';\n\n\n@Injectable()\nexport class SmartOffenderHeaderService {\n constructor(\n @Inject(SMART_DATA_SERVICE_URL) private smartDataServiceUrl,\n private http: HttpClient,\n ) {}\n\n getStaffOffenders(staffId: number): Observable<AssignedOffender[]> {\n const queryString = `\n query getStaffOffenderList{\n filterOffenderList(input: {staffId: ${staffId}}) {\n data {\n offenderId\n offenderName\n pdId\n birthDate\n gender\n }\n }\n }\n `;\n return this.http\n .post<any>(this.smartDataServiceUrl, { query: queryString })\n .pipe(\n map(({ data }) => {\n return data.filterOffenderList.data;\n }),\n );\n }\n}\n\nexport interface AssignedOffender {\n offenderId: number;\n offenderName: string;\n pdId: string;\n birthDate: Date;\n gender: string;\n}\n","import { Component, OnInit, OnDestroy, NgZone, Output, EventEmitter } from '@angular/core';\nimport { XdmService } from '../smart-storage/xdm.service';\nimport { SelectedOffender, LoginStaff, Role, OffenderQuery } from '../smart-storage/smart-storage-model';\nimport { Subscription, Observable, from, of } from 'rxjs';\nimport { MsalService } from '@azure/msal-angular';\nimport { FormControl } from '@angular/forms';\nimport { map, switchMap } from 'rxjs/operators';\nimport { SmartOffenderHeaderService, AssignedOffender } from './smart-offender-header.service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-smart-offender-header',\n templateUrl: './smart-offender-header.component.html',\n styleUrls: ['./smart-offender-header.component.css'],\n})\nexport class SmartOffenderHeaderComponent implements OnInit, OnDestroy {\n public selectedOffender: SelectedOffender;\n loginStaff: LoginStaff;\n subscription: Subscription;\n selectedOffenderControl$ = new FormControl();\n // assignedOffenders: AssignedOffender[];\n offenderQueryList: SelectedOffender[];\n offenderQuerySubscription: Subscription;\n // public isAuthenticated: boolean;\n\n constructor(\n private xdmService: XdmService,\n private authnService: MsalService,\n private smartOffenderHeaderService: SmartOffenderHeaderService,\n private router: Router,\n ) {}\n\n ngOnInit() {\n // this.isAuthenticated = this.authnService.getAccount() ? true : false;\n this.xdmService.getLoginStaff().then((loginStaff) => {\n this.loginStaff = loginStaff ? loginStaff : null;\n });\n this.xdmService.getSelectedOffender().then((selectedOffender) => {\n this.selectedOffender =\n selectedOffender && selectedOffender.offenderId\n ? selectedOffender\n : null;\n });\n\n this.subscription = this.xdmService\n .getOffenderUpdate()\n .subscribe((selectedOffender) => {\n this.selectedOffender = selectedOffender;\n this.setSelectedOffenderControl();\n });\n\n this.xdmService.getOffenderQuery().then((offenderQuery: OffenderQuery) => {\n if (offenderQuery) {\n this.offenderQueryList = offenderQuery.offenders;\n this.setSelectedOffenderControl();\n }\n });\n\n this.offenderQuerySubscription = this.xdmService\n .getOffenderQueryUpdate()\n .subscribe((offenderList) => {\n if (offenderList && offenderList.offenders) {\n this.offenderQueryList = [...offenderList.offenders];\n }\n });\n\n this.selectedOffenderControl$.valueChanges.subscribe((o) =>\n this.onOffenderSelected(o),\n );\n\n this.router.routeReuseStrategy.shouldReuseRoute = () => {\n return false;\n };\n }\n\n get isAuthenticated() : boolean {\n return this.authnService.instance.getAllAccounts().length > 0;\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n private onOffenderSelected(offender): void {\n if (offender) {\n // const o = offender.offenderName.split(',');\n // if (o.length === 2) {\n // const offenderName = `${o[1]} ${o[0]}`;\n // this.selectedOffender = {\n // offenderId: offender.offenderId,\n // name: offenderName,\n // pdId: offender.pdId,\n // birthDate: offender.birthDate,\n // gender: offender.genderCode,\n // assignmentStaffRelationId: '',\n // intakeFlag: this.loginStaff\n // ? this.hasIntakeRole(this.loginStaff.roles)\n // : false,\n // } as SelectedOffender;\n this.selectedOffender = offender;\n this.xdmService.setSelectedOffender(this.selectedOffender);\n this.reloadCurrentRoute();\n }\n }\n\n private setSelectedOffenderControl() {\n if (\n this.selectedOffender &&\n this.offenderQueryList &&\n this.offenderQueryList.length > 0\n ) {\n const o = this.offenderQueryList.find(\n (x) => x.offenderId === this.selectedOffender.offenderId,\n );\n if (o) {\n this.selectedOffenderControl$.setValue(o, { emitEvent: false });\n }\n\n if (!o && this.offenderQueryList.length > 0) {\n this.selectedOffenderControl$.setValue(this.offenderQueryList[0], {\n emitEvent: false,\n });\n }\n }\n }\n\n private reloadCurrentRoute() {\n try {\n const urlTree = this.router.parseUrl(this.router.url);\n if (\n urlTree &&\n urlTree.root &&\n urlTree.root.segments &&\n urlTree.root.segments.length > 1\n ) {\n this.router.navigate([urlTree.root.segments[0].path]);\n } else if (\n urlTree &&\n urlTree.root &&\n urlTree.root.children &&\n urlTree.root.children.primary &&\n urlTree.root.children.primary.segments &&\n urlTree.root.children.primary.segments.length > 1\n ) {\n this.router.navigate([urlTree.root.children.primary.segments[0].path]);\n } else {\n this.router.navigate([this.router.url]);\n }\n } catch {\n this.router.navigateByUrl('/');\n }\n }\n\n private hasIntakeRole(roles: Role[]) {\n if (roles && roles.length > 0) {\n return roles.findIndex(this.isIntakeRole) > -1;\n }\n return false;\n }\n\n private isIntakeRole(role: Role) {\n switch (role.roleId) {\n case 'OPA':\n case 'OPS':\n case 'SOPS':\n return true;\n default:\n return false;\n }\n }\n}\n","<div\n class=\"offender-header-container\"\n *ngIf=\"selectedOffender && isAuthenticated\">\n <div class=\"offender-header-name-item\">\n <mat-form-field appearance=\"standard\" class=\"switch-offender\">\n <mat-label>Switch Offender</mat-label>\n <mat-select [formControl]=\"selectedOffenderControl$\">\n <mat-option\n *ngFor=\"let offender of offenderQueryList\"\n [value]=\"offender\">\n {{ offender?.name}} ({{offender?.offenderId}})\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div>\n <div class=\"offender-header-id-item\">\n <span class=\"item-label\">PDID:</span> {{ selectedOffender.pdId }}\n </div>\n <div class=\"offender-header-id-item\">\n <span class=\"item-label\">CSOSA ID:</span>\n {{ selectedOffender.offenderId }}\n </div>\n </div>\n</div>\n","import { Injectable, isDevMode } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { SmartNavbarConfig } from './smart-navbar-config';\n\n@Injectable()\nexport class SmartNavbarService {\n configs: SmartNavbarConfig[];\n constructor(private http: HttpClient) {}\n\n /*\n public getNavbarConfigs(): SmartNavbarConfig[] {\n this.configs = [\n {appModuleId: 'SMART', name: 'SMART', url: 'http://localhost:4200', offenderSpecific: false, displayOrder: 1 },\n {appModuleId: 'OFFENDER', name: 'Offender', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 2 },\n {appModuleId: 'SPRVSN', name: 'Supervision', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 3 },\n ];\n\n return this.configs;\n }\n */\n /*\n public getNavbarConfigs(serviceApiUrl: string): Observable<SmartNavbarConfig[]> {\n return this.http.get<SmartNavbarConfig[]>(serviceApiUrl + '/AppModules');\n }\n */\n\n public getNavbarConfigs(\n serviceApiUrl: string,\n ): Observable<SmartNavbarConfig[]> {\n const queryString = `\n {\n findAppModules {\n data {\n appModuleId\n name\n url\n offenderSpecificFlag\n displayOrder\n }\n }\n }`;\n\n /*\n const httpHeaders = new HttpHeaders({\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache'\n });\n const options = {\n headers: httpHeaders\n };\n */\n\n return this.http\n .post<any>(serviceApiUrl, { query: queryString })\n .pipe(\n map(({ data }) => {\n if (isDevMode()) {\n console.log(data);\n }\n return data.findAppModules.data;\n }),\n );\n }\n}\n","import {\n Component,\n OnInit,\n OnChanges,\n OnDestroy,\n Input,\n NgZone,\n ViewChild,\n isDevMode,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MatTabGroup } from '@angular/material/tabs';\nimport { MsalService } from '@azure/msal-angular';\nimport { SmartNavbarConfig } from './smart-navbar-config';\nimport { SmartNavbarService } from './smart-navbar.service';\nimport { XdmService } from '../smart-storage/xdm.service';\nimport {\n SelectedOffender,\n LoginStaff,\n Role,\n} from '../smart-storage/smart-storage-model';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-smart-navbar',\n templateUrl: './smart-navbar.component.html',\n styleUrls: ['./smart-navbar.component.css'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class SmartNavbarComponent implements OnInit, OnChanges, OnDestroy {\n @Input() serviceApiUrl: string;\n @Input() appModuleId = 'SMART';\n @ViewChild('tabs') tabGroup: MatTabGroup;\n selectedOffender: SelectedOffender;\n loginStaff: LoginStaff;\n offenderSubscription: Subscription;\n staffSubscription: Subscription;\n // isAuthenticated = false;\n\n navbarConfigs: SmartNavbarConfig[];\n\n constructor(\n private navbarConfigService: SmartNavbarService,\n private xdmService: XdmService,\n // private zone: NgZone,\n private authnService: MsalService,\n ) {}\n\n ngOnChanges() {\n /*\n console.log(this.selectedTab);\n setTimeout(() => {\n this.tabGroup.selectedIndex = this.selectedTab;\n }, 1000);\n */\n }\n\n ngOnInit() {\n this.xdmService.getSelectedOffender().then((selectedOffender) => {\n this.selectedOffender =\n selectedOffender && selectedOffender.offenderId\n ? selectedOffender\n : null;\n });\n\n this.xdmService.getLoginStaff().then((loginStaff) => {\n // this.zone.run(() => {\n this.loginStaff = loginStaff ? loginStaff : null;\n // });\n });\n\n this.offenderSubscription = this.xdmService\n .getOffenderUpdate()\n .subscribe((selectedOffender) => {\n // this.zone.run(() => {\n this.selectedOffender = selectedOffender;\n // });\n });\n\n this.staffSubscription = this.xdmService\n .getStaffUpdate()\n .subscribe((loginStaff) => {\n // this.zone.run(() => {\n this.loginStaff = loginStaff;\n // });\n });\n\n this.navbarConfigService\n .getNavbarConfigs(this.serviceApiUrl)\n .subscribe((configs) => {\n this.navbarConfigs = configs.sort((a, b) => {\n if (a.displayOrder < b.displayOrder) {\n return -1;\n } else if (a.displayOrder > b.displayOrder) {\n return 1;\n }\n return 0;\n });\n });\n\n // this.isAuthenticated = this.authnService.getAccount() ? true : false;\n }\n\n ngOnDestroy() {\n this.offenderSubscription.unsubscribe();\n this.staffSubscription.unsubscribe();\n }\n\n public logout(): void {\n this.xdmService.clearAll();\n this.authnService.logout();\n }\n\n get isAuthenticated(): boolean {\n return this.authnService.instance.getAllAccounts().length > 0;\n }\n\n public getAppModuleUrl(config: SmartNavbarConfig) {\n return config && this.selectedOffender && config.appModuleId === 'PPMAS'\n // ? `${config.url}?skipAppMetadata=true&OffenderId=${this.selectedOffender.offenderId}`\n ? `${config.url}&OffenderId=${this.selectedOffender.offenderId}`\n : config.url;\n }\n\n public hasAppModulePermission(appModuleId) {\n if (\n this.loginStaff &&\n this.loginStaff.permissions &&\n this.loginStaff.permissions.length > 0\n ) {\n return (\n this.loginStaff.permissions.findIndex(\n (p) => p.appModuleId === appModuleId,\n ) > -1\n );\n }\n\n return false;\n }\n\n public get hasExternalUserRole() {\n if (\n this.loginStaff &&\n this.loginStaff.roles &&\n this.loginStaff.roles.length > 0\n ) {\n return this.loginStaff.roles.findIndex(this.isExternalRole) > -1;\n }\n return false;\n }\n\n public checkDVIPPermission(config: SmartNavbarConfig) : boolean{\n return ((config.appModuleId !== 'DVIP') || (config.appModuleId === \"DVIP\" && this.hasDVIPRole));\n }\n\n public get hasDVIPRole() {\n if (\n this.loginStaff &&\n this.loginStaff.roles &&\n this.loginStaff.roles.length > 0\n ) {\n return this.loginStaff.roles.findIndex(this.isDVIPRole) > -1;\n }\n return false;\n }\n\n private isDVIPRole(role: Role){\n if(role.roleId == 'TSD' || role.roleId == 'TAD' || role.roleId == 'STSD' || role.roleId == 'BC'){\n return true\n }\n return false;\n }\n\n public checkVictimPermission(config: SmartNavbarConfig) : boolean{\n return ((config.appModuleId !== 'VICTIM') || (config.appModuleId === \"VICTIM\" && this.hasVictimRole));\n }\n\n public get hasVictimRole() {\n if (\n this.loginStaff &&\n this.loginStaff.roles &&\n this.loginStaff.roles.length > 0\n ) {\n return this.loginStaff.roles.findIndex(this.isVictimRole) > -1;\n }\n return false;\n }\n\n private isVictimRole(role: Role){\n if(role.roleId == 'BC' || role.roleId == 'VSP'){\n return true\n }\n return false;\n }\n\n private isExternalRole(role: Role) {\n switch (role.roleId) {\n case 'EUDTL':\n case 'EUDUSM':\n case 'EUJDG':\n case 'EUMPD':\n case 'EUSOTV':\n case 'EUUSA2':\n case 'EUUSAO':\n case 'EUUSPC':\n return true;\n default:\n return false;\n }\n }\n}\n\n// EUDTL\n// EUDUSM\n// EUJDG\n\n// EUMPD\n// EUSOTV\n// EUUSA2\n\n// EUUSAO\n// EUUSPC\n","<!--\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\n <i class=\"material-icons\">menu</i>\n</a>\n\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\n <a class=\"smart-navbar-toggle close\" href=\"#\">\n <i class=\"material-icons\">close</i>\n </a>\n\n <span *ngFor=\"let config of navbarConfigs\">\n <a mat-button class=\"smart-navbar-item\" \n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\n </span>\n\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\n <mat-menu #menuTheme=\"matMenu\">\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\n </mat-menu>\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item>Profile</button>\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\n </mat-menu>\n</nav>\n-->\n\n<!-- <nav mat-tab-nav-bar>\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\n</nav> -->\n\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\n <ng-container *ngFor=\"let config of navbarConfigs\">\n <mat-tab\n *ngIf=\"\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\n (!hasExternalUserRole && \n (config.offenderSpecificFlag === false || selectedOffender))) &&\n checkVictimPermission(config) &&\n isAuthenticated &&\n loginStaff\"\n label=\"config.name\">\n <ng-template mat-tab-label>\n <a\n mat-flat-button\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\n [href]=\"getAppModuleUrl(config)\"\n >{{ config.name }}</a>\n </ng-template>\n </mat-tab>\n </ng-container>\n</mat-tab-group>\n","import { Component, OnInit, Inject } from '@angular/core';\n// import { SmartAuthService } from './smart-auth.service';\nimport { MsalService } from '@azure/msal-angular';\nimport { ActivatedRoute } from '@angular/router';\nimport { SMART_WEB_PORTAL_URL } from '../smart-storage/smart-storage-model';\n\n@Component({\n selector: 'app-smart-error',\n templateUrl: './smart-error.component.html',\n styleUrls: ['./smart-error.component.css'],\n})\nexport class SmartErrorComponent implements OnInit {\n type: string;\n message: string;\n\n constructor(\n private authnService: MsalService,\n private route: ActivatedRoute,\n @Inject(SMART_WEB_PORTAL_URL) private smartWebPortalUrl: string,\n ) {}\n\n ngOnInit(): void {\n this.type = this.route.snapshot.queryParamMap.get('type') || 'staff';\n this.message =\n this.route.snapshot.queryParamMap.get('message') || 'Error occured.';\n }\n\n logout() {\n this.authnService.logout();\n }\n\n portal() {\n window.location.href = this.smartWebPortalUrl;\n }\n}\n","<div>\n <h2>\n {{ message }}\n </h2>\n <p>\n Please contact help desk if needed.\n </p>\n <div>\n <button (click)=\"logout()\" *ngIf=\"type === 'staff'\">OK</button>\n <button (click)=\"portal()\" *ngIf=\"type === 'offender'\">OK</button>\n </div>\n</div>\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, from, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { SMART_DATA_SERVICE_URL } from '../smart-storage/smart-storage-model';\n\n@Injectable()\nexport class SmartStaffOffenderOptionsService {\n constructor(\n private http: HttpClient,\n private matSnackBar: MatSnackBar,\n @Inject(SMART_DATA_SERVICE_URL) private serviceApiUrl,\n ) {}\n\n public showMessage(message) {\n this.matSnackBar.open(message, null, {\n duration: 2000,\n });\n }\n\n private convertEmptyToNull(jsonObject: JSON) {\n if (!jsonObject) {\n return;\n }\n\n if (jsonObject instanceof Array) {\n jsonObject.forEach((obj) => {\n this.convertEmptyToNull(obj);\n });\n }\n\n const keys = Object.keys(jsonObject);\n keys.forEach((key) => {\n if (typeof jsonObject[key] === 'object') {\n this.convertEmptyToNull(jsonObject[key]);\n } else if (\n typeof jsonObject[key] === 'string' &&\n jsonObject[key].trim() === ''\n ) {\n jsonObject[key] = null;\n }\n });\n }\n\n private getGraphQueryData(\n queryName: string,\n queryString: string,\n ): Observable<any> {\n return this.http.post<any>(this.serviceApiUrl, { query: queryString }).pipe(\n map(({ data }) => {\n return data[queryName];\n }),\n );\n }\n\n getOffenderListOptions(): Observable<any> {\n const queryString = `{findOffenderListOptions(input:{\n where:{\n deactivatedDate: null\n }\n }){\n data{\n offenderListOptionId\n name\n serviceApiFieldName\n }\n } }`;\n\n return this.http.post<any>(this.serviceApiUrl, { query: queryString }).pipe(\n map(({ data }) => {\n return data['findOffenderListOptions'];\n }),\n );\n }\n\n public getStaffOffenderListOptions(staffId: number): Observable<Array<any>> {\n const queryString = `{findStaffOffenderListOptions(input:{\n where:{\n staffId: ${staffId}\n }\n }){\n data{\n offenderListOptionId\n }\n } }`;\n return this.http.post<any>(this.serviceApiUrl, { query: queryString }).pipe(\n map(({ data }) => {\n return data.findStaffOffenderListOptions.data;\n }),\n );\n }\n\n saveStaffOffenderListOptionsData(dataToSave: any) {\n //}: Observable<any> {\n\n // this.convertEmptyToNull(dataToSave);\n const queryName = 'upsertStaffOffenderListOption';\n const query = `mutation {\n upsertStaffOffenderListOption(input: ${this.convertToString(\n dataToSave,\n )}) {\n message\n }\n }`;\n\n return this.http.post<any>(this.serviceApiUrl, { query });\n /*.pipe(\n map(({ data }) => {\n return data[queryName];\n }));*/\n }\n\n convertToString(obj): string {\n let result = '';\n\n if (!obj) {\n return result;\n }\n\n if (obj instanceof Array) {\n result += ' [';\n obj.forEach((eObj) => {\n result += this.convertToString(eObj);\n });\n result += '],';\n } else {\n result += '{';\n const keys = Object.keys(obj);\n keys.forEach((key) => {\n if (typeof obj[key] === 'object') {\n result += key + ':' + this.convertToString(obj[key]);\n } else {\n if (isNaN(obj[key])) {\n result += key + ':\"' + obj[key] + '\",';\n } else {\n result += key + ':' + obj[key] + ',';\n }\n }\n });\n result = result.substring(0, result.length - 1);\n result += '},';\n }\n return result;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { SmartStaffOffenderOptionsService} from './smart-staff-offender-options.service';\nimport { FormBuilder,\n FormGroup,\n FormControl,\n Validators,\n ValidatorFn,\n AbstractControl,\n} from '@angular/forms';\nimport { LoginStaff } from '../smart-storage/smart-storage-model';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { XdmService} from '../smart-storage/xdm.service';\n\n@Component({\n selector: 'lib-smart-staff-offender-options',\n templateUrl: './smart-staff-offender-options.component.html',\n styleUrls: ['./smart-staff-offender-options.component.css']\n})\nexport class SmartStaffOffenderOptionsComponent implements OnInit {\n loginStaff: LoginStaff;\n offenderListOptions: Array<any> = [];\n frmGroup: FormGroup;\n constructor(\n private route: ActivatedRoute,\n private offenderService: SmartStaffOffenderOptionsService,\n private xdmService: XdmService\n ) { }\n\n ngOnInit() {\n const routData = this.route.snapshot.data;\n this.loginStaff = routData.loginStaff;\n this.offenderListOptions = routData.selectedOffenderResolverService;\n this.frmGroup = this.createForm();\n this.offenderService.getStaffOffenderListOptions(this.loginStaff.staffId).subscribe(data => {\n this.fillForm(data);\n });\n }\n\n private fillForm(data) {\n if (data) {\n const offenderListOptionsFg = this.frmGroup.get('offenderListOptions');\n data.forEach(element => {\n offenderListOptionsFg.get(element.offenderListOptionId).setValue(true);\n });\n }\n\n }\n private createForm() {\n const offenderListOptionsFg = new FormGroup({\n });\n\n this.offenderListOptions.forEach( (dt, i) => {\n offenderListOptionsFg.addControl(dt.offenderListOptionId, new FormControl(false));\n });\n\n return new FormGroup({\n offenderListOptions: offenderListOptionsFg,\n });\n }\n\n onSave() {\n const data = {\n options: [],\n staffId: this.loginStaff.staffId,\n modifiedBy: this.loginStaff.staffId\n };\n\n const offenderListOptionsVal = this.frmGroup.get('offenderListOptions').value;\n const keys = Object.keys(offenderListOptionsVal);\n keys.forEach(key => {\n if (offenderListOptionsVal[key]) {\n data.options.push({'offenderListOptionId': key});\n }\n });\n\n this.offenderService.saveStaffOffenderListOptionsData(data).subscribe(rtrDatea=>{\n if (rtrDatea.message) {\n this.offenderService.showMessage(rtrDatea.message);\n } else {\n this.offenderService.showMessage('Saved successfully');\n this.xdmService.refreshLoginStaffOptions();\n }\n });\n }\n\n}\n","<form class=\"main-form\" [formGroup]=\"frmGroup\">\n <mat-card role=\"group\">\n <mat-card-content>\n <div formGroupName=\"offenderListOptions\">\n <div style=\"float:left;\">\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\">\n <mat-checkbox *ngIf=\"i%2!=0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\n {{offenderListOption.name}}\n </mat-checkbox>\n </div>\n </div>\n <div>\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\" >\n <mat-checkbox *ngIf=\"i%2==0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\n {{offenderListOption.name}}\n </mat-checkbox> \n </div>\n </div>\n </div>\n </mat-card-content>\n <div align=\"center\">\n <button mat-raised-button color=\"accent\" (click)=\"onSave()\">Save</button>\n </div>\n </mat-card>\n </form>\n ","import { Injectable, Inject, isDevMode } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, of, from, throwError, lastValueFrom } from 'rxjs';\nimport { map, switchMap, take, catchError} from 'rxjs/operators';\nimport { MsalService } from '@azure/msal-angular';\nimport { ActivatedRouteSnapshot } from '@angular/router';\n\nimport {\n LoginStaff,\n SelectedOffender,\n SMART_DATA_SERVICE_URL,\n SMART_DOMAIN_FORMAT,\n Role,\n Permission,\n} from '../smart-storage/smart-storage-model';\nimport { XdmService } from '../smart-storage/xdm.service';\nimport { SmartAccessControlConfig } from './smart-access-control-config';\nimport { nullSafeIsEquivalent } from '@angular/compiler/src/output/output_ast';\n// import { stringify } from 'querystring';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SmartAuthService {\n loginStaff: LoginStaff;\n selectedOffender: SelectedOffender;\n\n constructor(\n private http: HttpClient,\n private authnService: MsalService,\n private xdmService: XdmService,\n @Inject(SMART_DATA_SERVICE_URL) private smartDataServiceUrl,\n @Inject(SMART_DOMAIN_FORMAT) private smartDomainFormatUrl: string,\n ) {}\n\n public getLoginStaff(): Observable<LoginStaff> {\n if (isDevMode) {\n console.log('SmartAuthService - getLoginStaff()');\n }\n if (!isDevMode && this.loginStaff) {\n if (this.loginStaff.staffId) {\n if (isDevMode) {\n console.log(\n '##### getLoginStaff(): get internal instance in service',\n this.loginStaff,\n );\n }\n return of(this.loginStaff);\n } else if (this.loginStaff.userName) {\n if (isDevMode) {\n console.log(\n '##### getLoginStaff(): get using preset user name',\n this.loginStaff,\n );\n }\n return this.getStaff(this.loginStaff.userName);\n }\n }\n return from(this.xdmService.getLoginStaff()).pipe(\n switchMap((storedResult) => {\n if (storedResult && storedResult.staffId) {\n if (isDevMode) {\n console.log(\n '##### getLoginStaff(): get from session.',\n storedResult,\n );\n }\n this.loginStaff = storedResult;\n return of(storedResult);\n } else if (storedResult && storedResult.userName) {\n if (isDevMode) {\n console.log(\n '##### getLoginStaff(): get using preset user name',\n this.loginStaff,\n );\n }\n return this.getStaff(storedResult.userName);\n } else {\n const userName = this.userName;\n const staffName = userName.substring(0, userName.indexOf('@'));\n if (isDevMode) {\n console.log(\n '##### loginLoginStaff(): get using login staff name ',\n staffName,\n );\n }\n return this.getStaff(staffName);\n }\n }),\n );\n }\n\n get userName(): string {\n if (this.authnService.instance.getAllAccounts().length > 0) {\n const account = this.authnService.instance.getAllAccounts()[0];\n return account.username;\n }\n\n return '';\n }\n\n private getTeamUrl(app: string, afterHash: string): string {\n return this.smartDomainFormatUrl.replace('${APP}', app) + afterHash;\n }\n private isSameHost(url, app) {\n return this.smartDomainFormatUrl.replace('${APP}', app) === url;\n }\n\n public redirectToTeam(loginStaff: LoginStaff) {\n if (loginStaff.roles.findIndex((role) => role.roleId === 'EUUSPC') > -1) {\n if (!this.isSameHost(window.location.origin, 'investigation')) {\n window.location.href = this.getTeamUrl('investigation', '/assignment');\n }\n } else if (\n loginStaff.roles.findIndex(\n (role) => role.roleId.substring(0, 3) === 'RSC',\n ) > -1\n ) {\n if (!this.isSameHost(window.location.origin, 'rsc')) {\n window.location.href = this.getTeamUrl('rsc', '/offender-list');\n }\n }\n }\n\n public async setSelectedOffender(selectedOffender: SelectedOffender) {\n if (!this.loginStaff) {\n return;\n }\n\n if (selectedOffender) {\n // if (!selectedOffender.assignmentStaffRelationId) {\n const relation = await lastValueFrom(\n this.getStaffOffenderRelation(\n this.loginStaff.staffId,\n selectedOffender.offenderId,\n ),\n );\n if (relation) {\n selectedOffender.assignmentStaffRelationId = relation;\n } else {\n selectedOffender.assignmentStaffRelationId = 'NOASSIGN';\n }\n // }\n }\n this.xdmService.setSelectedOffender(selectedOffender);\n this.selectedOffender = selectedOffender;\n }\n\n public logout(): void {\n this.xdmService.clearAll();\n this.authnService.logout();\n }\n\n public async setPermission(\n appModuleId: string,\n route: ActivatedRouteSnapshot,\n ) {\n if (!this.loginStaff) {\n this.loginStaff = await this.xdmService.getLoginStaff();\n }\n const permissions = this.loginStaff.permissions;\n const resource =\n route.url && route.url.length > 0 ? route.url[0]!.path : '';\n\n if (!this.selectedOffender) {\n this.selectedOffender = await this.xdmService.getSelectedOffender();\n }\n\n if (this.selectedOffender) {\n // if (!this.selectedOffender.assignmentStaffRelationId) {\n const relation = await this.getStaffOffenderRelation(\n this.loginStaff.staffId,\n this.selectedOffender.offenderId,\n ).toPromise();\n if (relation) {\n this.selectedOffender.assignmentStaffRelationId = relation;\n } else {\n this.selectedOffender.assignmentStaffRelationId = 'NOASSIGN';\n }\n this.xdmService.setSelectedOffender(this.selectedOffender);\n // }\n }\n\n const assignmentStaffRelationId =\n this.selectedOffender.assignmentStaffRelationId;\n\n const elements = document.querySelectorAll('[class^=\"sac-\"]');\n const pattern = /^sac-(\\S+)-(\\S+)$/i;\n\n Array.from(elements).forEach((element) => {\n let hide;\n let disable;\n element.classList.forEach((c) => {\n const results = c.match(pattern);\n // console.log(results);\n if (results && results.length > 2) {\n const roleId = results[1] ? results[1].toUpperCase() : null;\n const right = results[2];\n // console.log(results[0]);\n // console.log(results[1]);\n // console.log(results[2]);\n const permission = permissions.find(function (p) {\n return (\n p.appModuleId === appModuleId &&\n p.resource === resource &&\n p.roleId === roleId &&\n p.assignmentStaffRelationId === assignmentStaffRelationId\n );\n });\n /*\n console.log('##### setPermission() resource: ', resource);\n console.log('##### setPermission() appModuleId: ', appModuleId);\n console.log('##### setPermission() roleId: ', roleId);\n console.log(\n '##### setPermission() assignment relation: ',\n assignmentStaffRelationId,\n );\n */\n console.log('##### Matched permission: ', permission);\n\n if (permission) {\n if (right === 'read') {\n if (!permission.readFlag) {\n if (hide !== false) {\n hide = true;\n }\n } else {\n hide = false;\n }\n } else if (\n (right === 'create' && !permission.createFlag) ||\n (right === 'update' && !permission.updateFlag) ||\n (right === 'delete' && !permission.deleteFlag) ||\n (right === 'assign' && !permission.assignFlag) ||\n (right === 'close' && !permission.closeFlag) ||\n (right === 'expunge' && !permission.expungeFlag) ||\n (right === 'reopen' && !permission.reopenFlag)\n ) {\n if (element.nodeName === 'BUTTON') {\n if (hide !== false) {\n hide = true;\n }\n } else {\n if (disable !== false) {\n disable = true;\n }\n }\n } else {\n if (element.nodeName === 'BUTTON') {\n hide = false;\n } else {\n disable = false;\n }\n }\n } else {\n if (right === 'read') {\n if (hide !== false) {\n hide = true;\n }\n } else if (element.nodeName === 'BUTTON') {\n if (hide !== false) {\n hide = true;\n }\n } else if (disable !== false) {\n disable = true;\n }\n }\n }\n });\n console.log('hide: ', hide);\n console.log('disable: ', disable);\n if (hide === true) {\n this.hideHtmlElement(element);\n } else if (disable === true) {\n this.disableHtmlElement(element);\n }\n });\n }\n\n public checkPermission(accessControlConfig: SmartAccessControlConfig) {\n const selData = accessControlConfig.route.data;\n this.loginStaff = selData.loginStaff;\n this.selectedOffender = selData.selectedOffender;\n let routePath = '';\n if (\n accessControlConfig.route.url &&\n accessControlConfig.route.url.length > 0\n ) {\n routePath = accessControlConfig.route.url[0]!.path;\n }\n\n const permissions = this.loginStaff.permissions;\n const resource = routePath;\n const roleId = accessControlConfig.roleId\n ? accessControlConfig.roleId.toUpperCase()\n : null;\n const accessType = accessControlConfig.accessType;\n const assignmentStaffRelationId = (!this.selectedOffender || !this.selectedOffender\n .assignmentStaffRelationId)\n ? 'N/A'\n : this.selectedOffender.assignmentStaffRelationId;\n\n const permission = permissions.find((p) => {\n return (\n p.appModuleId === accessControlConfig.appModuleId &&\n p.resource === resource &&\n (!roleId || p.roleId === roleId) &&\n (p.assignmentStaffRelationId === 'N/A' ||\n p.assignmentStaffRelationId === assignmentStaffRelationId)\n );\n });\n\n if (permission) {\n if (accessType === 'read') {\n if (!permission.readFlag) {\n return false;\n } else {\n return true;\n }\n } else if (\n (accessType === 'create' && !permission.createFlag) ||\n (accessType === 'update' && !permission.updateFlag) ||\n (accessType === 'delete' && !permission.deleteFlag) ||\n (accessType === 'assign' && !permission.assignFlag) ||\n (accessType === 'close' && !permission.closeFlag) ||\n (accessType === 'expunge' && !permission.expungeFlag) ||\n (accessType === 'reopen' && !permission.reopenFlag)\n ) {\n return false;\n } else {\n return true;\n }\n } else {\n if (accessType === 'read') {\n return false;\n }\n }\n return false;\n }\n\n public canAppFeatureActivate(\n loginStaff: LoginStaff,\n feature: string,\n appModuleId = null,\n ) {\n // if (!this.isAuthEnable(loginStaff.roles, appModuleId)) {\n // return true;\n // }\n return this.hasAppFeaturePermission(\n loginStaff.permissions,\n feature,\n appModuleId,\n );\n }\n\n // public isAuthEnable(roles: Role[], appModuleId: string) {\n // if (roles && roles.length > 0) {\n // return roles.map(r => r.roleId).findIndex(this.isExternalRole) > -1 || appModuleId === 'RR';\n // }\n // return false;\n // }\n\n public hasIntakeRole(roles: Role[]) {\n if (roles && roles.length > 0) {\n return roles.findIndex(this.isIntakeRole) > -1;\n }\n return false;\n }\n\n private hasAppFeaturePermission(\n permissions: Permission[],\n feature: string,\n appModuleId: string,\n ) {\n if (permissions && permissions.length > 0) {\n if (appModuleId) {\n return (\n permissions.findIndex(\n (p) => p.resource === feature && p.appModuleId === appModuleId,\n ) > -1\n );\n } else {\n return permissions.findIndex((p) => p.resource === feature) > -1;\n }\n }\n\n return false;\n }\n\n private isExternalRole(roleId) {\n switch (roleId) {\n case 'EUDTL':\n case 'EUDUSM':\n case 'EUJDG':\n case 'EUMPD':\n case 'EUSOTV':\n case 'EUUSA2':\n case 'EUUSAO':\n case 'EUUSPC':\n return true;\n default:\n return false;\n }\n }\n\n private isIntakeRole(role: Role) {\n switch (role.roleId) {\n case 'OPA':\n case 'OPS':\n case 'SOPS':\n return true;\n default:\n return false;\n }\n }\n\n private disableHtmlElement(element: Element): void {\n // console.log(element);\n switch (element.nodeName) {\n case 'A':\n element.setAttribute(\n 'style',\n 'pointer-events: none;cursor: not-allowed;',\n );\n element.setAttribute('tabIndex', '-1');\n break;\n default:\n element.setAttribute('disabled', 'disabled');\n break;\n }\n }\n\n private hideHtmlElement(element: Element): void {\n // element.setAttribute('hidden', 'hidden');\n element.setAttribute('style', 'display: none;');\n }\n\n private getStaff(userName: string): Observable<LoginStaff> {\n return this.query<any>({\n query: this.findStaffQuery,\n variables: {\n input: {\n where: {\n userName: userName,\n activeFlag: true,\n },\n }\n },\n }).pipe(\n take(1),\n map((result) => {\n if (isDevMode) {\n console.log('##### getStaff() from service ', result);\n }\n if (result.findvStaffs.data.length > 0) {\n const data = result.findvStaffs.data[0];\n this.xdmService.setLoginStaff(data);\n this.loginStaff = data;\n return data;\n } else {\n return of(null);\n }\n }),\n catchError((error) => {\n console.log('error ' + error);\n return of(null);\n }),\n );\n }\n\n private query<T>(options: {\n query: string;\n variables?: { [key: string]: any };\n }): Observable<T> {\n return this.http\n .post<{ data: T }>(\n this.smartDataServiceUrl,\n {\n query: options.query,\n variables: options.variables,\n },\n {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n 'No-Auth': 'True',\n }),\n }\n )\n .pipe(map((d) => d.data));\n }\n\n private get findStaffQuery(){\n return `\n query findvStaffs($input: vStaffMultiInput) {\n findvStaffs(input: $input) {\n totalCount\n message\n data {\n staffId\n userName\n lastName\n firstName\n phone\n email\n roles {\n roleId\n role\n }\n permissions {\n roleId\n appModuleId\n resource\n assignmentStaffRelationId\n readFlag\n createFlag\n updateFlag\n deleteFlag\n assignFlag\n reopenFlag\n closeFlag\n expungeFlag\n }\n options {\n offenderListOptionId\n name\n serviceApiFieldName\n selectedFlag\n }\n }\n }\n }\n `;\n }\n\n private getStaffOffenderRelation(\n staffId: number,\n offenderId: number,\n ): Observable<string> {\n const queryString = `\n {\n findvStaffOffenderRelations(input: {where: {staffId: ${staffId}, offenderId: ${offenderId}}}) {\n data {\n assignmentStaffRelationId\n }\n }\n }`;\n\n return this.http\n .post<any>(this.smartDataServiceUrl, { query: queryString })\n .pipe(\n take(1),\n map((result) => {\n if (isDevMode) {\n console.log(\n '##### getStaffOffenderRelation() from service ',\n result,\n );\n }\n if (result.data.findvStaffOffenderRelations.data.length > 0) {\n const data = result.data.findvStaffOffenderRelations.data[0];\n return data.assignmentStaffRelationId;\n } else {\n return null;\n // return throwError('No access right.');\n }\n }),\n catchError((error) => {\n console.log('error ' + error);\n return null;\n }),\n );\n }\n\n private getRolePermissions(\n appModuleId: string,\n resource: string,\n ): Observable<boolean> {\n const queryString = `\n query findvRolePermissionPivots{\n findvRolePermissionPivots(input: {where: {appModuleId: ${appModuleId}, resource: ${resource}}}){\n totalCount\n message\n }\n }`;\n\n return this.http\n .post<any>(this.smartDataServiceUrl, { query: queryString })\n .pipe(\n take(1),\n map((result) => {\n if (isDevMode) {\n console.log(\n '##### findvRolePermissionPivots() from service ',\n result,\n );\n }\n if (result.data.findvRolePermissionPivots.totalCount > 0) {\n return true;\n } else {\n return false;\n // return throwError('No access right.');\n }\n }),\n catchError((error: any) => {\n console.log('error ' + error);\n return throwError(error);\n }),\n );\n }\n}\n","import { Directive, Input, OnInit, ElementRef } from '@angular/core';\nimport { SmartAuthService } from './smart-auth.service';\nimport { SmartAccessControlConfig } from './smart-access-control-config';\nimport { ActivatedRoute } from '@angular/router';\n\n\n@Directive({\n selector: '[accessControl]',\n})\nexport class SmartAccessControlDirective implements OnInit {\n @Input() accessControlConfig: SmartAccessControlConfig;\n constructor(\n private elementRef: ElementRef,\n private auth: SmartAuthService,\n ) {}\n\n public ngOnInit() {\n this.checkAccess();\n }\n\n checkAccess() {\n if (\n !this.accessControlConfig ||\n !this.accessControlConfig.route ||\n !this.accessControlConfig.route.data ||\n !this.accessControlConfig.route.data.loginStaff\n ) {\n return;\n }\n\n // const loginStaff = this.accessControlConfig.route.data.loginStaff;\n // if (!this.auth.isAuthEnable(loginStaff.roles, this.accessControlConfig.appModuleId)) {\n // return;\n // }\n this.elementRef.nativeElement.style.display = this.auth.checkPermission(\n this.accessControlConfig\n )\n ? 'block'\n : 'none';\n }\n}\n","// smart-authorization.service\nimport { Injectable } from '@angular/core';\nimport {\n CanActivate,\n ActivatedRouteSnapshot,\n RouterStateSnapshot,\n} from '@angular/router';\nimport { Router } from '@angular/router';\nimport { take, mergeMap, catchError } from 'rxjs/operators';\nimport { of, Observable } from 'rxjs';\nimport { LoginStaff } from '../smart-storage/smart-storage-model';\nimport { SmartAuthService } from './smart-auth.service';\n\n@Injectable()\nexport class SmartAuthorizationGuard implements CanActivate {\n loginStaff: LoginStaff;\n\n constructor(public authnService: SmartAuthService) { }\n\n canActivate(route: ActivatedRouteSnapshot) {\n return this.authnService.getLoginStaff().pipe(\n take(1),\n mergeMap((loginStaff) => {\n if (!loginStaff || !route || !route.routeConfig) {\n return of(false);\n }\n // if (!this.authnService.isAuthEnable(loginStaff.roles, null)) {\n // return of(true);\n // }\n const resource = route.routeConfig.path\n ? route.routeConfig.path.split('/')[0]\n : '';\n const isFeatureValid = this.authnService.canAppFeatureActivate(\n loginStaff,\n resource,\n );\n return of(isFeatureValid);\n }),\n catchError((error) => {\n return of(false);\n }),\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { HttpClientModule } from '@angular/common/http';\nimport { SmartOffenderHeaderComponent } from './smart-offender-header/smart-offender-header.component';\nimport { SmartNavbarComponent } from './smart-navbar/smart-navbar.component';\nimport { SmartNavbarService } from './smart-navbar/smart-navbar.service';\nimport { SmartErrorComponent } from './smart-auth/smart-error.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { SmartOffenderHeaderService } from './smart-offender-header/smart-offender-header.service';\nimport { SmartStaffOffenderOptionsComponent } from './smart-staff-offender-options/smart-staff-offender-options.component';\n// import { SmartStaffOffenderOptionsComponent } from './smart-staff-offender-options/smart-staff-offender-options.component';\nimport { SmartStaffOffenderOptionsService } from './smart-staff-offender-options/smart-staff-offender-options.service';\nimport { SmartAccessControlDirective } from './smart-auth/smart-access-control.directive';\nimport { SmartAuthorizationGuard } from './smart-auth/smart-authorization-guard.service';\n\n@NgModule({\n declarations: [\n SmartOffenderHeaderComponent,\n SmartNavbarComponent,\n SmartErrorComponent,\n SmartStaffOffenderOptionsComponent,\n SmartAccessControlDirective,\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n MatButtonModule,\n MatMenuModule,\n MatTabsModule,\n MatSelectModule,\n MatCardModule,\n MatCheckboxModule,\n ReactiveFormsModule,\n ],\n exports: [\n SmartOffenderHeaderComponent,\n SmartNavbarComponent,\n SmartErrorComponent,\n SmartStaffOffenderOptionsComponent,\n SmartAccessControlDirective,\n ],\n providers: [\n SmartNavbarService,\n SmartOffenderHeaderService,\n SmartStaffOffenderOptionsService,\n SmartAuthorizationGuard,\n MatSnackBar,\n ],\n})\nexport class NgcSmartCoreModule {}\n","import { Injectable, NgZone, isDevMode } from '@angular/core';\nimport {\n Resolve,\n ActivatedRouteSnapshot,\n RouterStateSnapshot,\n Router,\n} from '@angular/router';\nimport { Observable, EMPTY, of, throwError } from 'rxjs';\nimport { mergeMap, catchError, take } from 'rxjs/operators';\nimport { SmartAuthService } from './smart-auth.service';\nimport { LoginStaff } from '../smart-storage/smart-storage-model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoginStaffResolverService implements Resolve<LoginStaff> {\n constructor(\n private authnService: SmartAuthService,\n // private zone: NgZone,\n private router: Router,\n ) {}\n\n resolve(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n ): Observable<LoginStaff> | Observable<never> {\n return this.authnService.getLoginStaff().pipe(\n take(1),\n mergeMap((loginStaff) => {\n if (isDevMode) {\n console.log('LoginStaffResolverService: ', loginStaff);\n }\n if (loginStaff) {\n return of(loginStaff);\n } else {\n return throwError('Not authorized to access SMART.');\n // return EMPTY;\n /*\n this.zone.run(() => {\n this.router.navigate(['/smart-error'], {\n queryParams: {\n type: 'staff',\n message: 'Not authorized to access SMART.'\n }\n });\n });\n return EMPTY;\n */\n }\n }),\n catchError((error) => {\n console.log('LoginStaffResolverService: ' + error);\n this.router.navigate(['/smart-error'], {\n queryParams: {\n type: 'staff',\n message: 'SMART Authentication: ' + error,\n },\n });\n return EMPTY;\n }),\n );\n }\n}\n","import { Injectable, NgZone, isDevMode } from '@angular/core';\nimport {\n Resolve,\n ActivatedRouteSnapshot,\n RouterStateSnapshot,\n Router,\n} from '@angular/router';\nimport { Observable, from, of, EMPTY, throwError, concat } from 'rxjs';\nimport {\n catchError,\n mergeMap,\n map,\n take,\n retryWhen,\n tap,\n delay,\n} from 'rxjs/operators';\nimport { SelectedOffender } from '../smart-storage/smart-storage-model';\nimport { XdmService } from '../smart-storage/xdm.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SelectedOffenderResolverService\n implements Resolve<SelectedOffender> {\n constructor(\n private service: XdmService,\n private zone: NgZone,\n private router: Router,\n ) {}\n\n resolve(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n ): Observable<SelectedOffender> | Observable<never> {\n return from(this.service.getSelectedOffender()).pipe(\n mergeMap((selectedOffender) => {\n if (isDevMode) {\n console.log(selectedOffender);\n }\n if (!selectedOffender) {\n return throwError('No offender selected.');\n }\n return of(selectedOffender);\n }),\n retryWhen((errors) =>\n errors.pipe(\n // tap(() => console.log('Retry getting selected offender.')),\n delay(1000),\n take(5),\n (o) =>\n concat(\n o,\n throwError('No offender selected (failed after retries).'),\n ),\n ),\n ),\n catchError((error) => {\n /*\n this.zone.run(() => {\n this.router.navigate(['/smart-error'], {\n queryParams: { type: 'offender', message: error }\n });\n });\n */\n this.router.navigate(['/smart-error'], {\n queryParams: { type: 'offender', message: error },\n });\n return EMPTY;\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { SmartStaffOffenderOptionsService} from './smart-staff-offender-options.service';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SmartStaffOffenderOptionsResolverService implements Resolve<Observable<any>> {\n constructor(private offenderService: SmartStaffOffenderOptionsService) {}\n resolve() {\n return this.offenderService.getOffenderListOptions()\n .pipe(\n map(({ data }) => {\n return data;\n }),\n );\n }\n }\n","import { ActivatedRouteSnapshot } from '@angular/router';\n\nexport interface SmartAccessControlConfig {\n appModuleId: string;\n route: ActivatedRouteSnapshot;\n accessType: AccessType;\n roleId: string;\n}\n\nexport enum AccessType {\n READ = 'read',\n CREATE = 'create',\n UPDATE = 'update',\n DELETE = 'delete',\n EXPUNGE = 'expunge',\n ASSIGN = 'assign',\n REOPEN = 'reopen',\n CLOSE = 'close'\n}\n","/*\n * Public API Surface of ngc-smart-core\n */\n\nexport * from './lib/ngc-smart-core.module';\nexport * from './lib/smart-auth/smart-auth.service';\nexport * from './lib/smart-auth/smart-login-staff-resolver.service';\nexport * from './lib/smart-auth/smart-selected-offender-resolver.service';\nexport * from './lib/smart-auth/smart-error.component';\nexport * from './lib/smart-navbar/smart-navbar.service';\nexport * from './lib/smart-navbar/smart-navbar-config';\nexport * from './lib/smart-storage/xdm.service';\nexport * from './lib/smart-storage/smart-storage-model';\nexport * from './lib/smart-staff-offender-options/smart-staff-offender-options.component';\nexport * from './lib/smart-offender-header/smart-offender-header.component';\nexport * from './lib/smart-auth/smart-access-control.directive';\nexport * from './lib/smart-navbar/smart-navbar.component';\nexport * from './lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service';\nexport * from './lib/smart-auth/smart-access-control-config';\nexport * from './lib/smart-auth/smart-authorization-guard.service';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.XdmService","i3.SmartOffenderHeaderService","i4","i9","i1.SmartNavbarService","i2.XdmService","i3","i5","i6","i1","i2.SmartStaffOffenderOptionsService","i3.XdmService","i7","i1.SmartAuthService","i2","i1.SmartStaffOffenderOptionsService"],"mappings":"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"}