@csmart/ngc-smart-core 1.14.2 → 1.14.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +24 -24
  2. package/esm2020/csmart-ngc-smart-core.mjs +4 -4
  3. package/esm2020/lib/ngc-smart-core.module.mjs +95 -95
  4. package/esm2020/lib/smart-auth/smart-access-control-config.mjs +12 -12
  5. package/esm2020/lib/smart-auth/smart-access-control.directive.mjs +39 -39
  6. package/esm2020/lib/smart-auth/smart-auth.service.mjs +504 -504
  7. package/esm2020/lib/smart-auth/smart-authorization-guard.service.mjs +35 -35
  8. package/esm2020/lib/smart-auth/smart-error.component.mjs +37 -37
  9. package/esm2020/lib/smart-auth/smart-login-staff-resolver.service.mjs +59 -59
  10. package/esm2020/lib/smart-auth/smart-selected-offender-resolver.service.mjs +49 -49
  11. package/esm2020/lib/smart-navbar/smart-navbar-config.mjs +2 -2
  12. package/esm2020/lib/smart-navbar/smart-navbar.component.mjs +167 -167
  13. package/esm2020/lib/smart-navbar/smart-navbar.service.mjs +63 -63
  14. package/esm2020/lib/smart-offender-header/smart-offender-header.component.mjs +151 -151
  15. package/esm2020/lib/smart-offender-header/smart-offender-header.service.mjs +41 -41
  16. package/esm2020/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.mjs +25 -25
  17. package/esm2020/lib/smart-staff-offender-options/smart-staff-offender-options.component.mjs +78 -78
  18. package/esm2020/lib/smart-staff-offender-options/smart-staff-offender-options.service.mjs +132 -132
  19. package/esm2020/lib/smart-storage/smart-storage-model.mjs +30 -30
  20. package/esm2020/lib/smart-storage/xdm.service.mjs +169 -158
  21. package/esm2020/public-api.mjs +20 -20
  22. package/fesm2015/csmart-ngc-smart-core.mjs +1525 -1514
  23. package/fesm2015/csmart-ngc-smart-core.mjs.map +1 -1
  24. package/fesm2020/csmart-ngc-smart-core.mjs +1511 -1500
  25. package/fesm2020/csmart-ngc-smart-core.mjs.map +1 -1
  26. package/index.d.ts +5 -5
  27. package/lib/ngc-smart-core.module.d.ts +20 -20
  28. package/lib/smart-auth/smart-access-control-config.d.ts +17 -17
  29. package/lib/smart-auth/smart-access-control.directive.d.ts +14 -14
  30. package/lib/smart-auth/smart-auth.service.d.ts +41 -41
  31. package/lib/smart-auth/smart-authorization-guard.service.d.ts +13 -13
  32. package/lib/smart-auth/smart-error.component.d.ts +17 -17
  33. package/lib/smart-auth/smart-login-staff-resolver.service.d.ts +13 -13
  34. package/lib/smart-auth/smart-selected-offender-resolver.service.d.ts +15 -15
  35. package/lib/smart-navbar/smart-navbar-config.d.ts +7 -7
  36. package/lib/smart-navbar/smart-navbar.component.d.ts +40 -40
  37. package/lib/smart-navbar/smart-navbar.service.d.ts +12 -12
  38. package/lib/smart-offender-header/smart-offender-header.component.d.ts +32 -32
  39. package/lib/smart-offender-header/smart-offender-header.service.d.ts +18 -18
  40. package/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.d.ts +11 -11
  41. package/lib/smart-staff-offender-options/smart-staff-offender-options.component.d.ts +22 -22
  42. package/lib/smart-staff-offender-options/smart-staff-offender-options.service.d.ts +19 -19
  43. package/lib/smart-storage/smart-storage-model.d.ts +58 -58
  44. package/lib/smart-storage/xdm.service.d.ts +42 -42
  45. package/package.json +6 -2
  46. package/public-api.d.ts +16 -16
@@ -28,1556 +28,1567 @@ import * as i6 from '@angular/material/form-field';
28
28
  import * as i8 from '@angular/material/core';
29
29
  import { __awaiter } from 'tslib';
30
30
 
31
- class Permission {
32
- }
33
- class Role {
34
- }
35
- class Option {
36
- }
37
- class LoginStaff {
38
- constructor() {
39
- this.selectedRole = '*';
40
- }
41
- }
42
- class SelectedOffender {
43
- constructor() {
44
- this.intakeFlag = false;
45
- }
46
- }
47
- class OffenderQuery {
48
- }
49
- class StorageKey {
50
- }
51
- StorageKey.selectedOffender = 'smart-selected-offender';
52
- StorageKey.loginStaff = 'smart-login-staff';
53
- StorageKey.offenderQuery = 'smart-offender-query';
54
- const SMART_WEB_STORAGE_LISTENER_URL = new InjectionToken('SMART Web Storage Listener URL');
55
- const SMART_WEB_PORTAL_URL = new InjectionToken('SMART Web Portal URL');
56
- const SMART_DATA_SERVICE_URL = new InjectionToken('SMART Data Service URL');
57
- //exception for redirection
31
+ class Permission {
32
+ }
33
+ class Role {
34
+ }
35
+ class Option {
36
+ }
37
+ class LoginStaff {
38
+ constructor() {
39
+ this.selectedRole = '*';
40
+ }
41
+ }
42
+ class SelectedOffender {
43
+ constructor() {
44
+ this.intakeFlag = false;
45
+ }
46
+ }
47
+ class OffenderQuery {
48
+ }
49
+ class StorageKey {
50
+ }
51
+ StorageKey.selectedOffender = 'smart-selected-offender';
52
+ StorageKey.loginStaff = 'smart-login-staff';
53
+ StorageKey.offenderQuery = 'smart-offender-query';
54
+ const SMART_WEB_STORAGE_LISTENER_URL = new InjectionToken('SMART Web Storage Listener URL');
55
+ const SMART_WEB_PORTAL_URL = new InjectionToken('SMART Web Portal URL');
56
+ const SMART_DATA_SERVICE_URL = new InjectionToken('SMART Data Service URL');
57
+ //exception for redirection
58
58
  const SMART_DOMAIN_FORMAT = new InjectionToken('SMART Domain Format URL');
59
59
 
60
- class XdmService {
61
- constructor(document, smartStorageListenerUrl, httpClient, smartDataServiceUrl) {
62
- this.document = document;
63
- this.smartStorageListenerUrl = smartStorageListenerUrl;
64
- this.httpClient = httpClient;
65
- this.smartDataServiceUrl = smartDataServiceUrl;
66
- this.offenderSubject = new Subject();
67
- this.staffSubject = new Subject();
68
- this.offenderQuerySubject = new Subject();
69
- if (isDevMode) {
70
- console.log('SmartStorage XdmService (Client) - constructor()');
71
- }
72
- this.init();
73
- }
74
- init() {
75
- const frame = this.document.createElement('iframe');
76
- frame.src = this.smartStorageListenerUrl;
77
- frame.id = 'childframe';
78
- frame.name = Math.random().toString();
79
- frame.onload = null;
80
- frame.style.visibility = 'hidden';
81
- this.document.body.appendChild(frame);
82
- this.connection = connectToChild({
83
- iframe: frame,
84
- debug: false,
85
- });
86
- }
87
- getStaffOffenderListOptions(staffId) {
88
- const queryString = `{findvStaffOffenderListOptions(input:{
89
- where:{
90
- staffId: ${staffId}
91
- }
92
- }){
93
- data{
94
- offenderListOptionId
95
- name
96
- serviceApiFieldName
97
- selectedFlag
98
- }
99
- } }`;
100
- return this.httpClient
101
- .post(this.smartDataServiceUrl, { query: queryString })
102
- .pipe(map(({ data }) => {
103
- data.findvStaffOffenderListOptions.data['offenderOptionListId'] =
104
- data.findvStaffOffenderListOptions.data['offenderListOptionId'];
105
- return data.findvStaffOffenderListOptions.data;
106
- }));
107
- /*return of([
108
- { offenderListOptionId: 'genderCode', name: '', selectedFlag: true }]);*/
109
- }
110
- clearAll() {
111
- this.connection.promise.then((child) => {
112
- child.clearAll();
113
- this.offenderSubject.next();
114
- this.staffSubject.next();
115
- });
116
- }
117
- /*************************************
118
- * Offender
119
- **************************************/
120
- setSelectedOffender(selectedOffender) {
121
- this.connection.promise.then((child) => {
122
- child.setSelectedOffender(selectedOffender);
123
- this.offenderSubject.next(selectedOffender);
124
- });
125
- }
126
- getSelectedOffender() {
127
- return this.connection.promise.then((child) => child.getSelectedOffender(StorageKey.selectedOffender));
128
- }
129
- clearSelectedOffender() {
130
- this.connection.promise.then((child) => {
131
- child.clearSelectedOffender();
132
- this.offenderSubject.next();
133
- });
134
- }
135
- getOffenderUpdate() {
136
- return this.offenderSubject.asObservable();
137
- }
138
- /************************************************************************
139
- * Staff
140
- ************************************************************************/
141
- setLoginStaff(loginStaff) {
142
- this.connection.promise.then((child) => {
143
- child.setLoginStaff(loginStaff);
144
- this.staffSubject.next(loginStaff);
145
- });
146
- }
147
- getLoginStaff() {
148
- return this.connection.promise.then((child) => child.getLoginStaff(StorageKey.loginStaff));
149
- }
150
- clearLoginStaff() {
151
- this.connection.promise.then((child) => {
152
- child.clearLoginStaff();
153
- this.staffSubject.next();
154
- });
155
- }
156
- getStaffUpdate() {
157
- return this.staffSubject.asObservable();
158
- }
159
- refreshLoginStaffOptions() {
160
- this.getLoginStaff().then((oldLoginStaff) => {
161
- this.getStaffOffenderListOptions(oldLoginStaff.staffId).subscribe((optionData) => {
162
- console.log(optionData);
163
- oldLoginStaff.options = optionData;
164
- this.setLoginStaff(oldLoginStaff);
165
- });
166
- });
167
- }
168
- /************************************************************************
169
- * Offender Query
170
- ************************************************************************/
171
- setOffenderQuery(offenderQuery) {
172
- this.connection.promise.then((child) => {
173
- child.setOffenderQuery(offenderQuery);
174
- this.offenderQuerySubject.next(offenderQuery);
175
- });
176
- }
177
- getOffenderQuery() {
178
- return this.connection.promise.then((child) => child.getOffenderQuery(StorageKey.offenderQuery));
179
- }
180
- clearOffenderQuery() {
181
- this.connection.promise.then((child) => {
182
- child.clearOffenderQuery();
183
- this.offenderQuerySubject.next();
184
- });
185
- }
186
- getOffenderQueryUpdate() {
187
- return this.offenderQuerySubject.asObservable();
188
- }
189
- }
190
- /** @nocollapse */ XdmService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: XdmService, deps: [{ token: DOCUMENT }, { token: SMART_WEB_STORAGE_LISTENER_URL }, { token: i1.HttpClient }, { token: SMART_DATA_SERVICE_URL }], target: i0.ɵɵFactoryTarget.Injectable });
191
- /** @nocollapse */ XdmService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: XdmService, providedIn: 'root' });
192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: XdmService, decorators: [{
193
- type: Injectable,
194
- args: [{
195
- providedIn: 'root',
196
- }]
197
- }], ctorParameters: function () {
198
- return [{ type: undefined, decorators: [{
199
- type: Inject,
200
- args: [DOCUMENT]
201
- }] }, { type: undefined, decorators: [{
202
- type: Inject,
203
- args: [SMART_WEB_STORAGE_LISTENER_URL]
204
- }] }, { type: i1.HttpClient }, { type: undefined, decorators: [{
205
- type: Inject,
206
- args: [SMART_DATA_SERVICE_URL]
207
- }] }];
60
+ class XdmService {
61
+ constructor(document, smartStorageListenerUrl, httpClient, smartDataServiceUrl) {
62
+ this.document = document;
63
+ this.smartStorageListenerUrl = smartStorageListenerUrl;
64
+ this.httpClient = httpClient;
65
+ this.smartDataServiceUrl = smartDataServiceUrl;
66
+ this.offenderSubject = new Subject();
67
+ this.staffSubject = new Subject();
68
+ this.offenderQuerySubject = new Subject();
69
+ if (isDevMode) {
70
+ console.log('SmartStorage XdmService (Client) - constructor()');
71
+ }
72
+ this.init();
73
+ }
74
+ init() {
75
+ const frame = this.document.createElement('iframe');
76
+ frame.src = this.smartStorageListenerUrl;
77
+ frame.id = 'childframe';
78
+ frame.name = Math.random().toString();
79
+ frame.onload = null;
80
+ frame.style.visibility = 'hidden';
81
+ this.document.body.appendChild(frame);
82
+ this.connection = connectToChild({
83
+ iframe: frame,
84
+ debug: false,
85
+ });
86
+ }
87
+ getStaffOffenderListOptions(staffId) {
88
+ const queryString = `{findvStaffOffenderListOptions(input:{
89
+ where:{
90
+ staffId: ${staffId}
91
+ }
92
+ }){
93
+ data{
94
+ offenderListOptionId
95
+ name
96
+ serviceApiFieldName
97
+ selectedFlag
98
+ }
99
+ } }`;
100
+ return this.httpClient
101
+ .post(this.smartDataServiceUrl, { query: queryString })
102
+ .pipe(map(({ data }) => {
103
+ data.findvStaffOffenderListOptions.data['offenderOptionListId'] =
104
+ data.findvStaffOffenderListOptions.data['offenderListOptionId'];
105
+ return data.findvStaffOffenderListOptions.data;
106
+ }));
107
+ /*return of([
108
+ { offenderListOptionId: 'genderCode', name: '', selectedFlag: true }]);*/
109
+ }
110
+ clearAll() {
111
+ this.connection.promise.then((child) => {
112
+ child.clearAll();
113
+ this.offenderSubject.next();
114
+ this.staffSubject.next();
115
+ });
116
+ }
117
+ /*************************************
118
+ * Offender
119
+ **************************************/
120
+ setSelectedOffender(selectedOffender) {
121
+ this.connection.promise.then((child) => {
122
+ child.setSelectedOffender(selectedOffender);
123
+ this.offenderSubject.next(selectedOffender);
124
+ let loginStaff = child.getLoginStaff(StorageKey.loginStaff);
125
+ const queryString = `mutation {createStaffOffenderAccess(input: {
126
+ staffId: ${loginStaff.staffId},
127
+ offenderId: ${selectedOffender.offenderId},
128
+ accessDate: ${new Date()}
129
+ }){
130
+ data{
131
+ staffOffenderAccessId
132
+ }
133
+ } }`;
134
+ this.httpClient.post(this.smartDataServiceUrl, { query: queryString }).subscribe();
135
+ });
136
+ }
137
+ getSelectedOffender() {
138
+ return this.connection.promise.then((child) => child.getSelectedOffender(StorageKey.selectedOffender));
139
+ }
140
+ clearSelectedOffender() {
141
+ this.connection.promise.then((child) => {
142
+ child.clearSelectedOffender();
143
+ this.offenderSubject.next();
144
+ });
145
+ }
146
+ getOffenderUpdate() {
147
+ return this.offenderSubject.asObservable();
148
+ }
149
+ /************************************************************************
150
+ * Staff
151
+ ************************************************************************/
152
+ setLoginStaff(loginStaff) {
153
+ this.connection.promise.then((child) => {
154
+ child.setLoginStaff(loginStaff);
155
+ this.staffSubject.next(loginStaff);
156
+ });
157
+ }
158
+ getLoginStaff() {
159
+ return this.connection.promise.then((child) => child.getLoginStaff(StorageKey.loginStaff));
160
+ }
161
+ clearLoginStaff() {
162
+ this.connection.promise.then((child) => {
163
+ child.clearLoginStaff();
164
+ this.staffSubject.next();
165
+ });
166
+ }
167
+ getStaffUpdate() {
168
+ return this.staffSubject.asObservable();
169
+ }
170
+ refreshLoginStaffOptions() {
171
+ this.getLoginStaff().then((oldLoginStaff) => {
172
+ this.getStaffOffenderListOptions(oldLoginStaff.staffId).subscribe((optionData) => {
173
+ console.log(optionData);
174
+ oldLoginStaff.options = optionData;
175
+ this.setLoginStaff(oldLoginStaff);
176
+ });
177
+ });
178
+ }
179
+ /************************************************************************
180
+ * Offender Query
181
+ ************************************************************************/
182
+ setOffenderQuery(offenderQuery) {
183
+ this.connection.promise.then((child) => {
184
+ child.setOffenderQuery(offenderQuery);
185
+ this.offenderQuerySubject.next(offenderQuery);
186
+ });
187
+ }
188
+ getOffenderQuery() {
189
+ return this.connection.promise.then((child) => child.getOffenderQuery(StorageKey.offenderQuery));
190
+ }
191
+ clearOffenderQuery() {
192
+ this.connection.promise.then((child) => {
193
+ child.clearOffenderQuery();
194
+ this.offenderQuerySubject.next();
195
+ });
196
+ }
197
+ getOffenderQueryUpdate() {
198
+ return this.offenderQuerySubject.asObservable();
199
+ }
200
+ }
201
+ /** @nocollapse */ XdmService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: XdmService, deps: [{ token: DOCUMENT }, { token: SMART_WEB_STORAGE_LISTENER_URL }, { token: i1.HttpClient }, { token: SMART_DATA_SERVICE_URL }], target: i0.ɵɵFactoryTarget.Injectable });
202
+ /** @nocollapse */ XdmService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: XdmService, providedIn: 'root' });
203
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: XdmService, decorators: [{
204
+ type: Injectable,
205
+ args: [{
206
+ providedIn: 'root',
207
+ }]
208
+ }], ctorParameters: function () {
209
+ return [{ type: undefined, decorators: [{
210
+ type: Inject,
211
+ args: [DOCUMENT]
212
+ }] }, { type: undefined, decorators: [{
213
+ type: Inject,
214
+ args: [SMART_WEB_STORAGE_LISTENER_URL]
215
+ }] }, { type: i1.HttpClient }, { type: undefined, decorators: [{
216
+ type: Inject,
217
+ args: [SMART_DATA_SERVICE_URL]
218
+ }] }];
208
219
  } });
209
220
 
210
- class SmartOffenderHeaderService {
211
- constructor(smartDataServiceUrl, http) {
212
- this.smartDataServiceUrl = smartDataServiceUrl;
213
- this.http = http;
214
- }
215
- getStaffOffenders(staffId) {
216
- const queryString = `
217
- query getStaffOffenderList{
218
- filterOffenderList(input: {staffId: ${staffId}}) {
219
- data {
220
- offenderId
221
- offenderName
222
- pdId
223
- birthDate
224
- gender
225
- }
226
- }
227
- }
228
- `;
229
- return this.http
230
- .post(this.smartDataServiceUrl, { query: queryString })
231
- .pipe(map(({ data }) => {
232
- return data.filterOffenderList.data;
233
- }));
234
- }
235
- }
236
- /** @nocollapse */ SmartOffenderHeaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartOffenderHeaderService, deps: [{ token: SMART_DATA_SERVICE_URL }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
237
- /** @nocollapse */ SmartOffenderHeaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartOffenderHeaderService });
238
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartOffenderHeaderService, decorators: [{
239
- type: Injectable
240
- }], ctorParameters: function () {
241
- return [{ type: undefined, decorators: [{
242
- type: Inject,
243
- args: [SMART_DATA_SERVICE_URL]
244
- }] }, { type: i1.HttpClient }];
221
+ class SmartOffenderHeaderService {
222
+ constructor(smartDataServiceUrl, http) {
223
+ this.smartDataServiceUrl = smartDataServiceUrl;
224
+ this.http = http;
225
+ }
226
+ getStaffOffenders(staffId) {
227
+ const queryString = `
228
+ query getStaffOffenderList{
229
+ filterOffenderList(input: {staffId: ${staffId}}) {
230
+ data {
231
+ offenderId
232
+ offenderName
233
+ pdId
234
+ birthDate
235
+ gender
236
+ }
237
+ }
238
+ }
239
+ `;
240
+ return this.http
241
+ .post(this.smartDataServiceUrl, { query: queryString })
242
+ .pipe(map(({ data }) => {
243
+ return data.filterOffenderList.data;
244
+ }));
245
+ }
246
+ }
247
+ /** @nocollapse */ SmartOffenderHeaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartOffenderHeaderService, deps: [{ token: SMART_DATA_SERVICE_URL }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
248
+ /** @nocollapse */ SmartOffenderHeaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartOffenderHeaderService });
249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartOffenderHeaderService, decorators: [{
250
+ type: Injectable
251
+ }], ctorParameters: function () {
252
+ return [{ type: undefined, decorators: [{
253
+ type: Inject,
254
+ args: [SMART_DATA_SERVICE_URL]
255
+ }] }, { type: i1.HttpClient }];
245
256
  } });
246
257
 
247
- class SmartOffenderHeaderComponent {
248
- // public isAuthenticated: boolean;
249
- constructor(xdmService, authnService, smartOffenderHeaderService, router) {
250
- this.xdmService = xdmService;
251
- this.authnService = authnService;
252
- this.smartOffenderHeaderService = smartOffenderHeaderService;
253
- this.router = router;
254
- this.selectedOffenderControl$ = new UntypedFormControl();
255
- }
256
- ngOnInit() {
257
- // this.isAuthenticated = this.authnService.getAccount() ? true : false;
258
- this.xdmService.getLoginStaff().then((loginStaff) => {
259
- this.loginStaff = loginStaff ? loginStaff : null;
260
- });
261
- this.xdmService.getSelectedOffender().then((selectedOffender) => {
262
- this.selectedOffender =
263
- selectedOffender && selectedOffender.offenderId
264
- ? selectedOffender
265
- : null;
266
- });
267
- this.subscription = this.xdmService
268
- .getOffenderUpdate()
269
- .subscribe((selectedOffender) => {
270
- this.selectedOffender = selectedOffender;
271
- this.setSelectedOffenderControl();
272
- });
273
- this.xdmService.getOffenderQuery().then((offenderQuery) => {
274
- if (offenderQuery) {
275
- this.offenderQueryList = offenderQuery.offenders;
276
- this.setSelectedOffenderControl();
277
- }
278
- });
279
- this.offenderQuerySubscription = this.xdmService
280
- .getOffenderQueryUpdate()
281
- .subscribe((offenderList) => {
282
- if (offenderList && offenderList.offenders) {
283
- this.offenderQueryList = [...offenderList.offenders];
284
- }
285
- });
286
- this.selectedOffenderControl$.valueChanges.subscribe((o) => this.onOffenderSelected(o));
287
- this.router.routeReuseStrategy.shouldReuseRoute = () => {
288
- return false;
289
- };
290
- }
291
- get isAuthenticated() {
292
- return this.authnService.instance.getAllAccounts().length > 0;
293
- }
294
- ngOnDestroy() {
295
- this.subscription.unsubscribe();
296
- }
297
- onOffenderSelected(offender) {
298
- if (offender) {
299
- // const o = offender.offenderName.split(',');
300
- // if (o.length === 2) {
301
- // const offenderName = `${o[1]} ${o[0]}`;
302
- // this.selectedOffender = {
303
- // offenderId: offender.offenderId,
304
- // name: offenderName,
305
- // pdId: offender.pdId,
306
- // birthDate: offender.birthDate,
307
- // gender: offender.genderCode,
308
- // assignmentStaffRelationId: '',
309
- // intakeFlag: this.loginStaff
310
- // ? this.hasIntakeRole(this.loginStaff.roles)
311
- // : false,
312
- // } as SelectedOffender;
313
- this.selectedOffender = offender;
314
- this.xdmService.setSelectedOffender(this.selectedOffender);
315
- this.reloadCurrentRoute();
316
- }
317
- }
318
- setSelectedOffenderControl() {
319
- if (this.selectedOffender &&
320
- this.offenderQueryList &&
321
- this.offenderQueryList.length > 0) {
322
- const o = this.offenderQueryList.find((x) => x.offenderId === this.selectedOffender.offenderId);
323
- if (o) {
324
- this.selectedOffenderControl$.setValue(o, { emitEvent: false });
325
- }
326
- if (!o && this.offenderQueryList.length > 0) {
327
- this.selectedOffenderControl$.setValue(this.offenderQueryList[0], {
328
- emitEvent: false,
329
- });
330
- }
331
- }
332
- }
333
- reloadCurrentRoute() {
334
- try {
335
- const urlTree = this.router.parseUrl(this.router.url);
336
- if (urlTree &&
337
- urlTree.root &&
338
- urlTree.root.segments &&
339
- urlTree.root.segments.length > 1) {
340
- this.router.navigate([urlTree.root.segments[0].path]);
341
- }
342
- else if (urlTree &&
343
- urlTree.root &&
344
- urlTree.root.children &&
345
- urlTree.root.children.primary &&
346
- urlTree.root.children.primary.segments &&
347
- urlTree.root.children.primary.segments.length > 1) {
348
- this.router.navigate([urlTree.root.children.primary.segments[0].path]);
349
- }
350
- else {
351
- this.router.navigate([this.router.url]);
352
- }
353
- }
354
- catch (_a) {
355
- this.router.navigateByUrl('/');
356
- }
357
- }
358
- hasIntakeRole(roles) {
359
- if (roles && roles.length > 0) {
360
- return roles.findIndex(this.isIntakeRole) > -1;
361
- }
362
- return false;
363
- }
364
- isIntakeRole(role) {
365
- switch (role.roleId) {
366
- case 'OPA':
367
- case 'OPS':
368
- case 'SOPS':
369
- return true;
370
- default:
371
- return false;
372
- }
373
- }
374
- }
375
- /** @nocollapse */ SmartOffenderHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartOffenderHeaderComponent, deps: [{ token: XdmService }, { token: i2.MsalService }, { token: SmartOffenderHeaderService }, { token: i2$1.Router }], target: i0.ɵɵFactoryTarget.Component });
376
- /** @nocollapse */ SmartOffenderHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SmartOffenderHeaderComponent, selector: "app-smart-offender-header", ngImport: i0, template: "<div\r\n class=\"offender-header-container\"\r\n *ngIf=\"selectedOffender && isAuthenticated\">\r\n <div class=\"offender-header-name-item\">\r\n <mat-form-field appearance=\"standard\" class=\"switch-offender\">\r\n <mat-label>Switch Offender</mat-label>\r\n <mat-select [formControl]=\"selectedOffenderControl$\">\r\n <mat-option\r\n *ngFor=\"let offender of offenderQueryList\"\r\n [value]=\"offender\">\r\n {{ offender?.name}} ({{offender?.offenderId}})\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <div class=\"offender-header-id-item\">\r\n <span class=\"item-label\">PDID:</span> {{ selectedOffender.pdId }}\r\n </div>\r\n <div class=\"offender-header-id-item\">\r\n <span class=\"item-label\">CSOSA ID:</span>\r\n {{ selectedOffender.offenderId }}\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".offender-header-container{display:grid;grid-template-columns:2fr 1fr;grid-column-gap:20px;width:100%;margin:4px;background-color:#eae9e9;font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:500;padding-top:8px;justify-items:end}.offender-header-name-item{width:50%}.offender-header-id-item{text-align:left;display:grid;grid-template-columns:80px 80px;margin-top:8px}.switch-offender{width:100%!important}@media only screen and (max-width: 740px){.offender-header-container{display:grid;grid-template-rows:1fr 1fr;grid-template-columns:1fr;align-items:center;background-color:#eae9e9;font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:500;height:100%;margin:4px;padding-left:16px;justify-items:start}.offender-header-name-item{text-align:left}}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i8$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
377
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartOffenderHeaderComponent, decorators: [{
378
- type: Component,
379
- args: [{ selector: 'app-smart-offender-header', template: "<div\r\n class=\"offender-header-container\"\r\n *ngIf=\"selectedOffender && isAuthenticated\">\r\n <div class=\"offender-header-name-item\">\r\n <mat-form-field appearance=\"standard\" class=\"switch-offender\">\r\n <mat-label>Switch Offender</mat-label>\r\n <mat-select [formControl]=\"selectedOffenderControl$\">\r\n <mat-option\r\n *ngFor=\"let offender of offenderQueryList\"\r\n [value]=\"offender\">\r\n {{ offender?.name}} ({{offender?.offenderId}})\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <div class=\"offender-header-id-item\">\r\n <span class=\"item-label\">PDID:</span> {{ selectedOffender.pdId }}\r\n </div>\r\n <div class=\"offender-header-id-item\">\r\n <span class=\"item-label\">CSOSA ID:</span>\r\n {{ selectedOffender.offenderId }}\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".offender-header-container{display:grid;grid-template-columns:2fr 1fr;grid-column-gap:20px;width:100%;margin:4px;background-color:#eae9e9;font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:500;padding-top:8px;justify-items:end}.offender-header-name-item{width:50%}.offender-header-id-item{text-align:left;display:grid;grid-template-columns:80px 80px;margin-top:8px}.switch-offender{width:100%!important}@media only screen and (max-width: 740px){.offender-header-container{display:grid;grid-template-rows:1fr 1fr;grid-template-columns:1fr;align-items:center;background-color:#eae9e9;font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:500;height:100%;margin:4px;padding-left:16px;justify-items:start}.offender-header-name-item{text-align:left}}\n"] }]
258
+ class SmartOffenderHeaderComponent {
259
+ // public isAuthenticated: boolean;
260
+ constructor(xdmService, authnService, smartOffenderHeaderService, router) {
261
+ this.xdmService = xdmService;
262
+ this.authnService = authnService;
263
+ this.smartOffenderHeaderService = smartOffenderHeaderService;
264
+ this.router = router;
265
+ this.selectedOffenderControl$ = new UntypedFormControl();
266
+ }
267
+ ngOnInit() {
268
+ // this.isAuthenticated = this.authnService.getAccount() ? true : false;
269
+ this.xdmService.getLoginStaff().then((loginStaff) => {
270
+ this.loginStaff = loginStaff ? loginStaff : null;
271
+ });
272
+ this.xdmService.getSelectedOffender().then((selectedOffender) => {
273
+ this.selectedOffender =
274
+ selectedOffender && selectedOffender.offenderId
275
+ ? selectedOffender
276
+ : null;
277
+ });
278
+ this.subscription = this.xdmService
279
+ .getOffenderUpdate()
280
+ .subscribe((selectedOffender) => {
281
+ this.selectedOffender = selectedOffender;
282
+ this.setSelectedOffenderControl();
283
+ });
284
+ this.xdmService.getOffenderQuery().then((offenderQuery) => {
285
+ if (offenderQuery) {
286
+ this.offenderQueryList = offenderQuery.offenders;
287
+ this.setSelectedOffenderControl();
288
+ }
289
+ });
290
+ this.offenderQuerySubscription = this.xdmService
291
+ .getOffenderQueryUpdate()
292
+ .subscribe((offenderList) => {
293
+ if (offenderList && offenderList.offenders) {
294
+ this.offenderQueryList = [...offenderList.offenders];
295
+ }
296
+ });
297
+ this.selectedOffenderControl$.valueChanges.subscribe((o) => this.onOffenderSelected(o));
298
+ this.router.routeReuseStrategy.shouldReuseRoute = () => {
299
+ return false;
300
+ };
301
+ }
302
+ get isAuthenticated() {
303
+ return this.authnService.instance.getAllAccounts().length > 0;
304
+ }
305
+ ngOnDestroy() {
306
+ this.subscription.unsubscribe();
307
+ }
308
+ onOffenderSelected(offender) {
309
+ if (offender) {
310
+ // const o = offender.offenderName.split(',');
311
+ // if (o.length === 2) {
312
+ // const offenderName = `${o[1]} ${o[0]}`;
313
+ // this.selectedOffender = {
314
+ // offenderId: offender.offenderId,
315
+ // name: offenderName,
316
+ // pdId: offender.pdId,
317
+ // birthDate: offender.birthDate,
318
+ // gender: offender.genderCode,
319
+ // assignmentStaffRelationId: '',
320
+ // intakeFlag: this.loginStaff
321
+ // ? this.hasIntakeRole(this.loginStaff.roles)
322
+ // : false,
323
+ // } as SelectedOffender;
324
+ this.selectedOffender = offender;
325
+ this.xdmService.setSelectedOffender(this.selectedOffender);
326
+ this.reloadCurrentRoute();
327
+ }
328
+ }
329
+ setSelectedOffenderControl() {
330
+ if (this.selectedOffender &&
331
+ this.offenderQueryList &&
332
+ this.offenderQueryList.length > 0) {
333
+ const o = this.offenderQueryList.find((x) => x.offenderId === this.selectedOffender.offenderId);
334
+ if (o) {
335
+ this.selectedOffenderControl$.setValue(o, { emitEvent: false });
336
+ }
337
+ if (!o && this.offenderQueryList.length > 0) {
338
+ this.selectedOffenderControl$.setValue(this.offenderQueryList[0], {
339
+ emitEvent: false,
340
+ });
341
+ }
342
+ }
343
+ }
344
+ reloadCurrentRoute() {
345
+ try {
346
+ const urlTree = this.router.parseUrl(this.router.url);
347
+ if (urlTree &&
348
+ urlTree.root &&
349
+ urlTree.root.segments &&
350
+ urlTree.root.segments.length > 1) {
351
+ this.router.navigate([urlTree.root.segments[0].path]);
352
+ }
353
+ else if (urlTree &&
354
+ urlTree.root &&
355
+ urlTree.root.children &&
356
+ urlTree.root.children.primary &&
357
+ urlTree.root.children.primary.segments &&
358
+ urlTree.root.children.primary.segments.length > 1) {
359
+ this.router.navigate([urlTree.root.children.primary.segments[0].path]);
360
+ }
361
+ else {
362
+ this.router.navigate([this.router.url]);
363
+ }
364
+ }
365
+ catch (_a) {
366
+ this.router.navigateByUrl('/');
367
+ }
368
+ }
369
+ hasIntakeRole(roles) {
370
+ if (roles && roles.length > 0) {
371
+ return roles.findIndex(this.isIntakeRole) > -1;
372
+ }
373
+ return false;
374
+ }
375
+ isIntakeRole(role) {
376
+ switch (role.roleId) {
377
+ case 'OPA':
378
+ case 'OPS':
379
+ case 'SOPS':
380
+ return true;
381
+ default:
382
+ return false;
383
+ }
384
+ }
385
+ }
386
+ /** @nocollapse */ SmartOffenderHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartOffenderHeaderComponent, deps: [{ token: XdmService }, { token: i2.MsalService }, { token: SmartOffenderHeaderService }, { token: i2$1.Router }], target: i0.ɵɵFactoryTarget.Component });
387
+ /** @nocollapse */ SmartOffenderHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SmartOffenderHeaderComponent, selector: "app-smart-offender-header", ngImport: i0, template: "<div\n class=\"offender-header-container\"\n *ngIf=\"selectedOffender && isAuthenticated\">\n <div class=\"offender-header-name-item\">\n <mat-form-field appearance=\"standard\" class=\"switch-offender\">\n <mat-label>Switch Offender</mat-label>\n <mat-select [formControl]=\"selectedOffenderControl$\">\n <mat-option\n *ngFor=\"let offender of offenderQueryList\"\n [value]=\"offender\">\n {{ offender?.name}} ({{offender?.offenderId}})\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div>\n <div class=\"offender-header-id-item\">\n <span class=\"item-label\">PDID:</span> {{ selectedOffender.pdId }}\n </div>\n <div class=\"offender-header-id-item\">\n <span class=\"item-label\">CSOSA ID:</span>\n {{ selectedOffender.offenderId }}\n </div>\n </div>\n</div>\n", styles: [".offender-header-container{display:grid;grid-template-columns:2fr 1fr;grid-column-gap:20px;width:100%;margin:4px;background-color:#eae9e9;font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:500;padding-top:8px;justify-items:end}.offender-header-name-item{width:50%}.offender-header-id-item{text-align:left;display:grid;grid-template-columns:80px 80px;margin-top:8px}.switch-offender{width:100%!important}@media only screen and (max-width: 740px){.offender-header-container{display:grid;grid-template-rows:1fr 1fr;grid-template-columns:1fr;align-items:center;background-color:#eae9e9;font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:500;height:100%;margin:4px;padding-left:16px;justify-items:start}.offender-header-name-item{text-align:left}}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i8$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
388
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartOffenderHeaderComponent, decorators: [{
389
+ type: Component,
390
+ args: [{ selector: 'app-smart-offender-header', template: "<div\n class=\"offender-header-container\"\n *ngIf=\"selectedOffender && isAuthenticated\">\n <div class=\"offender-header-name-item\">\n <mat-form-field appearance=\"standard\" class=\"switch-offender\">\n <mat-label>Switch Offender</mat-label>\n <mat-select [formControl]=\"selectedOffenderControl$\">\n <mat-option\n *ngFor=\"let offender of offenderQueryList\"\n [value]=\"offender\">\n {{ offender?.name}} ({{offender?.offenderId}})\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div>\n <div class=\"offender-header-id-item\">\n <span class=\"item-label\">PDID:</span> {{ selectedOffender.pdId }}\n </div>\n <div class=\"offender-header-id-item\">\n <span class=\"item-label\">CSOSA ID:</span>\n {{ selectedOffender.offenderId }}\n </div>\n </div>\n</div>\n", styles: [".offender-header-container{display:grid;grid-template-columns:2fr 1fr;grid-column-gap:20px;width:100%;margin:4px;background-color:#eae9e9;font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:500;padding-top:8px;justify-items:end}.offender-header-name-item{width:50%}.offender-header-id-item{text-align:left;display:grid;grid-template-columns:80px 80px;margin-top:8px}.switch-offender{width:100%!important}@media only screen and (max-width: 740px){.offender-header-container{display:grid;grid-template-rows:1fr 1fr;grid-template-columns:1fr;align-items:center;background-color:#eae9e9;font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:500;height:100%;margin:4px;padding-left:16px;justify-items:start}.offender-header-name-item{text-align:left}}\n"] }]
380
391
  }], ctorParameters: function () { return [{ type: XdmService }, { type: i2.MsalService }, { type: SmartOffenderHeaderService }, { type: i2$1.Router }]; } });
381
392
 
382
- class SmartNavbarService {
383
- constructor(http) {
384
- this.http = http;
385
- }
386
- /*
387
- public getNavbarConfigs(): SmartNavbarConfig[] {
388
- this.configs = [
389
- {appModuleId: 'SMART', name: 'SMART', url: 'http://localhost:4200', offenderSpecific: false, displayOrder: 1 },
390
- {appModuleId: 'OFFENDER', name: 'Offender', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 2 },
391
- {appModuleId: 'SPRVSN', name: 'Supervision', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 3 },
392
- ];
393
-
394
- return this.configs;
395
- }
396
- */
397
- /*
398
- public getNavbarConfigs(serviceApiUrl: string): Observable<SmartNavbarConfig[]> {
399
- return this.http.get<SmartNavbarConfig[]>(serviceApiUrl + '/AppModules');
400
- }
401
- */
402
- getNavbarConfigs(serviceApiUrl) {
403
- const queryString = `
404
- {
405
- findAppModules {
406
- data {
407
- appModuleId
408
- name
409
- url
410
- offenderSpecificFlag
411
- displayOrder
412
- }
413
- }
414
- }`;
415
- /*
416
- const httpHeaders = new HttpHeaders({
417
- 'Content-Type': 'application/json',
418
- 'Cache-Control': 'no-cache'
419
- });
420
- const options = {
421
- headers: httpHeaders
422
- };
423
- */
424
- return this.http
425
- .post(serviceApiUrl, { query: queryString })
426
- .pipe(map(({ data }) => {
427
- if (isDevMode()) {
428
- console.log(data);
429
- }
430
- return data.findAppModules.data;
431
- }));
432
- }
433
- }
434
- /** @nocollapse */ SmartNavbarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartNavbarService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
435
- /** @nocollapse */ SmartNavbarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartNavbarService });
436
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartNavbarService, decorators: [{
437
- type: Injectable
393
+ class SmartNavbarService {
394
+ constructor(http) {
395
+ this.http = http;
396
+ }
397
+ /*
398
+ public getNavbarConfigs(): SmartNavbarConfig[] {
399
+ this.configs = [
400
+ {appModuleId: 'SMART', name: 'SMART', url: 'http://localhost:4200', offenderSpecific: false, displayOrder: 1 },
401
+ {appModuleId: 'OFFENDER', name: 'Offender', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 2 },
402
+ {appModuleId: 'SPRVSN', name: 'Supervision', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 3 },
403
+ ];
404
+
405
+ return this.configs;
406
+ }
407
+ */
408
+ /*
409
+ public getNavbarConfigs(serviceApiUrl: string): Observable<SmartNavbarConfig[]> {
410
+ return this.http.get<SmartNavbarConfig[]>(serviceApiUrl + '/AppModules');
411
+ }
412
+ */
413
+ getNavbarConfigs(serviceApiUrl) {
414
+ const queryString = `
415
+ {
416
+ findAppModules {
417
+ data {
418
+ appModuleId
419
+ name
420
+ url
421
+ offenderSpecificFlag
422
+ displayOrder
423
+ }
424
+ }
425
+ }`;
426
+ /*
427
+ const httpHeaders = new HttpHeaders({
428
+ 'Content-Type': 'application/json',
429
+ 'Cache-Control': 'no-cache'
430
+ });
431
+ const options = {
432
+ headers: httpHeaders
433
+ };
434
+ */
435
+ return this.http
436
+ .post(serviceApiUrl, { query: queryString })
437
+ .pipe(map(({ data }) => {
438
+ if (isDevMode()) {
439
+ console.log(data);
440
+ }
441
+ return data.findAppModules.data;
442
+ }));
443
+ }
444
+ }
445
+ /** @nocollapse */ SmartNavbarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartNavbarService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
446
+ /** @nocollapse */ SmartNavbarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartNavbarService });
447
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartNavbarService, decorators: [{
448
+ type: Injectable
438
449
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
439
450
 
440
- class SmartNavbarComponent {
441
- constructor(navbarConfigService, xdmService,
442
- // private zone: NgZone,
443
- authnService) {
444
- this.navbarConfigService = navbarConfigService;
445
- this.xdmService = xdmService;
446
- this.authnService = authnService;
447
- this.appModuleId = 'SMART';
448
- }
449
- ngOnChanges() {
450
- /*
451
- console.log(this.selectedTab);
452
- setTimeout(() => {
453
- this.tabGroup.selectedIndex = this.selectedTab;
454
- }, 1000);
455
- */
456
- }
457
- ngOnInit() {
458
- this.xdmService.getSelectedOffender().then((selectedOffender) => {
459
- this.selectedOffender =
460
- selectedOffender && selectedOffender.offenderId
461
- ? selectedOffender
462
- : null;
463
- });
464
- this.xdmService.getLoginStaff().then((loginStaff) => {
465
- // this.zone.run(() => {
466
- this.loginStaff = loginStaff ? loginStaff : null;
467
- // });
468
- });
469
- this.offenderSubscription = this.xdmService
470
- .getOffenderUpdate()
471
- .subscribe((selectedOffender) => {
472
- // this.zone.run(() => {
473
- this.selectedOffender = selectedOffender;
474
- // });
475
- });
476
- this.staffSubscription = this.xdmService
477
- .getStaffUpdate()
478
- .subscribe((loginStaff) => {
479
- // this.zone.run(() => {
480
- this.loginStaff = loginStaff;
481
- // });
482
- });
483
- this.navbarConfigService
484
- .getNavbarConfigs(this.serviceApiUrl)
485
- .subscribe((configs) => {
486
- this.navbarConfigs = configs.sort((a, b) => {
487
- if (a.displayOrder < b.displayOrder) {
488
- return -1;
489
- }
490
- else if (a.displayOrder > b.displayOrder) {
491
- return 1;
492
- }
493
- return 0;
494
- });
495
- });
496
- // this.isAuthenticated = this.authnService.getAccount() ? true : false;
497
- }
498
- ngOnDestroy() {
499
- this.offenderSubscription.unsubscribe();
500
- this.staffSubscription.unsubscribe();
501
- }
502
- logout() {
503
- this.xdmService.clearAll();
504
- this.authnService.logout();
505
- }
506
- get isAuthenticated() {
507
- return this.authnService.instance.getAllAccounts().length > 0;
508
- }
509
- getAppModuleUrl(config) {
510
- return config && this.selectedOffender && config.appModuleId === 'PPMAS'
511
- // ? `${config.url}?skipAppMetadata=true&OffenderId=${this.selectedOffender.offenderId}`
512
- ? `${config.url}&OffenderId=${this.selectedOffender.offenderId}`
513
- : config.url;
514
- }
515
- hasAppModulePermission(appModuleId) {
516
- if (this.loginStaff &&
517
- this.loginStaff.permissions &&
518
- this.loginStaff.permissions.length > 0) {
519
- return (this.loginStaff.permissions.findIndex((p) => p.appModuleId === appModuleId) > -1);
520
- }
521
- return false;
522
- }
523
- get hasExternalUserRole() {
524
- if (this.loginStaff &&
525
- this.loginStaff.roles &&
526
- this.loginStaff.roles.length > 0) {
527
- return this.loginStaff.roles.findIndex(this.isExternalRole) > -1;
528
- }
529
- return false;
530
- }
531
- checkDVIPPermission(config) {
532
- return ((config.appModuleId !== 'DVIP') || (config.appModuleId === "DVIP" && this.hasDVIPRole));
533
- }
534
- get hasDVIPRole() {
535
- if (this.loginStaff &&
536
- this.loginStaff.roles &&
537
- this.loginStaff.roles.length > 0) {
538
- return this.loginStaff.roles.findIndex(this.isDVIPRole) > -1;
539
- }
540
- return false;
541
- }
542
- isDVIPRole(role) {
543
- if (role.roleId == 'TSD' || role.roleId == 'TAD' || role.roleId == 'STSD' || role.roleId == 'BC') {
544
- return true;
545
- }
546
- return false;
547
- }
548
- checkVictimPermission(config) {
549
- return ((config.appModuleId !== 'VICTIM') || (config.appModuleId === "VICTIM" && this.hasVictimRole));
550
- }
551
- get hasVictimRole() {
552
- if (this.loginStaff &&
553
- this.loginStaff.roles &&
554
- this.loginStaff.roles.length > 0) {
555
- return this.loginStaff.roles.findIndex(this.isVictimRole) > -1;
556
- }
557
- return false;
558
- }
559
- isVictimRole(role) {
560
- if (role.roleId == 'BC' || role.roleId == 'VSP') {
561
- return true;
562
- }
563
- return false;
564
- }
565
- isExternalRole(role) {
566
- switch (role.roleId) {
567
- case 'EUDTL':
568
- case 'EUDUSM':
569
- case 'EUJDG':
570
- case 'EUMPD':
571
- case 'EUSOTV':
572
- case 'EUUSA2':
573
- case 'EUUSAO':
574
- case 'EUUSPC':
575
- return true;
576
- default:
577
- return false;
578
- }
579
- }
580
- }
581
- /** @nocollapse */ SmartNavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartNavbarComponent, deps: [{ token: SmartNavbarService }, { token: XdmService }, { token: i2.MsalService }], target: i0.ɵɵFactoryTarget.Component });
582
- /** @nocollapse */ SmartNavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SmartNavbarComponent, selector: "app-smart-navbar", inputs: { serviceApiUrl: "serviceApiUrl", appModuleId: "appModuleId" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabs"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\r\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\r\n <i class=\"material-icons\">menu</i>\r\n</a>\r\n\r\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\r\n <a class=\"smart-navbar-toggle close\" href=\"#\">\r\n <i class=\"material-icons\">close</i>\r\n </a>\r\n\r\n <span *ngFor=\"let config of navbarConfigs\">\r\n <a mat-button class=\"smart-navbar-item\" \r\n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\r\n </span>\r\n\r\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\r\n <mat-menu #menuTheme=\"matMenu\">\r\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\r\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\r\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\r\n </mat-menu>\r\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\r\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item>Profile</button>\r\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\r\n </mat-menu>\r\n</nav>\r\n-->\r\n\r\n<!-- <nav mat-tab-nav-bar>\r\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\r\n</nav> -->\r\n\r\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\r\n <ng-container *ngFor=\"let config of navbarConfigs\">\r\n <mat-tab\r\n *ngIf=\"\r\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\r\n (!hasExternalUserRole && \r\n (config.offenderSpecificFlag === false || selectedOffender))) &&\r\n checkVictimPermission(config) &&\r\n isAuthenticated &&\r\n loginStaff\"\r\n label=\"config.name\">\r\n <ng-template mat-tab-label>\r\n <a\r\n mat-flat-button\r\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\r\n [href]=\"getAppModuleUrl(config)\"\r\n >{{ config.name }}</a>\r\n </ng-template>\r\n </mat-tab>\r\n </ng-container>\r\n</mat-tab-group>\r\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i6$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i6$1.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i6$1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }], encapsulation: i0.ViewEncapsulation.None });
583
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartNavbarComponent, decorators: [{
584
- type: Component,
585
- args: [{ selector: 'app-smart-navbar', encapsulation: ViewEncapsulation.None, template: "<!--\r\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\r\n <i class=\"material-icons\">menu</i>\r\n</a>\r\n\r\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\r\n <a class=\"smart-navbar-toggle close\" href=\"#\">\r\n <i class=\"material-icons\">close</i>\r\n </a>\r\n\r\n <span *ngFor=\"let config of navbarConfigs\">\r\n <a mat-button class=\"smart-navbar-item\" \r\n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\r\n </span>\r\n\r\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\r\n <mat-menu #menuTheme=\"matMenu\">\r\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\r\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\r\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\r\n </mat-menu>\r\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\r\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item>Profile</button>\r\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\r\n </mat-menu>\r\n</nav>\r\n-->\r\n\r\n<!-- <nav mat-tab-nav-bar>\r\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\r\n</nav> -->\r\n\r\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\r\n <ng-container *ngFor=\"let config of navbarConfigs\">\r\n <mat-tab\r\n *ngIf=\"\r\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\r\n (!hasExternalUserRole && \r\n (config.offenderSpecificFlag === false || selectedOffender))) &&\r\n checkVictimPermission(config) &&\r\n isAuthenticated &&\r\n loginStaff\"\r\n label=\"config.name\">\r\n <ng-template mat-tab-label>\r\n <a\r\n mat-flat-button\r\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\r\n [href]=\"getAppModuleUrl(config)\"\r\n >{{ config.name }}</a>\r\n </ng-template>\r\n </mat-tab>\r\n </ng-container>\r\n</mat-tab-group>\r\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"] }]
586
- }], ctorParameters: function () { return [{ type: SmartNavbarService }, { type: XdmService }, { type: i2.MsalService }]; }, propDecorators: { serviceApiUrl: [{
587
- type: Input
588
- }], appModuleId: [{
589
- type: Input
590
- }], tabGroup: [{
591
- type: ViewChild,
592
- args: ['tabs']
451
+ class SmartNavbarComponent {
452
+ constructor(navbarConfigService, xdmService,
453
+ // private zone: NgZone,
454
+ authnService) {
455
+ this.navbarConfigService = navbarConfigService;
456
+ this.xdmService = xdmService;
457
+ this.authnService = authnService;
458
+ this.appModuleId = 'SMART';
459
+ }
460
+ ngOnChanges() {
461
+ /*
462
+ console.log(this.selectedTab);
463
+ setTimeout(() => {
464
+ this.tabGroup.selectedIndex = this.selectedTab;
465
+ }, 1000);
466
+ */
467
+ }
468
+ ngOnInit() {
469
+ this.xdmService.getSelectedOffender().then((selectedOffender) => {
470
+ this.selectedOffender =
471
+ selectedOffender && selectedOffender.offenderId
472
+ ? selectedOffender
473
+ : null;
474
+ });
475
+ this.xdmService.getLoginStaff().then((loginStaff) => {
476
+ // this.zone.run(() => {
477
+ this.loginStaff = loginStaff ? loginStaff : null;
478
+ // });
479
+ });
480
+ this.offenderSubscription = this.xdmService
481
+ .getOffenderUpdate()
482
+ .subscribe((selectedOffender) => {
483
+ // this.zone.run(() => {
484
+ this.selectedOffender = selectedOffender;
485
+ // });
486
+ });
487
+ this.staffSubscription = this.xdmService
488
+ .getStaffUpdate()
489
+ .subscribe((loginStaff) => {
490
+ // this.zone.run(() => {
491
+ this.loginStaff = loginStaff;
492
+ // });
493
+ });
494
+ this.navbarConfigService
495
+ .getNavbarConfigs(this.serviceApiUrl)
496
+ .subscribe((configs) => {
497
+ this.navbarConfigs = configs.sort((a, b) => {
498
+ if (a.displayOrder < b.displayOrder) {
499
+ return -1;
500
+ }
501
+ else if (a.displayOrder > b.displayOrder) {
502
+ return 1;
503
+ }
504
+ return 0;
505
+ });
506
+ });
507
+ // this.isAuthenticated = this.authnService.getAccount() ? true : false;
508
+ }
509
+ ngOnDestroy() {
510
+ this.offenderSubscription.unsubscribe();
511
+ this.staffSubscription.unsubscribe();
512
+ }
513
+ logout() {
514
+ this.xdmService.clearAll();
515
+ this.authnService.logout();
516
+ }
517
+ get isAuthenticated() {
518
+ return this.authnService.instance.getAllAccounts().length > 0;
519
+ }
520
+ getAppModuleUrl(config) {
521
+ return config && this.selectedOffender && config.appModuleId === 'PPMAS'
522
+ // ? `${config.url}?skipAppMetadata=true&OffenderId=${this.selectedOffender.offenderId}`
523
+ ? `${config.url}&OffenderId=${this.selectedOffender.offenderId}`
524
+ : config.url;
525
+ }
526
+ hasAppModulePermission(appModuleId) {
527
+ if (this.loginStaff &&
528
+ this.loginStaff.permissions &&
529
+ this.loginStaff.permissions.length > 0) {
530
+ return (this.loginStaff.permissions.findIndex((p) => p.appModuleId === appModuleId) > -1);
531
+ }
532
+ return false;
533
+ }
534
+ get hasExternalUserRole() {
535
+ if (this.loginStaff &&
536
+ this.loginStaff.roles &&
537
+ this.loginStaff.roles.length > 0) {
538
+ return this.loginStaff.roles.findIndex(this.isExternalRole) > -1;
539
+ }
540
+ return false;
541
+ }
542
+ checkDVIPPermission(config) {
543
+ return ((config.appModuleId !== 'DVIP') || (config.appModuleId === "DVIP" && this.hasDVIPRole));
544
+ }
545
+ get hasDVIPRole() {
546
+ if (this.loginStaff &&
547
+ this.loginStaff.roles &&
548
+ this.loginStaff.roles.length > 0) {
549
+ return this.loginStaff.roles.findIndex(this.isDVIPRole) > -1;
550
+ }
551
+ return false;
552
+ }
553
+ isDVIPRole(role) {
554
+ if (role.roleId == 'TSD' || role.roleId == 'TAD' || role.roleId == 'STSD' || role.roleId == 'BC') {
555
+ return true;
556
+ }
557
+ return false;
558
+ }
559
+ checkVictimPermission(config) {
560
+ return ((config.appModuleId !== 'VICTIM') || (config.appModuleId === "VICTIM" && this.hasVictimRole));
561
+ }
562
+ get hasVictimRole() {
563
+ if (this.loginStaff &&
564
+ this.loginStaff.roles &&
565
+ this.loginStaff.roles.length > 0) {
566
+ return this.loginStaff.roles.findIndex(this.isVictimRole) > -1;
567
+ }
568
+ return false;
569
+ }
570
+ isVictimRole(role) {
571
+ if (role.roleId == 'BC' || role.roleId == 'VSP') {
572
+ return true;
573
+ }
574
+ return false;
575
+ }
576
+ isExternalRole(role) {
577
+ switch (role.roleId) {
578
+ case 'EUDTL':
579
+ case 'EUDUSM':
580
+ case 'EUJDG':
581
+ case 'EUMPD':
582
+ case 'EUSOTV':
583
+ case 'EUUSA2':
584
+ case 'EUUSAO':
585
+ case 'EUUSPC':
586
+ return true;
587
+ default:
588
+ return false;
589
+ }
590
+ }
591
+ }
592
+ /** @nocollapse */ SmartNavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartNavbarComponent, deps: [{ token: SmartNavbarService }, { token: XdmService }, { token: i2.MsalService }], target: i0.ɵɵFactoryTarget.Component });
593
+ /** @nocollapse */ SmartNavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SmartNavbarComponent, selector: "app-smart-navbar", inputs: { serviceApiUrl: "serviceApiUrl", appModuleId: "appModuleId" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabs"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\n <i class=\"material-icons\">menu</i>\n</a>\n\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\n <a class=\"smart-navbar-toggle close\" href=\"#\">\n <i class=\"material-icons\">close</i>\n </a>\n\n <span *ngFor=\"let config of navbarConfigs\">\n <a mat-button class=\"smart-navbar-item\" \n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\n </span>\n\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\n <mat-menu #menuTheme=\"matMenu\">\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\n </mat-menu>\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item>Profile</button>\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\n </mat-menu>\n</nav>\n-->\n\n<!-- <nav mat-tab-nav-bar>\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\n</nav> -->\n\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\n <ng-container *ngFor=\"let config of navbarConfigs\">\n <mat-tab\n *ngIf=\"\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\n (!hasExternalUserRole && \n (config.offenderSpecificFlag === false || selectedOffender))) &&\n checkVictimPermission(config) &&\n isAuthenticated &&\n loginStaff\"\n label=\"config.name\">\n <ng-template mat-tab-label>\n <a\n mat-flat-button\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\n [href]=\"getAppModuleUrl(config)\"\n >{{ config.name }}</a>\n </ng-template>\n </mat-tab>\n </ng-container>\n</mat-tab-group>\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i6$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i6$1.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i6$1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }], encapsulation: i0.ViewEncapsulation.None });
594
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartNavbarComponent, decorators: [{
595
+ type: Component,
596
+ args: [{ selector: 'app-smart-navbar', encapsulation: ViewEncapsulation.None, template: "<!--\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\n <i class=\"material-icons\">menu</i>\n</a>\n\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\n <a class=\"smart-navbar-toggle close\" href=\"#\">\n <i class=\"material-icons\">close</i>\n </a>\n\n <span *ngFor=\"let config of navbarConfigs\">\n <a mat-button class=\"smart-navbar-item\" \n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\n </span>\n\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\n <mat-menu #menuTheme=\"matMenu\">\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\n </mat-menu>\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item>Profile</button>\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\n </mat-menu>\n</nav>\n-->\n\n<!-- <nav mat-tab-nav-bar>\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\n</nav> -->\n\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\n <ng-container *ngFor=\"let config of navbarConfigs\">\n <mat-tab\n *ngIf=\"\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\n (!hasExternalUserRole && \n (config.offenderSpecificFlag === false || selectedOffender))) &&\n checkVictimPermission(config) &&\n isAuthenticated &&\n loginStaff\"\n label=\"config.name\">\n <ng-template mat-tab-label>\n <a\n mat-flat-button\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\n [href]=\"getAppModuleUrl(config)\"\n >{{ config.name }}</a>\n </ng-template>\n </mat-tab>\n </ng-container>\n</mat-tab-group>\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"] }]
597
+ }], ctorParameters: function () { return [{ type: SmartNavbarService }, { type: XdmService }, { type: i2.MsalService }]; }, propDecorators: { serviceApiUrl: [{
598
+ type: Input
599
+ }], appModuleId: [{
600
+ type: Input
601
+ }], tabGroup: [{
602
+ type: ViewChild,
603
+ args: ['tabs']
593
604
  }] } });
594
605
 
595
- class SmartErrorComponent {
596
- constructor(authnService, route, smartWebPortalUrl) {
597
- this.authnService = authnService;
598
- this.route = route;
599
- this.smartWebPortalUrl = smartWebPortalUrl;
600
- }
601
- ngOnInit() {
602
- this.type = this.route.snapshot.queryParamMap.get('type') || 'staff';
603
- this.message =
604
- this.route.snapshot.queryParamMap.get('message') || 'Error occured.';
605
- }
606
- logout() {
607
- this.authnService.logout();
608
- }
609
- portal() {
610
- window.location.href = this.smartWebPortalUrl;
611
- }
612
- }
613
- /** @nocollapse */ SmartErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartErrorComponent, deps: [{ token: i2.MsalService }, { token: i2$1.ActivatedRoute }, { token: SMART_WEB_PORTAL_URL }], target: i0.ɵɵFactoryTarget.Component });
614
- /** @nocollapse */ SmartErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SmartErrorComponent, selector: "app-smart-error", ngImport: i0, template: "<div>\r\n <h2>\r\n {{ message }}\r\n </h2>\r\n <p>\r\n Please contact help desk if needed.\r\n </p>\r\n <div>\r\n <button (click)=\"logout()\" *ngIf=\"type === 'staff'\">OK</button>\r\n <button (click)=\"portal()\" *ngIf=\"type === 'offender'\">OK</button>\r\n </div>\r\n</div>\r\n", styles: ["div{text-align:center}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
615
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartErrorComponent, decorators: [{
616
- type: Component,
617
- args: [{ selector: 'app-smart-error', template: "<div>\r\n <h2>\r\n {{ message }}\r\n </h2>\r\n <p>\r\n Please contact help desk if needed.\r\n </p>\r\n <div>\r\n <button (click)=\"logout()\" *ngIf=\"type === 'staff'\">OK</button>\r\n <button (click)=\"portal()\" *ngIf=\"type === 'offender'\">OK</button>\r\n </div>\r\n</div>\r\n", styles: ["div{text-align:center}\n"] }]
618
- }], ctorParameters: function () {
619
- return [{ type: i2.MsalService }, { type: i2$1.ActivatedRoute }, { type: undefined, decorators: [{
620
- type: Inject,
621
- args: [SMART_WEB_PORTAL_URL]
622
- }] }];
606
+ class SmartErrorComponent {
607
+ constructor(authnService, route, smartWebPortalUrl) {
608
+ this.authnService = authnService;
609
+ this.route = route;
610
+ this.smartWebPortalUrl = smartWebPortalUrl;
611
+ }
612
+ ngOnInit() {
613
+ this.type = this.route.snapshot.queryParamMap.get('type') || 'staff';
614
+ this.message =
615
+ this.route.snapshot.queryParamMap.get('message') || 'Error occured.';
616
+ }
617
+ logout() {
618
+ this.authnService.logout();
619
+ }
620
+ portal() {
621
+ window.location.href = this.smartWebPortalUrl;
622
+ }
623
+ }
624
+ /** @nocollapse */ SmartErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartErrorComponent, deps: [{ token: i2.MsalService }, { token: i2$1.ActivatedRoute }, { token: SMART_WEB_PORTAL_URL }], target: i0.ɵɵFactoryTarget.Component });
625
+ /** @nocollapse */ SmartErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SmartErrorComponent, selector: "app-smart-error", ngImport: i0, template: "<div>\n <h2>\n {{ message }}\n </h2>\n <p>\n Please contact help desk if needed.\n </p>\n <div>\n <button (click)=\"logout()\" *ngIf=\"type === 'staff'\">OK</button>\n <button (click)=\"portal()\" *ngIf=\"type === 'offender'\">OK</button>\n </div>\n</div>\n", styles: ["div{text-align:center}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
626
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartErrorComponent, decorators: [{
627
+ type: Component,
628
+ args: [{ selector: 'app-smart-error', template: "<div>\n <h2>\n {{ message }}\n </h2>\n <p>\n Please contact help desk if needed.\n </p>\n <div>\n <button (click)=\"logout()\" *ngIf=\"type === 'staff'\">OK</button>\n <button (click)=\"portal()\" *ngIf=\"type === 'offender'\">OK</button>\n </div>\n</div>\n", styles: ["div{text-align:center}\n"] }]
629
+ }], ctorParameters: function () {
630
+ return [{ type: i2.MsalService }, { type: i2$1.ActivatedRoute }, { type: undefined, decorators: [{
631
+ type: Inject,
632
+ args: [SMART_WEB_PORTAL_URL]
633
+ }] }];
623
634
  } });
624
635
 
625
- class SmartStaffOffenderOptionsService {
626
- constructor(http, matSnackBar, serviceApiUrl) {
627
- this.http = http;
628
- this.matSnackBar = matSnackBar;
629
- this.serviceApiUrl = serviceApiUrl;
630
- }
631
- showMessage(message) {
632
- this.matSnackBar.open(message, null, {
633
- duration: 2000,
634
- });
635
- }
636
- convertEmptyToNull(jsonObject) {
637
- if (!jsonObject) {
638
- return;
639
- }
640
- if (jsonObject instanceof Array) {
641
- jsonObject.forEach((obj) => {
642
- this.convertEmptyToNull(obj);
643
- });
644
- }
645
- const keys = Object.keys(jsonObject);
646
- keys.forEach((key) => {
647
- if (typeof jsonObject[key] === 'object') {
648
- this.convertEmptyToNull(jsonObject[key]);
649
- }
650
- else if (typeof jsonObject[key] === 'string' &&
651
- jsonObject[key].trim() === '') {
652
- jsonObject[key] = null;
653
- }
654
- });
655
- }
656
- getGraphQueryData(queryName, queryString) {
657
- return this.http.post(this.serviceApiUrl, { query: queryString }).pipe(map(({ data }) => {
658
- return data[queryName];
659
- }));
660
- }
661
- getOffenderListOptions() {
662
- const queryString = `{findOffenderListOptions(input:{
663
- where:{
664
- deactivatedDate: null
665
- }
666
- }){
667
- data{
668
- offenderListOptionId
669
- name
670
- serviceApiFieldName
671
- }
672
- } }`;
673
- return this.http.post(this.serviceApiUrl, { query: queryString }).pipe(map(({ data }) => {
674
- return data['findOffenderListOptions'];
675
- }));
676
- }
677
- getStaffOffenderListOptions(staffId) {
678
- const queryString = `{findStaffOffenderListOptions(input:{
679
- where:{
680
- staffId: ${staffId}
681
- }
682
- }){
683
- data{
684
- offenderListOptionId
685
- }
686
- } }`;
687
- return this.http.post(this.serviceApiUrl, { query: queryString }).pipe(map(({ data }) => {
688
- return data.findStaffOffenderListOptions.data;
689
- }));
690
- }
691
- saveStaffOffenderListOptionsData(dataToSave) {
692
- //}: Observable<any> {
693
- // this.convertEmptyToNull(dataToSave);
694
- const queryName = 'upsertStaffOffenderListOption';
695
- const query = `mutation {
696
- upsertStaffOffenderListOption(input: ${this.convertToString(dataToSave)}) {
697
- message
698
- }
699
- }`;
700
- return this.http.post(this.serviceApiUrl, { query });
701
- /*.pipe(
702
- map(({ data }) => {
703
- return data[queryName];
704
- }));*/
705
- }
706
- convertToString(obj) {
707
- let result = '';
708
- if (!obj) {
709
- return result;
710
- }
711
- if (obj instanceof Array) {
712
- result += ' [';
713
- obj.forEach((eObj) => {
714
- result += this.convertToString(eObj);
715
- });
716
- result += '],';
717
- }
718
- else {
719
- result += '{';
720
- const keys = Object.keys(obj);
721
- keys.forEach((key) => {
722
- if (typeof obj[key] === 'object') {
723
- result += key + ':' + this.convertToString(obj[key]);
724
- }
725
- else {
726
- if (isNaN(obj[key])) {
727
- result += key + ':"' + obj[key] + '",';
728
- }
729
- else {
730
- result += key + ':' + obj[key] + ',';
731
- }
732
- }
733
- });
734
- result = result.substring(0, result.length - 1);
735
- result += '},';
736
- }
737
- return result;
738
- }
739
- }
740
- /** @nocollapse */ SmartStaffOffenderOptionsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsService, deps: [{ token: i1.HttpClient }, { token: i2$2.MatSnackBar }, { token: SMART_DATA_SERVICE_URL }], target: i0.ɵɵFactoryTarget.Injectable });
741
- /** @nocollapse */ SmartStaffOffenderOptionsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsService });
742
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsService, decorators: [{
743
- type: Injectable
744
- }], ctorParameters: function () {
745
- return [{ type: i1.HttpClient }, { type: i2$2.MatSnackBar }, { type: undefined, decorators: [{
746
- type: Inject,
747
- args: [SMART_DATA_SERVICE_URL]
748
- }] }];
636
+ class SmartStaffOffenderOptionsService {
637
+ constructor(http, matSnackBar, serviceApiUrl) {
638
+ this.http = http;
639
+ this.matSnackBar = matSnackBar;
640
+ this.serviceApiUrl = serviceApiUrl;
641
+ }
642
+ showMessage(message) {
643
+ this.matSnackBar.open(message, null, {
644
+ duration: 2000,
645
+ });
646
+ }
647
+ convertEmptyToNull(jsonObject) {
648
+ if (!jsonObject) {
649
+ return;
650
+ }
651
+ if (jsonObject instanceof Array) {
652
+ jsonObject.forEach((obj) => {
653
+ this.convertEmptyToNull(obj);
654
+ });
655
+ }
656
+ const keys = Object.keys(jsonObject);
657
+ keys.forEach((key) => {
658
+ if (typeof jsonObject[key] === 'object') {
659
+ this.convertEmptyToNull(jsonObject[key]);
660
+ }
661
+ else if (typeof jsonObject[key] === 'string' &&
662
+ jsonObject[key].trim() === '') {
663
+ jsonObject[key] = null;
664
+ }
665
+ });
666
+ }
667
+ getGraphQueryData(queryName, queryString) {
668
+ return this.http.post(this.serviceApiUrl, { query: queryString }).pipe(map(({ data }) => {
669
+ return data[queryName];
670
+ }));
671
+ }
672
+ getOffenderListOptions() {
673
+ const queryString = `{findOffenderListOptions(input:{
674
+ where:{
675
+ deactivatedDate: null
676
+ }
677
+ }){
678
+ data{
679
+ offenderListOptionId
680
+ name
681
+ serviceApiFieldName
682
+ }
683
+ } }`;
684
+ return this.http.post(this.serviceApiUrl, { query: queryString }).pipe(map(({ data }) => {
685
+ return data['findOffenderListOptions'];
686
+ }));
687
+ }
688
+ getStaffOffenderListOptions(staffId) {
689
+ const queryString = `{findStaffOffenderListOptions(input:{
690
+ where:{
691
+ staffId: ${staffId}
692
+ }
693
+ }){
694
+ data{
695
+ offenderListOptionId
696
+ }
697
+ } }`;
698
+ return this.http.post(this.serviceApiUrl, { query: queryString }).pipe(map(({ data }) => {
699
+ return data.findStaffOffenderListOptions.data;
700
+ }));
701
+ }
702
+ saveStaffOffenderListOptionsData(dataToSave) {
703
+ //}: Observable<any> {
704
+ // this.convertEmptyToNull(dataToSave);
705
+ const queryName = 'upsertStaffOffenderListOption';
706
+ const query = `mutation {
707
+ upsertStaffOffenderListOption(input: ${this.convertToString(dataToSave)}) {
708
+ message
709
+ }
710
+ }`;
711
+ return this.http.post(this.serviceApiUrl, { query });
712
+ /*.pipe(
713
+ map(({ data }) => {
714
+ return data[queryName];
715
+ }));*/
716
+ }
717
+ convertToString(obj) {
718
+ let result = '';
719
+ if (!obj) {
720
+ return result;
721
+ }
722
+ if (obj instanceof Array) {
723
+ result += ' [';
724
+ obj.forEach((eObj) => {
725
+ result += this.convertToString(eObj);
726
+ });
727
+ result += '],';
728
+ }
729
+ else {
730
+ result += '{';
731
+ const keys = Object.keys(obj);
732
+ keys.forEach((key) => {
733
+ if (typeof obj[key] === 'object') {
734
+ result += key + ':' + this.convertToString(obj[key]);
735
+ }
736
+ else {
737
+ if (isNaN(obj[key])) {
738
+ result += key + ':"' + obj[key] + '",';
739
+ }
740
+ else {
741
+ result += key + ':' + obj[key] + ',';
742
+ }
743
+ }
744
+ });
745
+ result = result.substring(0, result.length - 1);
746
+ result += '},';
747
+ }
748
+ return result;
749
+ }
750
+ }
751
+ /** @nocollapse */ SmartStaffOffenderOptionsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsService, deps: [{ token: i1.HttpClient }, { token: i2$2.MatSnackBar }, { token: SMART_DATA_SERVICE_URL }], target: i0.ɵɵFactoryTarget.Injectable });
752
+ /** @nocollapse */ SmartStaffOffenderOptionsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsService });
753
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsService, decorators: [{
754
+ type: Injectable
755
+ }], ctorParameters: function () {
756
+ return [{ type: i1.HttpClient }, { type: i2$2.MatSnackBar }, { type: undefined, decorators: [{
757
+ type: Inject,
758
+ args: [SMART_DATA_SERVICE_URL]
759
+ }] }];
749
760
  } });
750
761
 
751
- class SmartStaffOffenderOptionsComponent {
752
- constructor(route, offenderService, xdmService) {
753
- this.route = route;
754
- this.offenderService = offenderService;
755
- this.xdmService = xdmService;
756
- this.offenderListOptions = [];
757
- }
758
- ngOnInit() {
759
- const routData = this.route.snapshot.data;
760
- this.loginStaff = routData.loginStaff;
761
- this.offenderListOptions = routData.selectedOffenderResolverService;
762
- this.frmGroup = this.createForm();
763
- this.offenderService.getStaffOffenderListOptions(this.loginStaff.staffId).subscribe(data => {
764
- this.fillForm(data);
765
- });
766
- }
767
- fillForm(data) {
768
- if (data) {
769
- const offenderListOptionsFg = this.frmGroup.get('offenderListOptions');
770
- data.forEach(element => {
771
- offenderListOptionsFg.get(element.offenderListOptionId).setValue(true);
772
- });
773
- }
774
- }
775
- createForm() {
776
- const offenderListOptionsFg = new UntypedFormGroup({});
777
- this.offenderListOptions.forEach((dt, i) => {
778
- offenderListOptionsFg.addControl(dt.offenderListOptionId, new UntypedFormControl(false));
779
- });
780
- return new UntypedFormGroup({
781
- offenderListOptions: offenderListOptionsFg,
782
- });
783
- }
784
- onSave() {
785
- const data = {
786
- options: [],
787
- staffId: this.loginStaff.staffId,
788
- modifiedBy: this.loginStaff.staffId
789
- };
790
- const offenderListOptionsVal = this.frmGroup.get('offenderListOptions').value;
791
- const keys = Object.keys(offenderListOptionsVal);
792
- keys.forEach(key => {
793
- if (offenderListOptionsVal[key]) {
794
- data.options.push({ 'offenderListOptionId': key });
795
- }
796
- });
797
- this.offenderService.saveStaffOffenderListOptionsData(data).subscribe(rtrDatea => {
798
- if (rtrDatea.message) {
799
- this.offenderService.showMessage(rtrDatea.message);
800
- }
801
- else {
802
- this.offenderService.showMessage('Saved successfully');
803
- this.xdmService.refreshLoginStaffOptions();
804
- }
805
- });
806
- }
807
- }
808
- /** @nocollapse */ SmartStaffOffenderOptionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsComponent, deps: [{ token: i2$1.ActivatedRoute }, { token: SmartStaffOffenderOptionsService }, { token: XdmService }], target: i0.ɵɵFactoryTarget.Component });
809
- /** @nocollapse */ SmartStaffOffenderOptionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SmartStaffOffenderOptionsComponent, selector: "lib-smart-staff-offender-options", ngImport: i0, template: "<form class=\"main-form\" [formGroup]=\"frmGroup\">\r\n <mat-card role=\"group\">\r\n <mat-card-content>\r\n <div formGroupName=\"offenderListOptions\">\r\n <div style=\"float:left;\">\r\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\">\r\n <mat-checkbox *ngIf=\"i%2!=0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\r\n {{offenderListOption.name}}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n <div>\r\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\" >\r\n <mat-checkbox *ngIf=\"i%2==0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\r\n {{offenderListOption.name}}\r\n </mat-checkbox> \r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n <div align=\"center\">\r\n <button mat-raised-button color=\"accent\" (click)=\"onSave()\">Save</button>\r\n </div>\r\n </mat-card>\r\n </form>\r\n ", styles: [""], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6$2.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i6$2.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i7$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i8$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }] });
810
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsComponent, decorators: [{
811
- type: Component,
812
- args: [{ selector: 'lib-smart-staff-offender-options', template: "<form class=\"main-form\" [formGroup]=\"frmGroup\">\r\n <mat-card role=\"group\">\r\n <mat-card-content>\r\n <div formGroupName=\"offenderListOptions\">\r\n <div style=\"float:left;\">\r\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\">\r\n <mat-checkbox *ngIf=\"i%2!=0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\r\n {{offenderListOption.name}}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n <div>\r\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\" >\r\n <mat-checkbox *ngIf=\"i%2==0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\r\n {{offenderListOption.name}}\r\n </mat-checkbox> \r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n <div align=\"center\">\r\n <button mat-raised-button color=\"accent\" (click)=\"onSave()\">Save</button>\r\n </div>\r\n </mat-card>\r\n </form>\r\n " }]
762
+ class SmartStaffOffenderOptionsComponent {
763
+ constructor(route, offenderService, xdmService) {
764
+ this.route = route;
765
+ this.offenderService = offenderService;
766
+ this.xdmService = xdmService;
767
+ this.offenderListOptions = [];
768
+ }
769
+ ngOnInit() {
770
+ const routData = this.route.snapshot.data;
771
+ this.loginStaff = routData.loginStaff;
772
+ this.offenderListOptions = routData.selectedOffenderResolverService;
773
+ this.frmGroup = this.createForm();
774
+ this.offenderService.getStaffOffenderListOptions(this.loginStaff.staffId).subscribe(data => {
775
+ this.fillForm(data);
776
+ });
777
+ }
778
+ fillForm(data) {
779
+ if (data) {
780
+ const offenderListOptionsFg = this.frmGroup.get('offenderListOptions');
781
+ data.forEach(element => {
782
+ offenderListOptionsFg.get(element.offenderListOptionId).setValue(true);
783
+ });
784
+ }
785
+ }
786
+ createForm() {
787
+ const offenderListOptionsFg = new UntypedFormGroup({});
788
+ this.offenderListOptions.forEach((dt, i) => {
789
+ offenderListOptionsFg.addControl(dt.offenderListOptionId, new UntypedFormControl(false));
790
+ });
791
+ return new UntypedFormGroup({
792
+ offenderListOptions: offenderListOptionsFg,
793
+ });
794
+ }
795
+ onSave() {
796
+ const data = {
797
+ options: [],
798
+ staffId: this.loginStaff.staffId,
799
+ modifiedBy: this.loginStaff.staffId
800
+ };
801
+ const offenderListOptionsVal = this.frmGroup.get('offenderListOptions').value;
802
+ const keys = Object.keys(offenderListOptionsVal);
803
+ keys.forEach(key => {
804
+ if (offenderListOptionsVal[key]) {
805
+ data.options.push({ 'offenderListOptionId': key });
806
+ }
807
+ });
808
+ this.offenderService.saveStaffOffenderListOptionsData(data).subscribe(rtrDatea => {
809
+ if (rtrDatea.message) {
810
+ this.offenderService.showMessage(rtrDatea.message);
811
+ }
812
+ else {
813
+ this.offenderService.showMessage('Saved successfully');
814
+ this.xdmService.refreshLoginStaffOptions();
815
+ }
816
+ });
817
+ }
818
+ }
819
+ /** @nocollapse */ SmartStaffOffenderOptionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsComponent, deps: [{ token: i2$1.ActivatedRoute }, { token: SmartStaffOffenderOptionsService }, { token: XdmService }], target: i0.ɵɵFactoryTarget.Component });
820
+ /** @nocollapse */ SmartStaffOffenderOptionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SmartStaffOffenderOptionsComponent, selector: "lib-smart-staff-offender-options", ngImport: i0, template: "<form class=\"main-form\" [formGroup]=\"frmGroup\">\n <mat-card role=\"group\">\n <mat-card-content>\n <div formGroupName=\"offenderListOptions\">\n <div style=\"float:left;\">\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\">\n <mat-checkbox *ngIf=\"i%2!=0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\n {{offenderListOption.name}}\n </mat-checkbox>\n </div>\n </div>\n <div>\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\" >\n <mat-checkbox *ngIf=\"i%2==0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\n {{offenderListOption.name}}\n </mat-checkbox> \n </div>\n </div>\n </div>\n </mat-card-content>\n <div align=\"center\">\n <button mat-raised-button color=\"accent\" (click)=\"onSave()\">Save</button>\n </div>\n </mat-card>\n </form>\n ", styles: [""], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6$2.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i6$2.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i7$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i8$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }] });
821
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsComponent, decorators: [{
822
+ type: Component,
823
+ args: [{ selector: 'lib-smart-staff-offender-options', template: "<form class=\"main-form\" [formGroup]=\"frmGroup\">\n <mat-card role=\"group\">\n <mat-card-content>\n <div formGroupName=\"offenderListOptions\">\n <div style=\"float:left;\">\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\">\n <mat-checkbox *ngIf=\"i%2!=0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\n {{offenderListOption.name}}\n </mat-checkbox>\n </div>\n </div>\n <div>\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\" >\n <mat-checkbox *ngIf=\"i%2==0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\n {{offenderListOption.name}}\n </mat-checkbox> \n </div>\n </div>\n </div>\n </mat-card-content>\n <div align=\"center\">\n <button mat-raised-button color=\"accent\" (click)=\"onSave()\">Save</button>\n </div>\n </mat-card>\n </form>\n " }]
813
824
  }], ctorParameters: function () { return [{ type: i2$1.ActivatedRoute }, { type: SmartStaffOffenderOptionsService }, { type: XdmService }]; } });
814
825
 
815
- class SmartAuthService {
816
- constructor(http, authnService, xdmService, smartDataServiceUrl, smartDomainFormatUrl) {
817
- this.http = http;
818
- this.authnService = authnService;
819
- this.xdmService = xdmService;
820
- this.smartDataServiceUrl = smartDataServiceUrl;
821
- this.smartDomainFormatUrl = smartDomainFormatUrl;
822
- }
823
- getLoginStaff() {
824
- if (isDevMode) {
825
- console.log('SmartAuthService - getLoginStaff()');
826
- }
827
- if (!isDevMode && this.loginStaff) {
828
- if (this.loginStaff.staffId) {
829
- if (isDevMode) {
830
- console.log('##### getLoginStaff(): get internal instance in service', this.loginStaff);
831
- }
832
- return of(this.loginStaff);
833
- }
834
- else if (this.loginStaff.userName) {
835
- if (isDevMode) {
836
- console.log('##### getLoginStaff(): get using preset user name', this.loginStaff);
837
- }
838
- return this.getStaff(this.loginStaff.userName);
839
- }
840
- }
841
- return from(this.xdmService.getLoginStaff()).pipe(switchMap((storedResult) => {
842
- if (storedResult && storedResult.staffId) {
843
- if (isDevMode) {
844
- console.log('##### getLoginStaff(): get from session.', storedResult);
845
- }
846
- this.loginStaff = storedResult;
847
- return of(storedResult);
848
- }
849
- else if (storedResult && storedResult.userName) {
850
- if (isDevMode) {
851
- console.log('##### getLoginStaff(): get using preset user name', this.loginStaff);
852
- }
853
- return this.getStaff(storedResult.userName);
854
- }
855
- else {
856
- const userName = this.userName;
857
- const staffName = userName.substring(0, userName.indexOf('@'));
858
- if (isDevMode) {
859
- console.log('##### loginLoginStaff(): get using login staff name ', staffName);
860
- }
861
- return this.getStaff(staffName);
862
- }
863
- }));
864
- }
865
- get userName() {
866
- if (this.authnService.instance.getAllAccounts().length > 0) {
867
- const account = this.authnService.instance.getAllAccounts()[0];
868
- return account.username;
869
- }
870
- return '';
871
- }
872
- getTeamUrl(app, afterHash) {
873
- return this.smartDomainFormatUrl.replace('${APP}', app) + afterHash;
874
- }
875
- isSameHost(url, app) {
876
- return this.smartDomainFormatUrl.replace('${APP}', app) === url;
877
- }
878
- redirectToTeam(loginStaff) {
879
- if (loginStaff.roles.findIndex((role) => role.roleId === 'EUUSPC') > -1) {
880
- if (!this.isSameHost(window.location.origin, 'investigation')) {
881
- window.location.href = this.getTeamUrl('investigation', '/assignment');
882
- }
883
- }
884
- else if (loginStaff.roles.findIndex((role) => role.roleId.substring(0, 3) === 'RSC') > -1) {
885
- if (!this.isSameHost(window.location.origin, 'rsc')) {
886
- window.location.href = this.getTeamUrl('rsc', '/offender-list');
887
- }
888
- }
889
- }
890
- setSelectedOffender(selectedOffender) {
891
- return __awaiter(this, void 0, void 0, function* () {
892
- if (!this.loginStaff) {
893
- return;
894
- }
895
- if (selectedOffender) {
896
- // if (!selectedOffender.assignmentStaffRelationId) {
897
- const relation = yield lastValueFrom(this.getStaffOffenderRelation(this.loginStaff.staffId, selectedOffender.offenderId));
898
- if (relation) {
899
- selectedOffender.assignmentStaffRelationId = relation;
900
- }
901
- else {
902
- selectedOffender.assignmentStaffRelationId = 'NOASSIGN';
903
- }
904
- // }
905
- }
906
- this.xdmService.setSelectedOffender(selectedOffender);
907
- this.selectedOffender = selectedOffender;
908
- });
909
- }
910
- logout() {
911
- this.xdmService.clearAll();
912
- this.authnService.logout();
913
- }
914
- setPermission(appModuleId, route) {
915
- return __awaiter(this, void 0, void 0, function* () {
916
- if (!this.loginStaff) {
917
- this.loginStaff = yield this.xdmService.getLoginStaff();
918
- }
919
- const permissions = this.loginStaff.permissions;
920
- const resource = route.url && route.url.length > 0 ? route.url[0].path : '';
921
- if (!this.selectedOffender) {
922
- this.selectedOffender = yield this.xdmService.getSelectedOffender();
923
- }
924
- if (this.selectedOffender) {
925
- // if (!this.selectedOffender.assignmentStaffRelationId) {
926
- const relation = yield this.getStaffOffenderRelation(this.loginStaff.staffId, this.selectedOffender.offenderId).toPromise();
927
- if (relation) {
928
- this.selectedOffender.assignmentStaffRelationId = relation;
929
- }
930
- else {
931
- this.selectedOffender.assignmentStaffRelationId = 'NOASSIGN';
932
- }
933
- this.xdmService.setSelectedOffender(this.selectedOffender);
934
- // }
935
- }
936
- const assignmentStaffRelationId = this.selectedOffender.assignmentStaffRelationId;
937
- const elements = document.querySelectorAll('[class^="sac-"]');
938
- const pattern = /^sac-(\S+)-(\S+)$/i;
939
- Array.from(elements).forEach((element) => {
940
- let hide;
941
- let disable;
942
- element.classList.forEach((c) => {
943
- const results = c.match(pattern);
944
- // console.log(results);
945
- if (results && results.length > 2) {
946
- const roleId = results[1] ? results[1].toUpperCase() : null;
947
- const right = results[2];
948
- // console.log(results[0]);
949
- // console.log(results[1]);
950
- // console.log(results[2]);
951
- const permission = permissions.find(function (p) {
952
- return (p.appModuleId === appModuleId &&
953
- p.resource === resource &&
954
- p.roleId === roleId &&
955
- p.assignmentStaffRelationId === assignmentStaffRelationId);
956
- });
957
- /*
958
- console.log('##### setPermission() resource: ', resource);
959
- console.log('##### setPermission() appModuleId: ', appModuleId);
960
- console.log('##### setPermission() roleId: ', roleId);
961
- console.log(
962
- '##### setPermission() assignment relation: ',
963
- assignmentStaffRelationId,
964
- );
965
- */
966
- console.log('##### Matched permission: ', permission);
967
- if (permission) {
968
- if (right === 'read') {
969
- if (!permission.readFlag) {
970
- if (hide !== false) {
971
- hide = true;
972
- }
973
- }
974
- else {
975
- hide = false;
976
- }
977
- }
978
- else if ((right === 'create' && !permission.createFlag) ||
979
- (right === 'update' && !permission.updateFlag) ||
980
- (right === 'delete' && !permission.deleteFlag) ||
981
- (right === 'assign' && !permission.assignFlag) ||
982
- (right === 'close' && !permission.closeFlag) ||
983
- (right === 'expunge' && !permission.expungeFlag) ||
984
- (right === 'reopen' && !permission.reopenFlag)) {
985
- if (element.nodeName === 'BUTTON') {
986
- if (hide !== false) {
987
- hide = true;
988
- }
989
- }
990
- else {
991
- if (disable !== false) {
992
- disable = true;
993
- }
994
- }
995
- }
996
- else {
997
- if (element.nodeName === 'BUTTON') {
998
- hide = false;
999
- }
1000
- else {
1001
- disable = false;
1002
- }
1003
- }
1004
- }
1005
- else {
1006
- if (right === 'read') {
1007
- if (hide !== false) {
1008
- hide = true;
1009
- }
1010
- }
1011
- else if (element.nodeName === 'BUTTON') {
1012
- if (hide !== false) {
1013
- hide = true;
1014
- }
1015
- }
1016
- else if (disable !== false) {
1017
- disable = true;
1018
- }
1019
- }
1020
- }
1021
- });
1022
- console.log('hide: ', hide);
1023
- console.log('disable: ', disable);
1024
- if (hide === true) {
1025
- this.hideHtmlElement(element);
1026
- }
1027
- else if (disable === true) {
1028
- this.disableHtmlElement(element);
1029
- }
1030
- });
1031
- });
1032
- }
1033
- checkPermission(accessControlConfig) {
1034
- const selData = accessControlConfig.route.data;
1035
- this.loginStaff = selData.loginStaff;
1036
- this.selectedOffender = selData.selectedOffender;
1037
- let routePath = '';
1038
- if (accessControlConfig.route.url &&
1039
- accessControlConfig.route.url.length > 0) {
1040
- routePath = accessControlConfig.route.url[0].path;
1041
- }
1042
- const permissions = this.loginStaff.permissions;
1043
- const resource = routePath;
1044
- const roleId = accessControlConfig.roleId
1045
- ? accessControlConfig.roleId.toUpperCase()
1046
- : null;
1047
- const accessType = accessControlConfig.accessType;
1048
- const assignmentStaffRelationId = (!this.selectedOffender || !this.selectedOffender
1049
- .assignmentStaffRelationId)
1050
- ? 'N/A'
1051
- : this.selectedOffender.assignmentStaffRelationId;
1052
- const permission = permissions.find((p) => {
1053
- return (p.appModuleId === accessControlConfig.appModuleId &&
1054
- p.resource === resource &&
1055
- (!roleId || p.roleId === roleId) &&
1056
- (p.assignmentStaffRelationId === 'N/A' ||
1057
- p.assignmentStaffRelationId === assignmentStaffRelationId));
1058
- });
1059
- if (permission) {
1060
- if (accessType === 'read') {
1061
- if (!permission.readFlag) {
1062
- return false;
1063
- }
1064
- else {
1065
- return true;
1066
- }
1067
- }
1068
- else if ((accessType === 'create' && !permission.createFlag) ||
1069
- (accessType === 'update' && !permission.updateFlag) ||
1070
- (accessType === 'delete' && !permission.deleteFlag) ||
1071
- (accessType === 'assign' && !permission.assignFlag) ||
1072
- (accessType === 'close' && !permission.closeFlag) ||
1073
- (accessType === 'expunge' && !permission.expungeFlag) ||
1074
- (accessType === 'reopen' && !permission.reopenFlag)) {
1075
- return false;
1076
- }
1077
- else {
1078
- return true;
1079
- }
1080
- }
1081
- else {
1082
- if (accessType === 'read') {
1083
- return false;
1084
- }
1085
- }
1086
- return false;
1087
- }
1088
- canAppFeatureActivate(loginStaff, feature, appModuleId = null) {
1089
- // if (!this.isAuthEnable(loginStaff.roles, appModuleId)) {
1090
- // return true;
1091
- // }
1092
- return this.hasAppFeaturePermission(loginStaff.permissions, feature, appModuleId);
1093
- }
1094
- // public isAuthEnable(roles: Role[], appModuleId: string) {
1095
- // if (roles && roles.length > 0) {
1096
- // return roles.map(r => r.roleId).findIndex(this.isExternalRole) > -1 || appModuleId === 'RR';
1097
- // }
1098
- // return false;
1099
- // }
1100
- hasIntakeRole(roles) {
1101
- if (roles && roles.length > 0) {
1102
- return roles.findIndex(this.isIntakeRole) > -1;
1103
- }
1104
- return false;
1105
- }
1106
- hasAppFeaturePermission(permissions, feature, appModuleId) {
1107
- if (permissions && permissions.length > 0) {
1108
- if (appModuleId) {
1109
- return (permissions.findIndex((p) => p.resource === feature && p.appModuleId === appModuleId) > -1);
1110
- }
1111
- else {
1112
- return permissions.findIndex((p) => p.resource === feature) > -1;
1113
- }
1114
- }
1115
- return false;
1116
- }
1117
- isExternalRole(roleId) {
1118
- switch (roleId) {
1119
- case 'EUDTL':
1120
- case 'EUDUSM':
1121
- case 'EUJDG':
1122
- case 'EUMPD':
1123
- case 'EUSOTV':
1124
- case 'EUUSA2':
1125
- case 'EUUSAO':
1126
- case 'EUUSPC':
1127
- return true;
1128
- default:
1129
- return false;
1130
- }
1131
- }
1132
- isIntakeRole(role) {
1133
- switch (role.roleId) {
1134
- case 'OPA':
1135
- case 'OPS':
1136
- case 'SOPS':
1137
- return true;
1138
- default:
1139
- return false;
1140
- }
1141
- }
1142
- disableHtmlElement(element) {
1143
- // console.log(element);
1144
- switch (element.nodeName) {
1145
- case 'A':
1146
- element.setAttribute('style', 'pointer-events: none;cursor: not-allowed;');
1147
- element.setAttribute('tabIndex', '-1');
1148
- break;
1149
- default:
1150
- element.setAttribute('disabled', 'disabled');
1151
- break;
1152
- }
1153
- }
1154
- hideHtmlElement(element) {
1155
- // element.setAttribute('hidden', 'hidden');
1156
- element.setAttribute('style', 'display: none;');
1157
- }
1158
- getStaff(userName) {
1159
- return this.query({
1160
- query: this.findStaffQuery,
1161
- variables: {
1162
- input: {
1163
- where: {
1164
- userName: userName,
1165
- activeFlag: true,
1166
- },
1167
- }
1168
- },
1169
- }).pipe(take(1), map((result) => {
1170
- if (isDevMode) {
1171
- console.log('##### getStaff() from service ', result);
1172
- }
1173
- if (result.findvStaffs.data.length > 0) {
1174
- const data = result.findvStaffs.data[0];
1175
- this.xdmService.setLoginStaff(data);
1176
- this.loginStaff = data;
1177
- return data;
1178
- }
1179
- else {
1180
- return of(null);
1181
- }
1182
- }), catchError((error) => {
1183
- console.log('error ' + error);
1184
- return of(null);
1185
- }));
1186
- }
1187
- query(options) {
1188
- return this.http
1189
- .post(this.smartDataServiceUrl, {
1190
- query: options.query,
1191
- variables: options.variables,
1192
- }, {
1193
- headers: new HttpHeaders({
1194
- 'Content-Type': 'application/json',
1195
- 'No-Auth': 'True',
1196
- }),
1197
- })
1198
- .pipe(map((d) => d.data));
1199
- }
1200
- get findStaffQuery() {
1201
- return `
1202
- query findvStaffs($input: vStaffMultiInput) {
1203
- findvStaffs(input: $input) {
1204
- totalCount
1205
- message
1206
- data {
1207
- staffId
1208
- userName
1209
- lastName
1210
- firstName
1211
- phone
1212
- email
1213
- roles {
1214
- roleId
1215
- role
1216
- }
1217
- permissions {
1218
- roleId
1219
- appModuleId
1220
- resource
1221
- assignmentStaffRelationId
1222
- readFlag
1223
- createFlag
1224
- updateFlag
1225
- deleteFlag
1226
- assignFlag
1227
- reopenFlag
1228
- closeFlag
1229
- expungeFlag
1230
- }
1231
- options {
1232
- offenderListOptionId
1233
- name
1234
- serviceApiFieldName
1235
- selectedFlag
1236
- }
1237
- }
1238
- }
1239
- }
1240
- `;
1241
- }
1242
- getStaffOffenderRelation(staffId, offenderId) {
1243
- const queryString = `
1244
- {
1245
- findvStaffOffenderRelations(input: {where: {staffId: ${staffId}, offenderId: ${offenderId}}}) {
1246
- data {
1247
- assignmentStaffRelationId
1248
- }
1249
- }
1250
- }`;
1251
- return this.http
1252
- .post(this.smartDataServiceUrl, { query: queryString })
1253
- .pipe(take(1), map((result) => {
1254
- if (isDevMode) {
1255
- console.log('##### getStaffOffenderRelation() from service ', result);
1256
- }
1257
- if (result.data.findvStaffOffenderRelations.data.length > 0) {
1258
- const data = result.data.findvStaffOffenderRelations.data[0];
1259
- return data.assignmentStaffRelationId;
1260
- }
1261
- else {
1262
- return null;
1263
- // return throwError('No access right.');
1264
- }
1265
- }), catchError((error) => {
1266
- console.log('error ' + error);
1267
- return null;
1268
- }));
1269
- }
1270
- getRolePermissions(appModuleId, resource) {
1271
- const queryString = `
1272
- query findvRolePermissionPivots{
1273
- findvRolePermissionPivots(input: {where: {appModuleId: ${appModuleId}, resource: ${resource}}}){
1274
- totalCount
1275
- message
1276
- }
1277
- }`;
1278
- return this.http
1279
- .post(this.smartDataServiceUrl, { query: queryString })
1280
- .pipe(take(1), map((result) => {
1281
- if (isDevMode) {
1282
- console.log('##### findvRolePermissionPivots() from service ', result);
1283
- }
1284
- if (result.data.findvRolePermissionPivots.totalCount > 0) {
1285
- return true;
1286
- }
1287
- else {
1288
- return false;
1289
- // return throwError('No access right.');
1290
- }
1291
- }), catchError((error) => {
1292
- console.log('error ' + error);
1293
- return throwError(error);
1294
- }));
1295
- }
1296
- }
1297
- /** @nocollapse */ SmartAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAuthService, deps: [{ token: i1.HttpClient }, { token: i2.MsalService }, { token: XdmService }, { token: SMART_DATA_SERVICE_URL }, { token: SMART_DOMAIN_FORMAT }], target: i0.ɵɵFactoryTarget.Injectable });
1298
- /** @nocollapse */ SmartAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAuthService, providedIn: 'root' });
1299
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAuthService, decorators: [{
1300
- type: Injectable,
1301
- args: [{
1302
- providedIn: 'root',
1303
- }]
1304
- }], ctorParameters: function () {
1305
- return [{ type: i1.HttpClient }, { type: i2.MsalService }, { type: XdmService }, { type: undefined, decorators: [{
1306
- type: Inject,
1307
- args: [SMART_DATA_SERVICE_URL]
1308
- }] }, { type: undefined, decorators: [{
1309
- type: Inject,
1310
- args: [SMART_DOMAIN_FORMAT]
1311
- }] }];
826
+ class SmartAuthService {
827
+ constructor(http, authnService, xdmService, smartDataServiceUrl, smartDomainFormatUrl) {
828
+ this.http = http;
829
+ this.authnService = authnService;
830
+ this.xdmService = xdmService;
831
+ this.smartDataServiceUrl = smartDataServiceUrl;
832
+ this.smartDomainFormatUrl = smartDomainFormatUrl;
833
+ }
834
+ getLoginStaff() {
835
+ if (isDevMode) {
836
+ console.log('SmartAuthService - getLoginStaff()');
837
+ }
838
+ if (!isDevMode && this.loginStaff) {
839
+ if (this.loginStaff.staffId) {
840
+ if (isDevMode) {
841
+ console.log('##### getLoginStaff(): get internal instance in service', this.loginStaff);
842
+ }
843
+ return of(this.loginStaff);
844
+ }
845
+ else if (this.loginStaff.userName) {
846
+ if (isDevMode) {
847
+ console.log('##### getLoginStaff(): get using preset user name', this.loginStaff);
848
+ }
849
+ return this.getStaff(this.loginStaff.userName);
850
+ }
851
+ }
852
+ return from(this.xdmService.getLoginStaff()).pipe(switchMap((storedResult) => {
853
+ if (storedResult && storedResult.staffId) {
854
+ if (isDevMode) {
855
+ console.log('##### getLoginStaff(): get from session.', storedResult);
856
+ }
857
+ this.loginStaff = storedResult;
858
+ return of(storedResult);
859
+ }
860
+ else if (storedResult && storedResult.userName) {
861
+ if (isDevMode) {
862
+ console.log('##### getLoginStaff(): get using preset user name', this.loginStaff);
863
+ }
864
+ return this.getStaff(storedResult.userName);
865
+ }
866
+ else {
867
+ const userName = this.userName;
868
+ const staffName = userName.substring(0, userName.indexOf('@'));
869
+ if (isDevMode) {
870
+ console.log('##### loginLoginStaff(): get using login staff name ', staffName);
871
+ }
872
+ return this.getStaff(staffName);
873
+ }
874
+ }));
875
+ }
876
+ get userName() {
877
+ if (this.authnService.instance.getAllAccounts().length > 0) {
878
+ const account = this.authnService.instance.getAllAccounts()[0];
879
+ return account.username;
880
+ }
881
+ return '';
882
+ }
883
+ getTeamUrl(app, afterHash) {
884
+ return this.smartDomainFormatUrl.replace('${APP}', app) + afterHash;
885
+ }
886
+ isSameHost(url, app) {
887
+ return this.smartDomainFormatUrl.replace('${APP}', app) === url;
888
+ }
889
+ redirectToTeam(loginStaff) {
890
+ if (loginStaff.roles.findIndex((role) => role.roleId === 'EUUSPC') > -1) {
891
+ if (!this.isSameHost(window.location.origin, 'investigation')) {
892
+ window.location.href = this.getTeamUrl('investigation', '/assignment');
893
+ }
894
+ }
895
+ else if (loginStaff.roles.findIndex((role) => role.roleId.substring(0, 3) === 'RSC') > -1) {
896
+ if (!this.isSameHost(window.location.origin, 'rsc')) {
897
+ window.location.href = this.getTeamUrl('rsc', '/offender-list');
898
+ }
899
+ }
900
+ }
901
+ setSelectedOffender(selectedOffender) {
902
+ return __awaiter(this, void 0, void 0, function* () {
903
+ if (!this.loginStaff) {
904
+ return;
905
+ }
906
+ if (selectedOffender) {
907
+ // if (!selectedOffender.assignmentStaffRelationId) {
908
+ const relation = yield lastValueFrom(this.getStaffOffenderRelation(this.loginStaff.staffId, selectedOffender.offenderId));
909
+ if (relation) {
910
+ selectedOffender.assignmentStaffRelationId = relation;
911
+ }
912
+ else {
913
+ selectedOffender.assignmentStaffRelationId = 'NOASSIGN';
914
+ }
915
+ // }
916
+ }
917
+ this.xdmService.setSelectedOffender(selectedOffender);
918
+ this.selectedOffender = selectedOffender;
919
+ });
920
+ }
921
+ logout() {
922
+ this.xdmService.clearAll();
923
+ this.authnService.logout();
924
+ }
925
+ setPermission(appModuleId, route) {
926
+ return __awaiter(this, void 0, void 0, function* () {
927
+ if (!this.loginStaff) {
928
+ this.loginStaff = yield this.xdmService.getLoginStaff();
929
+ }
930
+ const permissions = this.loginStaff.permissions;
931
+ const resource = route.url && route.url.length > 0 ? route.url[0].path : '';
932
+ if (!this.selectedOffender) {
933
+ this.selectedOffender = yield this.xdmService.getSelectedOffender();
934
+ }
935
+ if (this.selectedOffender) {
936
+ // if (!this.selectedOffender.assignmentStaffRelationId) {
937
+ const relation = yield this.getStaffOffenderRelation(this.loginStaff.staffId, this.selectedOffender.offenderId).toPromise();
938
+ if (relation) {
939
+ this.selectedOffender.assignmentStaffRelationId = relation;
940
+ }
941
+ else {
942
+ this.selectedOffender.assignmentStaffRelationId = 'NOASSIGN';
943
+ }
944
+ this.xdmService.setSelectedOffender(this.selectedOffender);
945
+ // }
946
+ }
947
+ const assignmentStaffRelationId = this.selectedOffender.assignmentStaffRelationId;
948
+ const elements = document.querySelectorAll('[class^="sac-"]');
949
+ const pattern = /^sac-(\S+)-(\S+)$/i;
950
+ Array.from(elements).forEach((element) => {
951
+ let hide;
952
+ let disable;
953
+ element.classList.forEach((c) => {
954
+ const results = c.match(pattern);
955
+ // console.log(results);
956
+ if (results && results.length > 2) {
957
+ const roleId = results[1] ? results[1].toUpperCase() : null;
958
+ const right = results[2];
959
+ // console.log(results[0]);
960
+ // console.log(results[1]);
961
+ // console.log(results[2]);
962
+ const permission = permissions.find(function (p) {
963
+ return (p.appModuleId === appModuleId &&
964
+ p.resource === resource &&
965
+ p.roleId === roleId &&
966
+ p.assignmentStaffRelationId === assignmentStaffRelationId);
967
+ });
968
+ /*
969
+ console.log('##### setPermission() resource: ', resource);
970
+ console.log('##### setPermission() appModuleId: ', appModuleId);
971
+ console.log('##### setPermission() roleId: ', roleId);
972
+ console.log(
973
+ '##### setPermission() assignment relation: ',
974
+ assignmentStaffRelationId,
975
+ );
976
+ */
977
+ console.log('##### Matched permission: ', permission);
978
+ if (permission) {
979
+ if (right === 'read') {
980
+ if (!permission.readFlag) {
981
+ if (hide !== false) {
982
+ hide = true;
983
+ }
984
+ }
985
+ else {
986
+ hide = false;
987
+ }
988
+ }
989
+ else if ((right === 'create' && !permission.createFlag) ||
990
+ (right === 'update' && !permission.updateFlag) ||
991
+ (right === 'delete' && !permission.deleteFlag) ||
992
+ (right === 'assign' && !permission.assignFlag) ||
993
+ (right === 'close' && !permission.closeFlag) ||
994
+ (right === 'expunge' && !permission.expungeFlag) ||
995
+ (right === 'reopen' && !permission.reopenFlag)) {
996
+ if (element.nodeName === 'BUTTON') {
997
+ if (hide !== false) {
998
+ hide = true;
999
+ }
1000
+ }
1001
+ else {
1002
+ if (disable !== false) {
1003
+ disable = true;
1004
+ }
1005
+ }
1006
+ }
1007
+ else {
1008
+ if (element.nodeName === 'BUTTON') {
1009
+ hide = false;
1010
+ }
1011
+ else {
1012
+ disable = false;
1013
+ }
1014
+ }
1015
+ }
1016
+ else {
1017
+ if (right === 'read') {
1018
+ if (hide !== false) {
1019
+ hide = true;
1020
+ }
1021
+ }
1022
+ else if (element.nodeName === 'BUTTON') {
1023
+ if (hide !== false) {
1024
+ hide = true;
1025
+ }
1026
+ }
1027
+ else if (disable !== false) {
1028
+ disable = true;
1029
+ }
1030
+ }
1031
+ }
1032
+ });
1033
+ console.log('hide: ', hide);
1034
+ console.log('disable: ', disable);
1035
+ if (hide === true) {
1036
+ this.hideHtmlElement(element);
1037
+ }
1038
+ else if (disable === true) {
1039
+ this.disableHtmlElement(element);
1040
+ }
1041
+ });
1042
+ });
1043
+ }
1044
+ checkPermission(accessControlConfig) {
1045
+ const selData = accessControlConfig.route.data;
1046
+ this.loginStaff = selData.loginStaff;
1047
+ this.selectedOffender = selData.selectedOffender;
1048
+ let routePath = '';
1049
+ if (accessControlConfig.route.url &&
1050
+ accessControlConfig.route.url.length > 0) {
1051
+ routePath = accessControlConfig.route.url[0].path;
1052
+ }
1053
+ const permissions = this.loginStaff.permissions;
1054
+ const resource = routePath;
1055
+ const roleId = accessControlConfig.roleId
1056
+ ? accessControlConfig.roleId.toUpperCase()
1057
+ : null;
1058
+ const accessType = accessControlConfig.accessType;
1059
+ const assignmentStaffRelationId = (!this.selectedOffender || !this.selectedOffender
1060
+ .assignmentStaffRelationId)
1061
+ ? 'N/A'
1062
+ : this.selectedOffender.assignmentStaffRelationId;
1063
+ const permission = permissions.find((p) => {
1064
+ return (p.appModuleId === accessControlConfig.appModuleId &&
1065
+ p.resource === resource &&
1066
+ (!roleId || p.roleId === roleId) &&
1067
+ (p.assignmentStaffRelationId === 'N/A' ||
1068
+ p.assignmentStaffRelationId === assignmentStaffRelationId));
1069
+ });
1070
+ if (permission) {
1071
+ if (accessType === 'read') {
1072
+ if (!permission.readFlag) {
1073
+ return false;
1074
+ }
1075
+ else {
1076
+ return true;
1077
+ }
1078
+ }
1079
+ else if ((accessType === 'create' && !permission.createFlag) ||
1080
+ (accessType === 'update' && !permission.updateFlag) ||
1081
+ (accessType === 'delete' && !permission.deleteFlag) ||
1082
+ (accessType === 'assign' && !permission.assignFlag) ||
1083
+ (accessType === 'close' && !permission.closeFlag) ||
1084
+ (accessType === 'expunge' && !permission.expungeFlag) ||
1085
+ (accessType === 'reopen' && !permission.reopenFlag)) {
1086
+ return false;
1087
+ }
1088
+ else {
1089
+ return true;
1090
+ }
1091
+ }
1092
+ else {
1093
+ if (accessType === 'read') {
1094
+ return false;
1095
+ }
1096
+ }
1097
+ return false;
1098
+ }
1099
+ canAppFeatureActivate(loginStaff, feature, appModuleId = null) {
1100
+ // if (!this.isAuthEnable(loginStaff.roles, appModuleId)) {
1101
+ // return true;
1102
+ // }
1103
+ return this.hasAppFeaturePermission(loginStaff.permissions, feature, appModuleId);
1104
+ }
1105
+ // public isAuthEnable(roles: Role[], appModuleId: string) {
1106
+ // if (roles && roles.length > 0) {
1107
+ // return roles.map(r => r.roleId).findIndex(this.isExternalRole) > -1 || appModuleId === 'RR';
1108
+ // }
1109
+ // return false;
1110
+ // }
1111
+ hasIntakeRole(roles) {
1112
+ if (roles && roles.length > 0) {
1113
+ return roles.findIndex(this.isIntakeRole) > -1;
1114
+ }
1115
+ return false;
1116
+ }
1117
+ hasAppFeaturePermission(permissions, feature, appModuleId) {
1118
+ if (permissions && permissions.length > 0) {
1119
+ if (appModuleId) {
1120
+ return (permissions.findIndex((p) => p.resource === feature && p.appModuleId === appModuleId) > -1);
1121
+ }
1122
+ else {
1123
+ return permissions.findIndex((p) => p.resource === feature) > -1;
1124
+ }
1125
+ }
1126
+ return false;
1127
+ }
1128
+ isExternalRole(roleId) {
1129
+ switch (roleId) {
1130
+ case 'EUDTL':
1131
+ case 'EUDUSM':
1132
+ case 'EUJDG':
1133
+ case 'EUMPD':
1134
+ case 'EUSOTV':
1135
+ case 'EUUSA2':
1136
+ case 'EUUSAO':
1137
+ case 'EUUSPC':
1138
+ return true;
1139
+ default:
1140
+ return false;
1141
+ }
1142
+ }
1143
+ isIntakeRole(role) {
1144
+ switch (role.roleId) {
1145
+ case 'OPA':
1146
+ case 'OPS':
1147
+ case 'SOPS':
1148
+ return true;
1149
+ default:
1150
+ return false;
1151
+ }
1152
+ }
1153
+ disableHtmlElement(element) {
1154
+ // console.log(element);
1155
+ switch (element.nodeName) {
1156
+ case 'A':
1157
+ element.setAttribute('style', 'pointer-events: none;cursor: not-allowed;');
1158
+ element.setAttribute('tabIndex', '-1');
1159
+ break;
1160
+ default:
1161
+ element.setAttribute('disabled', 'disabled');
1162
+ break;
1163
+ }
1164
+ }
1165
+ hideHtmlElement(element) {
1166
+ // element.setAttribute('hidden', 'hidden');
1167
+ element.setAttribute('style', 'display: none;');
1168
+ }
1169
+ getStaff(userName) {
1170
+ return this.query({
1171
+ query: this.findStaffQuery,
1172
+ variables: {
1173
+ input: {
1174
+ where: {
1175
+ userName: userName,
1176
+ activeFlag: true,
1177
+ },
1178
+ }
1179
+ },
1180
+ }).pipe(take(1), map((result) => {
1181
+ if (isDevMode) {
1182
+ console.log('##### getStaff() from service ', result);
1183
+ }
1184
+ if (result.findvStaffs.data.length > 0) {
1185
+ const data = result.findvStaffs.data[0];
1186
+ this.xdmService.setLoginStaff(data);
1187
+ this.loginStaff = data;
1188
+ return data;
1189
+ }
1190
+ else {
1191
+ return of(null);
1192
+ }
1193
+ }), catchError((error) => {
1194
+ console.log('error ' + error);
1195
+ return of(null);
1196
+ }));
1197
+ }
1198
+ query(options) {
1199
+ return this.http
1200
+ .post(this.smartDataServiceUrl, {
1201
+ query: options.query,
1202
+ variables: options.variables,
1203
+ }, {
1204
+ headers: new HttpHeaders({
1205
+ 'Content-Type': 'application/json',
1206
+ 'No-Auth': 'True',
1207
+ }),
1208
+ })
1209
+ .pipe(map((d) => d.data));
1210
+ }
1211
+ get findStaffQuery() {
1212
+ return `
1213
+ query findvStaffs($input: vStaffMultiInput) {
1214
+ findvStaffs(input: $input) {
1215
+ totalCount
1216
+ message
1217
+ data {
1218
+ staffId
1219
+ userName
1220
+ lastName
1221
+ firstName
1222
+ phone
1223
+ email
1224
+ roles {
1225
+ roleId
1226
+ role
1227
+ }
1228
+ permissions {
1229
+ roleId
1230
+ appModuleId
1231
+ resource
1232
+ assignmentStaffRelationId
1233
+ readFlag
1234
+ createFlag
1235
+ updateFlag
1236
+ deleteFlag
1237
+ assignFlag
1238
+ reopenFlag
1239
+ closeFlag
1240
+ expungeFlag
1241
+ }
1242
+ options {
1243
+ offenderListOptionId
1244
+ name
1245
+ serviceApiFieldName
1246
+ selectedFlag
1247
+ }
1248
+ }
1249
+ }
1250
+ }
1251
+ `;
1252
+ }
1253
+ getStaffOffenderRelation(staffId, offenderId) {
1254
+ const queryString = `
1255
+ {
1256
+ findvStaffOffenderRelations(input: {where: {staffId: ${staffId}, offenderId: ${offenderId}}}) {
1257
+ data {
1258
+ assignmentStaffRelationId
1259
+ }
1260
+ }
1261
+ }`;
1262
+ return this.http
1263
+ .post(this.smartDataServiceUrl, { query: queryString })
1264
+ .pipe(take(1), map((result) => {
1265
+ if (isDevMode) {
1266
+ console.log('##### getStaffOffenderRelation() from service ', result);
1267
+ }
1268
+ if (result.data.findvStaffOffenderRelations.data.length > 0) {
1269
+ const data = result.data.findvStaffOffenderRelations.data[0];
1270
+ return data.assignmentStaffRelationId;
1271
+ }
1272
+ else {
1273
+ return null;
1274
+ // return throwError('No access right.');
1275
+ }
1276
+ }), catchError((error) => {
1277
+ console.log('error ' + error);
1278
+ return null;
1279
+ }));
1280
+ }
1281
+ getRolePermissions(appModuleId, resource) {
1282
+ const queryString = `
1283
+ query findvRolePermissionPivots{
1284
+ findvRolePermissionPivots(input: {where: {appModuleId: ${appModuleId}, resource: ${resource}}}){
1285
+ totalCount
1286
+ message
1287
+ }
1288
+ }`;
1289
+ return this.http
1290
+ .post(this.smartDataServiceUrl, { query: queryString })
1291
+ .pipe(take(1), map((result) => {
1292
+ if (isDevMode) {
1293
+ console.log('##### findvRolePermissionPivots() from service ', result);
1294
+ }
1295
+ if (result.data.findvRolePermissionPivots.totalCount > 0) {
1296
+ return true;
1297
+ }
1298
+ else {
1299
+ return false;
1300
+ // return throwError('No access right.');
1301
+ }
1302
+ }), catchError((error) => {
1303
+ console.log('error ' + error);
1304
+ return throwError(error);
1305
+ }));
1306
+ }
1307
+ }
1308
+ /** @nocollapse */ SmartAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAuthService, deps: [{ token: i1.HttpClient }, { token: i2.MsalService }, { token: XdmService }, { token: SMART_DATA_SERVICE_URL }, { token: SMART_DOMAIN_FORMAT }], target: i0.ɵɵFactoryTarget.Injectable });
1309
+ /** @nocollapse */ SmartAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAuthService, providedIn: 'root' });
1310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAuthService, decorators: [{
1311
+ type: Injectable,
1312
+ args: [{
1313
+ providedIn: 'root',
1314
+ }]
1315
+ }], ctorParameters: function () {
1316
+ return [{ type: i1.HttpClient }, { type: i2.MsalService }, { type: XdmService }, { type: undefined, decorators: [{
1317
+ type: Inject,
1318
+ args: [SMART_DATA_SERVICE_URL]
1319
+ }] }, { type: undefined, decorators: [{
1320
+ type: Inject,
1321
+ args: [SMART_DOMAIN_FORMAT]
1322
+ }] }];
1312
1323
  } });
1313
1324
 
1314
- class SmartAccessControlDirective {
1315
- constructor(elementRef, auth) {
1316
- this.elementRef = elementRef;
1317
- this.auth = auth;
1318
- }
1319
- ngOnInit() {
1320
- this.checkAccess();
1321
- }
1322
- checkAccess() {
1323
- if (!this.accessControlConfig ||
1324
- !this.accessControlConfig.route ||
1325
- !this.accessControlConfig.route.data ||
1326
- !this.accessControlConfig.route.data.loginStaff) {
1327
- return;
1328
- }
1329
- // const loginStaff = this.accessControlConfig.route.data.loginStaff;
1330
- // if (!this.auth.isAuthEnable(loginStaff.roles, this.accessControlConfig.appModuleId)) {
1331
- // return;
1332
- // }
1333
- this.elementRef.nativeElement.style.display = this.auth.checkPermission(this.accessControlConfig)
1334
- ? 'block'
1335
- : 'none';
1336
- }
1337
- }
1338
- /** @nocollapse */ SmartAccessControlDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAccessControlDirective, deps: [{ token: i0.ElementRef }, { token: SmartAuthService }], target: i0.ɵɵFactoryTarget.Directive });
1339
- /** @nocollapse */ SmartAccessControlDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: SmartAccessControlDirective, selector: "[accessControl]", inputs: { accessControlConfig: "accessControlConfig" }, ngImport: i0 });
1340
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAccessControlDirective, decorators: [{
1341
- type: Directive,
1342
- args: [{
1343
- selector: '[accessControl]',
1344
- }]
1345
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: SmartAuthService }]; }, propDecorators: { accessControlConfig: [{
1346
- type: Input
1325
+ class SmartAccessControlDirective {
1326
+ constructor(elementRef, auth) {
1327
+ this.elementRef = elementRef;
1328
+ this.auth = auth;
1329
+ }
1330
+ ngOnInit() {
1331
+ this.checkAccess();
1332
+ }
1333
+ checkAccess() {
1334
+ if (!this.accessControlConfig ||
1335
+ !this.accessControlConfig.route ||
1336
+ !this.accessControlConfig.route.data ||
1337
+ !this.accessControlConfig.route.data.loginStaff) {
1338
+ return;
1339
+ }
1340
+ // const loginStaff = this.accessControlConfig.route.data.loginStaff;
1341
+ // if (!this.auth.isAuthEnable(loginStaff.roles, this.accessControlConfig.appModuleId)) {
1342
+ // return;
1343
+ // }
1344
+ this.elementRef.nativeElement.style.display = this.auth.checkPermission(this.accessControlConfig)
1345
+ ? 'block'
1346
+ : 'none';
1347
+ }
1348
+ }
1349
+ /** @nocollapse */ SmartAccessControlDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAccessControlDirective, deps: [{ token: i0.ElementRef }, { token: SmartAuthService }], target: i0.ɵɵFactoryTarget.Directive });
1350
+ /** @nocollapse */ SmartAccessControlDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: SmartAccessControlDirective, selector: "[accessControl]", inputs: { accessControlConfig: "accessControlConfig" }, ngImport: i0 });
1351
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAccessControlDirective, decorators: [{
1352
+ type: Directive,
1353
+ args: [{
1354
+ selector: '[accessControl]',
1355
+ }]
1356
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: SmartAuthService }]; }, propDecorators: { accessControlConfig: [{
1357
+ type: Input
1347
1358
  }] } });
1348
1359
 
1349
- // smart-authorization.service
1350
- class SmartAuthorizationGuard {
1351
- constructor(authnService) {
1352
- this.authnService = authnService;
1353
- }
1354
- canActivate(route) {
1355
- return this.authnService.getLoginStaff().pipe(take(1), mergeMap((loginStaff) => {
1356
- if (!loginStaff || !route || !route.routeConfig) {
1357
- return of(false);
1358
- }
1359
- // if (!this.authnService.isAuthEnable(loginStaff.roles, null)) {
1360
- // return of(true);
1361
- // }
1362
- const resource = route.routeConfig.path
1363
- ? route.routeConfig.path.split('/')[0]
1364
- : '';
1365
- const isFeatureValid = this.authnService.canAppFeatureActivate(loginStaff, resource);
1366
- return of(isFeatureValid);
1367
- }), catchError((error) => {
1368
- return of(false);
1369
- }));
1370
- }
1371
- }
1372
- /** @nocollapse */ SmartAuthorizationGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAuthorizationGuard, deps: [{ token: SmartAuthService }], target: i0.ɵɵFactoryTarget.Injectable });
1373
- /** @nocollapse */ SmartAuthorizationGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAuthorizationGuard });
1374
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAuthorizationGuard, decorators: [{
1375
- type: Injectable
1360
+ // smart-authorization.service
1361
+ class SmartAuthorizationGuard {
1362
+ constructor(authnService) {
1363
+ this.authnService = authnService;
1364
+ }
1365
+ canActivate(route) {
1366
+ return this.authnService.getLoginStaff().pipe(take(1), mergeMap((loginStaff) => {
1367
+ if (!loginStaff || !route || !route.routeConfig) {
1368
+ return of(false);
1369
+ }
1370
+ // if (!this.authnService.isAuthEnable(loginStaff.roles, null)) {
1371
+ // return of(true);
1372
+ // }
1373
+ const resource = route.routeConfig.path
1374
+ ? route.routeConfig.path.split('/')[0]
1375
+ : '';
1376
+ const isFeatureValid = this.authnService.canAppFeatureActivate(loginStaff, resource);
1377
+ return of(isFeatureValid);
1378
+ }), catchError((error) => {
1379
+ return of(false);
1380
+ }));
1381
+ }
1382
+ }
1383
+ /** @nocollapse */ SmartAuthorizationGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAuthorizationGuard, deps: [{ token: SmartAuthService }], target: i0.ɵɵFactoryTarget.Injectable });
1384
+ /** @nocollapse */ SmartAuthorizationGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAuthorizationGuard });
1385
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartAuthorizationGuard, decorators: [{
1386
+ type: Injectable
1376
1387
  }], ctorParameters: function () { return [{ type: SmartAuthService }]; } });
1377
1388
 
1378
- class NgcSmartCoreModule {
1379
- }
1380
- /** @nocollapse */ NgcSmartCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgcSmartCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1381
- /** @nocollapse */ NgcSmartCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: NgcSmartCoreModule, declarations: [SmartOffenderHeaderComponent,
1382
- SmartNavbarComponent,
1383
- SmartErrorComponent,
1384
- SmartStaffOffenderOptionsComponent,
1385
- SmartAccessControlDirective], imports: [CommonModule,
1386
- HttpClientModule,
1387
- MatButtonModule,
1388
- MatMenuModule,
1389
- MatTabsModule,
1390
- MatSelectModule,
1391
- MatCardModule,
1392
- MatCheckboxModule,
1393
- ReactiveFormsModule], exports: [SmartOffenderHeaderComponent,
1394
- SmartNavbarComponent,
1395
- SmartErrorComponent,
1396
- SmartStaffOffenderOptionsComponent,
1397
- SmartAccessControlDirective] });
1398
- /** @nocollapse */ NgcSmartCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgcSmartCoreModule, providers: [
1399
- SmartNavbarService,
1400
- SmartOffenderHeaderService,
1401
- SmartStaffOffenderOptionsService,
1402
- SmartAuthorizationGuard,
1403
- MatSnackBar,
1404
- ], imports: [CommonModule,
1405
- HttpClientModule,
1406
- MatButtonModule,
1407
- MatMenuModule,
1408
- MatTabsModule,
1409
- MatSelectModule,
1410
- MatCardModule,
1411
- MatCheckboxModule,
1412
- ReactiveFormsModule] });
1413
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgcSmartCoreModule, decorators: [{
1414
- type: NgModule,
1415
- args: [{
1416
- declarations: [
1417
- SmartOffenderHeaderComponent,
1418
- SmartNavbarComponent,
1419
- SmartErrorComponent,
1420
- SmartStaffOffenderOptionsComponent,
1421
- SmartAccessControlDirective,
1422
- ],
1423
- imports: [
1424
- CommonModule,
1425
- HttpClientModule,
1426
- MatButtonModule,
1427
- MatMenuModule,
1428
- MatTabsModule,
1429
- MatSelectModule,
1430
- MatCardModule,
1431
- MatCheckboxModule,
1432
- ReactiveFormsModule,
1433
- ],
1434
- exports: [
1435
- SmartOffenderHeaderComponent,
1436
- SmartNavbarComponent,
1437
- SmartErrorComponent,
1438
- SmartStaffOffenderOptionsComponent,
1439
- SmartAccessControlDirective,
1440
- ],
1441
- providers: [
1442
- SmartNavbarService,
1443
- SmartOffenderHeaderService,
1444
- SmartStaffOffenderOptionsService,
1445
- SmartAuthorizationGuard,
1446
- MatSnackBar,
1447
- ],
1448
- }]
1389
+ class NgcSmartCoreModule {
1390
+ }
1391
+ /** @nocollapse */ NgcSmartCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgcSmartCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1392
+ /** @nocollapse */ NgcSmartCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: NgcSmartCoreModule, declarations: [SmartOffenderHeaderComponent,
1393
+ SmartNavbarComponent,
1394
+ SmartErrorComponent,
1395
+ SmartStaffOffenderOptionsComponent,
1396
+ SmartAccessControlDirective], imports: [CommonModule,
1397
+ HttpClientModule,
1398
+ MatButtonModule,
1399
+ MatMenuModule,
1400
+ MatTabsModule,
1401
+ MatSelectModule,
1402
+ MatCardModule,
1403
+ MatCheckboxModule,
1404
+ ReactiveFormsModule], exports: [SmartOffenderHeaderComponent,
1405
+ SmartNavbarComponent,
1406
+ SmartErrorComponent,
1407
+ SmartStaffOffenderOptionsComponent,
1408
+ SmartAccessControlDirective] });
1409
+ /** @nocollapse */ NgcSmartCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgcSmartCoreModule, providers: [
1410
+ SmartNavbarService,
1411
+ SmartOffenderHeaderService,
1412
+ SmartStaffOffenderOptionsService,
1413
+ SmartAuthorizationGuard,
1414
+ MatSnackBar,
1415
+ ], imports: [CommonModule,
1416
+ HttpClientModule,
1417
+ MatButtonModule,
1418
+ MatMenuModule,
1419
+ MatTabsModule,
1420
+ MatSelectModule,
1421
+ MatCardModule,
1422
+ MatCheckboxModule,
1423
+ ReactiveFormsModule] });
1424
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgcSmartCoreModule, decorators: [{
1425
+ type: NgModule,
1426
+ args: [{
1427
+ declarations: [
1428
+ SmartOffenderHeaderComponent,
1429
+ SmartNavbarComponent,
1430
+ SmartErrorComponent,
1431
+ SmartStaffOffenderOptionsComponent,
1432
+ SmartAccessControlDirective,
1433
+ ],
1434
+ imports: [
1435
+ CommonModule,
1436
+ HttpClientModule,
1437
+ MatButtonModule,
1438
+ MatMenuModule,
1439
+ MatTabsModule,
1440
+ MatSelectModule,
1441
+ MatCardModule,
1442
+ MatCheckboxModule,
1443
+ ReactiveFormsModule,
1444
+ ],
1445
+ exports: [
1446
+ SmartOffenderHeaderComponent,
1447
+ SmartNavbarComponent,
1448
+ SmartErrorComponent,
1449
+ SmartStaffOffenderOptionsComponent,
1450
+ SmartAccessControlDirective,
1451
+ ],
1452
+ providers: [
1453
+ SmartNavbarService,
1454
+ SmartOffenderHeaderService,
1455
+ SmartStaffOffenderOptionsService,
1456
+ SmartAuthorizationGuard,
1457
+ MatSnackBar,
1458
+ ],
1459
+ }]
1449
1460
  }] });
1450
1461
 
1451
- class LoginStaffResolverService {
1452
- constructor(authnService,
1453
- // private zone: NgZone,
1454
- router) {
1455
- this.authnService = authnService;
1456
- this.router = router;
1457
- }
1458
- resolve(route, state) {
1459
- return this.authnService.getLoginStaff().pipe(take(1), mergeMap((loginStaff) => {
1460
- if (isDevMode) {
1461
- console.log('LoginStaffResolverService: ', loginStaff);
1462
- }
1463
- if (loginStaff) {
1464
- return of(loginStaff);
1465
- }
1466
- else {
1467
- return throwError('Not authorized to access SMART.');
1468
- // return EMPTY;
1469
- /*
1470
- this.zone.run(() => {
1471
- this.router.navigate(['/smart-error'], {
1472
- queryParams: {
1473
- type: 'staff',
1474
- message: 'Not authorized to access SMART.'
1475
- }
1476
- });
1477
- });
1478
- return EMPTY;
1479
- */
1480
- }
1481
- }), catchError((error) => {
1482
- console.log('LoginStaffResolverService: ' + error);
1483
- this.router.navigate(['/smart-error'], {
1484
- queryParams: {
1485
- type: 'staff',
1486
- message: 'SMART Authentication: ' + error,
1487
- },
1488
- });
1489
- return EMPTY;
1490
- }));
1491
- }
1492
- }
1493
- /** @nocollapse */ LoginStaffResolverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoginStaffResolverService, deps: [{ token: SmartAuthService }, { token: i2$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
1494
- /** @nocollapse */ LoginStaffResolverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoginStaffResolverService, providedIn: 'root' });
1495
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoginStaffResolverService, decorators: [{
1496
- type: Injectable,
1497
- args: [{
1498
- providedIn: 'root',
1499
- }]
1462
+ class LoginStaffResolverService {
1463
+ constructor(authnService,
1464
+ // private zone: NgZone,
1465
+ router) {
1466
+ this.authnService = authnService;
1467
+ this.router = router;
1468
+ }
1469
+ resolve(route, state) {
1470
+ return this.authnService.getLoginStaff().pipe(take(1), mergeMap((loginStaff) => {
1471
+ if (isDevMode) {
1472
+ console.log('LoginStaffResolverService: ', loginStaff);
1473
+ }
1474
+ if (loginStaff) {
1475
+ return of(loginStaff);
1476
+ }
1477
+ else {
1478
+ return throwError('Not authorized to access SMART.');
1479
+ // return EMPTY;
1480
+ /*
1481
+ this.zone.run(() => {
1482
+ this.router.navigate(['/smart-error'], {
1483
+ queryParams: {
1484
+ type: 'staff',
1485
+ message: 'Not authorized to access SMART.'
1486
+ }
1487
+ });
1488
+ });
1489
+ return EMPTY;
1490
+ */
1491
+ }
1492
+ }), catchError((error) => {
1493
+ console.log('LoginStaffResolverService: ' + error);
1494
+ this.router.navigate(['/smart-error'], {
1495
+ queryParams: {
1496
+ type: 'staff',
1497
+ message: 'SMART Authentication: ' + error,
1498
+ },
1499
+ });
1500
+ return EMPTY;
1501
+ }));
1502
+ }
1503
+ }
1504
+ /** @nocollapse */ LoginStaffResolverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoginStaffResolverService, deps: [{ token: SmartAuthService }, { token: i2$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
1505
+ /** @nocollapse */ LoginStaffResolverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoginStaffResolverService, providedIn: 'root' });
1506
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoginStaffResolverService, decorators: [{
1507
+ type: Injectable,
1508
+ args: [{
1509
+ providedIn: 'root',
1510
+ }]
1500
1511
  }], ctorParameters: function () { return [{ type: SmartAuthService }, { type: i2$1.Router }]; } });
1501
1512
 
1502
- class SelectedOffenderResolverService {
1503
- constructor(service, zone, router) {
1504
- this.service = service;
1505
- this.zone = zone;
1506
- this.router = router;
1507
- }
1508
- resolve(route, state) {
1509
- return from(this.service.getSelectedOffender()).pipe(mergeMap((selectedOffender) => {
1510
- if (isDevMode) {
1511
- console.log(selectedOffender);
1512
- }
1513
- if (!selectedOffender) {
1514
- return throwError('No offender selected.');
1515
- }
1516
- return of(selectedOffender);
1517
- }), retryWhen((errors) => errors.pipe(
1518
- // tap(() => console.log('Retry getting selected offender.')),
1519
- delay(1000), take(5), (o) => concat(o, throwError('No offender selected (failed after retries).')))), catchError((error) => {
1520
- /*
1521
- this.zone.run(() => {
1522
- this.router.navigate(['/smart-error'], {
1523
- queryParams: { type: 'offender', message: error }
1524
- });
1525
- });
1526
- */
1527
- this.router.navigate(['/smart-error'], {
1528
- queryParams: { type: 'offender', message: error },
1529
- });
1530
- return EMPTY;
1531
- }));
1532
- }
1533
- }
1534
- /** @nocollapse */ SelectedOffenderResolverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectedOffenderResolverService, deps: [{ token: XdmService }, { token: i0.NgZone }, { token: i2$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
1535
- /** @nocollapse */ SelectedOffenderResolverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectedOffenderResolverService, providedIn: 'root' });
1536
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectedOffenderResolverService, decorators: [{
1537
- type: Injectable,
1538
- args: [{
1539
- providedIn: 'root',
1540
- }]
1513
+ class SelectedOffenderResolverService {
1514
+ constructor(service, zone, router) {
1515
+ this.service = service;
1516
+ this.zone = zone;
1517
+ this.router = router;
1518
+ }
1519
+ resolve(route, state) {
1520
+ return from(this.service.getSelectedOffender()).pipe(mergeMap((selectedOffender) => {
1521
+ if (isDevMode) {
1522
+ console.log(selectedOffender);
1523
+ }
1524
+ if (!selectedOffender) {
1525
+ return throwError('No offender selected.');
1526
+ }
1527
+ return of(selectedOffender);
1528
+ }), retryWhen((errors) => errors.pipe(
1529
+ // tap(() => console.log('Retry getting selected offender.')),
1530
+ delay(1000), take(5), (o) => concat(o, throwError('No offender selected (failed after retries).')))), catchError((error) => {
1531
+ /*
1532
+ this.zone.run(() => {
1533
+ this.router.navigate(['/smart-error'], {
1534
+ queryParams: { type: 'offender', message: error }
1535
+ });
1536
+ });
1537
+ */
1538
+ this.router.navigate(['/smart-error'], {
1539
+ queryParams: { type: 'offender', message: error },
1540
+ });
1541
+ return EMPTY;
1542
+ }));
1543
+ }
1544
+ }
1545
+ /** @nocollapse */ SelectedOffenderResolverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectedOffenderResolverService, deps: [{ token: XdmService }, { token: i0.NgZone }, { token: i2$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
1546
+ /** @nocollapse */ SelectedOffenderResolverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectedOffenderResolverService, providedIn: 'root' });
1547
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectedOffenderResolverService, decorators: [{
1548
+ type: Injectable,
1549
+ args: [{
1550
+ providedIn: 'root',
1551
+ }]
1541
1552
  }], ctorParameters: function () { return [{ type: XdmService }, { type: i0.NgZone }, { type: i2$1.Router }]; } });
1542
1553
 
1543
- class SmartStaffOffenderOptionsResolverService {
1544
- constructor(offenderService) {
1545
- this.offenderService = offenderService;
1546
- }
1547
- resolve() {
1548
- return this.offenderService.getOffenderListOptions()
1549
- .pipe(map(({ data }) => {
1550
- return data;
1551
- }));
1552
- }
1553
- }
1554
- /** @nocollapse */ SmartStaffOffenderOptionsResolverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsResolverService, deps: [{ token: SmartStaffOffenderOptionsService }], target: i0.ɵɵFactoryTarget.Injectable });
1555
- /** @nocollapse */ SmartStaffOffenderOptionsResolverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsResolverService, providedIn: 'root' });
1556
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsResolverService, decorators: [{
1557
- type: Injectable,
1558
- args: [{
1559
- providedIn: 'root',
1560
- }]
1554
+ class SmartStaffOffenderOptionsResolverService {
1555
+ constructor(offenderService) {
1556
+ this.offenderService = offenderService;
1557
+ }
1558
+ resolve() {
1559
+ return this.offenderService.getOffenderListOptions()
1560
+ .pipe(map(({ data }) => {
1561
+ return data;
1562
+ }));
1563
+ }
1564
+ }
1565
+ /** @nocollapse */ SmartStaffOffenderOptionsResolverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsResolverService, deps: [{ token: SmartStaffOffenderOptionsService }], target: i0.ɵɵFactoryTarget.Injectable });
1566
+ /** @nocollapse */ SmartStaffOffenderOptionsResolverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsResolverService, providedIn: 'root' });
1567
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SmartStaffOffenderOptionsResolverService, decorators: [{
1568
+ type: Injectable,
1569
+ args: [{
1570
+ providedIn: 'root',
1571
+ }]
1561
1572
  }], ctorParameters: function () { return [{ type: SmartStaffOffenderOptionsService }]; } });
1562
1573
 
1563
- var AccessType;
1564
- (function (AccessType) {
1565
- AccessType["READ"] = "read";
1566
- AccessType["CREATE"] = "create";
1567
- AccessType["UPDATE"] = "update";
1568
- AccessType["DELETE"] = "delete";
1569
- AccessType["EXPUNGE"] = "expunge";
1570
- AccessType["ASSIGN"] = "assign";
1571
- AccessType["REOPEN"] = "reopen";
1572
- AccessType["CLOSE"] = "close";
1574
+ var AccessType;
1575
+ (function (AccessType) {
1576
+ AccessType["READ"] = "read";
1577
+ AccessType["CREATE"] = "create";
1578
+ AccessType["UPDATE"] = "update";
1579
+ AccessType["DELETE"] = "delete";
1580
+ AccessType["EXPUNGE"] = "expunge";
1581
+ AccessType["ASSIGN"] = "assign";
1582
+ AccessType["REOPEN"] = "reopen";
1583
+ AccessType["CLOSE"] = "close";
1573
1584
  })(AccessType || (AccessType = {}));
1574
1585
 
1575
- /*
1576
- * Public API Surface of ngc-smart-core
1586
+ /*
1587
+ * Public API Surface of ngc-smart-core
1577
1588
  */
1578
1589
 
1579
- /**
1580
- * Generated bundle index. Do not edit.
1590
+ /**
1591
+ * Generated bundle index. Do not edit.
1581
1592
  */
1582
1593
 
1583
1594
  export { AccessType, LoginStaff, LoginStaffResolverService, NgcSmartCoreModule, OffenderQuery, Option, Permission, Role, SMART_DATA_SERVICE_URL, SMART_DOMAIN_FORMAT, SMART_WEB_PORTAL_URL, SMART_WEB_STORAGE_LISTENER_URL, SelectedOffender, SelectedOffenderResolverService, SmartAccessControlDirective, SmartAuthService, SmartAuthorizationGuard, SmartErrorComponent, SmartNavbarComponent, SmartNavbarService, SmartOffenderHeaderComponent, SmartStaffOffenderOptionsComponent, SmartStaffOffenderOptionsResolverService, StorageKey, XdmService };