@csmart/ngc-smart-core 0.7.91 → 0.7.95

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