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,7 +35,7 @@ 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'

View File

@@ -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<Activity[]> = 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<PeriodiskRedovisning> {
return this.periodiskRedovisningApiService
return this._activities$.pipe(
switchMap(activities =>
this.periodiskRedovisningApiService
.fetchPeriodiskRedovisning$(handlingId)
.pipe(map(({ data }) => (data ? mapResponseToPeriodiskRedovisning(data) : null)));
.pipe(map(({ data }) => mapResponseToPeriodiskRedovisning(data, activities)))
)
);
}
}

View File

@@ -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,

View File

@@ -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,
})),
};
}