diff --git a/apps/dafa-web/src/app/pages/avrop/avrop.service.ts b/apps/dafa-web/src/app/pages/avrop/avrop.service.ts index 54a3044..e5425f4 100644 --- a/apps/dafa-web/src/app/pages/avrop/avrop.service.ts +++ b/apps/dafa-web/src/app/pages/avrop/avrop.service.ts @@ -33,7 +33,7 @@ export class AvropService { this.selectedKommuner$, ]).pipe( switchMap(([selectedTjanster, selectedUtforandeVerksamheter, selectedKommuner]) => - this.avropApiService.getNyaDeltagare$(selectedTjanster, selectedKommuner, selectedUtforandeVerksamheter) + this.avropApiService.getNyaAvrop$(selectedTjanster, selectedKommuner, selectedUtforandeVerksamheter) ) ); diff --git a/apps/dafa-web/src/app/pages/avrop/components/avrop-filters/temporary-filter/temporary-filter.component.html b/apps/dafa-web/src/app/pages/avrop/components/avrop-filters/temporary-filter/temporary-filter.component.html index 3e3eea2..e115483 100644 --- a/apps/dafa-web/src/app/pages/avrop/components/avrop-filters/temporary-filter/temporary-filter.component.html +++ b/apps/dafa-web/src/app/pages/avrop/components/avrop-filters/temporary-filter/temporary-filter.component.html @@ -2,7 +2,7 @@ {{filterLabel}} diff --git a/apps/dafa-web/src/app/pages/avrop/components/avrop-table/avrop-table-row/avrop-table-row.component.html b/apps/dafa-web/src/app/pages/avrop/components/avrop-table/avrop-table-row/avrop-table-row.component.html index a8befd5..1517a29 100644 --- a/apps/dafa-web/src/app/pages/avrop/components/avrop-table/avrop-table-row/avrop-table-row.component.html +++ b/apps/dafa-web/src/app/pages/avrop/components/avrop-table/avrop-table-row/avrop-table-row.component.html @@ -14,7 +14,7 @@
Namn: - {{deltagare?.name}} + {{deltagare?.fullName}}
@@ -42,7 +42,7 @@
Språkstöd/Tolk: - {{deltagare?.translator}} + {{deltagare?.sprakstod.beskrivning}}
diff --git a/apps/dafa-web/src/app/shared/models/api/handledare.response.model.ts b/apps/dafa-web/src/app/shared/models/api/handledare.response.model.ts new file mode 100644 index 0000000..6e65f05 --- /dev/null +++ b/apps/dafa-web/src/app/shared/models/api/handledare.response.model.ts @@ -0,0 +1,4 @@ +export interface HandledareResponse { + id: number; + name: string +} diff --git a/apps/dafa-web/src/app/shared/models/api/kommun.response.model.ts b/apps/dafa-web/src/app/shared/models/api/kommun.response.model.ts index 96e41f3..ba4b38d 100644 --- a/apps/dafa-web/src/app/shared/models/api/kommun.response.model.ts +++ b/apps/dafa-web/src/app/shared/models/api/kommun.response.model.ts @@ -1,4 +1,4 @@ export interface KommunResponse { - id: number; - name: string; + kommunCode: number; + kommun: string; } diff --git a/apps/dafa-web/src/app/shared/models/avrop.model.ts b/apps/dafa-web/src/app/shared/models/avrop.model.ts index 2322bbc..aa6bf6f 100644 --- a/apps/dafa-web/src/app/shared/models/avrop.model.ts +++ b/apps/dafa-web/src/app/shared/models/avrop.model.ts @@ -3,12 +3,12 @@ import { AvropResponse } from './api/avrop.response.model'; export interface AvropCompact { id: string; // id sokandeId: number; // sokandeId - name: string; // deltagare + fullName: string; // deltagare tjanst: string; // tjansteNamn startDate: Date; // startdatumAvrop endDate: Date; // slutdatumAvrop - translator: string; // tolkbehov - languageSupport: string; // sprakstod + tolkbehov: string; // tolkbehov + sprakstod: string; // sprakstod utforandeAdress: string; // adress trackCode: string; // sparkod } @@ -39,12 +39,12 @@ export function mapAvropResponseToAvrop(data: AvropResponse): Avrop { return { id, sokandeId, - name: deltagare, + fullName: deltagare, tjanst: tjansteNamn, startDate: new Date(startdatumAvrop), endDate: new Date(slutdatumAvrop), - translator: tolkbehov, - languageSupport: sprakstod, + tolkbehov: tolkbehov, + sprakstod: sprakstod, utforandeAdress: adress, trackCode: sparkod, genomforandeReferens, diff --git a/apps/dafa-web/src/app/shared/models/handledare.model.ts b/apps/dafa-web/src/app/shared/models/handledare.model.ts new file mode 100644 index 0000000..13cc270 --- /dev/null +++ b/apps/dafa-web/src/app/shared/models/handledare.model.ts @@ -0,0 +1,17 @@ +import { HandledareResponse } from './api/handledare.response.model'; + +export interface Handledare { + id: number; + name: string; +} + +export function mapHandledareResponseToHandledare( + data: HandledareResponse +): Handledare { + const { id, name } = data; + + return { + id, + name + } +} diff --git a/apps/dafa-web/src/app/shared/models/kommun.model.ts b/apps/dafa-web/src/app/shared/models/kommun.model.ts index a0f30cf..e404102 100644 --- a/apps/dafa-web/src/app/shared/models/kommun.model.ts +++ b/apps/dafa-web/src/app/shared/models/kommun.model.ts @@ -6,10 +6,10 @@ export interface Kommun { } export function mapKommunResponseToKommun(data: KommunResponse): Kommun { - const { id, name } = data; + const { kommunCode, kommun } = data; return { - id, - name, + id: kommunCode, + name: kommun }; } diff --git a/apps/dafa-web/src/app/shared/models/multiselect-filter-option.ts b/apps/dafa-web/src/app/shared/models/multiselect-filter-option.ts index 5ad148a..e315282 100644 --- a/apps/dafa-web/src/app/shared/models/multiselect-filter-option.ts +++ b/apps/dafa-web/src/app/shared/models/multiselect-filter-option.ts @@ -1,5 +1,5 @@ export interface MultiselectFilterOption { - label: string; - id: string; - count: number; + label?: string; + id?: string; + count?: number; } diff --git a/apps/dafa-web/src/app/shared/services/api/avrop-api.service.ts b/apps/dafa-web/src/app/shared/services/api/avrop-api.service.ts index 1d8b08d..e56b5c2 100644 --- a/apps/dafa-web/src/app/shared/services/api/avrop-api.service.ts +++ b/apps/dafa-web/src/app/shared/services/api/avrop-api.service.ts @@ -2,99 +2,50 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { environment } from '@dafa-environment'; import { AvropResponse } from '@dafa-models/api/avrop.response.model'; +import { KommunResponse } from '@dafa-models/api/kommun.response.model'; +import { TjanstResponse } from '@dafa-models/api/tjanst.response.model'; +import { UtforandeVerksamhetResponse } from '@dafa-models/api/utforande-verksamhet.response.model'; import { Avrop, mapAvropResponseToAvrop } from '@dafa-models/avrop.model'; +import { mapKommunResponseToKommun } from '@dafa-models/kommun.model'; import { MultiselectFilterOption } from '@dafa-models/multiselect-filter-option'; +import { mapTjanstResponseToTjanst } from '@dafa-models/tjanst.model'; +import { mapUtforandeVerksamhetResponseToUtforandeVerksamhet } from '@dafa-models/utforande-verksamhet.model'; import { Observable, of } from 'rxjs'; -import { delay, map } from 'rxjs/operators'; +import { delay, filter, map } from 'rxjs/operators'; import { HandledareAvrop } from '../../../pages/avrop/models/handledare-avrop'; +const API_HEADERS = { headers: environment.api.headers }; + const tempHandledareMock: HandledareAvrop[] = [ { id: '1', fullName: 'Göran Persson' }, { id: '2', fullName: 'Stefan Löfven' }, ]; -const tempDeltagareMock: Avrop[] = [ - { - id: 'id', - sokandeId: 1, - name: 'Daniel', - tjanst: 'Kundval rusta och matcha', - startDate: new Date('2021-03-04'), - endDate: new Date('2022-06-04'), - translator: 'Ja', - languageSupport: 'Ja', - utforandeAdress: 'Xgatan 3, Ystad', - trackCode: 'A', - genomforandeReferens: 1, - participationFrequency: 25, - utforandeVerksamhet: 'utf', - }, - { - id: 'id', - sokandeId: 1, - name: 'Nisse', - tjanst: 'STOM', - startDate: new Date('2020-12-22'), - endDate: new Date('2023-08-15'), - translator: '-', - languageSupport: '-', - utforandeAdress: 'Zgatan 4, Qstad', - trackCode: 'B', - genomforandeReferens: 2, - participationFrequency: 75, - utforandeVerksamhet: 'utf', - }, -]; - -const tempKommunerMock: MultiselectFilterOption[] = [ - { id: '124', count: 12, label: 'Stockholm' }, - { id: '125', count: 42, label: 'Göteborg' }, -]; - -const tempUtforandeVerksamheterMock: MultiselectFilterOption[] = [ - { id: 'a124', count: 312, label: 'Utf verk 1' }, - { id: 'b125', count: 142, label: 'Utf verk 2' }, -]; -const tempTjansterMock: MultiselectFilterOption[] = [ - { id: '013', count: 312, label: 'Karriärvägledning' }, - { id: '321', count: 142, label: 'Karriärval rusta och matcha' }, -]; - const tempMockDelay = 300; -const API_HEADERS = { headers: environment.api.headers }; - @Injectable({ providedIn: 'root', }) export class AvropApiService { private _apiBaseUrl = `${environment.api.url}/avrop`; - private _fetchAllAvrop$: Observable = this.httpClient.get(`${this._apiBaseUrl}`, { - ...API_HEADERS, - }); + constructor(private httpClient: HttpClient) { } - constructor(private httpClient: HttpClient) {} - - public allAvrop$: Observable = this._fetchAllAvrop$.pipe( - map(response => response.map(data => mapAvropResponseToAvrop(data))) - ); - - getNyaDeltagare$( + getNyaAvrop$( tjanstIds: MultiselectFilterOption[], kommunIds: MultiselectFilterOption[], utforandeVerksamhetIds: MultiselectFilterOption[], offset = 0, limit = 20 ): Observable { - // TODO replace with API-call using tjanstIds, kommunIds, utforandeVerksamhetIds - console.log( - '[API call] getNyaDeltagare$. Inputs: tjanstIds, kommunIds, utforandeVerksamhetIds', - tjanstIds, - kommunIds, - utforandeVerksamhetIds - ); - return of(tempDeltagareMock).pipe(delay(tempMockDelay)); + return this.httpClient + .get<{ data: AvropResponse[] }>(`${this._apiBaseUrl}`, { ...API_HEADERS }) + .pipe( + filter(response => !!response), + map(response => { + return response.data.map(avrop => mapAvropResponseToAvrop(avrop)) + }) + ); } getSelectableHandledare$(deltagare: Avrop[]): Observable { @@ -107,39 +58,46 @@ export class AvropApiService { selectedKommuner: MultiselectFilterOption[], selectedUtforandeVerksamheter: MultiselectFilterOption[] ): Observable { - // TODO replace with API-call - console.log( - '[API call] getSelectableTjanster$. Inputs: selectedKommuner, selectedUtforandeVerksamheter', - selectedKommuner, - selectedUtforandeVerksamheter - ); - return of(tempTjansterMock).pipe(delay(tempMockDelay)); + return this.httpClient.get<{ data: TjanstResponse[] }>(`${this._apiBaseUrl}/tjanster`) + .pipe( + filter(response => !!response), + map(response => { + return response.data.map(tjanster => { + return { label: mapTjanstResponseToTjanst(tjanster).name } + }) + }) + ); } getSelectableUtforandeVerksamheter$( selectedTjanster: MultiselectFilterOption[], selectedKommuner: MultiselectFilterOption[] ): Observable { - // TODO replace with API-call - console.log( - '[API call] getSelectableUtforandeVerksamheter$. Inputs: selectedTjanster, selectedKommuner', - selectedTjanster, - selectedKommuner - ); - return of(tempUtforandeVerksamheterMock).pipe(delay(tempMockDelay)); + return this.httpClient.get<{ data: UtforandeVerksamhetResponse[] }>(`${this._apiBaseUrl}/utforandeverksamheter`, { ...API_HEADERS }) + .pipe( + filter(response => !!response), + map(response => { + return response.data.map(utforandeverksamheter => { + return { label: mapUtforandeVerksamhetResponseToUtforandeVerksamhet(utforandeverksamheter).name } + }) + } + ) + ); } getSelectableKommuner$( selectedTjanster: MultiselectFilterOption[], selectedUtforandeVerksamheter: MultiselectFilterOption[] ): Observable { - // TODO replace with API-call - console.log( - '[API call] getSelectableKommuner$. Inputs: selectedTjanster, selectedUtforandeVerksamheter', - selectedTjanster, - selectedUtforandeVerksamheter - ); - return of(tempKommunerMock).pipe(delay(tempMockDelay)); + return this.httpClient.get<{ data: KommunResponse[] }>(`${this._apiBaseUrl}/kommuner`, { ...API_HEADERS }) + .pipe( + filter(response => !!response), + map(response => { + return response.data.map(kommun => { + return { label: mapKommunResponseToKommun(kommun).name } + }) + }) + ); } async tilldelaHandledare(deltagare: Avrop[], handledare: HandledareAvrop): Promise {