Fetching activities to be able to show PR after submit

This commit is contained in:
Erik Tiekstra
2021-10-29 13:18:27 +02:00
parent e52f499f45
commit 1d8f8a04c7
4 changed files with 29 additions and 14 deletions

View File

@@ -35,14 +35,14 @@ export class PeriodiskRedovisningViewComponent {
); );
getActivityInfoAsString(activity: PeriodiskRedovisningActivity): string { 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 = const location =
activity.performedRemotely && activity.performedPhysically activity.performedRemotely && activity.performedPhysically
? 'på distans och på plats' ? 'på distans och på plats'
: activity.performedRemotely : activity.performedRemotely
? 'på distans' ? 'på distans'
: 'på plats'; : 'på plats';
return `${activity.name}: ${hours} ${location}`; return `${activity.name}: ${hours}${location}`;
} }
constructor( constructor(

View File

@@ -1,15 +1,20 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Activity } from '@msfa-models/activity.model';
import { Avrop } from '@msfa-models/avrop.model'; import { Avrop } from '@msfa-models/avrop.model';
import { Observable } from 'rxjs';
import { mapResponseToPeriodiskRedovisning, PeriodiskRedovisning } from '@msfa-models/periodisk-redovisning.model'; 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 { 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() @Injectable()
export class PeriodiskRedovisningViewService { export class PeriodiskRedovisningViewService {
private _activities$: Observable<Activity[]> = this.gemensamPlaneringApiService.fetchActivities$();
constructor( constructor(
private periodiskRedovisningApiService: PeriodiskRedovisningApiService, private periodiskRedovisningApiService: PeriodiskRedovisningApiService,
private gemensamPlaneringApiService: GemensamPlaneringApiService,
private deltagareApiService: DeltagareApiService private deltagareApiService: DeltagareApiService
) {} ) {}
@@ -18,8 +23,12 @@ export class PeriodiskRedovisningViewService {
} }
public fetchPeriodiskRedovisning$(handlingId: string): Observable<PeriodiskRedovisning> { public fetchPeriodiskRedovisning$(handlingId: string): Observable<PeriodiskRedovisning> {
return this.periodiskRedovisningApiService return this._activities$.pipe(
.fetchPeriodiskRedovisning$(handlingId) switchMap(activities =>
.pipe(map(({ data }) => (data ? mapResponseToPeriodiskRedovisning(data) : null))); this.periodiskRedovisningApiService
.fetchPeriodiskRedovisning$(handlingId)
.pipe(map(({ data }) => mapResponseToPeriodiskRedovisning(data, activities)))
)
);
} }
} }

View File

@@ -1,6 +1,5 @@
export interface PeriodiskRedovisningActivityResponse { export interface PeriodiskRedovisningActivityResponse {
id: number; id: number;
name: string;
performedRemotely: boolean; performedRemotely: boolean;
performedPhysically: boolean; performedPhysically: boolean;
hours: number; hours: number;
@@ -23,21 +22,18 @@ export function mockOnePeriodiskRedovisningResponse(): PeriodiskRedovisningRespo
activities: [ activities: [
{ {
id: 24, id: 24,
name: 'Aktivitet 1',
performedRemotely: false, performedRemotely: false,
performedPhysically: true, performedPhysically: true,
hours: 25, hours: 25,
}, },
{ {
id: 19, id: 19,
name: 'Aktivitet 2',
performedRemotely: true, performedRemotely: true,
performedPhysically: false, performedPhysically: false,
hours: 3, hours: 3,
}, },
{ {
id: 31, id: 31,
name: 'Aktivitet 3',
performedRemotely: true, performedRemotely: true,
performedPhysically: true, performedPhysically: true,
hours: 2, hours: 2,

View File

@@ -1,3 +1,4 @@
import { Activity } from './activity.model';
import { PeriodiskRedovisningResponse } from './api/periodisk-redovisning.response.model'; import { PeriodiskRedovisningResponse } from './api/periodisk-redovisning.response.model';
export interface PeriodiskRedovisningActivity { export interface PeriodiskRedovisningActivity {
@@ -16,7 +17,10 @@ export interface PeriodiskRedovisning {
activities: PeriodiskRedovisningActivity[]; activities: PeriodiskRedovisningActivity[];
} }
export function mapResponseToPeriodiskRedovisning(data: PeriodiskRedovisningResponse): PeriodiskRedovisning { export function mapResponseToPeriodiskRedovisning(
data: PeriodiskRedovisningResponse,
allActivities: Activity[]
): PeriodiskRedovisning {
const { genomforandeReferens, period, hasOfferedLanguageSupport, hasOfferedJob, activities } = data; const { genomforandeReferens, period, hasOfferedLanguageSupport, hasOfferedJob, activities } = data;
return { return {
@@ -24,6 +28,12 @@ export function mapResponseToPeriodiskRedovisning(data: PeriodiskRedovisningResp
period, period,
hasOfferedJob, hasOfferedJob,
hasOfferedLanguageSupport, hasOfferedLanguageSupport,
activities, activities: activities.map(({ id, performedRemotely, performedPhysically, hours }) => ({
id,
name: allActivities.find(activity => activity.id === id).name,
performedRemotely,
performedPhysically,
hours,
})),
}; };
} }