From 1d8f8a04c783e1f8218b10986ead7a886311d5da Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Fri, 29 Oct 2021 13:18:27 +0200 Subject: [PATCH] Fetching activities to be able to show PR after submit --- .../periodisk-redovisning-view.component.ts | 4 ++-- .../periodisk-redovisning-view.service.ts | 21 +++++++++++++------ .../periodisk-redovisning.response.model.ts | 4 ---- .../models/periodisk-redovisning.model.ts | 14 +++++++++++-- 4 files changed, 29 insertions(+), 14 deletions(-) diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/periodisk-redovisning-view/periodisk-redovisning-view.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/periodisk-redovisning-view/periodisk-redovisning-view.component.ts index 089e4ae..8670434 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/periodisk-redovisning-view/periodisk-redovisning-view.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/periodisk-redovisning-view/periodisk-redovisning-view.component.ts @@ -35,14 +35,14 @@ export class PeriodiskRedovisningViewComponent { ); getActivityInfoAsString(activity: PeriodiskRedovisningActivity): string { - const hours = activity.hours === 1 ? '1 timme' : `${activity.hours} timmar`; + const hours = activity.hours ? (activity.hours === 1 ? '1 timme ' : `${activity.hours} timmar `) : ''; const location = activity.performedRemotely && activity.performedPhysically ? 'på distans och på plats' : activity.performedRemotely ? 'på distans' : 'på plats'; - return `${activity.name}: ${hours} ${location}`; + return `${activity.name}: ${hours}${location}`; } constructor( diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/periodisk-redovisning-view/periodisk-redovisning-view.service.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/periodisk-redovisning-view/periodisk-redovisning-view.service.ts index b76c206..66a9896 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/periodisk-redovisning-view/periodisk-redovisning-view.service.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/periodisk-redovisning-view/periodisk-redovisning-view.service.ts @@ -1,15 +1,20 @@ import { Injectable } from '@angular/core'; +import { Activity } from '@msfa-models/activity.model'; import { Avrop } from '@msfa-models/avrop.model'; -import { Observable } from 'rxjs'; import { mapResponseToPeriodiskRedovisning, PeriodiskRedovisning } from '@msfa-models/periodisk-redovisning.model'; -import { PeriodiskRedovisningApiService } from '@msfa-services/api/periodisk-redovisning.api.service'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; -import { map } from 'rxjs/operators'; +import { GemensamPlaneringApiService } from '@msfa-services/api/gemensam-planering-api.service'; +import { PeriodiskRedovisningApiService } from '@msfa-services/api/periodisk-redovisning.api.service'; +import { Observable } from 'rxjs'; +import { map, switchMap } from 'rxjs/operators'; @Injectable() export class PeriodiskRedovisningViewService { + private _activities$: Observable = this.gemensamPlaneringApiService.fetchActivities$(); + constructor( private periodiskRedovisningApiService: PeriodiskRedovisningApiService, + private gemensamPlaneringApiService: GemensamPlaneringApiService, private deltagareApiService: DeltagareApiService ) {} @@ -18,8 +23,12 @@ export class PeriodiskRedovisningViewService { } public fetchPeriodiskRedovisning$(handlingId: string): Observable { - return this.periodiskRedovisningApiService - .fetchPeriodiskRedovisning$(handlingId) - .pipe(map(({ data }) => (data ? mapResponseToPeriodiskRedovisning(data) : null))); + return this._activities$.pipe( + switchMap(activities => + this.periodiskRedovisningApiService + .fetchPeriodiskRedovisning$(handlingId) + .pipe(map(({ data }) => mapResponseToPeriodiskRedovisning(data, activities))) + ) + ); } } diff --git a/apps/mina-sidor-fa/src/app/shared/models/api/periodisk-redovisning.response.model.ts b/apps/mina-sidor-fa/src/app/shared/models/api/periodisk-redovisning.response.model.ts index 485eeb9..727d240 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/api/periodisk-redovisning.response.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/api/periodisk-redovisning.response.model.ts @@ -1,6 +1,5 @@ export interface PeriodiskRedovisningActivityResponse { id: number; - name: string; performedRemotely: boolean; performedPhysically: boolean; hours: number; @@ -23,21 +22,18 @@ export function mockOnePeriodiskRedovisningResponse(): PeriodiskRedovisningRespo activities: [ { id: 24, - name: 'Aktivitet 1', performedRemotely: false, performedPhysically: true, hours: 25, }, { id: 19, - name: 'Aktivitet 2', performedRemotely: true, performedPhysically: false, hours: 3, }, { id: 31, - name: 'Aktivitet 3', performedRemotely: true, performedPhysically: true, hours: 2, diff --git a/apps/mina-sidor-fa/src/app/shared/models/periodisk-redovisning.model.ts b/apps/mina-sidor-fa/src/app/shared/models/periodisk-redovisning.model.ts index afae581..2a786c6 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/periodisk-redovisning.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/periodisk-redovisning.model.ts @@ -1,3 +1,4 @@ +import { Activity } from './activity.model'; import { PeriodiskRedovisningResponse } from './api/periodisk-redovisning.response.model'; export interface PeriodiskRedovisningActivity { @@ -16,7 +17,10 @@ export interface PeriodiskRedovisning { activities: PeriodiskRedovisningActivity[]; } -export function mapResponseToPeriodiskRedovisning(data: PeriodiskRedovisningResponse): PeriodiskRedovisning { +export function mapResponseToPeriodiskRedovisning( + data: PeriodiskRedovisningResponse, + allActivities: Activity[] +): PeriodiskRedovisning { const { genomforandeReferens, period, hasOfferedLanguageSupport, hasOfferedJob, activities } = data; return { @@ -24,6 +28,12 @@ export function mapResponseToPeriodiskRedovisning(data: PeriodiskRedovisningResp period, hasOfferedJob, hasOfferedLanguageSupport, - activities, + activities: activities.map(({ id, performedRemotely, performedPhysically, hours }) => ({ + id, + name: allActivities.find(activity => activity.id === id).name, + performedRemotely, + performedPhysically, + hours, + })), }; }