feature(Slutredovisning): Se till att taxonomin inte anropas när det inte behövs (TV-902)

Merge in TEA/mina-sidor-fa-web from feature/TV-902-taxonomi-anrop to develop

Squashed commit of the following:

commit d30a20dcd86a681888d34148b057b98f9efa1cf7
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Tue Nov 16 11:49:39 2021 +0100

    Update slutredovisning-form.service.ts

commit da8d7073685cdd864c0ea34ad415e49deba4451c
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Tue Nov 16 09:21:35 2021 +0100

    Update slutredovisning-form-step3.component.ts

commit cf9d45d0a49e5a7fe6321da301ab37de76b20390
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Tue Nov 16 09:10:16 2021 +0100

    change request to property
This commit is contained in:
Daniel Appelgren
2021-11-16 15:20:43 +01:00
parent 54ac27efc0
commit 1ec66fff7f
3 changed files with 35 additions and 30 deletions

View File

@@ -1,13 +1,13 @@
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { SlutredovisningResponseMainOccupationDetails } from '@msfa-models/api/slutredovisning.response.model';
import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { CustomError } from '@msfa-models/error/custom-error';
import { MainOccupation, Slutredovisning } from '@msfa-models/slutredovisning.model';
import { BehaviorSubject } from 'rxjs';
import { map } from 'rxjs/operators';
import { BehaviorSubject, Observable, of } from 'rxjs';
import { SlutredovisningFormData } from '../models/slutredovisning-form-data.model';
import { SlutredovisningFormService } from '../slutredovisning-form.service';
import { slutredovisningFormDataToSlutredovisningRequest } from '../utils/forms-to-slutredovisning-form-data';
import { map } from 'rxjs/operators';
@Component({
selector: 'msfa-slutredovisning-form-step3',
@@ -15,7 +15,7 @@ import { slutredovisningFormDataToSlutredovisningRequest } from '../utils/forms-
styleUrls: ['./slutredovisning-form-step3.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class SlutredovisningFormStep3Component {
export class SlutredovisningFormStep3Component implements OnInit {
@Output() backClick = new EventEmitter<void>();
@Input() slutredovisningFormData: SlutredovisningFormData;
@Input() avrop: DeltagareAvrop;
@@ -24,28 +24,7 @@ export class SlutredovisningFormStep3Component {
submitError$ = new BehaviorSubject<CustomError>(null);
submittedDate$ = new BehaviorSubject<Date | null>(null);
slutredovisning$ = this.slutredovisningFormService.yrkeToTextMap$.pipe(
map(yrkeToText => this._formDataToSlutredovisning(this.slutredovisningFormData, yrkeToText))
);
private _formDataToSlutredovisning(
slutredovisningFormData: SlutredovisningFormData,
yrkeToText: { [key: string]: string }
): Slutredovisning {
if (slutredovisningFormData.mainOccupation.type !== MainOccupation.Work) {
return slutredovisningFormData as Slutredovisning;
}
const newMainOccupation: SlutredovisningResponseMainOccupationDetails = {
...slutredovisningFormData.mainOccupation,
work: slutredovisningFormData.mainOccupation.work.map(yrke => ({
...yrke,
yrkesomradeName: yrkeToText[yrke.yrkesomrade],
yrkesgruppName: yrkeToText[yrke.yrkesgrupp],
})),
};
return { ...slutredovisningFormData, mainOccupation: newMainOccupation };
}
slutredovisning$: Observable<Slutredovisning>;
goBack(): void {
this.backClick.emit();
@@ -69,4 +48,32 @@ export class SlutredovisningFormStep3Component {
},
});
}
ngOnInit(): void {
this.slutredovisning$ =
this.slutredovisningFormData.mainOccupation.type === MainOccupation.Work
? this.slutredovisningFormService.yrkeToTextMap$.pipe(
map(yrkeToText => this._formDataWithWorkToSlutredovisning(this.slutredovisningFormData, yrkeToText))
)
: of(this.slutredovisningFormData as Slutredovisning);
}
private _formDataWithWorkToSlutredovisning(
slutredovisningFormData: SlutredovisningFormData,
yrkeToText: { [key: string]: string }
): Slutredovisning {
if (slutredovisningFormData.mainOccupation.type !== MainOccupation.Work) {
throw new Error('Only use this method if MainOccupation is Work');
}
const newMainOccupation: SlutredovisningResponseMainOccupationDetails = {
...slutredovisningFormData.mainOccupation,
work: slutredovisningFormData.mainOccupation.work.map(yrke => ({
...yrke,
yrkesomradeName: yrkeToText[yrke.yrkesomrade],
yrkesgruppName: yrkeToText[yrke.yrkesgrupp],
})),
};
return { ...slutredovisningFormData, mainOccupation: newMainOccupation };
}
}

View File

@@ -25,7 +25,7 @@ export class SlutredovisningFormService {
private _step2FormData$ = new BehaviorSubject<SlutredovisningStep2FormData | null>(null);
yrkesomraden$: Observable<Yrkesomrade[]> = this.slutredovisningApiService.fetchYrken$().pipe(
yrkesomraden$: Observable<Yrkesomrade[]> = this.slutredovisningApiService.yrken$.pipe(
map(({ data }) => data.map(yo => mapResponseToYrkesomrade(yo))),
shareReplay(1)
);

View File

@@ -19,9 +19,7 @@ export class SlutredovisningApiService {
constructor(private httpClient: HttpClient) {}
public fetchYrken$(): Observable<{ data: YrkesomradeResponse[] }> {
return of({ data: YRKEN });
}
public yrken$: Observable<{ data: YrkesomradeResponse[] }> = of({ data: YRKEN });
public fetchSlutredovisning$(handlingId: string): Observable<{ data: SlutredovisningResponse }> {
return this.httpClient.get<{ data: SlutredovisningResponse }>(