Skip to content

Commit 0ab1bdc

Browse files
committed
Improving the property worker process a bit more.
1 parent 7409e6d commit 0ab1bdc

File tree

3 files changed

+50
-7
lines changed

3 files changed

+50
-7
lines changed

eform-client/src/app/plugins/modules/backend-configuration-pn/modules/property-workers/components/property-worker-create-edit-modal/property-worker-create-edit-modal.component.html

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ <h3 mat-dialog-title>{{ (edit ? 'Edit employee' : 'New employee') | translate }}
1717
required
1818
type="text"
1919
id="firstName"
20-
name="userName">
20+
name="userName"
21+
tabindex="1">
2122
<mat-error *ngIf="form.get('userFirstName').hasError('required')">
2223
Required
2324
</mat-error>
@@ -29,7 +30,17 @@ <h3 mat-dialog-title>{{ (edit ? 'Edit employee' : 'New employee') | translate }}
2930
formControlName="workerEmail"
3031
type="email"
3132
id="workerEmail"
32-
required>
33+
required
34+
tabindex="3">
35+
<button
36+
matSuffix
37+
mat-icon-button
38+
type="button"
39+
(click)="generateRandomEmail()"
40+
matTooltip="{{ 'Generate random email' | translate }}"
41+
id="generateEmailBtn">
42+
<mat-icon>autorenew</mat-icon>
43+
</button>
3344
<mat-error *ngIf="form.get('workerEmail').hasError('invalidEmail')">
3445
Invalid email address
3546
</mat-error>
@@ -43,11 +54,13 @@ <h3 mat-dialog-title>{{ (edit ? 'Edit employee' : 'New employee') | translate }}
4354
matInput
4455
formControlName="employeeNo"
4556
type="text"
46-
id="employeeNo">
57+
id="employeeNo"
58+
tabindex="5">
4759
</mat-form-field>
4860
<mat-form-field>
4961
<mat-label>{{ 'Language' | translate }}</mat-label>
5062
<mtx-select
63+
tabindex="7"
5164
id="profileLanguageSelector"
5265
[bindLabel]="'name'"
5366
[bindValue]="'languageCode'"
@@ -71,7 +84,8 @@ <h3 mat-dialog-title>{{ (edit ? 'Edit employee' : 'New employee') | translate }}
7184
formControlName="userLastName"
7285
type="text"
7386
id="lastName"
74-
required>
87+
required
88+
tabindex="2">
7589
<mat-error *ngIf="form.get('userLastName').hasError('required')">
7690
Required
7791
</mat-error>
@@ -83,7 +97,8 @@ <h3 mat-dialog-title>{{ (edit ? 'Edit employee' : 'New employee') | translate }}
8397
formControlName="phoneNumber"
8498
type="tel"
8599
name="phoneNumber"
86-
id="phoneNumber">
100+
id="phoneNumber"
101+
tabindex="4">
87102
</mat-form-field>
88103
<mat-form-field>
89104
<mat-label>{{ 'PIN code' | translate }}</mat-label>
@@ -93,14 +108,16 @@ <h3 mat-dialog-title>{{ (edit ? 'Edit employee' : 'New employee') | translate }}
93108
type="text"
94109
name="pinCode"
95110
pattern="([0-9]*|\*{4})"
96-
id="pinCode">
111+
id="pinCode"
112+
tabindex="6">
97113
</mat-form-field>
98114
</div>
99115
</div>
100116
<div class="modal-columns">
101117
<mat-form-field>
102118
<mat-label>{{ 'Current tags' | translate }}</mat-label>
103119
<mtx-select
120+
tabindex="8"
104121
class="custom"
105122
[dropdownPosition]="'bottom'"
106123
[bindValue]="'id'"
@@ -205,6 +222,7 @@ <h3 mat-dialog-title>{{ (edit ? 'Edit employee' : 'New employee') | translate }}
205222
{{ 'Cancel' | translate }}
206223
</button>
207224
<button
225+
tabindex="9"
208226
class="btn-primary btn-primary--icon-left"
209227
(click)="edit ? updateSingle() : createDeviceUser()"
210228
[disabled]="form.invalid"

eform-client/src/app/plugins/modules/backend-configuration-pn/modules/property-workers/components/property-worker-create-edit-modal/property-worker-create-edit-modal.component.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ export class PropertyWorkerCreateEditModalComponent implements OnInit, OnDestroy
3737
deviceUser: DeviceUserModel,
3838
assignments: PropertyAssignmentWorkerModel[],
3939
availableProperties: CommonDictionaryModel[],
40-
availableTags: CommonDictionaryModel[];
40+
availableTags: CommonDictionaryModel[],
41+
alreadyUsedEmails: string[];
4142
}>(MAT_DIALOG_DATA);
4243

4344
availableProperties: CommonDictionaryModel[] = [];
@@ -49,6 +50,7 @@ export class PropertyWorkerCreateEditModalComponent implements OnInit, OnDestroy
4950
taskManagementEnabled: boolean = false;
5051
timeRegistrationEnabled: boolean = false;
5152
availableTags: CommonDictionaryModel[] = [];
53+
alreadyUsedEmails: string[] = [];
5254
@Output() userUpdated: EventEmitter<void> = new EventEmitter<void>();
5355
tableHeaders: MtxGridColumn[] = [
5456
{
@@ -138,6 +140,7 @@ export class PropertyWorkerCreateEditModalComponent implements OnInit, OnDestroy
138140
this.taskManagementEnabled = this.selectedDeviceUserCopy.taskManagementEnabled;
139141
this.timeRegistrationEnabled = this.selectedDeviceUserCopy.timeRegistrationEnabled;
140142
this.availableTags = [...this.model.availableTags];
143+
this.alreadyUsedEmails = [...this.model.alreadyUsedEmails];
141144

142145
this.form = this.fb.group({
143146
userFirstName: [this.selectedDeviceUser.userFirstName || '', Validators.required],
@@ -338,4 +341,20 @@ export class PropertyWorkerCreateEditModalComponent implements OnInit, OnDestroy
338341
}))
339342
.subscribe();
340343
}
344+
345+
generateRandomEmail(): void {
346+
const firstName = this.form.get('userFirstName')?.value?.toLowerCase().trim() || 'user';
347+
const lastName = this.form.get('userLastName')?.value?.toLowerCase().trim() || 'name';
348+
let email: string;
349+
let randomNumber: number;
350+
351+
do {
352+
randomNumber = Math.floor(Math.random() * (100000 - 1000 + 1)) + 1000;
353+
email = `${firstName}_${lastName}_${randomNumber}[email protected]`;
354+
} while (this.alreadyUsedEmails.includes(email));
355+
356+
this.form.patchValue({
357+
workerEmail: email
358+
});
359+
}
341360
}

eform-client/src/app/plugins/modules/backend-configuration-pn/modules/property-workers/components/property-workers-page/property-workers-page.component.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export class PropertyWorkersPageComponent implements OnInit, OnDestroy {
5050
sitesDto: Array<DeviceUserModel>;
5151
availableProperties: CommonDictionaryModel[];
5252
workersAssignments: PropertyAssignWorkersModel[];
53+
alreadyUsedEmails: string[] = [];
5354

5455
getSites$: Subscription;
5556
getPropertiesDictionary$: Subscription;
@@ -147,6 +148,7 @@ export class PropertyWorkersPageComponent implements OnInit, OnDestroy {
147148
assignments: [],
148149
availableProperties: this.availableProperties,
149150
availableTags: this.availableTags,
151+
alreadyUsedEmails: this.alreadyUsedEmails,
150152
}), minWidth: 1024
151153
})
152154
.afterClosed().subscribe(data => data ? this.updateTable() : undefined);
@@ -225,6 +227,10 @@ export class PropertyWorkersPageComponent implements OnInit, OnDestroy {
225227
.subscribe((data) => {
226228
if (data && data.model) {
227229
data.model.forEach(site => {
230+
// add the site.workerEmail to alreadyUsedEmails to prevent from creating new worker with the same email
231+
if (!this.alreadyUsedEmails.includes(site.workerEmail)) {
232+
this.alreadyUsedEmails.push(site.workerEmail);
233+
}
228234
if (site.resigned) {
229235
anyIsResigned = true;
230236
}

0 commit comments

Comments
 (0)