From 258d7fbc67be6fc2a8008825d73fb39e2e9851b7 Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Thu, 15 Apr 2021 15:16:13 +0200 Subject: [PATCH] Now able to post to mock-api --- .../create-account.component.ts | 17 ++++++++++---- .../staff-card/staff-card.component.html | 10 ++++----- .../src/app/services/api/staff.service.ts | 22 ++++++++++++++----- mock-api/dafa-web/scripts/generate-api.js | 2 +- 4 files changed, 35 insertions(+), 16 deletions(-) diff --git a/apps/dafa-web/src/app/pages/administration/pages/create-account/create-account.component.ts b/apps/dafa-web/src/app/pages/administration/pages/create-account/create-account.component.ts index 6d0cbd9..1eacba2 100644 --- a/apps/dafa-web/src/app/pages/administration/pages/create-account/create-account.component.ts +++ b/apps/dafa-web/src/app/pages/administration/pages/create-account/create-account.component.ts @@ -1,6 +1,8 @@ import { RadiobuttonModel } from '@af/digi-ng/_form/form-radiobutton-group'; import { ChangeDetectionStrategy, Component } from '@angular/core'; import { AbstractControl, FormBuilder, FormGroup } from '@angular/forms'; +import { Router } from '@angular/router'; +import { StaffService } from '@dafa-services/api/staff.service'; import { RequiredValidator } from '@dafa-validators/required.validator'; import { SocialSecurityNumberValidator } from '@dafa-validators/social-security-number.validator'; import { BehaviorSubject } from 'rxjs'; @@ -16,7 +18,7 @@ export class CreateAccountComponent { formGroup: FormGroup; todaysDate = new Date(); - constructor(private formBuilder: FormBuilder) { + constructor(private formBuilder: FormBuilder, private staffService: StaffService, private router: Router) { this.formGroup = this.formBuilder.group({ firstName: this.formBuilder.control('', [RequiredValidator('Förnamn')]), lastName: this.formBuilder.control('', [RequiredValidator('Efternamn')]), @@ -94,16 +96,23 @@ export class CreateAccountComponent { if (this.formGroup.valid) { const submittableValues = { ...this.formGroup.value, + fullName: `${this.firstNameControl.value} ${this.lastNameControl.value}`, outOfOffice: this.pendingOutOfOfficeDates, }; delete submittableValues.outOfOfficeStart; delete submittableValues.outOfOfficeEnd; - console.warn('Should submit the form...'); - console.table(submittableValues); + const post = this.staffService.createAccount(submittableValues).subscribe({ + next: id => { + this.router.navigate(['/administration', 'personal', id]); + }, + complete: () => { + post.unsubscribe(); + }, + }); - this.formGroup.reset(); + // this.formGroup.reset(); } else { console.error('Form is invalid, do something...'); this._markFormAsDirty(); diff --git a/apps/dafa-web/src/app/pages/administration/pages/staff-card/staff-card.component.html b/apps/dafa-web/src/app/pages/administration/pages/staff-card/staff-card.component.html index 0523620..a974ff4 100644 --- a/apps/dafa-web/src/app/pages/administration/pages/staff-card/staff-card.component.html +++ b/apps/dafa-web/src/app/pages/administration/pages/staff-card/staff-card.component.html @@ -32,7 +32,7 @@
Behörighet
- +
{{ item }}
@@ -40,7 +40,7 @@
Aktivt i arbete
{{ detailedStaffData.active ? 'Ja' : 'Nej' }}
Frånvaroperiod
- +
{{ date.start | localDate }} - {{ date.end | localDate }}
@@ -72,9 +72,9 @@

- Tilldelade deltagare ({{ detailedStaffData.participants.length }}) + Tilldelade deltagare ({{ detailedStaffData.participants?.length || 0 }})

- +
  • { @@ -19,7 +19,8 @@ function filterStaff(staff: Staff[], searchFilter: string): Staff[] { providedIn: 'root', }) export class StaffService { - private _allStaff$: Observable = this.httpClient.get(`${environment.apiBase}/staff`, { + private _staffApiUrl = `${environment.apiBase}/staff`; + private _allStaff$: Observable = this.httpClient.get(this._staffApiUrl, { params: { _embed: 'participants' }, }); @@ -38,8 +39,10 @@ export class StaffService { }) ); + constructor(private httpClient: HttpClient) {} + public getDetailedStaffData(id: string): Observable { - return this.httpClient.get(`${environment.apiBase}/staff/${id}`, { params: { _embed: 'participants' } }); + return this.httpClient.get(`${this._staffApiUrl}/${id}`, { params: { _embed: 'participants' } }); } public setSearchFilter(value: string) { @@ -52,5 +55,12 @@ export class StaffService { this._staffSortBy$.next({ key, reverse }); } - constructor(private httpClient: HttpClient) {} + public createAccount(staffData: StaffDetail): Observable { + return this.httpClient.post(this._staffApiUrl, staffData).pipe( + map(data => data.id), + catchError(error => { + return throwError(error); + }) + ); + } } diff --git a/mock-api/dafa-web/scripts/generate-api.js b/mock-api/dafa-web/scripts/generate-api.js index a32b5d3..d973a4d 100644 --- a/mock-api/dafa-web/scripts/generate-api.js +++ b/mock-api/dafa-web/scripts/generate-api.js @@ -5,7 +5,7 @@ import participants from './participants.js'; import services from './services.js'; import staff from './staff.js'; -const generatedStaff = staff.generate(20); +const generatedStaff = staff.generate(5); const apiData = { services: services.generate(),