@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.
- package/{esm2020 → esm2022}/csmart-ngc-smart-core.mjs +4 -4
- package/{esm2020 → esm2022}/lib/ngc-smart-core.module.mjs +98 -98
- package/{esm2020 → esm2022}/lib/smart-auth/smart-access-control-config.mjs +11 -11
- package/esm2022/lib/smart-auth/smart-access-control.directive.mjs +39 -0
- package/esm2022/lib/smart-auth/smart-auth.service.mjs +504 -0
- package/esm2022/lib/smart-auth/smart-authorization-guard.service.mjs +35 -0
- package/{esm2020 → esm2022}/lib/smart-auth/smart-error.component.mjs +37 -37
- package/esm2022/lib/smart-auth/smart-login-staff-resolver.service.mjs +59 -0
- package/esm2022/lib/smart-auth/smart-selected-offender-resolver.service.mjs +60 -0
- package/{esm2020 → esm2022}/lib/smart-navbar/smart-navbar-config.mjs +1 -1
- package/esm2022/lib/smart-navbar/smart-navbar.component.mjs +174 -0
- package/esm2022/lib/smart-navbar/smart-navbar.service.mjs +63 -0
- package/esm2022/lib/smart-offender-header/smart-offender-header.component.mjs +151 -0
- package/{esm2020 → esm2022}/lib/smart-offender-header/smart-offender-header.service.mjs +29 -29
- package/esm2022/lib/smart-offender-header/smart-offender-redirect.guard.mjs +27 -0
- package/{esm2020 → esm2022}/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.mjs +25 -25
- package/esm2022/lib/smart-staff-offender-options/smart-staff-offender-options.component.mjs +78 -0
- package/esm2022/lib/smart-staff-offender-options/smart-staff-offender-options.service.mjs +132 -0
- package/esm2022/lib/smart-storage/smart-storage-model.mjs +30 -0
- package/esm2022/lib/smart-storage/xdm.service.mjs +201 -0
- package/{esm2020 → esm2022}/public-api.mjs +20 -20
- package/{fesm2020 → fesm2022}/csmart-ngc-smart-core.mjs +1467 -1467
- package/{fesm2015 → fesm2022}/csmart-ngc-smart-core.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/ngc-smart-core.module.d.ts +20 -20
- package/lib/smart-auth/smart-access-control-config.d.ts +17 -17
- package/lib/smart-auth/smart-access-control.directive.d.ts +14 -14
- package/lib/smart-auth/smart-auth.service.d.ts +41 -41
- package/lib/smart-auth/smart-authorization-guard.service.d.ts +13 -13
- package/lib/smart-auth/smart-error.component.d.ts +17 -17
- package/lib/smart-auth/smart-login-staff-resolver.service.d.ts +13 -13
- package/lib/smart-auth/smart-selected-offender-resolver.service.d.ts +15 -15
- package/lib/smart-navbar/smart-navbar-config.d.ts +7 -7
- package/lib/smart-navbar/smart-navbar.component.d.ts +42 -42
- package/lib/smart-navbar/smart-navbar.service.d.ts +12 -12
- package/lib/smart-offender-header/smart-offender-header.component.d.ts +32 -32
- package/lib/smart-offender-header/smart-offender-header.service.d.ts +18 -18
- package/lib/smart-offender-header/smart-offender-redirect.guard.d.ts +9 -9
- package/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.d.ts +10 -11
- package/lib/smart-staff-offender-options/smart-staff-offender-options.component.d.ts +22 -22
- package/lib/smart-staff-offender-options/smart-staff-offender-options.service.d.ts +19 -19
- package/lib/smart-storage/smart-storage-model.d.ts +58 -58
- package/lib/smart-storage/xdm.service.d.ts +43 -43
- package/package.json +5 -11
- package/public-api.d.ts +17 -17
- package/esm2020/lib/smart-auth/smart-access-control.directive.mjs +0 -39
- package/esm2020/lib/smart-auth/smart-auth.service.mjs +0 -504
- package/esm2020/lib/smart-auth/smart-authorization-guard.service.mjs +0 -35
- package/esm2020/lib/smart-auth/smart-login-staff-resolver.service.mjs +0 -59
- package/esm2020/lib/smart-auth/smart-selected-offender-resolver.service.mjs +0 -60
- package/esm2020/lib/smart-navbar/smart-navbar.component.mjs +0 -174
- package/esm2020/lib/smart-navbar/smart-navbar.service.mjs +0 -63
- package/esm2020/lib/smart-offender-header/smart-offender-header.component.mjs +0 -151
- package/esm2020/lib/smart-offender-header/smart-offender-redirect.guard.mjs +0 -27
- package/esm2020/lib/smart-staff-offender-options/smart-staff-offender-options.component.mjs +0 -78
- package/esm2020/lib/smart-staff-offender-options/smart-staff-offender-options.service.mjs +0 -132
- package/esm2020/lib/smart-storage/smart-storage-model.mjs +0 -30
- package/esm2020/lib/smart-storage/xdm.service.mjs +0 -201
- package/fesm2015/csmart-ngc-smart-core.mjs +0 -1670
- 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 */
|
|
34
|
-
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
36
|
-
type: Injectable
|
|
37
|
-
}], ctorParameters:
|
|
38
|
-
type: Inject,
|
|
39
|
-
args: [SMART_DATA_SERVICE_URL]
|
|
40
|
-
}] }, { type: i1.HttpClient }]
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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 { this.ɵprov = 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 */
|
|
18
|
-
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
20
|
-
type: Injectable,
|
|
21
|
-
args: [{
|
|
22
|
-
providedIn: 'root',
|
|
23
|
-
}]
|
|
24
|
-
}], ctorParameters:
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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 { this.ɵprov = 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=
|