@csmart/ngc-smart-core 1.13.19 → 1.13.21

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