From aac7cf6c6a6c037ad6e7edf69b22587fcce7d006 Mon Sep 17 00:00:00 2001 From: Daniel Appelgren Date: Tue, 26 Oct 2021 10:40:05 +0200 Subject: [PATCH] =?UTF-8?q?feature(APIer):=20Anv=C3=A4nder=20nya=20APIer?= =?UTF-8?q?=20f=C3=B6r=20rapporter=20och=20Periodisk=20redovisning=20(TV-8?= =?UTF-8?q?01)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Squashed commit of the following: commit 4f0e9f977df96b4d902e96a66cc77257b4c0f5bb Author: Daniel Appelgren Date: Tue Oct 26 10:17:40 2021 +0200 Revert "nx format" This reverts commit 71c32997fd8e7ff908ced30df66a5a411c948e2d. commit 71c32997fd8e7ff908ced30df66a5a411c948e2d Author: Daniel Appelgren Date: Tue Oct 26 09:58:10 2021 +0200 nx format commit 5635e7acb9c9eb4cff8591a1fa3dcb227c314b57 Author: Daniel Appelgren Date: Mon Oct 25 08:26:09 2021 +0200 Update periodisk-redovisning-form.service.ts commit 7da2c853b56d9571c6ab55ecfdf6964825e73336 Author: Daniel Appelgren Date: Fri Oct 22 12:51:53 2021 +0200 Refaktoriserat services till nya api-strukturen --- .../deltagare-details.module.ts | 6 +- .../reports-list/reports-list.component.ts | 2 + .../periodisk-redovisning-form.component.ts | 12 +- .../periodisk-redovisning-form.service.ts | 12 +- .../avvikelse-report-view.component.ts | 4 +- .../avvikelse-report-view.service.ts | 36 ++++-- .../franvaro-report-view.component.ts | 4 +- .../franvaro-report-view.service.ts | 37 ++++-- .../gemensam-planering-view.component.ts | 4 +- .../gemensam-planering-view.service.ts | 34 ++++-- .../src/app/shared/enums/report-type.enum.ts | 1 + .../api/gemensam-planering-api.service.ts | 21 +--- .../services/api/handlingar.api.service.ts | 30 +++++ .../shared/services/api/report.api.service.ts | 107 ------------------ config/proxy.conf.json | 2 +- 15 files changed, 146 insertions(+), 166 deletions(-) create mode 100644 apps/mina-sidor-fa/src/app/shared/services/api/handlingar.api.service.ts delete mode 100644 apps/mina-sidor-fa/src/app/shared/services/api/report.api.service.ts diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/deltagare-details.module.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/deltagare-details.module.ts index ce5d69d..9a3c856 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/deltagare-details.module.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/deltagare-details.module.ts @@ -20,7 +20,7 @@ const routes: Routes = [ ), }, { - path: 'avvikelserapport/:reportId', + path: 'avvikelserapport/:handlingId', data: { title: 'Avvikelserapport (avvikelse)' }, loadChildren: () => import('./pages/report-views/avvikelse-report-view/avvikelse-report-view.module').then( @@ -36,7 +36,7 @@ const routes: Routes = [ ), }, { - path: 'franvarorapport/:reportId', + path: 'franvarorapport/:handlingId', data: { title: 'Avvikelserapport (frånvaro)' }, loadChildren: () => import('./pages/report-views/franvaro-report-view/franvaro-report-view.module').then( @@ -52,7 +52,7 @@ const routes: Routes = [ ), }, { - path: 'gemensam-planering/:reportId', + path: 'gemensam-planering/:handlingId', data: { title: 'Gemensam planering' }, loadChildren: () => import('./pages/report-views/gemensam-planering-view/gemensam-planering-view.module').then( diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-reports/components/reports-list/reports-list.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-reports/components/reports-list/reports-list.component.ts index 581b32b..3bcce80 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-reports/components/reports-list/reports-list.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-reports/components/reports-list/reports-list.component.ts @@ -58,6 +58,8 @@ export class ReportsListComponent { return `./franvarorapport/${report.id}`; case ReportType.Avvikelse: return `./avvikelserapport/${report.id}`; + case ReportType.PeriodiskRedovisning: + return `./periodisk-redovisning/${report.id}`; default: return null; } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.component.ts index 181e4cb..83030ce 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.component.ts @@ -12,7 +12,6 @@ import { AvropPeriod } from '@msfa-models/avrop-period.model'; import { Avrop } from '@msfa-models/avrop.model'; import { DateFormatOptions } from '@msfa-models/date-format-options.model'; import { CustomError } from '@msfa-models/error/custom-error'; -import { GemensamPlaneringApiService } from '@msfa-services/api/gemensam-planering-api.service'; import { capitalizeWords } from '@msfa-utils/capitalize-words.util'; import { formatDate } from '@msfa-utils/format-to-date.util'; import { RequiredValidator } from '@msfa-validators/required.validator'; @@ -62,7 +61,12 @@ export class PeriodiskRedovisningFormComponent implements OnInit { shareReplay(1) ); - availableActivities$: Observable = this.gemensamPlaneringApiService.fetchActivities$(); + availableActivities$: Observable = this.genomforandeReferens$.pipe( + switchMap(genomforandeReferens => + this.periodiskRedovisningFormService.getAllChosenActivities(genomforandeReferens) + ), + shareReplay(1) + ); periods$: Observable = this.avrop$.pipe( map(avrop => extractAvropPeriods(avrop.startDate, avrop.endDate)) @@ -102,9 +106,7 @@ export class PeriodiskRedovisningFormComponent implements OnInit { constructor( private periodiskRedovisningFormService: PeriodiskRedovisningFormService, - private activatedRoute: ActivatedRoute, - // TODO. GemensamPlaneringApiService is used for fetching activities. Replace with own service once ready - private gemensamPlaneringApiService: GemensamPlaneringApiService + private activatedRoute: ActivatedRoute ) {} get periodFormControl(): AbstractControl | undefined { diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.service.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.service.ts index c1f1247..222368d 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.service.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.service.ts @@ -4,12 +4,16 @@ import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { PeriodiskRedovisningApiService } from '@msfa-services/api/periodisk-redovisning.api.service'; import { Observable } from 'rxjs'; import { PeriodiskRedovisningRequest } from '@msfa-models/api/periodisk-redovisning.request.model'; +import { map } from 'rxjs/operators'; +import { Activity, mapResponseToActivity } from '@msfa-models/activity.model'; +import { GemensamPlaneringApiService } from '@msfa-services/api/gemensam-planering-api.service'; @Injectable() export class PeriodiskRedovisningFormService { constructor( private periodiskRedovisningApiService: PeriodiskRedovisningApiService, - private deltagareApiService: DeltagareApiService + private deltagareApiService: DeltagareApiService, + private gemensamPlaneringApiService: GemensamPlaneringApiService ) {} fetchAvropInformation$(genomforandeReferens: number): Observable { @@ -19,4 +23,10 @@ export class PeriodiskRedovisningFormService { submitPeriodiskRedovisning$(submitData: PeriodiskRedovisningRequest): Observable { return this.periodiskRedovisningApiService.postPeriodiskRedovisning$(submitData); } + + getAllChosenActivities(genomforandeReferens: number): Observable { + return this.gemensamPlaneringApiService + .fetchAllChosenActivities(genomforandeReferens) + .pipe(map(({ data }) => data.map(activity => mapResponseToActivity(activity)))); + } } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/avvikelse-report-view/avvikelse-report-view.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/avvikelse-report-view/avvikelse-report-view.component.ts index d0bb49e..dcaa0cc 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/avvikelse-report-view/avvikelse-report-view.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/avvikelse-report-view/avvikelse-report-view.component.ts @@ -27,9 +27,7 @@ export class AvvikelseReportViewComponent { shareReplay(1) ); avvikelseReport$: Observable = this.params$.pipe( - switchMap(({ genomforandeReferens, reportId }) => - this.avvikelseReportViewService.fetchAvvikelseReport$(+genomforandeReferens, reportId as string) - ), + switchMap(({ handlingId }) => this.avvikelseReportViewService.fetchAvvikelseReport$(handlingId as string)), shareReplay(1) ); diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/avvikelse-report-view/avvikelse-report-view.service.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/avvikelse-report-view/avvikelse-report-view.service.ts index 25d4360..d18632d 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/avvikelse-report-view/avvikelse-report-view.service.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/avvikelse-report-view/avvikelse-report-view.service.ts @@ -1,18 +1,40 @@ import { Injectable } from '@angular/core'; import { Avrop } from '@msfa-models/avrop.model'; -import { AvvikelseReport } from '@msfa-models/avvikelse.model'; -import { ReportApiService } from '@msfa-services/api/report.api.service'; -import { Observable } from 'rxjs'; +import { AvvikelseReport, mapResponseToAvvikelse } from '@msfa-models/avvikelse.model'; +import { HandlingarApiService } from '@msfa-services/api/handlingar.api.service'; +import { combineLatest, Observable } from 'rxjs'; +import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; +import { filter, map, switchMap } from 'rxjs/operators'; +import { AvvikelseReason } from '@msfa-models/avvikelse-reason.model'; +import { AvvikelseQuestion } from '@msfa-models/avvikelse-question.model'; +import { AvvikelseApiService } from '@msfa-services/api/avvikelse-api.service'; @Injectable() export class AvvikelseReportViewService { - constructor(private reportApiService: ReportApiService) {} + private _avvikelseReasons$: Observable = this.avvikelseApiService.fetchAvvikelseReasons$(); + private _avvikelseQuestions$: Observable = this.avvikelseApiService.fetchAvvikelseQuestions$(); + + constructor( + private handlingarApiService: HandlingarApiService, + private deltagareApiService: DeltagareApiService, + private avvikelseApiService: AvvikelseApiService + ) {} public fetchAvropInformation$(genomforandeReferens: number): Observable { - return this.reportApiService.fetchAvropInformation$(genomforandeReferens); + return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); } - public fetchAvvikelseReport$(genomforandeReferens: number, reportId: string): Observable { - return this.reportApiService.fetchAvvikelseReport$(genomforandeReferens, reportId); + public fetchAvvikelseReport$(handlingId: string): Observable { + return combineLatest([this._avvikelseReasons$, this._avvikelseQuestions$]).pipe( + filter(([reasons, questions]) => !!(reasons && questions)), + switchMap(([reasons, questions]) => { + return this.handlingarApiService.fetchAvvikelseReport$(handlingId).pipe( + map(({ data }) => ({ + genomforandeReferens: data.genomforandeReferens, + avvikelse: mapResponseToAvvikelse(data.avvikelseAlternativ, reasons, questions), + })) + ); + }) + ); } } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/franvaro-report-view/franvaro-report-view.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/franvaro-report-view/franvaro-report-view.component.ts index 8829baf..3a5dbd9 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/franvaro-report-view/franvaro-report-view.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/franvaro-report-view/franvaro-report-view.component.ts @@ -27,9 +27,7 @@ export class FranvaroReportViewComponent { shareReplay(1) ); franvaroReport$: Observable = this.params$.pipe( - switchMap(({ genomforandeReferens, reportId }) => - this.franvaroReportViewService.fetchFranvaroReport$(+genomforandeReferens, reportId as string) - ), + switchMap(({ handlingId }) => this.franvaroReportViewService.fetchFranvaroReport$(handlingId as string)), shareReplay(1) ); diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/franvaro-report-view/franvaro-report-view.service.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/franvaro-report-view/franvaro-report-view.service.ts index 27b44b6..d5ba430 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/franvaro-report-view/franvaro-report-view.service.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/franvaro-report-view/franvaro-report-view.service.ts @@ -1,18 +1,41 @@ import { Injectable } from '@angular/core'; import { Avrop } from '@msfa-models/avrop.model'; -import { FranvaroReport } from '@msfa-models/franvaro.model'; -import { ReportApiService } from '@msfa-services/api/report.api.service'; -import { Observable } from 'rxjs'; +import { FranvaroReport, mapResponseToFranvaro } from '@msfa-models/franvaro.model'; +import { HandlingarApiService } from '@msfa-services/api/handlingar.api.service'; +import { combineLatest, Observable } from 'rxjs'; +import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; +import { FranvaroReason } from '@msfa-models/franvaro-reason.model'; +import { FranvaroReportApiService } from '@msfa-services/api/franvaro-report.api.service'; +import { filter, map, switchMap } from 'rxjs/operators'; @Injectable() export class FranvaroReportViewService { - constructor(private reportApiService: ReportApiService) {} + private _franvaroReasons$: Observable = this.franvaroReportApiService.fetchReasons$(); + private _otherFranvaroReasons$: Observable< + FranvaroReason[] + > = this.franvaroReportApiService.fetchOtherKnownReasons$(); + + constructor( + private handlingarApiService: HandlingarApiService, + private franvaroReportApiService: FranvaroReportApiService, + private deltagareApiService: DeltagareApiService + ) {} public fetchAvropInformation$(genomforandeReferens: number): Observable { - return this.reportApiService.fetchAvropInformation$(genomforandeReferens); + return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); } - public fetchFranvaroReport$(genomforandeReferens: number, reportId: string): Observable { - return this.reportApiService.fetchFranvaroReport$(genomforandeReferens, reportId); + public fetchFranvaroReport$(handlingId: string): Observable { + return combineLatest([this._franvaroReasons$, this._otherFranvaroReasons$]).pipe( + filter(([reasons, otherReasons]) => !!(reasons && otherReasons)), + switchMap(([reasons, otherReasons]) => { + return this.handlingarApiService.fetchFranvaroReport$(handlingId).pipe( + map(({ data }) => ({ + genomforandeReferens: data.genomforandeReferens, + franvaro: mapResponseToFranvaro(data.franvaro, reasons, otherReasons), + })) + ); + }) + ); } } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/gemensam-planering-view/gemensam-planering-view.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/gemensam-planering-view/gemensam-planering-view.component.ts index 484168e..fec7b78 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/gemensam-planering-view/gemensam-planering-view.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/gemensam-planering-view/gemensam-planering-view.component.ts @@ -27,9 +27,7 @@ export class GemensamPlaneringViewComponent { shareReplay(1) ); gemensamPlanering$: Observable = this.params$.pipe( - switchMap(({ genomforandeReferens, reportId }) => - this.gemensamPlaneringViewService.fetchGemensamPlanering$(+genomforandeReferens, reportId as string) - ), + switchMap(({ handlingId }) => this.gemensamPlaneringViewService.fetchGemensamPlanering$(handlingId as string)), shareReplay(1) ); diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/gemensam-planering-view/gemensam-planering-view.service.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/gemensam-planering-view/gemensam-planering-view.service.ts index 0cc9cea..bd3383e 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/gemensam-planering-view/gemensam-planering-view.service.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-views/gemensam-planering-view/gemensam-planering-view.service.ts @@ -1,21 +1,37 @@ import { Injectable } from '@angular/core'; import { Avrop } from '@msfa-models/avrop.model'; -import { GemensamPlaneringDetailed } from '@msfa-models/gemensam-planering.model'; -import { ReportApiService } from '@msfa-services/api/report.api.service'; +import { + GemensamPlaneringDetailed, + mapResponseToGemensamPlaneringDetailed, +} from '@msfa-models/gemensam-planering.model'; +import { HandlingarApiService } from '@msfa-services/api/handlingar.api.service'; import { Observable } from 'rxjs'; +import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; +import { map, switchMap } from 'rxjs/operators'; +import { Activity } from '@msfa-models/activity.model'; +import { GemensamPlaneringApiService } from '@msfa-services/api/gemensam-planering-api.service'; @Injectable() export class GemensamPlaneringViewService { - constructor(private reportApiService: ReportApiService) {} + private _activities$: Observable = this.gemensamPlaneringApiService.fetchActivities$(); + + constructor( + private handlingarApiService: HandlingarApiService, + private deltagareApiService: DeltagareApiService, + private gemensamPlaneringApiService: GemensamPlaneringApiService + ) {} public fetchAvropInformation$(genomforandeReferens: number): Observable { - return this.reportApiService.fetchAvropInformation$(genomforandeReferens); + return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); } - public fetchGemensamPlanering$( - genomforandeReferens: number, - reportId: string - ): Observable { - return this.reportApiService.fetchGemensamPlanering$(genomforandeReferens, reportId); + public fetchGemensamPlanering$(handlingId: string): Observable { + return this._activities$.pipe( + switchMap(activities => + this.handlingarApiService + .fetchGemensamPlanering$(handlingId) + .pipe(map(({ data }) => mapResponseToGemensamPlaneringDetailed(data, activities))) + ) + ); } } diff --git a/apps/mina-sidor-fa/src/app/shared/enums/report-type.enum.ts b/apps/mina-sidor-fa/src/app/shared/enums/report-type.enum.ts index cbe142d..dc2723e 100644 --- a/apps/mina-sidor-fa/src/app/shared/enums/report-type.enum.ts +++ b/apps/mina-sidor-fa/src/app/shared/enums/report-type.enum.ts @@ -4,4 +4,5 @@ export enum ReportType { GemensamPlanering = 'Gemensam planering', Avvikelse = 'Avvikelserapport (avvikelse)', Franvaro = 'Avvikelserapport (frånvaro)', + PeriodiskRedovisning = 'Periodisk redovisning', } diff --git a/apps/mina-sidor-fa/src/app/shared/services/api/gemensam-planering-api.service.ts b/apps/mina-sidor-fa/src/app/shared/services/api/gemensam-planering-api.service.ts index 26efaee..ee53842 100644 --- a/apps/mina-sidor-fa/src/app/shared/services/api/gemensam-planering-api.service.ts +++ b/apps/mina-sidor-fa/src/app/shared/services/api/gemensam-planering-api.service.ts @@ -5,17 +5,11 @@ import { environment } from '@msfa-environment'; import { Activity, mapResponseToActivity } from '@msfa-models/activity.model'; import { ActivityResponse } from '@msfa-models/api/activity.response.model'; import { GemensamPlaneringPostRequest } from '@msfa-models/api/gemensam-planering.request.model'; -import { GemensamPlaneringResponse } from '@msfa-models/api/gemensam-planering.response.model'; -import { Params } from '@msfa-models/api/params.model'; import { Avrop } from '@msfa-models/avrop.model'; import { CustomError, errorToCustomError } from '@msfa-models/error/custom-error'; -import { - GemensamPlaneringDetailed, - mapResponseToGemensamPlaneringDetailed, -} from '@msfa-models/gemensam-planering.model'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { Observable } from 'rxjs'; -import { catchError, filter, map, shareReplay, switchMap } from 'rxjs/operators'; +import { catchError, filter, map, shareReplay } from 'rxjs/operators'; @Injectable({ providedIn: 'root', @@ -41,16 +35,9 @@ export class GemensamPlaneringApiService { return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); } - public fetchReport$(genomforandeReferens: number, reportId: string): Observable { - const params: Params = { - genomforandereferens: genomforandeReferens.toString(), - }; - return this.fetchActivities$().pipe( - switchMap(activities => - this.httpClient - .get<{ data: GemensamPlaneringResponse }>(`${this._apiHandlingarUrl}/${reportId}`, { params }) - .pipe(map(({ data }) => mapResponseToGemensamPlaneringDetailed(data, activities))) - ) + public fetchAllChosenActivities(genomforandereferens: number): Observable<{ data: ActivityResponse[] }> { + return this.httpClient.get<{ data: ActivityResponse[] }>( + `${this._apiBaseUrl}/alla-valda-aktiviteter/${genomforandereferens}` ); } diff --git a/apps/mina-sidor-fa/src/app/shared/services/api/handlingar.api.service.ts b/apps/mina-sidor-fa/src/app/shared/services/api/handlingar.api.service.ts new file mode 100644 index 0000000..0215a6c --- /dev/null +++ b/apps/mina-sidor-fa/src/app/shared/services/api/handlingar.api.service.ts @@ -0,0 +1,30 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { environment } from '@msfa-environment'; +import { AvvikelseReportResponse } from '@msfa-models/api/avvikelse-response.model'; +import { FranvaroReportResponse } from '@msfa-models/api/franvaro-response.model'; +import { GemensamPlaneringResponse } from '@msfa-models/api/gemensam-planering.response.model'; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root', +}) +export class HandlingarApiService { + private _apiBaseUrl = `${environment.api.url}/handlingar`; + + constructor(private httpClient: HttpClient) {} + + public fetchGemensamPlanering$(handlingId: string): Observable<{ data: GemensamPlaneringResponse }> { + return this.httpClient.get<{ data: GemensamPlaneringResponse }>( + `${this._apiBaseUrl}/gemensam-planering/${handlingId}` + ); + } + + public fetchFranvaroReport$(handlingId: string): Observable<{ data: FranvaroReportResponse }> { + return this.httpClient.get<{ data: FranvaroReportResponse }>(`${this._apiBaseUrl}/franvaro/${handlingId}`); + } + + public fetchAvvikelseReport$(handlingId: string): Observable<{ data: AvvikelseReportResponse }> { + return this.httpClient.get<{ data: AvvikelseReportResponse }>(`${this._apiBaseUrl}/avvikelse/${handlingId}`); + } +} diff --git a/apps/mina-sidor-fa/src/app/shared/services/api/report.api.service.ts b/apps/mina-sidor-fa/src/app/shared/services/api/report.api.service.ts deleted file mode 100644 index 0bea88d..0000000 --- a/apps/mina-sidor-fa/src/app/shared/services/api/report.api.service.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { HttpClient } from '@angular/common/http'; -import { Injectable } from '@angular/core'; -import { environment } from '@msfa-environment'; -import { Activity } from '@msfa-models/activity.model'; -import { AvvikelseReportResponse } from '@msfa-models/api/avvikelse-response.model'; -import { FranvaroReportResponse } from '@msfa-models/api/franvaro-response.model'; -import { GemensamPlaneringResponse } from '@msfa-models/api/gemensam-planering.response.model'; -import { Params } from '@msfa-models/api/params.model'; -import { Avrop } from '@msfa-models/avrop.model'; -import { AvvikelseQuestion } from '@msfa-models/avvikelse-question.model'; -import { AvvikelseReason } from '@msfa-models/avvikelse-reason.model'; -import { AvvikelseReport, mapResponseToAvvikelse } from '@msfa-models/avvikelse.model'; -import { FranvaroReason } from '@msfa-models/franvaro-reason.model'; -import { FranvaroReport, mapResponseToFranvaro } from '@msfa-models/franvaro.model'; -import { - GemensamPlaneringDetailed, - mapResponseToGemensamPlaneringDetailed, -} from '@msfa-models/gemensam-planering.model'; -import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; -import { combineLatest, Observable } from 'rxjs'; -import { filter, map, switchMap } from 'rxjs/operators'; -import { AvvikelseApiService } from './avvikelse-api.service'; -import { FranvaroReportApiService } from './franvaro-report.api.service'; -import { GemensamPlaneringApiService } from './gemensam-planering-api.service'; - -@Injectable({ - providedIn: 'root', -}) -export class ReportApiService { - private _apiBaseUrl = `${environment.api.url}/handlingar`; - - private _avvikelseReasons$: Observable = this.avvikelseApiService.fetchAvvikelseReasons$(); - private _avvikelseQuestions$: Observable = this.avvikelseApiService.fetchAvvikelseQuestions$(); - private _activities$: Observable = this.gemensamPlaneringApiService.fetchActivities$(); - private _franvaroReasons$: Observable = this.franvaroReportApiService.fetchReasons$(); - private _otherFranvaroReasons$: Observable< - FranvaroReason[] - > = this.franvaroReportApiService.fetchOtherKnownReasons$(); - - constructor( - private httpClient: HttpClient, - private deltagareApiService: DeltagareApiService, - private gemensamPlaneringApiService: GemensamPlaneringApiService, - private franvaroReportApiService: FranvaroReportApiService, - private avvikelseApiService: AvvikelseApiService - ) {} - - public fetchAvropInformation$(genomforandeReferens: number): Observable { - return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); - } - - public fetchGemensamPlanering$( - genomforandeReferens: number, - reportId: string - ): Observable { - const params: Params = { - genomforandereferens: genomforandeReferens.toString(), - }; - return this._activities$.pipe( - switchMap(activities => - this.httpClient - .get<{ data: GemensamPlaneringResponse }>(`${this._apiBaseUrl}/${reportId}`, { params }) - .pipe(map(({ data }) => mapResponseToGemensamPlaneringDetailed(data, activities))) - ) - ); - } - - public fetchFranvaroReport$(genomforandeReferens: number, reportId: string): Observable { - const params: Params = { - genomforandereferens: genomforandeReferens.toString(), - }; - - return combineLatest([this._franvaroReasons$, this._otherFranvaroReasons$]).pipe( - filter(([reasons, otherReasons]) => !!(reasons && otherReasons)), - switchMap(([reasons, otherReasons]) => { - return this.httpClient - .get<{ data: FranvaroReportResponse }>(`${this._apiBaseUrl}/${reportId}`, { params }) - .pipe( - map(({ data }) => ({ - genomforandeReferens: data.genomforandeReferens, - franvaro: mapResponseToFranvaro(data.franvaro, reasons, otherReasons), - })) - ); - }) - ); - } - - public fetchAvvikelseReport$(genomforandeReferens: number, reportId: string): Observable { - const params: Params = { - genomforandereferens: genomforandeReferens.toString(), - }; - - return combineLatest([this._avvikelseReasons$, this._avvikelseQuestions$]).pipe( - filter(([reasons, questions]) => !!(reasons && questions)), - switchMap(([reasons, questions]) => { - return this.httpClient - .get<{ data: AvvikelseReportResponse }>(`${this._apiBaseUrl}/${reportId}`, { params }) - .pipe( - map(({ data }) => ({ - genomforandeReferens: data.genomforandeReferens, - avvikelse: mapResponseToAvvikelse(data.avvikelseAlternativ, reasons, questions), - })) - ); - }) - ); - } -} diff --git a/config/proxy.conf.json b/config/proxy.conf.json index 4b6b641..b1a7ede 100644 --- a/config/proxy.conf.json +++ b/config/proxy.conf.json @@ -1,6 +1,6 @@ { "/api": { - "target": "https://mina-sidor-fa-test.tocp.arbetsformedlingen.se", + "target": "https://mina-sidor-fa-utv.tocp.arbetsformedlingen.se", "secure": false, "changeOrigin": true },