From 39a009088196609e69155da4115dfde3230af7d9 Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Tue, 7 Sep 2021 14:44:14 +0200 Subject: [PATCH 1/3] Added error handling for edit employee --- .../edit-employee-form.component.html | 16 +++- .../edit-employee-form.component.spec.ts | 19 ++++- .../edit-employee-form.component.ts | 7 ++ .../employee-form.component.html | 75 ++++++++++--------- .../employee-form/employee-form.component.ts | 10 +++ .../shared/services/api/employee.service.ts | 28 +------ 6 files changed, 91 insertions(+), 64 deletions(-) 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 b605d31..0f32eea 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 @@ -99,7 +99,19 @@ - + diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.spec.ts b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.spec.ts index 97d1ebe..82c5b43 100644 --- a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.spec.ts +++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.spec.ts @@ -8,8 +8,8 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ReactiveFormsModule } from '@angular/forms'; +import { RouterTestingModule } from '@angular/router/testing'; import { TreeNodesSelectorModule } from '@msfa-shared/components/tree-nodes-selector/tree-nodes-selector.module'; - import { EditEmployeeFormComponent } from './edit-employee-form.component'; describe('EditEmployeeFormComponent', () => { @@ -29,6 +29,7 @@ describe('EditEmployeeFormComponent', () => { DigiNgFormCheckboxModule, HttpClientTestingModule, TreeNodesSelectorModule, + RouterTestingModule, ], schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); @@ -37,6 +38,22 @@ describe('EditEmployeeFormComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(EditEmployeeFormComponent); component = fixture.componentInstance; + component.employee = { + id: 'string', + firstName: 'string', + lastName: 'string', + fullName: 'string', + email: 'string', + ssn: 'string', + roles: [], + tjanster: [], + allaUtforandeVerksamheter: false, + utforandeVerksamheter: [], + + tjanstCodes: [], + utforandeVerksamhetIds: [], + utforandeAdressIds: [], + }; fixture.detectChanges(); }); 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 d28a11f..b5aa3b6 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 @@ -13,6 +13,7 @@ import { import { AbstractControl, FormControl, FormGroup } from '@angular/forms'; import { EmployeeEditRequest } from '@msfa-models/api/employee-edit.request.model'; import { Employee } from '@msfa-models/employee.model'; +import { CustomError } from '@msfa-models/error/custom-error'; import { Role } from '@msfa-models/role.model'; import { Tjanst } from '@msfa-models/tjanst.model'; import { @@ -46,8 +47,10 @@ export class EditEmployeeFormComponent implements OnInit, OnChanges { @Input() availableRoles: Role[]; @Input() availableTjanster: Tjanst[]; @Input() availableUtforandeVerksamheter: UtforandeVerksamhet[]; + @Input() errorWhileUpdating: CustomError; @Output() tjansterSelected = new EventEmitter(); + @Output() closeError = new EventEmitter(); @Output() formSubmitted = new EventEmitter(); readonly ButtonVariation = ButtonVariation; @@ -226,4 +229,8 @@ export class EditEmployeeFormComponent implements OnInit, OnChanges { Object.fromEntries([[this.toggleAllUtforandeVerksamhetFormControlName, hasSelectedAllLeafNodes]]) ); } + + emitCloseError(): void { + this.closeError.emit(); + } } diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.html b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.html index f469d57..b1fbab5 100644 --- a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.html +++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.html @@ -1,6 +1,6 @@ -
- + +

Redigera personalkonto

@@ -13,39 +13,44 @@ Ta bort konto -->
- -
- +

Personuppgifter

- - - - -

Förnamn

-

{{employee.firstName}}

-
- -

Efternamn

-

{{employee.lastName}}

-
- -

Personnummer

- -
-
-
- -
+
+
Förnamn
+
{{employee.firstName}}
+
+
+
Förnamn
+
{{employee.firstName}}
+
+
+
Efternamn
+
{{employee.lastName}}
+
+
+
Personnummer
+
+ +
+
+ +
+ +
+
+
diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.ts b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.ts index 9bfcf9a..969dc00 100644 --- a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.ts @@ -2,6 +2,7 @@ import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { EmployeeEditRequest } from '@msfa-models/api/employee-edit.request.model'; import { Employee } from '@msfa-models/employee.model'; +import { CustomError } from '@msfa-models/error/custom-error'; import { Role } from '@msfa-models/role.model'; import { Tjanst } from '@msfa-models/tjanst.model'; import { EmployeeService } from '@msfa-services/api/employee.service'; @@ -22,6 +23,8 @@ import { filter, switchMap } from 'rxjs/operators'; export class EmployeeFormComponent implements OnInit { private _employeeId$ = new BehaviorSubject(this.activatedRoute.snapshot.params['employeeId']); private _selectedTjanstIds$ = new BehaviorSubject(null); + private _errorWhileUpdating$ = new BehaviorSubject(null); + errorWhileUpdating$: Observable = this._errorWhileUpdating$.asObservable(); employee$ = this.employeeService.employee$; tjanster$: Observable = this.tjanstService.tjanster$; availableUtforandeVerksamheter$: Observable = this._selectedTjanstIds$.pipe( @@ -54,6 +57,9 @@ export class EmployeeFormComponent implements OnInit { next: () => { void this.router.navigateByUrl(`/administration/personal/${this.employeeId}`); }, + error: error => { + this._errorWhileUpdating$.next(error); + }, complete: () => { updateEmployeeSubscription.unsubscribe(); }, @@ -66,4 +72,8 @@ export class EmployeeFormComponent implements OnInit { setEmployeeToDelete(employee: Employee): void { this.employeeService.setEmployeeToDelete(employee); } + + closeError(): void { + this._errorWhileUpdating$.next(null); + } } diff --git a/apps/mina-sidor-fa/src/app/shared/services/api/employee.service.ts b/apps/mina-sidor-fa/src/app/shared/services/api/employee.service.ts index a18f423..3979b9b 100644 --- a/apps/mina-sidor-fa/src/app/shared/services/api/employee.service.ts +++ b/apps/mina-sidor-fa/src/app/shared/services/api/employee.service.ts @@ -82,29 +82,6 @@ export class EmployeeService extends UnsubscribeDirective { .subscribe(employee => { this._employee$.next(employee as Employee); }) - // this._currentEmployeeId$ - // .pipe( - // filter(currentEmployeeId => !!currentEmployeeId), - // switchMap(currentEmployeeId => - // combineLatest([this._fetchEmployee$(currentEmployeeId), this.tjanstService.tjanster$]).pipe( - // filter(([employee, allTjanster]) => !!(employee && allTjanster?.length)), - // map(([employee, allTjanster]) => { - // const tjanster = []; - // employee.tjanstCodes?.forEach(code => { - // const currentTjanst = allTjanster.find(tjanst => tjanst.code === code); - - // if (currentTjanst) { - // tjanster.push(currentTjanst); - // } - // }); - // return { ...employee, tjanster }; - // }) - // ) - // ) - // ) - // .subscribe(employee => { - // this._employee$.next(employee as Employee); - // }) ); } @@ -215,7 +192,7 @@ export class EmployeeService extends UnsubscribeDirective { map(({ data }) => data), catchError(error => { this.errorService.add(errorToCustomError(error)); - return of(null); + return throwError(errorToCustomError(error)); }) ); } @@ -229,8 +206,7 @@ export class EmployeeService extends UnsubscribeDirective { }), map(() => true), catchError(error => { - this.errorService.add(errorToCustomError(error)); - return of(false); + return throwError(errorToCustomError(error)); }) ); } From ab6cf6b7c33d908f0c6817c23ee3c2be11124515 Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Tue, 7 Sep 2021 14:45:27 +0200 Subject: [PATCH 2/3] Updated Jenkisfile for dev to only deploy to sys and auto --- openshift/dev/Jenkinsfile | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/openshift/dev/Jenkinsfile b/openshift/dev/Jenkinsfile index 9a0430a..1a3f260 100644 --- a/openshift/dev/Jenkinsfile +++ b/openshift/dev/Jenkinsfile @@ -3,7 +3,6 @@ def appname = "${APP_NAME}" def utv_project = "${UTV_NAMESPACE}" def auto_project = "${AUTO_NAMESPACE}" def sys_project = "${SYS_NAMESPACE}" -def test_project = "${TEST_NAMESPACE}" def jenkinsslave = "nodejs15-agent" def dist_path = "dist/apps/mina-sidor-fa" @@ -149,22 +148,6 @@ pipeline { echo '### Deployed to "sys"! ###' } } - - stage('Deploy "test"') { - steps { - echo '### Deploying to "test"... ###' - script { - openshift.withCluster() { - openshift.withProject(test_project) { - openshift.raw("set image dc/${ appname } ${ appname }=docker-registry.default.svc:5000/${utv_project}/${ appname }:${BUILD_TAG} --record=true --source=docker") - openshift.raw("annotate dc ${ appname } version=${BUILD_TAG} --overwrite=true") - openshift.selector("dc", "${ appname }").rollout().status(); - } - } - } - echo '### Deployed to "test"! ###' - } - } } } From 71180cf1bea0d498d83876098c0149db3f409e64 Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Tue, 7 Sep 2021 14:50:56 +0200 Subject: [PATCH 3/3] Fixed issue with SSN --- apps/mina-sidor-fa/src/app/shared/models/employee.model.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/mina-sidor-fa/src/app/shared/models/employee.model.ts b/apps/mina-sidor-fa/src/app/shared/models/employee.model.ts index e78e379..37a14b9 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/employee.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/employee.model.ts @@ -48,6 +48,7 @@ export interface EmployeesData { } function mapResponseToSsn(ssn: string): string { + ssn = ssn.replaceAll('-', ''); if (ssn.length === 10) { const century = +CURRENT_YEAR - +ssn.slice(0, 2) > 0 ? '20' : '19'; ssn = ssn.padStart(12, century);