From 60f5cb047b45fb6ec8df2cebe03f64e478778caf Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Mon, 27 Sep 2021 15:37:33 +0200 Subject: [PATCH] Fixed tests and lint --- .../deltagare-tab-reports.component.ts | 7 +- .../deltagare-card.component.ts | 5 +- .../models/api/deltagare.response.model.ts | 2 +- .../src/app/shared/models/deltagare.model.ts | 2 +- .../shared/services/api/avrop-api.service.ts | 4 +- .../api/deltagare-handelser-api.service.ts | 8 +- .../services/api/deltagare.api.service.ts | 208 ++++++++++-------- .../shared/services/deltagare-card.service.ts | 18 +- config/proxy.conf.api.json | 2 +- mock-api/mina-sidor-fa/server.js | 4 +- 10 files changed, 138 insertions(+), 122 deletions(-) diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-card/components/deltagare-tab-reports/deltagare-tab-reports.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-card/components/deltagare-tab-reports/deltagare-tab-reports.component.ts index 9375ae2..f05a081 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-card/components/deltagare-tab-reports/deltagare-tab-reports.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-card/components/deltagare-tab-reports/deltagare-tab-reports.component.ts @@ -19,11 +19,12 @@ export class DeltagareTabReportsComponent { private _type$ = new BehaviorSubject(null); readonly reportsFormControlName = 'reports'; - public currentGenomforandeReferens$: Observable = this.activatedRoute.params.pipe( + public currentGenomforandeReferens$: Observable = this.activatedRoute.params.pipe( map(params => params.genomforandeReferens as string), distinctUntilChanged( ([prevGenomforandeReferens], [currGenomforandeReferens]) => prevGenomforandeReferens === currGenomforandeReferens - ) + ), + map(genomforandeReferens => +genomforandeReferens) ); reportsData$: Observable = combineLatest([ @@ -59,7 +60,7 @@ export class DeltagareTabReportsComponent { return this.reportPickerFormGroup?.get(this.reportsFormControlName); } - onFormSubmitted(event: Event, reportType: string, genomforandeReferens: string): void { + onFormSubmitted(event: Event, reportType: string, genomforandeReferens: number): void { event.preventDefault(); switch (reportType) { diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-card/deltagare-card.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-card/deltagare-card.component.ts index a34d9fa..e240bde 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-card/deltagare-card.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-card/deltagare-card.component.ts @@ -28,11 +28,12 @@ export class DeltagareCardComponent { private _userRoles: Role[] = this.userService.userRolesSnapshot; public activeTab$: Observable = this._activeTab$.asObservable(); - public currentGenomforandeReferens$: Observable = this.activatedRoute.params.pipe( + public currentGenomforandeReferens$: Observable = this.activatedRoute.params.pipe( map(params => params.genomforandeReferens as string), distinctUntilChanged( ([prevGenomforandeReferens], [currGenomforandeReferens]) => prevGenomforandeReferens === currGenomforandeReferens - ) + ), + map(genomforandeReferens => +genomforandeReferens) ); contactInformation$: Observable = this.currentGenomforandeReferens$.pipe( switchMap(genomforandeReferens => this.deltagareCardService.fetchContactInformation$(genomforandeReferens)), diff --git a/apps/mina-sidor-fa/src/app/shared/models/api/deltagare.response.model.ts b/apps/mina-sidor-fa/src/app/shared/models/api/deltagare.response.model.ts index 414386f..f68b9a9 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/api/deltagare.response.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/api/deltagare.response.model.ts @@ -17,7 +17,7 @@ export interface DeltagareCompactResponse { utforandeVerksamhet: string; utforandeAdress: string; hasAvbrott: boolean; - genomforandeReferens: string; + genomforandeReferens: number; startdatumAvrop: Date; slutdatumAvrop: Date; } diff --git a/apps/mina-sidor-fa/src/app/shared/models/deltagare.model.ts b/apps/mina-sidor-fa/src/app/shared/models/deltagare.model.ts index 47a19dc..cc71c9d 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/deltagare.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/deltagare.model.ts @@ -19,7 +19,7 @@ export interface DeltagareCompact { utforandeVerksamhet: string; utforandeAdress: string; hasAvbrott: boolean; - genomforandeReferens: string; + genomforandeReferens: number; startdatumAvrop: Date; slutdatumAvrop: Date; } diff --git a/apps/mina-sidor-fa/src/app/shared/services/api/avrop-api.service.ts b/apps/mina-sidor-fa/src/app/shared/services/api/avrop-api.service.ts index 4bc39fd..aed50ae 100644 --- a/apps/mina-sidor-fa/src/app/shared/services/api/avrop-api.service.ts +++ b/apps/mina-sidor-fa/src/app/shared/services/api/avrop-api.service.ts @@ -28,7 +28,7 @@ export class AvropApiService { return this._lockedAvropSnapshot$.getValue(); } - fetchAvrop$(params: Params): Observable { + fetchAvrop$(params: Params): Observable { return this.httpClient .get(`${this._apiBaseUrl}`, { params }) .pipe( @@ -36,7 +36,7 @@ export class AvropApiService { catchError((error: Error & { status: number }) => { if (error.status === 403) { this._showUnauthorizedError$.next(true); - return of(null); + return of(null as null); } else { throw new CustomError( errorToCustomError({ ...error, message: `Kunde inte hämta deltagare.\n\n${error.message}` }) diff --git a/apps/mina-sidor-fa/src/app/shared/services/api/deltagare-handelser-api.service.ts b/apps/mina-sidor-fa/src/app/shared/services/api/deltagare-handelser-api.service.ts index 617da18..6517ca2 100644 --- a/apps/mina-sidor-fa/src/app/shared/services/api/deltagare-handelser-api.service.ts +++ b/apps/mina-sidor-fa/src/app/shared/services/api/deltagare-handelser-api.service.ts @@ -1,9 +1,9 @@ +import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; +import { environment } from '@msfa-environment'; +import { DeltagareHandelse, DeltagareHandelseApiResponse } from '@msfa-models/deltagare-handelse.model'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { HttpClient } from '@angular/common/http'; -import { DeltagareHandelse, DeltagareHandelseApiResponse } from '@msfa-models/deltagare-handelse.model'; -import { environment } from '@msfa-environment'; @Injectable({ providedIn: 'root', @@ -12,7 +12,7 @@ export class DeltagareHandelserApiService { private _apiBaseUrl = `${environment.api.url}`; constructor(private httpClient: HttpClient) {} - fetchDeltagareHandelser$(genomforandeReferens: string): Observable { + fetchDeltagareHandelser$(genomforandeReferens: number): Observable { if (!genomforandeReferens) { throw new Error('Genomförandereferens kunde inte hittas.'); } diff --git a/apps/mina-sidor-fa/src/app/shared/services/api/deltagare.api.service.ts b/apps/mina-sidor-fa/src/app/shared/services/api/deltagare.api.service.ts index bb9ce68..5609558 100644 --- a/apps/mina-sidor-fa/src/app/shared/services/api/deltagare.api.service.ts +++ b/apps/mina-sidor-fa/src/app/shared/services/api/deltagare.api.service.ts @@ -59,7 +59,7 @@ export class DeltagareApiService { this._deltagareLoading$.next(true); return this.httpClient - .get(this._apiBaseUrl, { + .get(this._apiBaseUrl, { params, }) .pipe( @@ -70,7 +70,7 @@ export class DeltagareApiService { catchError((error: Error & { status: number }) => { if (error.status === 403) { this._showUnauthorizedError$.next(true); - return of(null); + return of(null as null); } else { throw new CustomError( errorToCustomError({ ...error, message: `Kunde inte hämta deltagare.\n\n${error.message}` }) @@ -80,7 +80,7 @@ export class DeltagareApiService { ); } - public fetchReports$(limit: number, page: number, genomforandeReferens: string): Observable { + public fetchReports$(limit: number, page: number, genomforandeReferens: number): Observable { return of({ data: [], meta: null }); // TODO: When the API/Mock-API has implemented the endpoint, we can remove use following code @@ -104,31 +104,35 @@ export class DeltagareApiService { // ); } - public fetchContactInformation$(id: string): Observable { - return this.httpClient.get<{ data: ContactInformationResponse }>(`${this._apiBaseUrl}/${id}/contact`).pipe( - map(({ data }) => mapResponseToContactInformation(data)), - catchError((error: Error) => { - throw new CustomError( - errorToCustomError({ ...error, message: `Kunde inte hämta kontaktinformation.\n\n${error.message}` }) - ); - }) - ); - } - - public fetchDriversLicense$(id: string): Observable { - return this.httpClient.get<{ data: DriversLicenseResponse }>(`${this._apiBaseUrl}/${id}/driverlicense`).pipe( - map(({ data }) => mapResponseToDriversLicense(data)), - catchError((error: Error) => { - throw new CustomError( - errorToCustomError({ ...error, message: `Kunde inte hämta körkortsinformation.\n\n${error.message}` }) - ); - }) - ); - } - - public fetchHighestEducation$(id: string): Observable { + public fetchContactInformation$(genomforandeReferens: number): Observable { return this.httpClient - .get<{ data: HighestEducationResponse }>(`${this._apiBaseUrl}/${id}/educationlevels/highest`) + .get<{ data: ContactInformationResponse }>(`${this._apiBaseUrl}/${genomforandeReferens}/contact`) + .pipe( + map(({ data }) => mapResponseToContactInformation(data)), + catchError((error: Error) => { + throw new CustomError( + errorToCustomError({ ...error, message: `Kunde inte hämta kontaktinformation.\n\n${error.message}` }) + ); + }) + ); + } + + public fetchDriversLicense$(genomforandeReferens: number): Observable { + return this.httpClient + .get<{ data: DriversLicenseResponse }>(`${this._apiBaseUrl}/${genomforandeReferens}/driverlicense`) + .pipe( + map(({ data }) => mapResponseToDriversLicense(data)), + catchError((error: Error) => { + throw new CustomError( + errorToCustomError({ ...error, message: `Kunde inte hämta körkortsinformation.\n\n${error.message}` }) + ); + }) + ); + } + + public fetchHighestEducation$(genomforandeReferens: number): Observable { + return this.httpClient + .get<{ data: HighestEducationResponse }>(`${this._apiBaseUrl}/${genomforandeReferens}/educationlevels/highest`) .pipe( map(({ data }) => mapResponseToHighestEducation(data)), catchError((error: Error) => { @@ -139,79 +143,89 @@ export class DeltagareApiService { ); } - public fetchEducations$(id: string): Observable { - return this.httpClient.get<{ data: EducationsResponse }>(`${this._apiBaseUrl}/${id}/educations`).pipe( - map(({ data }) => - data.utbildningar - ? data.utbildningar.sort((a, b) => + public fetchEducations$(genomforandeReferens: number): Observable { + return this.httpClient + .get<{ data: EducationsResponse }>(`${this._apiBaseUrl}/${genomforandeReferens}/educations`) + .pipe( + map(({ data }) => + data.utbildningar + ? data.utbildningar.sort((a, b) => + sortFromToDates({ from: a.period_from, to: a.period_tom }, { from: b.period_from, to: b.period_tom }) + ) + : [] + ), + map(educations => educations.map(utbildning => mapResponseToEducation(utbildning))), + catchError((error: Error) => { + throw new CustomError( + errorToCustomError({ ...error, message: `Kunde inte hämta utbildningar.\n\n${error.message}` }) + ); + }) + ); + } + + public fetchTranslator$(genomforandeReferens: number): Observable { + return this.httpClient + .get<{ data: TranslatorResponse }>(`${this._apiBaseUrl}/${genomforandeReferens}/translator`) + .pipe( + map(({ data }) => data.sprak?.beskrivning || null), + catchError((error: Error) => { + throw new CustomError( + errorToCustomError({ ...error, message: `Kunde inte hämta tolkinformation.\n\n${error.message}` }) + ); + }) + ); + } + + public fetchWorkLanguages$(genomforandeReferens: number): Observable { + return this.httpClient + .get<{ data: WorkLanguagesResponse }>(`${this._apiBaseUrl}/${genomforandeReferens}/work/languages`) + .pipe( + map(({ data }) => data?.sprak?.map(sprak => sprak.beskrivning) || []), + catchError((error: Error) => { + throw new CustomError( + errorToCustomError({ + ...error, + message: `Kunde inte hämta språk som kan användas på jobbet.\n\n${error.message}`, + }) + ); + }) + ); + } + + public fetchDisabilities$(genomforandeReferens: number): Observable { + return this.httpClient + .get<{ data: DisabilityResponse[] }>(`${this._apiBaseUrl}/${genomforandeReferens}/work/disabilities`) + .pipe( + map(({ data }) => data?.map(funktionsnedsattning => mapResponseToDisability(funktionsnedsattning)) || []), + catchError((error: Error) => { + throw new CustomError( + errorToCustomError({ ...error, message: `Kunde inte hämta funktionsnedsättningar.\n\n${error.message}` }) + ); + }) + ); + } + + public fetchWorkExperiences$(genomforandeReferens: number): Observable { + return this.httpClient + .get<{ data: WorkExperiencesResponse }>(`${this._apiBaseUrl}/${genomforandeReferens}/work/experiences`) + .pipe( + map( + ({ data }) => + data?.arbetslivserfarenheter?.sort((a, b) => sortFromToDates({ from: a.period_from, to: a.period_tom }, { from: b.period_from, to: b.period_tom }) - ) - : [] - ), - map(educations => educations.map(utbildning => mapResponseToEducation(utbildning))), - catchError((error: Error) => { - throw new CustomError( - errorToCustomError({ ...error, message: `Kunde inte hämta utbildningar.\n\n${error.message}` }) - ); - }) - ); + ) || [] + ), + map(workExperiences => workExperiences.map(erfarenhet => mapResponseToWorkExperience(erfarenhet))), + catchError((error: Error) => { + throw new CustomError( + errorToCustomError({ ...error, message: `Kunde inte hämta arbetslivserfarenheter.\n\n${error.message}` }) + ); + }) + ); } - public fetchTranslator$(id: string): Observable { - return this.httpClient.get<{ data: TranslatorResponse }>(`${this._apiBaseUrl}/${id}/translator`).pipe( - map(({ data }) => data.sprak?.beskrivning || null), - catchError((error: Error) => { - throw new CustomError( - errorToCustomError({ ...error, message: `Kunde inte hämta tolkinformation.\n\n${error.message}` }) - ); - }) - ); - } - - public fetchWorkLanguages$(id: string): Observable { - return this.httpClient.get<{ data: WorkLanguagesResponse }>(`${this._apiBaseUrl}/${id}/work/languages`).pipe( - map(({ data }) => data?.sprak?.map(sprak => sprak.beskrivning) || []), - catchError((error: Error) => { - throw new CustomError( - errorToCustomError({ - ...error, - message: `Kunde inte hämta språk som kan användas på jobbet.\n\n${error.message}`, - }) - ); - }) - ); - } - - public fetchDisabilities$(id: string): Observable { - return this.httpClient.get<{ data: DisabilityResponse[] }>(`${this._apiBaseUrl}/${id}/work/disabilities`).pipe( - map(({ data }) => data?.map(funktionsnedsattning => mapResponseToDisability(funktionsnedsattning)) || []), - catchError((error: Error) => { - throw new CustomError( - errorToCustomError({ ...error, message: `Kunde inte hämta funktionsnedsättningar.\n\n${error.message}` }) - ); - }) - ); - } - - public fetchWorkExperiences$(id: string): Observable { - return this.httpClient.get<{ data: WorkExperiencesResponse }>(`${this._apiBaseUrl}/${id}/work/experiences`).pipe( - map( - ({ data }) => - data?.arbetslivserfarenheter?.sort((a, b) => - sortFromToDates({ from: a.period_from, to: a.period_tom }, { from: b.period_from, to: b.period_tom }) - ) || [] - ), - map(workExperiences => workExperiences.map(erfarenhet => mapResponseToWorkExperience(erfarenhet))), - catchError((error: Error) => { - throw new CustomError( - errorToCustomError({ ...error, message: `Kunde inte hämta arbetslivserfarenheter.\n\n${error.message}` }) - ); - }) - ); - } - - public fetchAvropInformation$(id: string): Observable { - return this.httpClient.get<{ data: AvropResponse }>(`${this._apiBaseUrl}/${id}/avrop`).pipe( + public fetchAvropInformation$(genomforandeReferens: number): Observable { + return this.httpClient.get<{ data: AvropResponse }>(`${this._apiBaseUrl}/${genomforandeReferens}/avrop`).pipe( map(({ data }) => mapAvropResponseToAvrop(data)), catchError((error: Error) => { throw new CustomError( diff --git a/apps/mina-sidor-fa/src/app/shared/services/deltagare-card.service.ts b/apps/mina-sidor-fa/src/app/shared/services/deltagare-card.service.ts index 926cb80..9e7f649 100644 --- a/apps/mina-sidor-fa/src/app/shared/services/deltagare-card.service.ts +++ b/apps/mina-sidor-fa/src/app/shared/services/deltagare-card.service.ts @@ -16,31 +16,31 @@ import { DeltagareApiService } from './api/deltagare.api.service'; export class DeltagareCardService { constructor(private deltagareApiService: DeltagareApiService) {} - public fetchContactInformation$(genomforandeReferens: string): Observable { + public fetchContactInformation$(genomforandeReferens: number): Observable { return this.deltagareApiService.fetchContactInformation$(genomforandeReferens); } - public fetchAvropInformation$(genomforandeReferens: string): Observable { + public fetchAvropInformation$(genomforandeReferens: number): Observable { return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); } - public fetchWorkExperiences$(genomforandeReferens: string): Observable { + public fetchWorkExperiences$(genomforandeReferens: number): Observable { return this.deltagareApiService.fetchWorkExperiences$(genomforandeReferens); } - public fetchHighestEducation$(genomforandeReferens: string): Observable { + public fetchHighestEducation$(genomforandeReferens: number): Observable { return this.deltagareApiService.fetchHighestEducation$(genomforandeReferens); } - public fetchEducations$(genomforandeReferens: string): Observable { + public fetchEducations$(genomforandeReferens: number): Observable { return this.deltagareApiService.fetchEducations$(genomforandeReferens); } - public fetchDriversLicense$(genomforandeReferens: string): Observable { + public fetchDriversLicense$(genomforandeReferens: number): Observable { return this.deltagareApiService.fetchDriversLicense$(genomforandeReferens); } - public fetchWorkLanguages$(genomforandeReferens: string): Observable { + public fetchWorkLanguages$(genomforandeReferens: number): Observable { return this.deltagareApiService.fetchWorkLanguages$(genomforandeReferens); } - public fetchDisabilities$(genomforandeReferens: string): Observable { + public fetchDisabilities$(genomforandeReferens: number): Observable { return this.deltagareApiService.fetchDisabilities$(genomforandeReferens); } - public fetchReports$(limit: number, page: number, genomforandeReferens: string): Observable { + public fetchReports$(limit: number, page: number, genomforandeReferens: number): Observable { return this.deltagareApiService.fetchReports$(limit, page, genomforandeReferens); } } diff --git a/config/proxy.conf.api.json b/config/proxy.conf.api.json index 9e49ffb..19a0e90 100644 --- a/config/proxy.conf.api.json +++ b/config/proxy.conf.api.json @@ -1,6 +1,6 @@ { "/api": { - "target": "https://mina-sidor-fa-sys.tocp.arbetsformedlingen.se", + "target": "https://mina-sidor-fa-test.tocp.arbetsformedlingen.se", "secure": false, "changeOrigin": true } diff --git a/mock-api/mina-sidor-fa/server.js b/mock-api/mina-sidor-fa/server.js index 1c6b2d6..9fe0d49 100644 --- a/mock-api/mina-sidor-fa/server.js +++ b/mock-api/mina-sidor-fa/server.js @@ -45,9 +45,9 @@ server.use( '/deltagare*onlyMyDeltagare=*': '/minaDeltagare', '/avrop*tjanstKod*': '/avrop$1tjanstekod$2', '/deltagare?*': '/avrop?$1', - '/deltagare/:sokandeId/avrop': '/avrop?sokandeId=:sokandeId', + '/deltagare/:genomforandeReferens/avrop': '/avrop?genomforandeReferens=:genomforandeReferens', '/deltagare/:genomforandeReferens/handelser': '/deltagareHandelser?genomforandeReferens=:genomforandeReferens', - '/deltagare/:sokandeId/*': '/deltagare/:sokandeId', + '/deltagare/:genomforandeReferens/*': '/deltagare/:genomforandeReferens', '*page=*': '$1_page=$2', '*limit=*': '$1_limit=$2', '*sort=*': '$1_sort=$2',