@csmart/ngc-smart-core 1.15.8 → 1.17.1

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 (60) hide show
  1. package/{esm2020 → esm2022}/csmart-ngc-smart-core.mjs +4 -4
  2. package/{esm2020 → esm2022}/lib/ngc-smart-core.module.mjs +98 -98
  3. package/{esm2020 → esm2022}/lib/smart-auth/smart-access-control-config.mjs +11 -11
  4. package/esm2022/lib/smart-auth/smart-access-control.directive.mjs +39 -0
  5. package/esm2022/lib/smart-auth/smart-auth.service.mjs +504 -0
  6. package/esm2022/lib/smart-auth/smart-authorization-guard.service.mjs +35 -0
  7. package/{esm2020 → esm2022}/lib/smart-auth/smart-error.component.mjs +37 -37
  8. package/esm2022/lib/smart-auth/smart-login-staff-resolver.service.mjs +59 -0
  9. package/esm2022/lib/smart-auth/smart-selected-offender-resolver.service.mjs +60 -0
  10. package/{esm2020 → esm2022}/lib/smart-navbar/smart-navbar-config.mjs +1 -1
  11. package/esm2022/lib/smart-navbar/smart-navbar.component.mjs +174 -0
  12. package/esm2022/lib/smart-navbar/smart-navbar.service.mjs +63 -0
  13. package/esm2022/lib/smart-offender-header/smart-offender-header.component.mjs +151 -0
  14. package/{esm2020 → esm2022}/lib/smart-offender-header/smart-offender-header.service.mjs +29 -29
  15. package/esm2022/lib/smart-offender-header/smart-offender-redirect.guard.mjs +27 -0
  16. package/{esm2020 → esm2022}/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.mjs +25 -25
  17. package/esm2022/lib/smart-staff-offender-options/smart-staff-offender-options.component.mjs +78 -0
  18. package/esm2022/lib/smart-staff-offender-options/smart-staff-offender-options.service.mjs +132 -0
  19. package/esm2022/lib/smart-storage/smart-storage-model.mjs +30 -0
  20. package/esm2022/lib/smart-storage/xdm.service.mjs +201 -0
  21. package/{esm2020 → esm2022}/public-api.mjs +20 -20
  22. package/{fesm2020 → fesm2022}/csmart-ngc-smart-core.mjs +1467 -1467
  23. package/{fesm2015 → fesm2022}/csmart-ngc-smart-core.mjs.map +1 -1
  24. package/index.d.ts +5 -5
  25. package/lib/ngc-smart-core.module.d.ts +20 -20
  26. package/lib/smart-auth/smart-access-control-config.d.ts +17 -17
  27. package/lib/smart-auth/smart-access-control.directive.d.ts +14 -14
  28. package/lib/smart-auth/smart-auth.service.d.ts +41 -41
  29. package/lib/smart-auth/smart-authorization-guard.service.d.ts +13 -13
  30. package/lib/smart-auth/smart-error.component.d.ts +17 -17
  31. package/lib/smart-auth/smart-login-staff-resolver.service.d.ts +13 -13
  32. package/lib/smart-auth/smart-selected-offender-resolver.service.d.ts +15 -15
  33. package/lib/smart-navbar/smart-navbar-config.d.ts +7 -7
  34. package/lib/smart-navbar/smart-navbar.component.d.ts +42 -42
  35. package/lib/smart-navbar/smart-navbar.service.d.ts +12 -12
  36. package/lib/smart-offender-header/smart-offender-header.component.d.ts +32 -32
  37. package/lib/smart-offender-header/smart-offender-header.service.d.ts +18 -18
  38. package/lib/smart-offender-header/smart-offender-redirect.guard.d.ts +9 -9
  39. package/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.d.ts +10 -11
  40. package/lib/smart-staff-offender-options/smart-staff-offender-options.component.d.ts +22 -22
  41. package/lib/smart-staff-offender-options/smart-staff-offender-options.service.d.ts +19 -19
  42. package/lib/smart-storage/smart-storage-model.d.ts +58 -58
  43. package/lib/smart-storage/xdm.service.d.ts +43 -43
  44. package/package.json +5 -11
  45. package/public-api.d.ts +17 -17
  46. package/esm2020/lib/smart-auth/smart-access-control.directive.mjs +0 -39
  47. package/esm2020/lib/smart-auth/smart-auth.service.mjs +0 -504
  48. package/esm2020/lib/smart-auth/smart-authorization-guard.service.mjs +0 -35
  49. package/esm2020/lib/smart-auth/smart-login-staff-resolver.service.mjs +0 -59
  50. package/esm2020/lib/smart-auth/smart-selected-offender-resolver.service.mjs +0 -60
  51. package/esm2020/lib/smart-navbar/smart-navbar.component.mjs +0 -174
  52. package/esm2020/lib/smart-navbar/smart-navbar.service.mjs +0 -63
  53. package/esm2020/lib/smart-offender-header/smart-offender-header.component.mjs +0 -151
  54. package/esm2020/lib/smart-offender-header/smart-offender-redirect.guard.mjs +0 -27
  55. package/esm2020/lib/smart-staff-offender-options/smart-staff-offender-options.component.mjs +0 -78
  56. package/esm2020/lib/smart-staff-offender-options/smart-staff-offender-options.service.mjs +0 -132
  57. package/esm2020/lib/smart-storage/smart-storage-model.mjs +0 -30
  58. package/esm2020/lib/smart-storage/xdm.service.mjs +0 -201
  59. package/fesm2015/csmart-ngc-smart-core.mjs +0 -1670
  60. package/fesm2020/csmart-ngc-smart-core.mjs.map +0 -1
@@ -0,0 +1,151 @@
1
+ import { Component } from '@angular/core';
2
+ import { XdmService } from '../smart-storage/xdm.service';
3
+ import { MsalService } from '@azure/msal-angular';
4
+ import { UntypedFormControl } from '@angular/forms';
5
+ import { SmartOffenderHeaderService } from './smart-offender-header.service';
6
+ import { Router } from '@angular/router';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../smart-storage/xdm.service";
9
+ import * as i2 from "@azure/msal-angular";
10
+ import * as i3 from "./smart-offender-header.service";
11
+ import * as i4 from "@angular/router";
12
+ import * as i5 from "@angular/common";
13
+ import * as i6 from "@angular/material/form-field";
14
+ import * as i7 from "@angular/material/select";
15
+ import * as i8 from "@angular/material/core";
16
+ import * as i9 from "@angular/forms";
17
+ export class SmartOffenderHeaderComponent {
18
+ // public isAuthenticated: boolean;
19
+ constructor(xdmService, authnService, smartOffenderHeaderService, router) {
20
+ this.xdmService = xdmService;
21
+ this.authnService = authnService;
22
+ this.smartOffenderHeaderService = smartOffenderHeaderService;
23
+ this.router = router;
24
+ this.selectedOffenderControl$ = new UntypedFormControl();
25
+ }
26
+ ngOnInit() {
27
+ // this.isAuthenticated = this.authnService.getAccount() ? true : false;
28
+ this.xdmService.getLoginStaff().then((loginStaff) => {
29
+ this.loginStaff = loginStaff ? loginStaff : null;
30
+ });
31
+ this.xdmService.getSelectedOffender().then((selectedOffender) => {
32
+ this.selectedOffender =
33
+ selectedOffender && selectedOffender.offenderId
34
+ ? selectedOffender
35
+ : null;
36
+ });
37
+ this.subscription = this.xdmService
38
+ .getOffenderUpdate()
39
+ .subscribe((selectedOffender) => {
40
+ this.selectedOffender = selectedOffender;
41
+ this.setSelectedOffenderControl();
42
+ });
43
+ this.xdmService.getOffenderQuery().then((offenderQuery) => {
44
+ if (offenderQuery) {
45
+ this.offenderQueryList = offenderQuery.offenders;
46
+ this.setSelectedOffenderControl();
47
+ }
48
+ });
49
+ this.offenderQuerySubscription = this.xdmService
50
+ .getOffenderQueryUpdate()
51
+ .subscribe((offenderList) => {
52
+ if (offenderList && offenderList.offenders) {
53
+ this.offenderQueryList = [...offenderList.offenders];
54
+ }
55
+ });
56
+ this.selectedOffenderControl$.valueChanges.subscribe((o) => this.onOffenderSelected(o));
57
+ this.router.routeReuseStrategy.shouldReuseRoute = () => {
58
+ return false;
59
+ };
60
+ }
61
+ get isAuthenticated() {
62
+ return this.authnService.instance.getAllAccounts().length > 0;
63
+ }
64
+ ngOnDestroy() {
65
+ this.subscription.unsubscribe();
66
+ }
67
+ onOffenderSelected(offender) {
68
+ if (offender) {
69
+ // const o = offender.offenderName.split(',');
70
+ // if (o.length === 2) {
71
+ // const offenderName = `${o[1]} ${o[0]}`;
72
+ // this.selectedOffender = {
73
+ // offenderId: offender.offenderId,
74
+ // name: offenderName,
75
+ // pdId: offender.pdId,
76
+ // birthDate: offender.birthDate,
77
+ // gender: offender.genderCode,
78
+ // assignmentStaffRelationId: '',
79
+ // intakeFlag: this.loginStaff
80
+ // ? this.hasIntakeRole(this.loginStaff.roles)
81
+ // : false,
82
+ // } as SelectedOffender;
83
+ this.selectedOffender = offender;
84
+ this.xdmService.setSelectedOffender(this.selectedOffender);
85
+ this.reloadCurrentRoute();
86
+ }
87
+ }
88
+ setSelectedOffenderControl() {
89
+ if (this.selectedOffender &&
90
+ this.offenderQueryList &&
91
+ this.offenderQueryList.length > 0) {
92
+ const o = this.offenderQueryList.find((x) => x.offenderId === this.selectedOffender.offenderId);
93
+ if (o) {
94
+ this.selectedOffenderControl$.setValue(o, { emitEvent: false });
95
+ }
96
+ if (!o && this.offenderQueryList.length > 0) {
97
+ this.selectedOffenderControl$.setValue(this.offenderQueryList[0], {
98
+ emitEvent: false,
99
+ });
100
+ }
101
+ }
102
+ }
103
+ reloadCurrentRoute() {
104
+ try {
105
+ const urlTree = this.router.parseUrl(this.router.url);
106
+ if (urlTree &&
107
+ urlTree.root &&
108
+ urlTree.root.segments &&
109
+ urlTree.root.segments.length > 1) {
110
+ this.router.navigate([urlTree.root.segments[0].path]);
111
+ }
112
+ else if (urlTree &&
113
+ urlTree.root &&
114
+ urlTree.root.children &&
115
+ urlTree.root.children.primary &&
116
+ urlTree.root.children.primary.segments &&
117
+ urlTree.root.children.primary.segments.length > 1) {
118
+ this.router.navigate([urlTree.root.children.primary.segments[0].path]);
119
+ }
120
+ else {
121
+ this.router.navigate([this.router.url]);
122
+ }
123
+ }
124
+ catch {
125
+ this.router.navigateByUrl('/');
126
+ }
127
+ }
128
+ hasIntakeRole(roles) {
129
+ if (roles && roles.length > 0) {
130
+ return roles.findIndex(this.isIntakeRole) > -1;
131
+ }
132
+ return false;
133
+ }
134
+ isIntakeRole(role) {
135
+ switch (role.roleId) {
136
+ case 'OPA':
137
+ case 'OPS':
138
+ case 'SOPS':
139
+ return true;
140
+ default:
141
+ return false;
142
+ }
143
+ }
144
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartOffenderHeaderComponent, deps: [{ token: i1.XdmService }, { token: i2.MsalService }, { token: i3.SmartOffenderHeaderService }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
145
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", 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 class=\"switch-offender\" appearance=\"fill\">\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-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-size:14px;font-weight:500;height:100%;margin:4px;padding-left:16px;justify-items:start}.offender-header-name-item{text-align:left}}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
146
+ }
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartOffenderHeaderComponent, decorators: [{
148
+ type: Component,
149
+ 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 class=\"switch-offender\" appearance=\"fill\">\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-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-size:14px;font-weight:500;height:100%;margin:4px;padding-left:16px;justify-items:start}.offender-header-name-item{text-align:left}}\n"] }]
150
+ }], ctorParameters: () => [{ type: i1.XdmService }, { type: i2.MsalService }, { type: i3.SmartOffenderHeaderService }, { type: i4.Router }] });
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtb2ZmZW5kZXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NzbWFydC9uZ2Mtc21hcnQtY29yZS9zcmMvbGliL3NtYXJ0LW9mZmVuZGVyLWhlYWRlci9zbWFydC1vZmZlbmRlci1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3NtYXJ0L25nYy1zbWFydC1jb3JlL3NyYy9saWIvc21hcnQtb2ZmZW5kZXItaGVhZGVyL3NtYXJ0LW9mZmVuZGVyLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFtRCxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBELE9BQU8sRUFBRSwwQkFBMEIsRUFBb0IsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7O0FBT3pDLE1BQU0sT0FBTyw0QkFBNEI7SUFRdkMsbUNBQW1DO0lBRW5DLFlBQ1UsVUFBc0IsRUFDdEIsWUFBeUIsRUFDekIsMEJBQXNELEVBQ3RELE1BQWM7UUFIZCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFDdEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVZ4Qiw2QkFBd0IsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFXakQsQ0FBQztJQUVKLFFBQVE7UUFDTix3RUFBd0U7UUFDeEUsSUFBSSxDQUFD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QUNULE9BQU8sSUFBSSxDQUFDO1lBQ2Q7Z0JBQ0UsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7a0lBMUpVLDRCQUE0QjtzSEFBNUIsNEJBQTRCLGlFQ2Z6QywrN0JBeUJBOzs0RkRWYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgTmdab25lLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYZG1TZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtc3RvcmFnZS94ZG0uc2VydmljZSc7XHJcbmltcG9ydCB7IFNlbGVjdGVkT2ZmZW5kZXIsIExvZ2luU3RhZmYsIFJvbGUsIE9mZmVuZGVyUXVlcnkgfSBmcm9tICcuLi9zbWFydC1zdG9yYWdlL3NtYXJ0LXN0b3JhZ2UtbW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIE9ic2VydmFibGUsIGZyb20sIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1zYWxTZXJ2aWNlIH0gZnJvbSAnQGF6dXJlL21zYWwtYW5ndWxhcic7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNtYXJ0T2ZmZW5kZXJIZWFkZXJTZXJ2aWNlLCBBc3NpZ25lZE9mZmVuZGVyIH0gZnJvbSAnLi9zbWFydC1vZmZlbmRlci1oZWFkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1zbWFydC1vZmZlbmRlci1oZWFkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1vZmZlbmRlci1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0LW9mZmVuZGVyLWhlYWRlci5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydE9mZmVuZGVySGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyBzZWxlY3RlZE9mZmVuZGVyOiBTZWxlY3RlZE9mZmVuZGVyO1xyXG4gIGxvZ2luU3RhZmY6IExvZ2luU3RhZmY7XHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgc2VsZWN0ZWRPZmZlbmRlckNvbnRyb2wkID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xyXG4gIC8vIGFzc2lnbmVkT2ZmZW5kZXJzOiBBc3NpZ25lZE9mZmVuZGVyW107XHJcbiAgb2ZmZW5kZXJRdWVyeUxpc3Q6IFNlbGVjdGVkT2ZmZW5kZXJbXTtcclxuICBvZmZlbmRlclF1ZXJ5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgLy8gcHVibGljIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHhkbVNlcnZpY2U6IFhkbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhuU2VydmljZTogTXNhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNtYXJ0T2ZmZW5kZXJIZWFkZXJTZXJ2aWNlOiBTbWFydE9mZmVuZGVySGVhZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIHRoaXMuaXNBdXRoZW50aWNhdGVkID0gdGhpcy5hdXRoblNlcnZpY2UuZ2V0QWNjb3VudCgpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy54ZG1TZXJ2aWNlLmdldExvZ2luU3RhZmYoKS50aGVuKChsb2dpblN0YWZmKSA9PiB7XHJcbiAgICAgIHRoaXMubG9naW5TdGFmZiA9IGxvZ2luU3RhZmYgPyBsb2dpblN0YWZmIDogbnVsbDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy54ZG1TZXJ2aWNlLmdldFNlbGVjdGVkT2ZmZW5kZXIoKS50aGVuKChzZWxlY3RlZE9mZmVuZGVyKSA9PiB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlciA9XHJcbiAgICAgICAgc2VsZWN0ZWRPZmZlbmRlciAmJiBzZWxlY3RlZE9mZmVuZGVyLm9mZmVuZGVySWRcclxuICAgICAgICAgID8gc2VsZWN0ZWRPZmZlbmRlclxyXG4gICAgICAgICAgOiBudWxsO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnhkbVNlcnZpY2VcclxuICAgICAgLmdldE9mZmVuZGVyVXBkYXRlKClcclxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0ZWRPZmZlbmRlcikgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlciA9IHNlbGVjdGVkT2ZmZW5kZXI7XHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZE9mZmVuZGVyQ29udHJvbCgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuZ2V0T2ZmZW5kZXJRdWVyeSgpLnRoZW4oKG9mZmVuZGVyUXVlcnk6IE9mZmVuZGVyUXVlcnkpID0+IHtcclxuICAgICAgaWYgKG9mZmVuZGVyUXVlcnkpIHtcclxuICAgICAgICB0aGlzLm9mZmVuZGVyUXVlcnlMaXN0ID0gb2ZmZW5kZXJRdWVyeS5vZmZlbmRlcnM7XHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZE9mZmVuZGVyQ29udHJvbCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9mZmVuZGVyUXVlcnlTdWJzY3JpcHRpb24gPSB0aGlzLnhkbVNlcnZpY2VcclxuICAgICAgLmdldE9mZmVuZGVyUXVlcnlVcGRhdGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChvZmZlbmRlckxpc3QpID0+IHtcclxuICAgICAgICBpZiAob2ZmZW5kZXJMaXN0ICYmIG9mZmVuZGVyTGlzdC5vZmZlbmRlcnMpIHtcclxuICAgICAgICAgIHRoaXMub2ZmZW5kZXJRdWVyeUxpc3QgPSBbLi4ub2ZmZW5kZXJMaXN0Lm9mZmVuZGVyc107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXJDb250cm9sJC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChvKSA9PlxyXG4gICAgICB0aGlzLm9uT2ZmZW5kZXJTZWxlY3RlZChvKSxcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5yb3V0ZXIucm91dGVSZXVzZVN0cmF0ZWd5LnNob3VsZFJldXNlUm91dGUgPSAoKSA9PiB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBnZXQgaXNBdXRoZW50aWNhdGVkKCkgOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmF1dGhuU2VydmljZS5pbnN0YW5jZS5nZXRBbGxBY2NvdW50cygpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uT2ZmZW5kZXJTZWxlY3RlZChvZmZlbmRlcik6IHZvaWQge1xyXG4gICAgaWYgKG9mZmVuZGVyKSB7XHJcbiAgICAgIC8vIGNvbnN0IG8gPSBvZmZlbmRlci5vZmZlbmRlck5hbWUuc3BsaXQoJywnKTtcclxuICAgICAgLy8gaWYgKG8ubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgIC8vICAgY29uc3Qgb2ZmZW5kZXJOYW1lID0gYCR7b1sxXX0gJHtvWzBdfWA7XHJcbiAgICAgIC8vICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0ge1xyXG4gICAgICAvLyAgICAgb2ZmZW5kZXJJZDogb2ZmZW5kZXIub2ZmZW5kZXJJZCxcclxuICAgICAgLy8gICAgIG5hbWU6IG9mZmVuZGVyTmFtZSxcclxuICAgICAgLy8gICAgIHBkSWQ6IG9mZmVuZGVyLnBkSWQsXHJcbiAgICAgIC8vICAgICBiaXJ0aERhdGU6IG9mZmVuZGVyLmJpcnRoRGF0ZSxcclxuICAgICAgLy8gICAgIGdlbmRlcjogb2ZmZW5kZXIuZ2VuZGVyQ29kZSxcclxuICAgICAgLy8gICAgIGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQ6ICcnLFxyXG4gICAgICAvLyAgICAgaW50YWtlRmxhZzogdGhpcy5sb2dpblN0YWZmXHJcbiAgICAgIC8vICAgICAgID8gdGhpcy5oYXNJbnRha2VSb2xlKHRoaXMubG9naW5TdGFmZi5yb2xlcylcclxuICAgICAgLy8gICAgICAgOiBmYWxzZSxcclxuICAgICAgLy8gICB9IGFzIFNlbGVjdGVkT2ZmZW5kZXI7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlciA9IG9mZmVuZGVyO1xyXG4gICAgICB0aGlzLnhkbVNlcnZpY2Uuc2V0U2VsZWN0ZWRPZmZlbmRlcih0aGlzLnNlbGVjdGVkT2ZmZW5kZXIpO1xyXG4gICAgICB0aGlzLnJlbG9hZEN1cnJlbnRSb3V0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZE9mZmVuZGVyQ29udHJvbCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyICYmXHJcbiAgICAgIHRoaXMub2ZmZW5kZXJRdWVyeUxpc3QgJiZcclxuICAgICAgdGhpcy5vZmZlbmRlclF1ZXJ5TGlzdC5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgbyA9IHRoaXMub2ZmZW5kZXJRdWVyeUxpc3QuZmluZChcclxuICAgICAgICAoeCkgPT4geC5vZmZlbmRlcklkID09PSB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZCxcclxuICAgICAgKTtcclxuICAgICAgaWYgKG8pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXJDb250cm9sJC5zZXRWYWx1ZShvLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghbyAmJiB0aGlzLm9mZmVuZGVyUXVlcnlMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXJDb250cm9sJC5zZXRWYWx1ZSh0aGlzLm9mZmVuZGVyUXVlcnlMaXN0WzBdLCB7XHJcbiAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbG9hZEN1cnJlbnRSb3V0ZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHVybFRyZWUgPSB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnJvdXRlci51cmwpO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdXJsVHJlZSAmJlxyXG4gICAgICAgIHVybFRyZWUucm9vdCAmJlxyXG4gICAgICAgIHVybFRyZWUucm9vdC5zZWdtZW50cyAmJlxyXG4gICAgICAgIHVybFRyZWUucm9vdC5zZWdtZW50cy5sZW5ndGggPiAxXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxUcmVlLnJvb3Quc2VnbWVudHNbMF0ucGF0aF0pO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHVybFRyZWUgJiZcclxuICAgICAgICB1cmxUcmVlLnJvb3QgJiZcclxuICAgICAgICB1cmxUcmVlLnJvb3QuY2hpbGRyZW4gJiZcclxuICAgICAgICB1cmxUcmVlLnJvb3QuY2hpbGRyZW4ucHJpbWFyeSAmJlxyXG4gICAgICAgIHVybFRyZWUucm9vdC5jaGlsZHJlbi5wcmltYXJ5LnNlZ21lbnRzICYmXHJcbiAgICAgICAgdXJsVHJlZS5yb290LmNoaWxkcmVuLnByaW1hcnkuc2VnbWVudHMubGVuZ3RoID4gMVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsVHJlZS5yb290LmNoaWxkcmVuLnByaW1hcnkuc2VnbWVudHNbMF0ucGF0aF0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnJvdXRlci51cmxdKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzSW50YWtlUm9sZShyb2xlczogUm9sZVtdKSB7XHJcbiAgICBpZiAocm9sZXMgJiYgcm9sZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gcm9sZXMuZmluZEluZGV4KHRoaXMuaXNJbnRha2VSb2xlKSA+IC0xO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0ludGFrZVJvbGUocm9sZTogUm9sZSkge1xyXG4gICAgc3dpdGNoIChyb2xlLnJvbGVJZCkge1xyXG4gICAgICBjYXNlICdPUEEnOlxyXG4gICAgICBjYXNlICdPUFMnOlxyXG4gICAgICBjYXNlICdTT1BTJzpcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cIm9mZmVuZGVyLWhlYWRlci1jb250YWluZXJcIlxyXG4gICpuZ0lmPVwic2VsZWN0ZWRPZmZlbmRlciAmJiBpc0F1dGhlbnRpY2F0ZWRcIj5cclxuICA8ZGl2IGNsYXNzPVwib2ZmZW5kZXItaGVhZGVyLW5hbWUtaXRlbVwiPlxyXG4gICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInN3aXRjaC1vZmZlbmRlclwiIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPlN3aXRjaCBPZmZlbmRlcjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cInNlbGVjdGVkT2ZmZW5kZXJDb250cm9sJFwiPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvZmZlbmRlciBvZiBvZmZlbmRlclF1ZXJ5TGlzdFwiXHJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9mZmVuZGVyXCI+XHJcbiAgICAgICAgICAgICAge3sgb2ZmZW5kZXI/Lm5hbWV9fSAoe3tvZmZlbmRlcj8ub2ZmZW5kZXJJZH19KVxyXG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuICA8ZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm9mZmVuZGVyLWhlYWRlci1pZC1pdGVtXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbS1sYWJlbFwiPlBESUQ6PC9zcGFuPiB7eyBzZWxlY3RlZE9mZmVuZGVyLnBkSWQgfX1cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm9mZmVuZGVyLWhlYWRlci1pZC1pdGVtXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbS1sYWJlbFwiPkNTT1NBIElEOjwvc3Bhbj5cclxuICAgICAge3sgc2VsZWN0ZWRPZmZlbmRlci5vZmZlbmRlcklkIH19XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,15 +1,15 @@
1
- import { Injectable, Inject } from '@angular/core';
2
- import { HttpClient } from '@angular/common/http';
3
- import { map } from 'rxjs/operators';
4
- import { SMART_DATA_SERVICE_URL, } from '../smart-storage/smart-storage-model';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common/http";
7
- export class SmartOffenderHeaderService {
8
- constructor(smartDataServiceUrl, http) {
9
- this.smartDataServiceUrl = smartDataServiceUrl;
10
- this.http = http;
11
- }
12
- getStaffOffenders(staffId) {
1
+ import { Injectable, Inject } from '@angular/core';
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { map } from 'rxjs/operators';
4
+ import { SMART_DATA_SERVICE_URL, } from '../smart-storage/smart-storage-model';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ export class SmartOffenderHeaderService {
8
+ constructor(smartDataServiceUrl, http) {
9
+ this.smartDataServiceUrl = smartDataServiceUrl;
10
+ this.http = http;
11
+ }
12
+ getStaffOffenders(staffId) {
13
13
  const queryString = `
14
14
  query getStaffOffenderList{
15
15
  filterOffenderList(input: {staffId: ${staffId}}) {
@@ -22,20 +22,20 @@ export class SmartOffenderHeaderService {
22
22
  }
23
23
  }
24
24
  }
25
- `;
26
- return this.http
27
- .post(this.smartDataServiceUrl, { query: queryString })
28
- .pipe(map(({ data }) => {
29
- return data.filterOffenderList.data;
30
- }));
31
- }
32
- }
33
- /** @nocollapse */ SmartOffenderHeaderServicefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SmartOffenderHeaderService, deps: [{ token: SMART_DATA_SERVICE_URL }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
34
- /** @nocollapse */ SmartOffenderHeaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SmartOffenderHeaderService });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SmartOffenderHeaderService, decorators: [{
36
- type: Injectable
37
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
38
- type: Inject,
39
- args: [SMART_DATA_SERVICE_URL]
40
- }] }, { type: i1.HttpClient }]; } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtb2ZmZW5kZXItaGVhZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jc21hcnQvbmdjLXNtYXJ0LWNvcmUvc3JjL2xpYi9zbWFydC1vZmZlbmRlci1oZWFkZXIvc21hcnQtb2ZmZW5kZXItaGVhZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsc0JBQXNCLEdBQ3ZCLE1BQU0sc0NBQXNDLENBQUM7OztBQUk5QyxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQzBDLG1CQUFtQixFQUNuRCxJQUFnQjtRQURnQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQUE7UUFDbkQsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN2QixDQUFDO0lBRUosaUJBQWlCLENBQUMsT0FBZTtRQUMvQixNQUFNLFdBQVcsR0FBRzs7a0RBRTBCLE9BQU87Ozs7Ozs7Ozs7S0FVcEQsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixJQUFJLENBQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO2FBQzNELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7OzJJQTNCVSwwQkFBMEIsa0JBRTNCLHNCQUFzQjsrSUFGckIsMEJBQTBCOzRGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20sIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBTTUFSVF9EQVRBX1NFUlZJQ0VfVVJMLFxyXG59IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2Uvc21hcnQtc3RvcmFnZS1tb2RlbCc7XHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU21hcnRPZmZlbmRlckhlYWRlclNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChTTUFSVF9EQVRBX1NFUlZJQ0VfVVJMKSBwcml2YXRlIHNtYXJ0RGF0YVNlcnZpY2VVcmwsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgKSB7fVxyXG5cclxuICBnZXRTdGFmZk9mZmVuZGVycyhzdGFmZklkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEFzc2lnbmVkT2ZmZW5kZXJbXT4ge1xyXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBgXHJcbiAgICAgICAgcXVlcnkgZ2V0U3RhZmZPZmZlbmRlckxpc3R7XHJcbiAgICAgICAgICAgIGZpbHRlck9mZmVuZGVyTGlzdChpbnB1dDoge3N0YWZmSWQ6ICR7c3RhZmZJZH19KSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhIHtcclxuICAgICAgICAgICAgICAgICAgICBvZmZlbmRlcklkXHJcbiAgICAgICAgICAgICAgICAgICAgb2ZmZW5kZXJOYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgcGRJZFxyXG4gICAgICAgICAgICAgICAgICAgIGJpcnRoRGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIGdlbmRlclxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgYDtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55Pih0aGlzLnNtYXJ0RGF0YVNlcnZpY2VVcmwsIHsgcXVlcnk6IHF1ZXJ5U3RyaW5nIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoeyBkYXRhIH0pID0+IHtcclxuICAgICAgICAgIHJldHVybiBkYXRhLmZpbHRlck9mZmVuZGVyTGlzdC5kYXRhO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBc3NpZ25lZE9mZmVuZGVyIHtcclxuICBvZmZlbmRlcklkOiBudW1iZXI7XHJcbiAgb2ZmZW5kZXJOYW1lOiBzdHJpbmc7XHJcbiAgcGRJZDogc3RyaW5nO1xyXG4gIGJpcnRoRGF0ZTogRGF0ZTtcclxuICBnZW5kZXI6IHN0cmluZztcclxufVxyXG4iXX0=
25
+ `;
26
+ return this.http
27
+ .post(this.smartDataServiceUrl, { query: queryString })
28
+ .pipe(map(({ data }) => {
29
+ return data.filterOffenderList.data;
30
+ }));
31
+ }
32
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartOffenderHeaderService, deps: [{ token: SMART_DATA_SERVICE_URL }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
33
+ /** @nocollapse */ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartOffenderHeaderService }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartOffenderHeaderService, decorators: [{
36
+ type: Injectable
37
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
38
+ type: Inject,
39
+ args: [SMART_DATA_SERVICE_URL]
40
+ }] }, { type: i1.HttpClient }] });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtb2ZmZW5kZXItaGVhZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jc21hcnQvbmdjLXNtYXJ0LWNvcmUvc3JjL2xpYi9zbWFydC1vZmZlbmRlci1oZWFkZXIvc21hcnQtb2ZmZW5kZXItaGVhZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsc0JBQXNCLEdBQ3ZCLE1BQU0sc0NBQXNDLENBQUM7OztBQUk5QyxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQzBDLG1CQUFtQixFQUNuRCxJQUFnQjtRQURnQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQUE7UUFDbkQsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN2QixDQUFDO0lBRUosaUJBQWlCLENBQUMsT0FBZTtRQUMvQixNQUFNLFdBQVcsR0FBRzs7a0RBRTBCLE9BQU87Ozs7Ozs7Ozs7S0FVcEQsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixJQUFJLENBQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO2FBQzNELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7a0lBM0JVLDBCQUEwQixrQkFFM0Isc0JBQXNCO3NJQUZyQiwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20sIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBTTUFSVF9EQVRBX1NFUlZJQ0VfVVJMLFxyXG59IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2Uvc21hcnQtc3RvcmFnZS1tb2RlbCc7XHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU21hcnRPZmZlbmRlckhlYWRlclNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChTTUFSVF9EQVRBX1NFUlZJQ0VfVVJMKSBwcml2YXRlIHNtYXJ0RGF0YVNlcnZpY2VVcmwsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgKSB7fVxyXG5cclxuICBnZXRTdGFmZk9mZmVuZGVycyhzdGFmZklkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEFzc2lnbmVkT2ZmZW5kZXJbXT4ge1xyXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBgXHJcbiAgICAgICAgcXVlcnkgZ2V0U3RhZmZPZmZlbmRlckxpc3R7XHJcbiAgICAgICAgICAgIGZpbHRlck9mZmVuZGVyTGlzdChpbnB1dDoge3N0YWZmSWQ6ICR7c3RhZmZJZH19KSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhIHtcclxuICAgICAgICAgICAgICAgICAgICBvZmZlbmRlcklkXHJcbiAgICAgICAgICAgICAgICAgICAgb2ZmZW5kZXJOYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgcGRJZFxyXG4gICAgICAgICAgICAgICAgICAgIGJpcnRoRGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIGdlbmRlclxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgYDtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55Pih0aGlzLnNtYXJ0RGF0YVNlcnZpY2VVcmwsIHsgcXVlcnk6IHF1ZXJ5U3RyaW5nIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoeyBkYXRhIH0pID0+IHtcclxuICAgICAgICAgIHJldHVybiBkYXRhLmZpbHRlck9mZmVuZGVyTGlzdC5kYXRhO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBc3NpZ25lZE9mZmVuZGVyIHtcclxuICBvZmZlbmRlcklkOiBudW1iZXI7XHJcbiAgb2ZmZW5kZXJOYW1lOiBzdHJpbmc7XHJcbiAgcGRJZDogc3RyaW5nO1xyXG4gIGJpcnRoRGF0ZTogRGF0ZTtcclxuICBnZW5kZXI6IHN0cmluZztcclxufVxyXG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/router";
5
+ export class SmartOffenderRedirectGuard {
6
+ constructor(router) {
7
+ this.router = router;
8
+ }
9
+ canActivate(route, state) {
10
+ const targetRoute = route.data['routeTo'];
11
+ const queryParams = route.parent?.queryParams;
12
+ if (targetRoute) {
13
+ this.router.navigate([targetRoute], { queryParams: queryParams });
14
+ return false;
15
+ }
16
+ return true;
17
+ }
18
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartOffenderRedirectGuard, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
19
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartOffenderRedirectGuard, providedIn: 'root' }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartOffenderRedirectGuard, decorators: [{
22
+ type: Injectable,
23
+ args: [{
24
+ providedIn: 'root'
25
+ }]
26
+ }], ctorParameters: () => [{ type: i1.Router }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtb2ZmZW5kZXItcmVkaXJlY3QuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jc21hcnQvbmdjLXNtYXJ0LWNvcmUvc3JjL2xpYi9zbWFydC1vZmZlbmRlci1oZWFkZXIvc21hcnQtb2ZmZW5kZXItcmVkaXJlY3QuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQStDLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFLdEYsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7SUFFdEMsV0FBVyxDQUNULEtBQTZCLEVBQzdCLEtBQTBCO1FBRTFCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUM7UUFDOUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDbEUsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO2tJQWRVLDBCQUEwQjtzSUFBMUIsMEJBQTBCLGNBRnpCLE1BQU07OzRGQUVQLDBCQUEwQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlclN0YXRlU25hcHNob3QsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydE9mZmVuZGVyUmVkaXJlY3RHdWFyZCAge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHt9XHJcblxyXG4gIGNhbkFjdGl2YXRlKFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdGFyZ2V0Um91dGUgPSByb3V0ZS5kYXRhWydyb3V0ZVRvJ107XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHJvdXRlLnBhcmVudD8ucXVlcnlQYXJhbXM7XHJcbiAgICBpZiAodGFyZ2V0Um91dGUpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RhcmdldFJvdXRlXSwgeyBxdWVyeVBhcmFtczogcXVlcnlQYXJhbXMgfSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,25 +1,25 @@
1
- import { Injectable } from '@angular/core';
2
- import { SmartStaffOffenderOptionsService } from './smart-staff-offender-options.service';
3
- import { map } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./smart-staff-offender-options.service";
6
- export class SmartStaffOffenderOptionsResolverService {
7
- constructor(offenderService) {
8
- this.offenderService = offenderService;
9
- }
10
- resolve() {
11
- return this.offenderService.getOffenderListOptions()
12
- .pipe(map(({ data }) => {
13
- return data;
14
- }));
15
- }
16
- }
17
- /** @nocollapse */ SmartStaffOffenderOptionsResolverServicefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SmartStaffOffenderOptionsResolverService, deps: [{ token: i1.SmartStaffOffenderOptionsService }], target: i0.ɵɵFactoryTarget.Injectable });
18
- /** @nocollapse */ SmartStaffOffenderOptionsResolverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SmartStaffOffenderOptionsResolverService, providedIn: 'root' });
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SmartStaffOffenderOptionsResolverService, decorators: [{
20
- type: Injectable,
21
- args: [{
22
- providedIn: 'root',
23
- }]
24
- }], ctorParameters: function () { return [{ type: i1.SmartStaffOffenderOptionsService }]; } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc3RhZmYtb2ZmZW5kZXItb3B0aW9ucy1yZXNvbHZlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3NtYXJ0L25nYy1zbWFydC1jb3JlL3NyYy9saWIvc21hcnQtc3RhZmYtb2ZmZW5kZXItb3B0aW9ucy9zbWFydC1zdGFmZi1vZmZlbmRlci1vcHRpb25zLXJlc29sdmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUV6RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUtyQyxNQUFNLE9BQU8sd0NBQXdDO0lBQ2pELFlBQW9CLGVBQWlEO1FBQWpELG9CQUFlLEdBQWYsZUFBZSxDQUFrQztJQUFHLENBQUM7SUFDekUsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRTthQUNuRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7eUpBVFEsd0NBQXdDOzZKQUF4Qyx3Q0FBd0MsY0FGdkMsTUFBTTs0RkFFUCx3Q0FBd0M7a0JBSHBELFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZXNvbHZlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU21hcnRTdGFmZk9mZmVuZGVyT3B0aW9uc1NlcnZpY2V9IGZyb20gJy4vc21hcnQtc3RhZmYtb2ZmZW5kZXItb3B0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRTdGFmZk9mZmVuZGVyT3B0aW9uc1Jlc29sdmVyU2VydmljZSBpbXBsZW1lbnRzIFJlc29sdmU8T2JzZXJ2YWJsZTxhbnk+PiB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9mZmVuZGVyU2VydmljZTogU21hcnRTdGFmZk9mZmVuZGVyT3B0aW9uc1NlcnZpY2UpIHt9XHJcbiAgICByZXNvbHZlKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5vZmZlbmRlclNlcnZpY2UuZ2V0T2ZmZW5kZXJMaXN0T3B0aW9ucygpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoeyBkYXRhIH0pID0+IHtcclxuICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuIl19
1
+ import { Injectable } from '@angular/core';
2
+ import { SmartStaffOffenderOptionsService } from './smart-staff-offender-options.service';
3
+ import { map } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./smart-staff-offender-options.service";
6
+ export class SmartStaffOffenderOptionsResolverService {
7
+ constructor(offenderService) {
8
+ this.offenderService = offenderService;
9
+ }
10
+ resolve() {
11
+ return this.offenderService.getOffenderListOptions()
12
+ .pipe(map(({ data }) => {
13
+ return data;
14
+ }));
15
+ }
16
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartStaffOffenderOptionsResolverService, deps: [{ token: i1.SmartStaffOffenderOptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
17
+ /** @nocollapse */ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartStaffOffenderOptionsResolverService, providedIn: 'root' }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartStaffOffenderOptionsResolverService, decorators: [{
20
+ type: Injectable,
21
+ args: [{
22
+ providedIn: 'root',
23
+ }]
24
+ }], ctorParameters: () => [{ type: i1.SmartStaffOffenderOptionsService }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc3RhZmYtb2ZmZW5kZXItb3B0aW9ucy1yZXNvbHZlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3NtYXJ0L25nYy1zbWFydC1jb3JlL3NyYy9saWIvc21hcnQtc3RhZmYtb2ZmZW5kZXItb3B0aW9ucy9zbWFydC1zdGFmZi1vZmZlbmRlci1vcHRpb25zLXJlc29sdmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUV6RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUtyQyxNQUFNLE9BQU8sd0NBQXdDO0lBQ2pELFlBQW9CLGVBQWlEO1FBQWpELG9CQUFlLEdBQWYsZUFBZSxDQUFrQztJQUFHLENBQUM7SUFDekUsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRTthQUNuRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztrSUFUUSx3Q0FBd0M7c0lBQXhDLHdDQUF3QyxjQUZ2QyxNQUFNOzs0RkFFUCx3Q0FBd0M7a0JBSHBELFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgU21hcnRTdGFmZk9mZmVuZGVyT3B0aW9uc1NlcnZpY2V9IGZyb20gJy4vc21hcnQtc3RhZmYtb2ZmZW5kZXItb3B0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRTdGFmZk9mZmVuZGVyT3B0aW9uc1Jlc29sdmVyU2VydmljZSAge1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBvZmZlbmRlclNlcnZpY2U6IFNtYXJ0U3RhZmZPZmZlbmRlck9wdGlvbnNTZXJ2aWNlKSB7fVxyXG4gICAgcmVzb2x2ZSgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMub2ZmZW5kZXJTZXJ2aWNlLmdldE9mZmVuZGVyTGlzdE9wdGlvbnMoKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHsgZGF0YSB9KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiJdfQ==
@@ -0,0 +1,78 @@
1
+ import { Component } from '@angular/core';
2
+ import { SmartStaffOffenderOptionsService } from './smart-staff-offender-options.service';
3
+ import { UntypedFormGroup, UntypedFormControl, } from '@angular/forms';
4
+ import { ActivatedRoute } from '@angular/router';
5
+ import { XdmService } from '../smart-storage/xdm.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/router";
8
+ import * as i2 from "./smart-staff-offender-options.service";
9
+ import * as i3 from "../smart-storage/xdm.service";
10
+ import * as i4 from "@angular/common";
11
+ import * as i5 from "@angular/material/button";
12
+ import * as i6 from "@angular/material/card";
13
+ import * as i7 from "@angular/material/checkbox";
14
+ import * as i8 from "@angular/forms";
15
+ export class SmartStaffOffenderOptionsComponent {
16
+ constructor(route, offenderService, xdmService) {
17
+ this.route = route;
18
+ this.offenderService = offenderService;
19
+ this.xdmService = xdmService;
20
+ this.offenderListOptions = [];
21
+ }
22
+ ngOnInit() {
23
+ const routData = this.route.snapshot.data;
24
+ this.loginStaff = routData.loginStaff;
25
+ this.offenderListOptions = routData.selectedOffenderResolverService;
26
+ this.frmGroup = this.createForm();
27
+ this.offenderService.getStaffOffenderListOptions(this.loginStaff.staffId).subscribe(data => {
28
+ this.fillForm(data);
29
+ });
30
+ }
31
+ fillForm(data) {
32
+ if (data) {
33
+ const offenderListOptionsFg = this.frmGroup.get('offenderListOptions');
34
+ data.forEach(element => {
35
+ offenderListOptionsFg.get(element.offenderListOptionId).setValue(true);
36
+ });
37
+ }
38
+ }
39
+ createForm() {
40
+ const offenderListOptionsFg = new UntypedFormGroup({});
41
+ this.offenderListOptions.forEach((dt, i) => {
42
+ offenderListOptionsFg.addControl(dt.offenderListOptionId, new UntypedFormControl(false));
43
+ });
44
+ return new UntypedFormGroup({
45
+ offenderListOptions: offenderListOptionsFg,
46
+ });
47
+ }
48
+ onSave() {
49
+ const data = {
50
+ options: [],
51
+ staffId: this.loginStaff.staffId,
52
+ modifiedBy: this.loginStaff.staffId
53
+ };
54
+ const offenderListOptionsVal = this.frmGroup.get('offenderListOptions').value;
55
+ const keys = Object.keys(offenderListOptionsVal);
56
+ keys.forEach(key => {
57
+ if (offenderListOptionsVal[key]) {
58
+ data.options.push({ 'offenderListOptionId': key });
59
+ }
60
+ });
61
+ this.offenderService.saveStaffOffenderListOptionsData(data).subscribe(rtrDatea => {
62
+ if (rtrDatea.message) {
63
+ this.offenderService.showMessage(rtrDatea.message);
64
+ }
65
+ else {
66
+ this.offenderService.showMessage('Saved successfully');
67
+ this.xdmService.refreshLoginStaffOptions();
68
+ }
69
+ });
70
+ }
71
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartStaffOffenderOptionsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.SmartStaffOffenderOptionsService }, { token: i3.XdmService }], target: i0.ɵɵFactoryTarget.Component }); }
72
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartStaffOffenderOptionsComponent, selector: "lib-smart-staff-offender-options", ngImport: i0, template: "<form class=\"main-form\" [formGroup]=\"frmGroup\">\r\n <mat-card appearance=\"outlined\" role=\"group\">\r\n <mat-card-content>\r\n <div formGroupName=\"offenderListOptions\">\r\n <div style=\"float:left;\">\r\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\">\r\n <mat-checkbox *ngIf=\"i%2!=0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\r\n {{offenderListOption.name}}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n <div>\r\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\" >\r\n <mat-checkbox *ngIf=\"i%2==0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\r\n {{offenderListOption.name}}\r\n </mat-checkbox> \r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n <div align=\"center\">\r\n <button mat-raised-button color=\"accent\" (click)=\"onSave()\">Save</button>\r\n </div>\r\n </mat-card>\r\n </form>\r\n ", styles: [""], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }] }); }
73
+ }
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartStaffOffenderOptionsComponent, decorators: [{
75
+ type: Component,
76
+ args: [{ selector: 'lib-smart-staff-offender-options', template: "<form class=\"main-form\" [formGroup]=\"frmGroup\">\r\n <mat-card appearance=\"outlined\" 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 " }]
77
+ }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.SmartStaffOffenderOptionsService }, { type: i3.XdmService }] });
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc3RhZmYtb2ZmZW5kZXItb3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jc21hcnQvbmdjLXNtYXJ0LWNvcmUvc3JjL2xpYi9zbWFydC1zdGFmZi1vZmZlbmRlci1vcHRpb25zL3NtYXJ0LXN0YWZmLW9mZmVuZGVyLW9wdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3NtYXJ0L25nYy1zbWFydC1jb3JlL3NyYy9saWIvc21hcnQtc3RhZmYtb2ZmZW5kZXItb3B0aW9ucy9zbWFydC1zdGFmZi1vZmZlbmRlci1vcHRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDekYsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsR0FJbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsY0FBYyxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBQyxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7O0FBT3pELE1BQU0sT0FBTyxrQ0FBa0M7SUFJN0MsWUFDVSxLQUFxQixFQUNyQixlQUFpRCxFQUNqRCxVQUFzQjtRQUZ0QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixvQkFBZSxHQUFmLGVBQWUsQ0FBa0M7UUFDakQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUxoQyx3QkFBbUIsR0FBZSxFQUFFLENBQUM7SUFNakMsQ0FBQztJQUVMLFFBQVE7UUFDTixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFR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b21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTbWFydFN0YWZmT2ZmZW5kZXJPcHRpb25zU2VydmljZX0gZnJvbSAnLi9zbWFydC1zdGFmZi1vZmZlbmRlci1vcHRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyAgRm9ybUJ1aWxkZXIsXHJcbiAgVW50eXBlZEZvcm1Hcm91cCxcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgVmFsaWRhdG9ycyxcclxuICBWYWxpZGF0b3JGbixcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBMb2dpblN0YWZmIH0gZnJvbSAnLi4vc21hcnQtc3RvcmFnZS9zbWFydC1zdG9yYWdlLW1vZGVsJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFhkbVNlcnZpY2V9IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2UveGRtLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItc21hcnQtc3RhZmYtb2ZmZW5kZXItb3B0aW9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LXN0YWZmLW9mZmVuZGVyLW9wdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0LXN0YWZmLW9mZmVuZGVyLW9wdGlvbnMuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydFN0YWZmT2ZmZW5kZXJPcHRpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBsb2dpblN0YWZmOiBMb2dpblN0YWZmO1xyXG4gIG9mZmVuZGVyTGlzdE9wdGlvbnM6IEFycmF5PGFueT4gPSBbXTtcclxuICBmcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBvZmZlbmRlclNlcnZpY2U6IFNtYXJ0U3RhZmZPZmZlbmRlck9wdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB4ZG1TZXJ2aWNlOiBYZG1TZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zdCByb3V0RGF0YSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YTtcclxuICAgIHRoaXMubG9naW5TdGFmZiA9IHJvdXREYXRhLmxvZ2luU3RhZmY7XHJcbiAgICB0aGlzLm9mZmVuZGVyTGlzdE9wdGlvbnMgPSByb3V0RGF0YS5zZWxlY3RlZE9mZmVuZGVyUmVzb2x2ZXJTZXJ2aWNlO1xyXG4gICAgdGhpcy5mcm1Hcm91cCA9IHRoaXMuY3JlYXRlRm9ybSgpO1xyXG4gICAgdGhpcy5vZmZlbmRlclNlcnZpY2UuZ2V0U3RhZmZPZmZlbmRlckxpc3RPcHRpb25zKHRoaXMubG9naW5TdGFmZi5zdGFmZklkKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuZmlsbEZvcm0oZGF0YSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsbEZvcm0oZGF0YSkge1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgY29uc3Qgb2ZmZW5kZXJMaXN0T3B0aW9uc0ZnID0gIHRoaXMuZnJtR3JvdXAuZ2V0KCdvZmZlbmRlckxpc3RPcHRpb25zJyk7XHJcbiAgICAgIGRhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBvZmZlbmRlckxpc3RPcHRpb25zRmcuZ2V0KGVsZW1lbnQub2ZmZW5kZXJMaXN0T3B0aW9uSWQpLnNldFZhbHVlKHRydWUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlRm9ybSgpIHtcclxuICAgIGNvbnN0IG9mZmVuZGVyTGlzdE9wdGlvbnNGZyA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub2ZmZW5kZXJMaXN0T3B0aW9ucy5mb3JFYWNoKCAoZHQsIGkpID0+IHtcclxuICAgICAgb2ZmZW5kZXJMaXN0T3B0aW9uc0ZnLmFkZENvbnRyb2woZHQub2ZmZW5kZXJMaXN0T3B0aW9uSWQsIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZmFsc2UpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XHJcbiAgICAgIG9mZmVuZGVyTGlzdE9wdGlvbnM6IG9mZmVuZGVyTGlzdE9wdGlvbnNGZyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlKCkge1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgb3B0aW9uczogW10sXHJcbiAgICAgIHN0YWZmSWQ6IHRoaXMubG9naW5TdGFmZi5zdGFmZklkLFxyXG4gICAgICBtb2RpZmllZEJ5OiB0aGlzLmxvZ2luU3RhZmYuc3RhZmZJZFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvZmZlbmRlckxpc3RPcHRpb25zVmFsID0gdGhpcy5mcm1Hcm91cC5nZXQoJ29mZmVuZGVyTGlzdE9wdGlvbnMnKS52YWx1ZTtcclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvZmZlbmRlckxpc3RPcHRpb25zVmFsKTtcclxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICBpZiAob2ZmZW5kZXJMaXN0T3B0aW9uc1ZhbFtrZXldKSB7XHJcbiAgICAgICAgZGF0YS5vcHRpb25zLnB1c2goeydvZmZlbmRlckxpc3RPcHRpb25JZCc6IGtleX0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9mZmVuZGVyU2VydmljZS5zYXZlU3RhZmZPZmZlbmRlckxpc3RPcHRpb25zRGF0YShkYXRhKS5zdWJzY3JpYmUocnRyRGF0ZWE9PntcclxuICAgICAgaWYgKHJ0ckRhdGVhLm1lc3NhZ2UpIHtcclxuICAgICAgICB0aGlzLm9mZmVuZGVyU2VydmljZS5zaG93TWVzc2FnZShydHJEYXRlYS5tZXNzYWdlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm9mZmVuZGVyU2VydmljZS5zaG93TWVzc2FnZSgnU2F2ZWQgc3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgICAgICAgdGhpcy54ZG1TZXJ2aWNlLnJlZnJlc2hMb2dpblN0YWZmT3B0aW9ucygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxmb3JtIGNsYXNzPVwibWFpbi1mb3JtXCIgW2Zvcm1Hcm91cF09XCJmcm1Hcm91cFwiPlxyXG4gIDxtYXQtY2FyZCBhcHBlYXJhbmNlPVwib3V0bGluZWRcIiByb2xlPVwiZ3JvdXBcIj5cclxuICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgIDxkaXYgZm9ybUdyb3VwTmFtZT1cIm9mZmVuZGVyTGlzdE9wdGlvbnNcIj5cclxuICAgICAgPGRpdiAgc3R5bGU9XCJmbG9hdDpsZWZ0O1wiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9mZmVuZGVyTGlzdE9wdGlvbiBvZiBvZmZlbmRlckxpc3RPcHRpb25zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8bWF0LWNoZWNrYm94ICpuZ0lmPVwiaSUyIT0wXCIgY29sb3I9XCJwcmltYXJ5XCIgZm9ybUNvbnRyb2xOYW1lPVwie3tvZmZlbmRlckxpc3RPcHRpb24ub2ZmZW5kZXJMaXN0T3B0aW9uSWR9fVwiPlxyXG4gICAgICAgICAgICB7e29mZmVuZGVyTGlzdE9wdGlvbi5uYW1lfX1cclxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvZmZlbmRlckxpc3RPcHRpb24gb2Ygb2ZmZW5kZXJMaXN0T3B0aW9uczsgbGV0IGkgPSBpbmRleFwiID5cclxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCJpJTI9PTBcIiBjb2xvcj1cInByaW1hcnlcIiBmb3JtQ29udHJvbE5hbWU9XCJ7e29mZmVuZGVyTGlzdE9wdGlvbi5vZmZlbmRlckxpc3RPcHRpb25JZH19XCI+XHJcbiAgICAgICAgICAgIHt7b2ZmZW5kZXJMaXN0T3B0aW9uLm5hbWV9fVxyXG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+IFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPGRpdiBhbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJvblNhdmUoKVwiPlNhdmU8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgPC9tYXQtY2FyZD5cclxuICA8L2Zvcm0+XHJcbiAgIl19
@@ -0,0 +1,132 @@
1
+ import { Injectable, Inject } from '@angular/core';
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { map } from 'rxjs/operators';
4
+ import { MatSnackBar } from '@angular/material/snack-bar';
5
+ import { SMART_DATA_SERVICE_URL } from '../smart-storage/smart-storage-model';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common/http";
8
+ import * as i2 from "@angular/material/snack-bar";
9
+ export class SmartStaffOffenderOptionsService {
10
+ constructor(http, matSnackBar, serviceApiUrl) {
11
+ this.http = http;
12
+ this.matSnackBar = matSnackBar;
13
+ this.serviceApiUrl = serviceApiUrl;
14
+ }
15
+ showMessage(message) {
16
+ this.matSnackBar.open(message, null, {
17
+ duration: 2000,
18
+ });
19
+ }
20
+ convertEmptyToNull(jsonObject) {
21
+ if (!jsonObject) {
22
+ return;
23
+ }
24
+ if (jsonObject instanceof Array) {
25
+ jsonObject.forEach((obj) => {
26
+ this.convertEmptyToNull(obj);
27
+ });
28
+ }
29
+ const keys = Object.keys(jsonObject);
30
+ keys.forEach((key) => {
31
+ if (typeof jsonObject[key] === 'object') {
32
+ this.convertEmptyToNull(jsonObject[key]);
33
+ }
34
+ else if (typeof jsonObject[key] === 'string' &&
35
+ jsonObject[key].trim() === '') {
36
+ jsonObject[key] = null;
37
+ }
38
+ });
39
+ }
40
+ getGraphQueryData(queryName, queryString) {
41
+ return this.http.post(this.serviceApiUrl, { query: queryString }).pipe(map(({ data }) => {
42
+ return data[queryName];
43
+ }));
44
+ }
45
+ getOffenderListOptions() {
46
+ const queryString = `{findOffenderListOptions(input:{
47
+ where:{
48
+ deactivatedDate: null
49
+ }
50
+ }){
51
+ data{
52
+ offenderListOptionId
53
+ name
54
+ serviceApiFieldName
55
+ }
56
+ } }`;
57
+ return this.http.post(this.serviceApiUrl, { query: queryString }).pipe(map(({ data }) => {
58
+ return data['findOffenderListOptions'];
59
+ }));
60
+ }
61
+ getStaffOffenderListOptions(staffId) {
62
+ const queryString = `{findStaffOffenderListOptions(input:{
63
+ where:{
64
+ staffId: ${staffId}
65
+ }
66
+ }){
67
+ data{
68
+ offenderListOptionId
69
+ }
70
+ } }`;
71
+ return this.http.post(this.serviceApiUrl, { query: queryString }).pipe(map(({ data }) => {
72
+ return data.findStaffOffenderListOptions.data;
73
+ }));
74
+ }
75
+ saveStaffOffenderListOptionsData(dataToSave) {
76
+ //}: Observable<any> {
77
+ // this.convertEmptyToNull(dataToSave);
78
+ const queryName = 'upsertStaffOffenderListOption';
79
+ const query = `mutation {
80
+ upsertStaffOffenderListOption(input: ${this.convertToString(dataToSave)}) {
81
+ message
82
+ }
83
+ }`;
84
+ return this.http.post(this.serviceApiUrl, { query });
85
+ /*.pipe(
86
+ map(({ data }) => {
87
+ return data[queryName];
88
+ }));*/
89
+ }
90
+ convertToString(obj) {
91
+ let result = '';
92
+ if (!obj) {
93
+ return result;
94
+ }
95
+ if (obj instanceof Array) {
96
+ result += ' [';
97
+ obj.forEach((eObj) => {
98
+ result += this.convertToString(eObj);
99
+ });
100
+ result += '],';
101
+ }
102
+ else {
103
+ result += '{';
104
+ const keys = Object.keys(obj);
105
+ keys.forEach((key) => {
106
+ if (typeof obj[key] === 'object') {
107
+ result += key + ':' + this.convertToString(obj[key]);
108
+ }
109
+ else {
110
+ if (isNaN(obj[key])) {
111
+ result += key + ':"' + obj[key] + '",';
112
+ }
113
+ else {
114
+ result += key + ':' + obj[key] + ',';
115
+ }
116
+ }
117
+ });
118
+ result = result.substring(0, result.length - 1);
119
+ result += '},';
120
+ }
121
+ return result;
122
+ }
123
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartStaffOffenderOptionsService, deps: [{ token: i1.HttpClient }, { token: i2.MatSnackBar }, { token: SMART_DATA_SERVICE_URL }], target: i0.ɵɵFactoryTarget.Injectable }); }
124
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartStaffOffenderOptionsService }); }
125
+ }
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartStaffOffenderOptionsService, decorators: [{
127
+ type: Injectable
128
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.MatSnackBar }, { type: undefined, decorators: [{
129
+ type: Inject,
130
+ args: [SMART_DATA_SERVICE_URL]
131
+ }] }] });
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc3RhZmYtb2ZmZW5kZXItb3B0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3NtYXJ0L25nYy1zbWFydC1jb3JlL3NyYy9saWIvc21hcnQtc3RhZmYtb2ZmZW5kZXItb3B0aW9ucy9zbWFydC1zdGFmZi1vZmZlbmRlci1vcHRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7QUFHOUUsTUFBTSxPQUFPLGdDQUFnQztJQUMzQyxZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ1EsYUFBYTtRQUY3QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ1Esa0JBQWEsR0FBYixhQUFhLENBQUE7SUFDcEQsQ0FBQztJQUVHLFdBQVcsQ0FBQyxPQUFPO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7WUFDbkMsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsVUFBZ0I7UUFDekMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxVQUFVLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDaEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dC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QUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgU01BUlRfREFUQV9TRVJWSUNFX1VSTCB9IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2Uvc21hcnQtc3RvcmFnZS1tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTbWFydFN0YWZmT2ZmZW5kZXJPcHRpb25zU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIG1hdFNuYWNrQmFyOiBNYXRTbmFja0JhcixcclxuICAgIEBJbmplY3QoU01BUlRfREFUQV9TRVJWSUNFX1VSTCkgcHJpdmF0ZSBzZXJ2aWNlQXBpVXJsLFxyXG4gICkge31cclxuXHJcbiAgcHVibGljIHNob3dNZXNzYWdlKG1lc3NhZ2UpIHtcclxuICAgIHRoaXMubWF0U25hY2tCYXIub3BlbihtZXNzYWdlLCBudWxsLCB7XHJcbiAgICAgIGR1cmF0aW9uOiAyMDAwLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnZlcnRFbXB0eVRvTnVsbChqc29uT2JqZWN0OiBKU09OKSB7XHJcbiAgICBpZiAoIWpzb25PYmplY3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChqc29uT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAganNvbk9iamVjdC5mb3JFYWNoKChvYmopID0+IHtcclxuICAgICAgICB0aGlzLmNvbnZlcnRFbXB0eVRvTnVsbChvYmopO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoanNvbk9iamVjdCk7XHJcbiAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICBpZiAodHlwZW9mIGpzb25PYmplY3Rba2V5XSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICB0aGlzLmNvbnZlcnRFbXB0eVRvTnVsbChqc29uT2JqZWN0W2tleV0pO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHR5cGVvZiBqc29uT2JqZWN0W2tleV0gPT09ICdzdHJpbmcnICYmXHJcbiAgICAgICAganNvbk9iamVjdFtrZXldLnRyaW0oKSA9PT0gJydcclxuICAgICAgKSB7XHJcbiAgICAgICAganNvbk9iamVjdFtrZXldID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEdyYXBoUXVlcnlEYXRhKFxyXG4gICAgcXVlcnlOYW1lOiBzdHJpbmcsXHJcbiAgICBxdWVyeVN0cmluZzogc3RyaW5nLFxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih0aGlzLnNlcnZpY2VBcGlVcmwsIHsgcXVlcnk6IHF1ZXJ5U3RyaW5nIH0pLnBpcGUoXHJcbiAgICAgIG1hcCgoeyBkYXRhIH0pID0+IHtcclxuICAgICAgICByZXR1cm4gZGF0YVtxdWVyeU5hbWVdO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRPZmZlbmRlckxpc3RPcHRpb25zKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IGB7ZmluZE9mZmVuZGVyTGlzdE9wdGlvbnMoaW5wdXQ6e1xyXG4gICAgICB3aGVyZTp7XHJcbiAgICAgICAgZGVhY3RpdmF0ZWREYXRlOiBudWxsXHJcbiAgICAgIH1cclxuICAgIH0pe1xyXG4gICAgICBkYXRhe1xyXG4gICAgICAgIG9mZmVuZGVyTGlzdE9wdGlvbklkXHJcbiAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICBzZXJ2aWNlQXBpRmllbGROYW1lXHJcbiAgICAgIH1cclxuICB9IH1gO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHRoaXMuc2VydmljZUFwaVVybCwgeyBxdWVyeTogcXVlcnlTdHJpbmcgfSkucGlwZShcclxuICAgICAgbWFwKCh7IGRhdGEgfSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBkYXRhWydmaW5kT2ZmZW5kZXJMaXN0T3B0aW9ucyddO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U3RhZmZPZmZlbmRlckxpc3RPcHRpb25zKHN0YWZmSWQ6IG51bWJlcik6IE9ic2VydmFibGU8QXJyYXk8YW55Pj4ge1xyXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBge2ZpbmRTdGFmZk9mZmVuZGVyTGlzdE9wdGlvbnMoaW5wdXQ6e1xyXG4gICAgICB3aGVyZTp7XHJcbiAgICAgICAgc3RhZmZJZDogJHtzdGFmZklkfVxyXG4gICAgICB9XHJcbiAgICB9KXtcclxuICAgICAgZGF0YXtcclxuICAgICAgICBvZmZlbmRlckxpc3RPcHRpb25JZFxyXG4gICAgICB9XHJcbiAgfSB9YDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHRoaXMuc2VydmljZUFwaVVybCwgeyBxdWVyeTogcXVlcnlTdHJpbmcgfSkucGlwZShcclxuICAgICAgbWFwKCh7IGRhdGEgfSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBkYXRhLmZpbmRTdGFmZk9mZmVuZGVyTGlzdE9wdGlvbnMuZGF0YTtcclxuICAgICAgfSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVN0YWZmT2ZmZW5kZXJMaXN0T3B0aW9uc0RhdGEoZGF0YVRvU2F2ZTogYW55KSB7XHJcbiAgICAvL306IE9ic2VydmFibGU8YW55PiB7XHJcblxyXG4gICAgLy8gdGhpcy5jb252ZXJ0RW1wdHlUb051bGwoZGF0YVRvU2F2ZSk7XHJcbiAgICBjb25zdCBxdWVyeU5hbWUgPSAndXBzZXJ0U3RhZmZPZmZlbmRlckxpc3RPcHRpb24nO1xyXG4gICAgY29uc3QgcXVlcnkgPSBgbXV0YXRpb24gIHtcclxuICAgICAgICAgICAgdXBzZXJ0U3RhZmZPZmZlbmRlckxpc3RPcHRpb24oaW5wdXQ6ICR7dGhpcy5jb252ZXJ0VG9TdHJpbmcoXHJcbiAgICAgICAgICAgICAgZGF0YVRvU2F2ZSxcclxuICAgICAgICAgICAgKX0pIHtcclxuICAgICAgICAgICAgbWVzc2FnZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1gO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHRoaXMuc2VydmljZUFwaVVybCwgeyBxdWVyeSB9KTtcclxuICAgIC8qLnBpcGUoXHJcbiAgICAgIG1hcCgoeyBkYXRhIH0pID0+IHtcclxuICAgICAgICByZXR1cm4gZGF0YVtxdWVyeU5hbWVdO1xyXG4gICAgICB9KSk7Ki9cclxuICB9XHJcblxyXG4gIGNvbnZlcnRUb1N0cmluZyhvYmopOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdCA9ICcnO1xyXG5cclxuICAgIGlmICghb2JqKSB7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgIHJlc3VsdCArPSAnIFsnO1xyXG4gICAgICBvYmouZm9yRWFjaCgoZU9iaikgPT4ge1xyXG4gICAgICAgIHJlc3VsdCArPSB0aGlzLmNvbnZlcnRUb1N0cmluZyhlT2JqKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJlc3VsdCArPSAnXSwnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzdWx0ICs9ICd7JztcclxuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XHJcbiAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmpba2V5XSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIHJlc3VsdCArPSBrZXkgKyAnOicgKyB0aGlzLmNvbnZlcnRUb1N0cmluZyhvYmpba2V5XSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChpc05hTihvYmpba2V5XSkpIHtcclxuICAgICAgICAgICAgcmVzdWx0ICs9IGtleSArICc6XCInICsgb2JqW2tleV0gKyAnXCIsJztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCArPSBrZXkgKyAnOicgKyBvYmpba2V5XSArICcsJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXN1bHQgPSByZXN1bHQuc3Vic3RyaW5nKDAsIHJlc3VsdC5sZW5ndGggLSAxKTtcclxuICAgICAgcmVzdWx0ICs9ICd9LCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxufVxyXG4iXX0=