@csmart/ngc-smart-core 1.13.14 → 1.13.15

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