feat(gemensam-planering): Implemented gemensam-planering form. (TV-700)
Squashed commit of the following: commit 2d07f37e30009c7f701af35aed65839535044bb3 Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Wed Oct 6 09:33:21 2021 +0200 Updated error handling commit 12290b9436a06ecf0b2b8509016b14748ca17a18 Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Wed Oct 6 09:10:48 2021 +0200 Updated after PR commit cc2fb38528069819acbc39c7b1f6d71ecae666a1 Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Wed Oct 6 08:46:33 2021 +0200 Updated proxy.conf commit ee919de929d7b7316cd7050015fbad9c662b8718 Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Wed Oct 6 08:44:00 2021 +0200 Updated api-endpoint commit 249ef70e14fa8db0c388ffb27f5173815a07c768 Merge: c8296cbfcc0a9aaeAuthor: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Wed Oct 6 08:39:43 2021 +0200 Merge branch 'develop' into feature/TV-700-erik commit c8296cbff42d747df8c17cf3858f22956fd1e910 Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Wed Oct 6 07:44:41 2021 +0200 Fixed some linting and tests commit ec0bf7cd3616859742e461ffd65a2289f5c50cd6 Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Wed Oct 6 07:37:28 2021 +0200 Changes after PR commit aa6cee5248299056e043170b8803335529277062 Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Tue Oct 5 14:56:45 2021 +0200 Fixed some styling commit 86de8306679fcff5ed8595f97f696cb43f38f4ac Merge: 3b1822d85cee9695Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Tue Oct 5 14:46:52 2021 +0200 Merged develop and resolved conflicts commit 3b1822d8c8f197b789d1db5832b8e99351e8afa3 Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Tue Oct 5 14:22:06 2021 +0200 Updated GP commit a63dfb716a3888f3e5830fe224de4cd16b1922c2 Merge: e2a8cb1c07ec3c4aAuthor: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Tue Oct 5 07:29:23 2021 +0200 Merge branch 'develop' into feature/TV-700 commit e2a8cb1cef2ada931f8a82ae0e9849aabb77ac4d Author: Chingiz <chingiz.esenbaev@arbetsformedlingen.se> Date: Mon Oct 4 20:16:42 2021 +0200 lamnas over till team 1
This commit is contained in:
@@ -5,7 +5,7 @@ import { ConfirmDialog } from '@msfa-enums/confirm-dialog.enum';
|
||||
selector: 'msfa-confirm-dialog',
|
||||
templateUrl: './confirm-dialog.component.html',
|
||||
styleUrls: ['./confirm-dialog.component.scss'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class ConfirmDialogComponent {
|
||||
@Input() openConfirmDialog: boolean;
|
||||
@@ -21,5 +21,4 @@ export class ConfirmDialogComponent {
|
||||
this.openConfirmDialog = false;
|
||||
this.confirmDialogChanged.emit(ConfirmDialog.DISMISSED);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
export interface Activity {
|
||||
id: number;
|
||||
name: string;
|
||||
description?: string;
|
||||
subActivities: SubActivity[];
|
||||
}
|
||||
export interface SubActivity {
|
||||
id: number;
|
||||
@@ -12,15 +10,12 @@ export interface SubActivity {
|
||||
export interface ActivityResponse {
|
||||
id: number;
|
||||
name: string;
|
||||
description?: string;
|
||||
subActivities: SubActivity[];
|
||||
}
|
||||
|
||||
export function mapResponseToActivity(data: ActivityResponse): Activity {
|
||||
const { id, name, description, subActivities } = data;
|
||||
const { id, name } = data;
|
||||
return {
|
||||
id,
|
||||
name,
|
||||
description,
|
||||
subActivities,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
export interface GemensamPlaneringPostRequest {
|
||||
genomforandeReferens: string;
|
||||
distans: boolean;
|
||||
aktivitetsIds: number[];
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
import { TrackName } from '@msfa-enums/track-name.enum';
|
||||
import { mapStringToSsn } from '@msfa-utils/map-string-to-ssn.util';
|
||||
import { AvropResponse } from './api/avrop.response.model';
|
||||
import { PaginationMeta } from './pagination-meta.model';
|
||||
|
||||
@@ -17,6 +18,7 @@ export interface AvropCompact {
|
||||
}
|
||||
|
||||
export interface Avrop extends AvropCompact {
|
||||
ssn: string; // personnummer
|
||||
genomforandeReferens: number; // genomforandeReferens
|
||||
participationFrequency: number; // deltagandeGrad
|
||||
utforandeVerksamhet: string; // utforandeverksamhet
|
||||
@@ -41,6 +43,7 @@ export function mapAvropResponseToAvrop(data: AvropResponse): Avrop {
|
||||
sprakstod,
|
||||
adress,
|
||||
sparkod,
|
||||
personnummer,
|
||||
genomforandeReferens,
|
||||
deltagandeGrad,
|
||||
utforandeverksamhet,
|
||||
@@ -60,6 +63,7 @@ export function mapAvropResponseToAvrop(data: AvropResponse): Avrop {
|
||||
utforandeAdress: adress,
|
||||
trackCode: sparkod,
|
||||
trackName: (TrackName[sparkod] || TrackName.UNKNOWN) as TrackName,
|
||||
ssn: mapStringToSsn(personnummer),
|
||||
genomforandeReferens,
|
||||
participationFrequency: deltagandeGrad,
|
||||
utforandeVerksamhet: utforandeverksamhet,
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
import { GemensamPlaneringPostRequest } from './api/gemensam-planering.request.model';
|
||||
|
||||
export interface GemensamPlanering {
|
||||
genomforandeReferens: number;
|
||||
distance: boolean;
|
||||
activityIds: number[];
|
||||
}
|
||||
|
||||
export interface Activity {
|
||||
activityId: string;
|
||||
name: string;
|
||||
@@ -9,3 +17,15 @@ export interface SubActivity {
|
||||
name: string;
|
||||
description: string;
|
||||
}
|
||||
|
||||
export function mapGemensamPlaneringToGemensamPlaneringPostRequest(
|
||||
gemensamPlanering: GemensamPlanering
|
||||
): GemensamPlaneringPostRequest {
|
||||
const { genomforandeReferens, distance, activityIds } = gemensamPlanering;
|
||||
|
||||
return {
|
||||
genomforandeReferens: genomforandeReferens.toString(),
|
||||
distans: distance,
|
||||
aktivitetsIds: activityIds,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,21 +2,48 @@ import { HttpClient } from '@angular/common/http';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { environment } from '@msfa-environment';
|
||||
import { Activity, ActivityResponse, mapResponseToActivity } from '@msfa-models/activity.model';
|
||||
import { GemensamPlaneringPostRequest } from '@msfa-models/api/gemensam-planering.request.model';
|
||||
import { Avrop } from '@msfa-models/avrop.model';
|
||||
import { CustomError, errorToCustomError } from '@msfa-models/error/custom-error';
|
||||
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
|
||||
import { Observable } from 'rxjs';
|
||||
import { filter, map } from 'rxjs/operators';
|
||||
import { catchError, filter, map, shareReplay } from 'rxjs/operators';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class GemensamPlaneringApiService {
|
||||
private _apiBaseUrl = `${environment.api.url}`;
|
||||
private _apiBaseUrl = `${environment.api.url}/rapporter/gemensam-planering`;
|
||||
|
||||
constructor(private httpClient: HttpClient) {}
|
||||
|
||||
public getActivities$(): Observable<Activity[]> {
|
||||
return this.httpClient.get<{ data: ActivityResponse[] }>(`${this._apiBaseUrl}/activities`).pipe(
|
||||
public fetchActivities$(): Observable<Activity[]> {
|
||||
return this.httpClient.get<{ data: ActivityResponse[] }>(`${this._apiBaseUrl}/aktiviteter`).pipe(
|
||||
filter(response => !!response?.data),
|
||||
map(({ data }) => data.map(aktivitet => mapResponseToActivity(aktivitet)))
|
||||
map(({ data }) => data.map(activity => mapResponseToActivity(activity))),
|
||||
catchError((error: Error & { status: number }) => {
|
||||
throw new CustomError(
|
||||
errorToCustomError({ ...error, message: `Kunde inte hämta aktiviteter.\n\n${error.message}` })
|
||||
);
|
||||
}),
|
||||
shareReplay(1)
|
||||
);
|
||||
}
|
||||
|
||||
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> {
|
||||
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
|
||||
}
|
||||
|
||||
public async postGemensamPlanering(requestData: GemensamPlaneringPostRequest): Promise<void> {
|
||||
return this.httpClient
|
||||
.post<void>(`${this._apiBaseUrl}`, requestData)
|
||||
.pipe(
|
||||
catchError((error: Error & { status: number }) => {
|
||||
throw new CustomError(
|
||||
errorToCustomError({ ...error, message: `Kunde inte spara gemensam planering.\n\n${error.message}` })
|
||||
);
|
||||
})
|
||||
)
|
||||
.toPromise();
|
||||
}
|
||||
|
||||
constructor(private httpClient: HttpClient, private deltagareApiService: DeltagareApiService) {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user