diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.html b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.html
index 9e72199..ee27be7 100644
--- a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.html
+++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.html
@@ -15,10 +15,16 @@
afLabel="E-post adress"
afType="email"
[formControlName]="emailFormControlName"
- [afInvalidMessage]="emailFormControl?.errors?.required ? 'Du måste ange E-post' : 'E-post adressen är ogiltig'"
[afDisableValidStyle]="true"
- [afInvalid]="emailFormControl.invalid && emailFormControl.touched"
+ [afInvalid]="editEmployeeFormGroup.errors?.email && emailFormControl.touched"
>
+
@@ -59,6 +67,7 @@
class="edit-employee-form__choose-all-utforande-verksamheter"
[formControl]="selectAllUtforandeVerksamheterFormControl"
[afLabel]="'Välj alla utförande verksamheter och alla utförande adresser'"
+ [afInvalid]="editEmployeeFormGroup.errors?.utforandeVerksamheter && (selectAllUtforandeVerksamheterFormControl.touched || utforandeVerksamheterFormControl.touched)"
>
diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.ts b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.ts
index 34b0675..a81693c 100644
--- a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.ts
+++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.ts
@@ -24,9 +24,7 @@ import { UtforandeVerksamheterService } from '@msfa-services/utforande-verksamhe
import { ValidationErrorLink } from '@msfa-shared/components/error-list/error-list.component';
import { TreeNodesSelectorService } from '@msfa-shared/components/tree-nodes-selector/services/tree-nodes-selector.service';
import { uuid } from '@msfa-utils/uuid';
-import { EmailValidator } from '@msfa-utils/validators/email.validator';
import { EmployeeValidator } from '@msfa-utils/validators/employee.validator';
-import { RequiredValidator } from '@msfa-utils/validators/required.validator';
import { EmployeeFormService } from '../services/employee-form.service';
@Component({
@@ -162,27 +160,21 @@ export class EditEmployeeFormComponent implements OnInit, OnChanges {
this.editEmployeeFormGroup = new FormGroup(
{
- email: new FormControl(this.employee.email, [
- RequiredValidator('E-postadress'),
- EmailValidator('e-postadress'),
- ]),
- tjanster: new FormControl(tjanstId, [RequiredValidator('Tjänst')]),
+ email: new FormControl(this.employee.email),
+ tjanster: new FormControl(tjanstId),
roles: this.employeeFormService.getRolesFormGroup(this.availableRoles, this.employee.roles),
utforandeVerksamheter: new FormControl(
this.utforandeVerksamheterService.getTreeNodeDataFromUtforandeVerksamheter(
this.availableUtforandeVerksamheter,
this.employee?.utforandeVerksamheter
- ),
- []
+ )
),
allaUtforandeVerksamheter: new FormControl(this.employee.allaUtforandeVerksamheter),
},
{
- validators: EmployeeValidator.HasSelectedAtLeastOneUtforandeVerksamhet(
- this.utforandeVerksamheterFormControlName,
- this.selectAllUtforandeVerksamheterFormControlName,
- this.utforandeVerksamheterService.hasSelectedUtforandeVerksamhet
- ),
+ validators: [
+ EmployeeValidator.isEmployeeValid(this.utforandeVerksamheterService.hasSelectedUtforandeVerksamhet),
+ ],
}
);
@@ -198,11 +190,26 @@ export class EditEmployeeFormComponent implements OnInit, OnChanges {
}
onFormSubmitted(saveWithoutRoles = false): void {
- this._submitted = true;
if (!this.editEmployeeFormGroup || this.isLoadingUtforandeVerksamheter) {
return;
}
+ const roles = this.employeeFormService.getRolesFromFormGroup(this.rolesFormGroup, this.availableRoles);
+
+ if (!roles.length && !saveWithoutRoles) {
+ this.displayEditWithoutRolesDialog = true;
+ return;
+ }
+
+ this._submitted = true;
+
+ if (!roles.length && saveWithoutRoles) {
+ this.utforandeVerksamheterFormControl.clearValidators();
+ this.utforandeVerksamheterFormControl.updateValueAndValidity();
+ this.tjansterFormControl.clearValidators();
+ this.tjansterFormControl.updateValueAndValidity();
+ }
+
this.editEmployeeFormGroup.markAllAsTouched();
if (this.editEmployeeFormGroup.invalid) {
@@ -217,30 +224,21 @@ export class EditEmployeeFormComponent implements OnInit, OnChanges {
return;
}
- const roles = this.employeeFormService.getRolesFromFormGroup(this.rolesFormGroup, this.availableRoles);
-
- if (!roles.length && !saveWithoutRoles) {
- this.displayEditWithoutRolesDialog = true;
- return;
- }
-
this.formSubmitted.emit({
email: this.emailFormControl?.value as string,
- tjanstIds: this.employeeFormService
- .getSelectedTjanster(this.availableTjanster, +this.tjansterFormControl?.value)
- .map(tjanst => tjanst.tjanstId),
- roles: [
- ...new Set([
- ...this.employeeFormService.getRolesFromFormGroup(this.rolesFormGroup, this.availableRoles),
- RoleEnum.MSFA_Standard,
- ]),
- ],
- adressIds: this.selectAllUtforandeVerksamheterFormControl.value
+ tjanstIds: !roles.length
? []
- : this.utforandeVerksamheterService.getSelectedAdressIdsFromTreeNode(
- this.utforandeVerksamheterFormControl?.value
- ),
- allaUtforandeVerksamheter: !!this.selectAllUtforandeVerksamheterFormControl.value,
+ : this.employeeFormService
+ .getSelectedTjanster(this.availableTjanster, +this.tjansterFormControl?.value)
+ .map(tjanst => tjanst.tjanstId),
+ roles: [...new Set([...roles, RoleEnum.MSFA_Standard])],
+ adressIds:
+ !roles.length || this.selectAllUtforandeVerksamheterFormControl.value
+ ? []
+ : this.utforandeVerksamheterService.getSelectedAdressIdsFromTreeNode(
+ this.utforandeVerksamheterFormControl?.value
+ ),
+ allaUtforandeVerksamheter: !roles.length ? false : !!this.selectAllUtforandeVerksamheterFormControl.value,
});
}
@@ -250,25 +248,26 @@ export class EditEmployeeFormComponent implements OnInit, OnChanges {
if (!this.editEmployeeFormGroup) {
return;
}
+ const { email, tjanster, utforandeVerksamheter } = this.editEmployeeFormGroup.errors || {};
- if (this.emailFormControl?.errors) {
+ if (email) {
validationErrorLinks = validationErrorLinks.concat({
elementId: this.emailElementId,
- text: this.emailFormControl?.errors?.message as string,
+ text: email as string,
});
}
- if (this.tjansterFormControl?.errors) {
+ if (tjanster) {
validationErrorLinks = validationErrorLinks.concat({
elementId: this.tjansterElementId,
- text: this.tjansterFormControl?.errors?.message as string,
+ text: tjanster as string,
});
}
- if (this.editEmployeeFormGroup.errors?.noUtforandeVerksamhetSelected) {
+ if (utforandeVerksamheter) {
validationErrorLinks = validationErrorLinks.concat({
elementId: this.utforandeVerksamhetElementId,
- text: this.utforandeVerksamhetRequiredMessage,
+ text: utforandeVerksamheter as string,
});
}
diff --git a/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/components/tree-nodes-selector/tree-nodes-selector.component.html b/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/components/tree-nodes-selector/tree-nodes-selector.component.html
index d8fb969..ba78437 100644
--- a/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/components/tree-nodes-selector/tree-nodes-selector.component.html
+++ b/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/components/tree-nodes-selector/tree-nodes-selector.component.html
@@ -34,9 +34,12 @@
-