@csmart/ngc-smart-victim 1.18.7 → 1.18.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. package/karma.conf.js +32 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +6 -22
  4. package/src/lib/caseNote/caseNote.component.css +22 -0
  5. package/src/lib/caseNote/caseNote.component.html +188 -0
  6. package/src/lib/caseNote/caseNote.component.ts +265 -0
  7. package/src/lib/common-dialog/common-dialog.component.css +10 -0
  8. package/src/lib/common-dialog/common-dialog.component.html +23 -0
  9. package/src/lib/common-dialog/common-dialog.component.spec.ts +25 -0
  10. package/src/lib/common-dialog/common-dialog.component.ts +21 -0
  11. package/src/lib/common-dialog/common-dialog.module.ts +22 -0
  12. package/src/lib/common-dialog/common-dialog.service.ts +35 -0
  13. package/src/lib/contact/contact.component.css +22 -0
  14. package/src/lib/contact/contact.component.html +124 -0
  15. package/src/lib/contact/contact.component.ts +176 -0
  16. package/src/lib/email-notification.service.ts +42 -0
  17. package/src/lib/email.services.ts +51 -0
  18. package/src/lib/http.service.ts +34 -0
  19. package/src/lib/intake.service.ts +82 -0
  20. package/src/lib/loader.service.ts +11 -0
  21. package/src/lib/safetyPlan/serviceProvider.component.ts +94 -0
  22. package/src/lib/safetyPlan/victimSafetyPlan.component.css +27 -0
  23. package/src/lib/safetyPlan/victimSafetyPlan.component.html +85 -0
  24. package/src/lib/safetyPlan/victimSafetyPlan.component.ts +178 -0
  25. package/src/lib/safetyPlan/victimSafetyPlanDetail.component.html +234 -0
  26. package/src/lib/safetyPlan/victimSafetyPlanDetail.component.ts +492 -0
  27. package/src/lib/shared/app.shared.module.ts +111 -0
  28. package/src/lib/shared/validators/date.validator.ts +73 -0
  29. package/src/lib/shared/validators/index.ts +1 -0
  30. package/src/lib/smart-victim-delete-confirm.component.ts +35 -0
  31. package/src/lib/smart-victim-detail/smart-victim-detail.component.css +43 -0
  32. package/src/lib/smart-victim-detail/smart-victim-detail.component.html +869 -0
  33. package/src/lib/smart-victim-detail/smart-victim-detail.component.spec.ts +25 -0
  34. package/src/lib/smart-victim-detail/smart-victim-detail.component.ts +1387 -0
  35. package/src/lib/smart-victim.component.css +245 -0
  36. package/src/lib/smart-victim.component.html +132 -0
  37. package/src/lib/smart-victim.component.spec.ts +25 -0
  38. package/src/lib/smart-victim.component.ts +333 -0
  39. package/src/lib/smart-victim.model.ts +301 -0
  40. package/src/lib/smart-victim.module.ts +110 -0
  41. package/src/lib/smart-victim.service.spec.ts +12 -0
  42. package/src/lib/smart-victim.service.ts +557 -0
  43. package/src/lib/victim-routing.module.ts +35 -0
  44. package/{lib/victimSearch/VictimSearchFilter.d.ts → src/lib/victimSearch/VictimSearchFilter.ts} +9 -7
  45. package/src/lib/victimSearch/victimSearchForm.component.html +35 -0
  46. package/src/lib/victimSearch/victimSearchForm.component.ts +41 -0
  47. package/{public-api.d.ts → src/public-api.ts} +12 -7
  48. package/src/test.ts +16 -0
  49. package/tsconfig.lib.json +36 -0
  50. package/tsconfig.spec.json +17 -0
  51. package/tslint.json +17 -0
  52. package/esm2022/csmart-ngc-smart-victim.mjs +0 -5
  53. package/esm2022/lib/caseNote/caseNote.component.mjs +0 -194
  54. package/esm2022/lib/common-dialog/common-dialog.component.mjs +0 -23
  55. package/esm2022/lib/common-dialog/common-dialog.module.mjs +0 -34
  56. package/esm2022/lib/common-dialog/common-dialog.service.mjs +0 -33
  57. package/esm2022/lib/contact/contact.component.mjs +0 -140
  58. package/esm2022/lib/email.services.mjs +0 -42
  59. package/esm2022/lib/intake.service.mjs +0 -57
  60. package/esm2022/lib/safetyPlan/serviceProvider.component.mjs +0 -99
  61. package/esm2022/lib/safetyPlan/victimSafetyPlan.component.mjs +0 -116
  62. package/esm2022/lib/safetyPlan/victimSafetyPlanDetail.component.mjs +0 -340
  63. package/esm2022/lib/shared/app.shared.module.mjs +0 -215
  64. package/esm2022/lib/shared/validators/date.validator.mjs +0 -59
  65. package/esm2022/lib/shared/validators/index.mjs +0 -2
  66. package/esm2022/lib/smart-victim-delete-confirm.component.mjs +0 -44
  67. package/esm2022/lib/smart-victim-detail/smart-victim-detail.component.mjs +0 -1104
  68. package/esm2022/lib/smart-victim.component.mjs +0 -316
  69. package/esm2022/lib/smart-victim.model.mjs +0 -133
  70. package/esm2022/lib/smart-victim.module.mjs +0 -128
  71. package/esm2022/lib/smart-victim.service.mjs +0 -352
  72. package/esm2022/lib/victim-routing.module.mjs +0 -41
  73. package/esm2022/lib/victimSearch/VictimSearchFilter.mjs +0 -3
  74. package/esm2022/lib/victimSearch/victimSearchForm.component.mjs +0 -38
  75. package/esm2022/public-api.mjs +0 -11
  76. package/fesm2022/csmart-ngc-smart-victim.mjs +0 -3263
  77. package/fesm2022/csmart-ngc-smart-victim.mjs.map +0 -1
  78. package/index.d.ts +0 -5
  79. package/lib/caseNote/caseNote.component.d.ts +0 -51
  80. package/lib/common-dialog/common-dialog.component.d.ts +0 -14
  81. package/lib/common-dialog/common-dialog.module.d.ts +0 -8
  82. package/lib/common-dialog/common-dialog.service.d.ts +0 -11
  83. package/lib/contact/contact.component.d.ts +0 -40
  84. package/lib/email.services.d.ts +0 -11
  85. package/lib/intake.service.d.ts +0 -57
  86. package/lib/safetyPlan/serviceProvider.component.d.ts +0 -19
  87. package/lib/safetyPlan/victimSafetyPlan.component.d.ts +0 -54
  88. package/lib/safetyPlan/victimSafetyPlanDetail.component.d.ts +0 -62
  89. package/lib/shared/app.shared.module.d.ts +0 -33
  90. package/lib/shared/validators/date.validator.d.ts +0 -9
  91. package/lib/shared/validators/index.d.ts +0 -1
  92. package/lib/smart-victim-delete-confirm.component.d.ts +0 -12
  93. package/lib/smart-victim-detail/smart-victim-detail.component.d.ts +0 -129
  94. package/lib/smart-victim.component.d.ts +0 -69
  95. package/lib/smart-victim.model.d.ts +0 -205
  96. package/lib/smart-victim.module.d.ts +0 -49
  97. package/lib/smart-victim.service.d.ts +0 -71
  98. package/lib/victim-routing.module.d.ts +0 -7
  99. package/lib/victimSearch/victimSearchForm.component.d.ts +0 -14
@@ -0,0 +1,869 @@
1
+ <mat-card>
2
+ <mat-card-content>
3
+
4
+ <div [formGroup]="victimForm">
5
+
6
+ <mat-tab-group dynamicHeight mat-stretch-tabs>
7
+ <mat-tab label="Victim Detail" >
8
+ <div class='container'>
9
+
10
+ <mat-form-field>
11
+ <mat-label>Is victim a minor?<font color="red">* </font></mat-label>
12
+ <br>
13
+ <mat-radio-group formControlName="minorFlag" (change)="radioMinorChange($event)" [(ngModel)]="editVictim.minorFlag" >
14
+ <mat-radio-button color="primary" [value]="true">Yes</mat-radio-button>&nbsp;
15
+ <mat-radio-button color="primary" [value]="false">No</mat-radio-button>
16
+ </mat-radio-group>
17
+ <input matInput placeholder="" style="display: none">
18
+ <div class="help-block" *ngIf="victimForm.get('minorFlag').errors
19
+ && (victimForm.get('minorFlag').dirty || victimForm.get('minorFlag').touched)">
20
+ <mat-error>If victim a minor field is <strong>required</strong></mat-error>
21
+ </div>
22
+
23
+ </mat-form-field>
24
+
25
+ <mat-form-field>
26
+ <mat-label>Does the Victim have a Victim Advocate or Social Worker with <br>whom CSOSA should maintain contact?<font color="red">* </font></mat-label>
27
+ <br>
28
+ <br>
29
+ <mat-radio-group class = "tp-radio-group" formControlName="victimAdvocateFlag" (change)="radioAdvocateChange($event)" [(ngModel)]="editVictim.victimAdvocateFlag">
30
+ <mat-radio-button color="primary" *ngFor="let item of flagOption" [value]="item.flagOptionYesNoUnknownId">{{item.name}} </mat-radio-button>&nbsp;
31
+ </mat-radio-group>
32
+ <input matInput placeholder="" style="display: none">
33
+ <div class="help-block" *ngIf="victimForm.get('victimAdvocateFlag').errors
34
+ && (victimForm.get('victimAdvocateFlag').dirty || victimForm.get('victimAdvocateFlag').touched)">
35
+ <mat-error>If victim has advocate field is <strong>required</strong></mat-error>
36
+ </div>
37
+ </mat-form-field>
38
+
39
+
40
+ <mat-form-field>
41
+ <mat-label>Victim Currently Under Supervision:</mat-label>
42
+ <mat-select formControlName="underSupervisionFlag" name="supervision" [(ngModel)]="editVictim.underSupervisionFlag" >
43
+ <mat-option *ngFor="let item of flagOption" [value]="item.flagOptionYesNoUnknownId" >
44
+ {{item.name}}</mat-option>
45
+ </mat-select>
46
+ <div class="help-block" *ngIf="victimForm.get('underSupervisionFlag').errors
47
+ && (victimForm.get('underSupervisionFlag').dirty || victimForm.get('underSupervisionFlag').touched)">
48
+ <mat-error>under supervision field is <strong>required</strong></mat-error>
49
+ </div>
50
+ </mat-form-field>
51
+
52
+
53
+ <mat-form-field>
54
+ <mat-label>Relationship to Offender:</mat-label>
55
+ <mat-select formControlName="victimOffenderRelationshipTypeId" [(ngModel)]="editVictim.victimOffenderRelationshipTypeId" >
56
+ <mat-option *ngFor="let item of relationshipTypes" [value]="item.relationshipTypeId">{{item.name}}</mat-option>
57
+ </mat-select>
58
+ <div class="help-block" *ngIf="victimForm.get('victimOffenderRelationshipTypeId').errors
59
+ && (victimForm.get('victimOffenderRelationshipTypeId').dirty || victimForm.get('victimOffenderRelationshipTypeId').touched)">
60
+ <mat-error>relationship is <strong>required</strong></mat-error>
61
+ </div>
62
+ </mat-form-field>
63
+
64
+
65
+ <mat-form-field>
66
+ <mat-label>Victim Last Name:</mat-label>
67
+ <input matInput formControlName="lastName" [(ngModel)]="editVictim.lastName" >
68
+ <div class="help-block" *ngIf="victimForm.get('lastName').errors
69
+ && (victimForm.get('lastName').dirty || victimForm.get('lastName').touched)">
70
+ <mat-error>victim last name is <strong>required</strong></mat-error>
71
+ </div>
72
+ </mat-form-field>
73
+
74
+ <mat-form-field>
75
+ <mat-label>Victim First Name: </mat-label>
76
+ <input matInput formControlName="firstName" [(ngModel)]="editVictim.firstName" >
77
+ <div class="help-block" *ngIf="victimForm.get('firstName').errors
78
+ && (victimForm.get('firstName').dirty || victimForm.get('firstName').touched)">
79
+ <mat-error>victim first name is <strong>required</strong></mat-error>
80
+ </div>
81
+ </mat-form-field>
82
+
83
+ <mat-form-field>
84
+ <mat-label>Victim Middle Name:</mat-label>
85
+ <input matInput formControlName="middleName" [(ngModel)]="editVictim.middleName">
86
+ </mat-form-field>
87
+
88
+ <mat-form-field>
89
+ <mat-label>Victim Prefix:</mat-label>
90
+ <mat-select formControlName="prefixId" [(ngModel)]="editVictim.prefixId">
91
+ <mat-option *ngFor="let item of prefixes" [value]="item.prefixId">{{item.name}}</mat-option>
92
+ </mat-select>
93
+ </mat-form-field>
94
+
95
+ <mat-form-field>
96
+ <mat-label>Victim Suffix:</mat-label>
97
+ <mat-select formControlName="suffixId" [(ngModel)]="editVictim.suffixId">
98
+ <mat-option *ngFor="let item of suffixes" [value]="item.suffixId">{{item.name}}</mat-option>
99
+ </mat-select>
100
+ </mat-form-field>
101
+
102
+ <mat-form-field>
103
+ <mat-label>Victim Gender:</mat-label>
104
+ <mat-select formControlName="genderCode" [(ngModel)]="editVictim.genderCode">
105
+ <mat-option *ngFor="let item of genders" [value]="item.genderCode">{{item.name}}</mat-option>
106
+ </mat-select>
107
+ </mat-form-field>
108
+
109
+ <mat-form-field>
110
+ <mat-label>Date of Birth:</mat-label>
111
+ <input matInput
112
+ [matDatepicker]="victimBirthRef"
113
+ formControlName="birthDate"
114
+ [(ngModel)]="editVictim.birthDate"
115
+ (click)="victimBirthRef.open()"
116
+ (dateChange)="handleDOBChange($event)"
117
+ >
118
+ <mat-datepicker-toggle [for]="victimBirthRef" matSuffix></mat-datepicker-toggle>
119
+ <mat-datepicker #victimBirthRef></mat-datepicker>
120
+ </mat-form-field>
121
+
122
+ <mat-form-field>
123
+ <mat-label>Victim Home Phone:</mat-label>
124
+ <input
125
+ id="tel"
126
+ matInput
127
+ phoneMask
128
+ [preValue]="editVictim.homePhone"
129
+ [phoneControl]="homePhoneControl"
130
+ [formControl]="homePhoneControl"
131
+ maxlength="14"/>
132
+
133
+ <div class="help-block" *ngIf="victimForm.get('homePhone').errors
134
+ && (victimForm.get('homePhone').dirty || victimForm.get('homePhone').touched)">
135
+ <mat-error><strong>Home phone number format is not correct.</strong></mat-error>
136
+ </div>
137
+ </mat-form-field>
138
+
139
+ <mat-form-field >
140
+ <mat-label>Victim Cell Phone:</mat-label>
141
+ <input
142
+ id="tel1"
143
+ matInput
144
+ phoneMask
145
+ [preValue]="editVictim.cellPhone"
146
+ [phoneControl]="cellPhoneControl"
147
+ [formControl]="cellPhoneControl"
148
+ maxlength="14"/>
149
+
150
+ <div class="help-block" *ngIf="victimForm.get('cellPhone').errors
151
+ && (victimForm.get('cellPhone').dirty || victimForm.get('cellPhone').touched)">
152
+ <mat-error><strong>Cell phone number format is not correct.</strong></mat-error>
153
+ </div>
154
+ </mat-form-field>
155
+
156
+
157
+ <mat-form-field >
158
+ <mat-label>Victim Work Phone:</mat-label>
159
+ <input
160
+ id="tel2"
161
+ matInput
162
+ phoneMask
163
+ [preValue]="editVictim.workPhone"
164
+ [phoneControl]="workPhoneControl"
165
+ [formControl]="workPhoneControl"
166
+ maxlength="14"/>
167
+
168
+ <div class="help-block" *ngIf="victimForm.get('workPhone').errors
169
+ && (victimForm.get('workPhone').dirty || victimForm.get('workPhone').touched)">
170
+ <mat-error><strong>Work phone number format is not correct.</strong></mat-error>
171
+ </div>
172
+ </mat-form-field>
173
+
174
+ <mat-form-field >
175
+ <mat-label>Victim Email:</mat-label>
176
+ <input matInput formControlName="email" [(ngModel)]="editVictim.email" >
177
+ <div class="help-block" *ngIf="victimForm.get('email').errors
178
+ && (victimForm.get('email').dirty || victimForm.get('email').touched)">
179
+ <mat-error><strong>victim email format is not correct.</strong></mat-error>
180
+ </div>
181
+ </mat-form-field>
182
+
183
+ <div></div>
184
+ <app-smart-address
185
+ [modifiedBy]="staffId"
186
+ [id]="addressId"
187
+ [outline]="true"
188
+ [showPsa]="true"
189
+ [addressValidators]="addressValidators"
190
+ [readonly]="false"
191
+ (addressIdChange)="onAddressChange($event)"
192
+ #addressComponent >
193
+
194
+ </app-smart-address>
195
+
196
+
197
+ <!-- Docket:
198
+ <div>
199
+ <div *ngFor="let docket of docketlist; let i=index">
200
+ <mat-checkbox >{{docket.docketNumber}}</mat-checkbox>
201
+ </div>
202
+ </div> -->
203
+ <div>
204
+ <mat-checkbox color="primary" formControlName="liveWithOffenderFlag" name="liveWithOffenderFlag" [(ngModel)]="editVictim.liveWithOffenderFlag" (change)="showAddress($event)" >victim live with offender</mat-checkbox>
205
+ <br>
206
+ <mat-checkbox color="primary" formControlName="allowCsosaContactFlag" name="allowCsosaContactFlag" [(ngModel)]="editVictim.allowCsosaContactFlag">victim wants to be contacted by CSOSA</mat-checkbox>
207
+ </div>
208
+
209
+ </div>
210
+
211
+ <mat-card>
212
+ <mat-form-field>
213
+ <mat-label> Children in Common</mat-label>
214
+ <br>
215
+ <mat-radio-group formControlName="commonChildrenFlag" [(ngModel)]="editVictim.commonChildrenFlag" (change)="radioCicChange($event)">
216
+ <mat-radio-button color="primary" [value]="true">Yes</mat-radio-button>&nbsp;
217
+ <mat-radio-button color="primary" [value]="false">No</mat-radio-button>
218
+ </mat-radio-group>
219
+ <input matInput placeholder="" style="display: none">
220
+ </mat-form-field>
221
+
222
+ <div *ngIf="commonChildrenDivFlag">
223
+
224
+ <mat-form-field >
225
+ <mat-label>
226
+ Children number
227
+ </mat-label>
228
+ <input matInput formControlName="commonChildrenNumber" [(ngModel)]="editVictim.commonChildrenNumber" >
229
+ </mat-form-field>
230
+
231
+ </div>
232
+
233
+ <mat-form-field>
234
+ <mat-label>CPO: </mat-label>
235
+ <br>
236
+ <mat-radio-group formControlName="cpoExpirationFlag" [(ngModel)]="editVictim.cpoExpirationFlag" (change)="radioCpoChange($event)">
237
+ <mat-radio-button color="primary" [value]="true">Yes</mat-radio-button>&nbsp;
238
+ <mat-radio-button color="primary" [value]="false">No</mat-radio-button>
239
+ </mat-radio-group>
240
+ <input matInput placeholder="" style="display: none">
241
+ </mat-form-field>
242
+
243
+ <div *ngIf="cpoExpirationDivFlag">
244
+ <mat-form-field>
245
+ <mat-label>Expiration Date: </mat-label>
246
+ <input matInput
247
+ [matDatepicker]="cpoDateRef"
248
+ formControlName="cpoExpirationDate"
249
+ (click)="cpoDateRef.open()"
250
+ [(ngModel)]="editVictim.cpoExpirationDate" >
251
+ <mat-datepicker-toggle [for]="cpoDateRef" matSuffix></mat-datepicker-toggle>
252
+ <mat-datepicker #cpoDateRef></mat-datepicker>
253
+ </mat-form-field>
254
+
255
+ </div>
256
+
257
+ <br>
258
+ <br>
259
+
260
+ <mat-form-field>
261
+ <mat-label>Victim has a Support System in Place? </mat-label>
262
+ <br>
263
+ <mat-radio-group formControlName="supportInPlaceFlag" [(ngModel)]="editVictim.supportInPlaceFlag" (change)="radioSupportChange($event)">
264
+ <mat-radio-button color="primary" [value]="true">Yes</mat-radio-button>&nbsp;
265
+ <mat-radio-button color="primary" [value]="false">No</mat-radio-button>
266
+ </mat-radio-group>
267
+ <input matInput placeholder="" style="display: none">
268
+ </mat-form-field>
269
+
270
+ <div *ngIf="supportInPlaceDivFlag">
271
+ <mat-form-field>
272
+ <mat-label>Support type? </mat-label>
273
+ <mat-select #supportSel formControlName="victimSupports" [(ngModel)]="editVictim.victimSupports" multiple>
274
+ <div (mouseleave)="supportSel.close()">
275
+ <mat-option color="primary" *ngFor="let item of victimSupportTypes" [value]="item.victimSupportTypeId">
276
+ {{item.name}}
277
+ </mat-option>
278
+ </div>
279
+ </mat-select>
280
+ <input matInput placeholder="" style="display: none">
281
+ </mat-form-field>
282
+
283
+ </div>
284
+
285
+ <br>
286
+ <br>
287
+
288
+ <mat-form-field>
289
+ <mat-label>Weapons Involved?</mat-label>
290
+ <br>
291
+ <mat-radio-group formControlName="weaponInvolvedFlag" (change)="radioWeaponChange($event)" [(ngModel)]="editVictim.weaponInvolvedFlag" >
292
+ <mat-radio-button color="primary" [value]="true">Yes</mat-radio-button>&nbsp;
293
+ <mat-radio-button color="primary" [value]="false">No</mat-radio-button>
294
+ </mat-radio-group>
295
+ <input matInput placeholder="" style="display: none">
296
+ </mat-form-field>
297
+
298
+
299
+ <div *ngIf="weaponInvolvedDivFlag">
300
+ <mat-form-field>
301
+ <mat-label>Weapon Type</mat-label>
302
+ <mat-select #weaponSel formControlName="victimWeaponUses" multiple [(ngModel)]="editVictim.victimWeaponUses" (selectionChange)="checkOtherWeapon($event.value)" >
303
+ <div (mouseleave)="weaponSel.close()">
304
+ <mat-option color="primary" *ngFor="let item of weaponTypes" [value]="item.weaponTypeId">
305
+ {{item.name}}
306
+ </mat-option>
307
+ </div>
308
+ </mat-select>
309
+ <input matInput placeholder="" style="display: none">
310
+ </mat-form-field>
311
+ </div>
312
+
313
+ <div *ngIf="otherWeaponFlag">
314
+ <mat-form-field>
315
+ <mat-label>Other Weapon:* </mat-label>
316
+ <input matInput formControlName="otherWeapon" >
317
+ </mat-form-field>
318
+ <div class="help-block" *ngIf="victimForm.get('otherWeapon').errors
319
+ && (victimForm.get('otherWeapon').dirty || victimForm.get('otherWeapon').touched)">
320
+ <mat-error><strong>Other weapon is required.</strong></mat-error>
321
+ </div>
322
+ </div>
323
+
324
+
325
+ <br>
326
+ <br>
327
+
328
+ <mat-form-field>
329
+ <mat-label>Was Offender under the influence of alcohol at the time of the offense?</mat-label>
330
+ <br>
331
+ <mat-radio-group formControlName="alcoholUseFlag" [(ngModel)]="editVictim.alcoholUseFlag" >
332
+ <mat-radio-button color="primary" [value]="true">Yes</mat-radio-button>&nbsp;
333
+ <mat-radio-button color="primary" [value]="false">No</mat-radio-button>
334
+ </mat-radio-group>
335
+ <input matInput placeholder="" style="display: none">
336
+ </mat-form-field>
337
+
338
+ <br>
339
+ <br>
340
+
341
+ <mat-form-field>
342
+ <mat-label>Was Offender under the influence of drugs at the time of the offense?</mat-label>
343
+ <br>
344
+ <mat-radio-group formControlName="drugUseFlag" (change)="radioDrugChange($event)" [(ngModel)]="editVictim.drugUseFlag" >
345
+ <mat-radio-button color="primary" [value]="true">Yes</mat-radio-button>&nbsp;
346
+ <mat-radio-button color="primary" [value]="false">No</mat-radio-button>
347
+ </mat-radio-group>
348
+ <input matInput placeholder="" style="display: none">
349
+ </mat-form-field>
350
+
351
+ <div *ngIf="drugUseDivFlag">
352
+ <mat-form-field>
353
+ <mat-label>Drug:</mat-label>
354
+ <mat-select #drugSel formControlName="victimDrugUses" multiple (selectionChange)="checkOtherDrug($event.value)" >
355
+ <div (mouseleave)="drugSel.close()">
356
+ <mat-option color="primary" *ngFor="let item of drugs" [value]="item.drugTypeId">
357
+ {{item.name}}
358
+ </mat-option>
359
+
360
+ </div>
361
+ </mat-select>
362
+ <input matInput placeholder="" style="display: none">
363
+ </mat-form-field>
364
+
365
+ </div>
366
+
367
+ <div *ngIf="otherDrugFlag">
368
+ <mat-form-field>
369
+ <mat-label>Other Drug:* </mat-label>
370
+ <input matInput formControlName="otherDrug" >
371
+ </mat-form-field>
372
+ <div class="help-block" *ngIf="victimForm.get('otherDrug').errors
373
+ && (victimForm.get('otherDrug').dirty || victimForm.get('otherDrug').touched)">
374
+ <mat-error><strong>Other drug is required.</strong></mat-error>
375
+ </div>
376
+ </div>
377
+ <br>
378
+ <br>
379
+
380
+ <div>
381
+ <div>
382
+ <mat-label>
383
+ Access Risk: 1 thru 10 (10 greatest risk): &nbsp;<b> {{editVictim.accessRisk}}</b>
384
+ </mat-label>
385
+ </div>
386
+ <div>
387
+
388
+ <mat-slider
389
+ formControlName="accessRisk"
390
+ thumbLabel="true"
391
+ [displayWith]="formatLabel"
392
+ min="1"
393
+ max="10"
394
+ [(ngModel)]="editVictim.accessRisk"
395
+ ><input matSliderThumb /></mat-slider>
396
+
397
+ </div>
398
+
399
+ </div>
400
+
401
+ </mat-card>
402
+
403
+
404
+ <br><br><br>
405
+ </mat-tab>
406
+
407
+ <mat-tab *ngIf="guardianTabFlag" label="Legal Guardian">
408
+ <div class='container'>
409
+ <mat-form-field>
410
+ <mat-label>Guardian Last Name:</mat-label>
411
+ <input matInput formControlName="guardianLastName" [(ngModel)]="editVictim.guardianLastName" >
412
+ <div class="help-block" *ngIf="victimForm.get('guardianLastName').errors ">
413
+ <mat-error>Guardian last name is <strong>required</strong></mat-error>
414
+ </div>
415
+ </mat-form-field>
416
+
417
+ <mat-form-field>
418
+ <mat-label>Guardian First Name:</mat-label>
419
+ <input matInput formControlName="guardianFirstName" [(ngModel)]="editVictim.guardianFirstName" >
420
+ <div class="help-block" *ngIf="victimForm.get('guardianFirstName').errors ">
421
+ <mat-error>Guardian first name is <strong>required</strong></mat-error>
422
+ </div>
423
+
424
+ </mat-form-field>
425
+
426
+ <mat-form-field>
427
+ <mat-label>Guardian Prefix:</mat-label>
428
+ <mat-select formControlName="guardianPrefixId" [(ngModel)]="editVictim.guardianPrefixId" >
429
+ <mat-option *ngFor="let item of prefixes" [value]="item.prefixId">{{item.name}}</mat-option>
430
+ </mat-select>
431
+ </mat-form-field>
432
+
433
+ <mat-form-field>
434
+ <mat-label>Guardian Suffix:</mat-label>
435
+ <mat-select formControlName="guardianSuffixId" [(ngModel)]="editVictim.guardianSuffixId" >
436
+ <mat-option *ngFor="let item of suffixes" [value]="item.suffixId">{{item.name}}</mat-option>
437
+ </mat-select>
438
+ </mat-form-field>
439
+
440
+
441
+ <!-- <mat-form-field>
442
+ <mat-select placeholder="Choose" formControlName="guardianGender" [(ngModel)]="editVictim.guardianGender">
443
+ <mat-option *ngFor="let item of genders" [value]="item.genderCode">{{item.name}}</mat-option>
444
+ </mat-select>
445
+ </mat-form-field> -->
446
+
447
+
448
+ <mat-form-field>
449
+ <mat-label>Date of Birth:</mat-label>
450
+ <input matInput
451
+ [matDatepicker]="guardianDateRef"
452
+ formControlName="guardianBirthDate"
453
+ [(ngModel)]="editVictim.guardianBirthDate"
454
+ (click)="guardianDateRef.open()"
455
+ >
456
+ <mat-datepicker-toggle [for]="guardianDateRef" matSuffix></mat-datepicker-toggle>
457
+ <mat-datepicker #guardianDateRef></mat-datepicker>
458
+ </mat-form-field>
459
+
460
+ <div></div>
461
+ <mat-form-field >
462
+ <mat-checkbox
463
+ color = "primary"
464
+ formControlName="guardianNoPhoneFlag">
465
+ No Phone (If there is no phone, the phone fields are no longer required)</mat-checkbox>
466
+ <input matInput placeholder="" style="display: none;">
467
+ </mat-form-field>
468
+
469
+
470
+ <div></div>
471
+ <mat-card>
472
+ <mat-form-field >
473
+ <mat-label>Guardian Home Phone:</mat-label>
474
+ <input
475
+ id="tel"
476
+ matInput
477
+ phoneMask
478
+ [preValue]="editVictim.guardianHomePhone"
479
+ [phoneControl]="guardianHomePhoneControl"
480
+ [formControl]="guardianHomePhoneControl"
481
+ maxlength="14"/>
482
+
483
+ <div class="help-block" *ngIf="victimForm.get('guardianHomePhone').errors
484
+ && (victimForm.get('guardianHomePhone').dirty || victimForm.get('guardianHomePhone').touched)">
485
+ <mat-error><strong>Guardian home phone number format is not correct.</strong></mat-error>
486
+ </div>
487
+
488
+
489
+ </mat-form-field>
490
+
491
+ <mat-form-field >
492
+ <mat-label>Guardian Cell Phone:</mat-label>
493
+ <input
494
+ id="tel4"
495
+ matInput
496
+ phoneMask
497
+ [preValue]="editVictim.guardianCellPhone"
498
+ [phoneControl]="guardianCellPhoneControl"
499
+ [formControl]="guardianCellPhoneControl"
500
+ maxlength="14"/>
501
+
502
+ <div class="help-block" *ngIf="victimForm.get('guardianCellPhone').errors
503
+ && (victimForm.get('guardianCellPhone').dirty || victimForm.get('guardianCellPhone').touched)">
504
+ <mat-error><strong>Guardian Cell phone number format is not correct.</strong></mat-error>
505
+ </div>
506
+ </mat-form-field>
507
+
508
+ <mat-form-field >
509
+ <mat-label>Guardian Work Phone:</mat-label>
510
+
511
+ <input
512
+ id="tel5"
513
+ matInput
514
+ phoneMask
515
+ [preValue]="editVictim.guardianWorkPhone"
516
+ [phoneControl]="guardianWorkPhoneControl"
517
+ [formControl]="guardianWorkPhoneControl"
518
+ maxlength="14"/>
519
+
520
+ <div class="help-block" *ngIf="victimForm.get('guardianWorkPhone').errors
521
+ && (victimForm.get('guardianWorkPhone').dirty || victimForm.get('guardianWorkPhone').touched)">
522
+ <mat-error><strong>Guardian work phone number format is not correct.</strong></mat-error>
523
+ </div>
524
+
525
+
526
+ </mat-form-field>
527
+ </mat-card>
528
+
529
+ <div></div>
530
+
531
+ <mat-form-field>
532
+ <mat-label>Guardian Email:</mat-label>
533
+ <input matInput formControlName="guardianEmail" [(ngModel)]="editVictim.guardianEmail" >
534
+ <div class="help-block" *ngIf="victimForm.get('guardianEmail').errors
535
+ && (victimForm.get('guardianEmail').dirty || victimForm.get('guardianEmail').touched)">
536
+ <mat-error><strong>Guardian email format is not correct.</strong></mat-error>
537
+ </div>
538
+ </mat-form-field>
539
+
540
+ <div></div>
541
+
542
+ <div>
543
+ <app-smart-address
544
+
545
+ [showPsa]="true"
546
+ [modifiedBy]="staffId"
547
+ [id]="guardianAddressId"
548
+ (addressIdChange)="onGuardianAddressChange($event)"
549
+ [outline]="true"
550
+ readonly="false"
551
+ [rowHeight]="80"
552
+ (isValid)="false"
553
+ [addressValidators]="addressValidators"
554
+ #guardianAddressComponent
555
+ >
556
+ </app-smart-address>
557
+ </div>
558
+ </div>
559
+
560
+ <br><br><br>
561
+ </mat-tab>
562
+
563
+ <!--advocate-->
564
+
565
+ <mat-tab *ngIf="advocateTabFlag" label="Advocate" >
566
+ <div class='container'>
567
+
568
+ <mat-form-field>
569
+ <mat-label>Advocate Last Name:</mat-label>
570
+ <input matInput formControlName="advocateLastName" [(ngModel)]="editVictim.advocateLastName" >
571
+ <div class="help-block" *ngIf="victimForm.get('advocateLastName').errors ">
572
+ <mat-error>Advocate last name is <strong>required</strong></mat-error>
573
+ </div>
574
+ </mat-form-field>
575
+
576
+ <mat-form-field>
577
+ <mat-label>Advocate First Name:</mat-label>
578
+ <input matInput formControlName="advocateFirstName" [(ngModel)]="editVictim.advocateFirstName" >
579
+ <div class="help-block" *ngIf="victimForm.get('advocateFirstName').errors ">
580
+ <mat-error>Advocate first name is <strong>required</strong></mat-error>
581
+ </div>
582
+ </mat-form-field>
583
+
584
+ <mat-form-field>
585
+ <mat-label>Advocate Prefix:</mat-label>
586
+ <mat-select formControlName="advocatePrefixId" [(ngModel)]="editVictim.advocatePrefixId" >
587
+ <mat-option *ngFor="let item of prefixes" [value]="item.prefixId">{{item.name}}</mat-option>
588
+ </mat-select>
589
+ </mat-form-field>
590
+
591
+ <mat-form-field>
592
+ <mat-label>Advocate Suffix:</mat-label>
593
+ <mat-select formControlName="advocateSuffixId" [(ngModel)]="editVictim.advocateSuffixId" >
594
+ <mat-option *ngFor="let item of suffixes" [value]="item.suffixId">{{item.name}}</mat-option>
595
+ </mat-select>
596
+ </mat-form-field>
597
+
598
+
599
+ <mat-form-field>
600
+ <mat-checkbox
601
+ color = "primary"
602
+ formControlName="advocateNoPhoneFlag"
603
+
604
+ [(ngModel)]="editVictim.advocateNoPhoneFlag" >
605
+ No Phone (If there is no phone, the phone fields are no longer required)</mat-checkbox>
606
+ <input matInput placeholder="" style="display: none;">
607
+ </mat-form-field>
608
+
609
+ <div></div>
610
+ <mat-card>
611
+ <mat-form-field >
612
+ <mat-label>Advocate Home Phone:</mat-label>
613
+ <input
614
+ id="tel"
615
+ matInput
616
+ phoneMask
617
+ [preValue]="editVictim.advocateHomePhone"
618
+ [phoneControl]="advocateHomePhoneControl"
619
+ [formControl]="advocateHomePhoneControl"
620
+ maxlength="14"/>
621
+
622
+
623
+ <div class="help-block" *ngIf="victimForm.get('advocateHomePhone').errors
624
+ && (victimForm.get('advocateHomePhone').dirty || victimForm.get('advocateHomePhone').touched)">
625
+ <mat-error><strong>Advocate home number format is not correct.</strong></mat-error>
626
+ </div>
627
+
628
+ </mat-form-field>
629
+
630
+ <mat-form-field>
631
+ <mat-label>Advocate Cell Phone:</mat-label>
632
+ <input
633
+ id="tel7"
634
+ matInput
635
+ phoneMask
636
+ [preValue]="editVictim.advocateCellPhone"
637
+ [phoneControl]="advocateCellPhoneControl"
638
+ [formControl]="advocateCellPhoneControl"
639
+ maxlength="14"/>
640
+
641
+ <div class="help-block" *ngIf="victimForm.get('advocateCellPhone').errors
642
+ && (victimForm.get('advocateCellPhone').dirty || victimForm.get('advocateCellPhone').touched)">
643
+ <mat-error><strong>Advocate cell number format is not correct.</strong></mat-error>
644
+ </div>
645
+
646
+
647
+ </mat-form-field>
648
+
649
+ <mat-form-field>
650
+ <mat-label>Advocate Work Phone:</mat-label>
651
+ <input
652
+ id="tel8"
653
+ matInput
654
+ phoneMask
655
+ [preValue]="editVictim.advocateWorkPhone"
656
+ [phoneControl]="advocateWorkPhoneControl"
657
+ [formControl]="advocateWorkPhoneControl"
658
+ maxlength="14"/>
659
+
660
+
661
+ <div class="help-block" *ngIf="victimForm.get('advocateWorkPhone').errors
662
+ && (victimForm.get('advocateWorkPhone').dirty || victimForm.get('advocateWorkPhone').touched)">
663
+ <mat-error><strong>Advocate work number format is not correct.</strong></mat-error>
664
+ </div>
665
+
666
+ </mat-form-field>
667
+ </mat-card>
668
+
669
+ <div></div>
670
+
671
+ <mat-form-field>
672
+ <mat-label>Advocate Email:</mat-label>
673
+ <input matInput formControlName="advocateEmail" [(ngModel)]="editVictim.advocateEmail" >
674
+ <div class="help-block" *ngIf="victimForm.get('advocateEmail').errors
675
+ && (victimForm.get('advocateEmail').dirty || victimForm.get('advocateEmail').touched)">
676
+ <mat-error><strong>Advocate email format is not correct.</strong></mat-error>
677
+ </div>
678
+ </mat-form-field>
679
+
680
+ <div></div>
681
+
682
+
683
+ <div >
684
+ <app-smart-address
685
+ [showPsa]="true"
686
+ [modifiedBy]="staffId"
687
+ [id]="advocateAddressId"
688
+ (addressIdChange)="onAdvocateAddressChange($event)"
689
+ [outline]="true"
690
+ readonly="false"
691
+ [rowHeight]="80"
692
+ (isValid)="false"
693
+ [addressValidators]="addressValidators"
694
+ #advocateAddressComponent >
695
+ </app-smart-address>
696
+ </div>
697
+ </div>
698
+ <br><br><br>
699
+ </mat-tab>
700
+
701
+
702
+ <mat-tab label="Emergency Contact">
703
+ <div class='container'>
704
+
705
+ <mat-form-field>
706
+ <mat-label>Emergency Contact Name:</mat-label>
707
+ <input matInput formControlName="emergencyContact" [(ngModel)]="editVictim.emergencyContact" >
708
+ </mat-form-field>
709
+
710
+ <mat-form-field>
711
+ <mat-label>Emergency Phone Number:</mat-label>
712
+
713
+ <input
714
+ id="tel"
715
+ matInput
716
+ phoneMask
717
+ [preValue]="editVictim.emergencyContactPhone"
718
+ [phoneControl]="emergencyContactPhoneControl"
719
+ [formControl]="emergencyContactPhoneControl"
720
+ maxlength="14"/>
721
+
722
+ <div class="help-block" *ngIf="victimForm.get('emergencyContactPhone').errors
723
+ && (victimForm.get('emergencyContactPhone').dirty || victimForm.get('emergencyContactPhone').touched)">
724
+ <mat-error><strong>Emergency contact number format is not correct.</strong></mat-error>
725
+ </div>
726
+ </mat-form-field>
727
+
728
+ </div>
729
+ <br><br><br>
730
+ </mat-tab>
731
+
732
+ </mat-tab-group>
733
+ <div class='outer'>
734
+ <div>
735
+ All buttons apply to all tabs. If save button is grey, please check each tab to make sure the required field is filled.<br><br>
736
+
737
+ <div class="help-block" *ngIf="victimForm.get('minorFlag').errors
738
+ && (victimForm.get('minorFlag').dirty || victimForm.get('minorFlag').touched)">
739
+ <mat-error>If victim a minor field is <strong>required</strong></mat-error>
740
+ </div>
741
+
742
+ <div class="help-block" *ngIf="victimForm.get('victimAdvocateFlag').errors
743
+ && (victimForm.get('victimAdvocateFlag').dirty || victimForm.get('victimAdvocateFlag').touched)">
744
+ <mat-error>If victim has advocate field is <strong>required</strong></mat-error>
745
+ </div>
746
+
747
+ <div class="help-block" *ngIf="victimForm.get('underSupervisionFlag').errors
748
+ && (victimForm.get('underSupervisionFlag').dirty || victimForm.get('underSupervisionFlag').touched)">
749
+ <mat-error>Under supervision field is <strong>required</strong></mat-error>
750
+ </div>
751
+
752
+ <div class="help-block" *ngIf="victimForm.get('victimOffenderRelationshipTypeId').errors
753
+ && (victimForm.get('victimOffenderRelationshipTypeId').dirty || victimForm.get('victimOffenderRelationshipTypeId').touched)">
754
+ <mat-error>Relationship is <strong>required</strong></mat-error>
755
+ </div>
756
+
757
+ <div class="help-block" *ngIf="victimForm.get('lastName').errors
758
+ && (victimForm.get('lastName').dirty || victimForm.get('lastName').touched)">
759
+ <mat-error>Victim last name is <strong>required</strong></mat-error>
760
+ </div>
761
+
762
+ <div class="help-block" *ngIf="victimForm.get('firstName').errors
763
+ && (victimForm.get('firstName').dirty || victimForm.get('firstName').touched)">
764
+ <mat-error>victim first name is <strong>required</strong></mat-error>
765
+ </div>
766
+
767
+ <div class="help-block" *ngIf="victimForm.get('guardianFirstName').errors
768
+ && (victimForm.get('guardianFirstName').dirty || victimForm.get('guardianFirstName').touched)">
769
+ <mat-error>Guardian first name is <strong>required</strong></mat-error>
770
+ </div>
771
+
772
+ <div class="help-block" *ngIf="victimForm.get('guardianLastName').errors
773
+ && (victimForm.get('guardianLastName').dirty || victimForm.get('guardianLastName').touched)" >
774
+ <mat-error>Guardian last name is <strong>required</strong></mat-error>
775
+ </div>
776
+
777
+ <div class="help-block" *ngIf="victimForm.get('advocateLastName').errors
778
+ && (victimForm.get('advocateLastName').dirty || victimForm.get('advocateLastName').touched)" >
779
+ <mat-error>Advocate last name is <strong>required</strong></mat-error>
780
+ </div>
781
+
782
+ <div class="help-block" *ngIf="victimForm.get('advocateFirstName').errors
783
+ && (victimForm.get('advocateFirstName').dirty || victimForm.get('advocateFirstName').touched)">
784
+ <mat-error>Advocate first name is <strong>required</strong></mat-error>
785
+ </div>
786
+
787
+
788
+ <div class="help-block" *ngIf="victimForm.get('otherWeapon').errors
789
+ && (victimForm.get('otherWeapon').dirty || victimForm.get('otherWeapon').touched)">
790
+ <mat-error>Other weapon field is <strong>required</strong></mat-error>
791
+ </div>
792
+
793
+ <div class="help-block" *ngIf="victimForm.get('otherDrug').errors
794
+ && (victimForm.get('otherDrug').dirty || victimForm.get('otherDrug').touched)">
795
+ <mat-error>Other drug field is <strong>required</strong></mat-error>
796
+ </div>
797
+
798
+
799
+ </div>
800
+
801
+ <div class="inner">
802
+ <button mat-stroked-button color="primary" (click)="saveVictim()" [disabled]="!victimForm.valid" >Save </button>
803
+ </div>
804
+ &nbsp;&nbsp;
805
+ <div *ngIf="showDelete" class="inner">
806
+ <button mat-stroked-button color="primary" (click)="deleteVictim()">Delete </button>
807
+ </div>
808
+ &nbsp;&nbsp;
809
+ <div class="inner">
810
+ <button mat-stroked-button color="primary" (click)="cancel()">Clear </button>
811
+ </div>
812
+ &nbsp;&nbsp;
813
+ <button mat-stroked-button color="primary" (click)="back()">Back</button>
814
+
815
+ </div>
816
+
817
+ </div>
818
+ <br>
819
+ <br>
820
+
821
+ <div align="right">
822
+ <button mat-stroked-button color="primary" (click)="addContact()" >Add victim contact</button>
823
+ </div>
824
+
825
+ <div>
826
+
827
+ <mat-table #table [dataSource]="contactDataSource" class="example-table">
828
+ <ng-container matColumnDef="contactDate">
829
+ <mat-header-cell *matHeaderCellDef class="example-header-cell">Contact Date</mat-header-cell>
830
+ <mat-cell *matCellDef="let row" class="example-cell"> {{row.contactDate | date}} </mat-cell>
831
+ </ng-container>
832
+
833
+
834
+ <ng-container matColumnDef="victimContactMethod">
835
+ <mat-header-cell *matHeaderCellDef class="example-header-cell">Contact Method</mat-header-cell>
836
+ <mat-cell *matCellDef="let row" class="example-cell"> {{row.victimContactMethod}} </mat-cell>
837
+ </ng-container>
838
+
839
+ <ng-container matColumnDef="nextContactDate">
840
+ <mat-header-cell *matHeaderCellDef class="example-header-cell">Next Contact Date</mat-header-cell>
841
+ <mat-cell *matCellDef="let row" class="example-cell"> {{row.nextContactDate | date}} </mat-cell>
842
+ </ng-container>
843
+
844
+
845
+ <ng-container matColumnDef="staff">
846
+ <mat-header-cell *matHeaderCellDef class="example-header-cell">Contact By</mat-header-cell>
847
+ <mat-cell *matCellDef="let row" class="example-cell"> {{row.staff}} </mat-cell>
848
+ </ng-container>
849
+ <ng-container matColumnDef="comment">
850
+ <mat-header-cell *matHeaderCellDef class="example-header-cell">Comment</mat-header-cell>
851
+ <mat-cell *matCellDef="let row" class="example-cell"> {{row.comment}} </mat-cell>
852
+ </ng-container>
853
+
854
+ <ng-container matColumnDef="contactId">
855
+ <mat-header-cell *matHeaderCellDef class="example-header-cell"></mat-header-cell>
856
+ <mat-cell *matCellDef="let row" class="example-cell">
857
+
858
+ </mat-cell>
859
+ </ng-container>
860
+
861
+ <mat-header-row *matHeaderRowDef="['contactDate', 'victimContactMethod','nextContactDate', 'staff', 'comment', 'contactId']" class="example-header-row"></mat-header-row>
862
+ <mat-row *matRowDef="let row; columns:['contactDate', 'victimContactMethod','nextContactDate', 'staff', 'comment', 'contactId'];" class="example-row"></mat-row>
863
+ </mat-table>
864
+
865
+
866
+ </div>
867
+
868
+ </mat-card-content>
869
+ </mat-card>