From ce87ef5aac84e7c1c19104ca9414febb87a3d041 Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Wed, 13 Oct 2021 10:20:43 +0200 Subject: [PATCH] Merge pull request #195 in TEA/mina-sidor-fa-web from feature/refactor-report-models to develop Squashed commit of the following: commit c99074b30eb9792ba9a67d4257c45621381da068 Author: Erik Tiekstra Date: Tue Oct 12 16:29:11 2021 +0200 Removed unused model commit d122a7f61f52e8c6c5a48a7b7700b333c388e83e Author: Erik Tiekstra Date: Tue Oct 12 16:24:50 2021 +0200 Updated models commit 27de0084ba5f0dc5e3300ce7dbff0d27ab240941 Author: Erik Tiekstra Date: Tue Oct 12 16:24:33 2021 +0200 git st --- .../avvikelse-report-form.component.ts | 36 ++++++------- .../avvikelse-report-form.service.ts | 14 ++--- .../franvaro-report-form.component.ts | 14 ++--- .../franvaro-report-form.service.ts | 12 ++--- .../shared/enums/franvaro-orsak-kod.enum.ts | 8 --- .../api/avvikelse-question.response.model.ts | 5 ++ .../api/avvikelse-reason.response.model.ts | 4 ++ .../models/api/avvikelse-request.model.ts | 15 ++++++ .../models/api/avvikelse-response.model.ts | 10 ++-- .../api/fragor-for-avvikelser.response.ts | 4 -- .../api/franvaro-reason.response.model.ts | 4 ++ .../models/api/franvaro-request.model.ts | 20 +++++++ .../api/gemensam-planering.request.model.ts | 2 +- .../kanda-avvikelse-koder.response.model.ts | 4 -- .../orsaks-koder-avvikelse.response.model.ts | 5 -- .../orsaks-koder-franvaro.response.model.ts | 4 -- .../shared/models/avvikelse-question.model.ts | 17 ++++++ .../shared/models/avvikelse-reason.model.ts | 15 ++++++ .../src/app/shared/models/avvikelse.model.ts | 53 ++++--------------- .../models/fragor-for-avvikelser.model.ts | 16 ------ .../shared/models/franvaro-reason.model.ts | 15 ++++++ .../src/app/shared/models/franvaro.model.ts | 6 +-- .../shared/models/gemensam-planering.model.ts | 2 +- .../models/orsaks-koder-avvikelse.model.ts | 18 ------- .../models/orsaks-koder-franvaro.model.ts | 32 ----------- .../shared/models/out-of-office-date.model.ts | 5 -- .../services/api/avvikelse-api.service.ts | 53 +++++-------------- .../api/franvaro-report.api.service.ts | 20 +++---- .../shared/services/api/report.api.service.ts | 14 ++--- 29 files changed, 179 insertions(+), 248 deletions(-) delete mode 100644 apps/mina-sidor-fa/src/app/shared/enums/franvaro-orsak-kod.enum.ts create mode 100644 apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-question.response.model.ts create mode 100644 apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-reason.response.model.ts create mode 100644 apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-request.model.ts delete mode 100644 apps/mina-sidor-fa/src/app/shared/models/api/fragor-for-avvikelser.response.ts create mode 100644 apps/mina-sidor-fa/src/app/shared/models/api/franvaro-reason.response.model.ts create mode 100644 apps/mina-sidor-fa/src/app/shared/models/api/franvaro-request.model.ts delete mode 100644 apps/mina-sidor-fa/src/app/shared/models/api/kanda-avvikelse-koder.response.model.ts delete mode 100644 apps/mina-sidor-fa/src/app/shared/models/api/orsaks-koder-avvikelse.response.model.ts delete mode 100644 apps/mina-sidor-fa/src/app/shared/models/api/orsaks-koder-franvaro.response.model.ts create mode 100644 apps/mina-sidor-fa/src/app/shared/models/avvikelse-question.model.ts create mode 100644 apps/mina-sidor-fa/src/app/shared/models/avvikelse-reason.model.ts delete mode 100644 apps/mina-sidor-fa/src/app/shared/models/fragor-for-avvikelser.model.ts create mode 100644 apps/mina-sidor-fa/src/app/shared/models/franvaro-reason.model.ts delete mode 100644 apps/mina-sidor-fa/src/app/shared/models/orsaks-koder-avvikelse.model.ts delete mode 100644 apps/mina-sidor-fa/src/app/shared/models/orsaks-koder-franvaro.model.ts delete mode 100644 apps/mina-sidor-fa/src/app/shared/models/out-of-office-date.model.ts diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.ts index 2248354..685e825 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.ts @@ -2,11 +2,11 @@ import { FormSelectItem } from '@af/digi-ng/_form/form-select'; import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core'; import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; import { ActivatedRoute } from '@angular/router'; +import { AvvikelseReportRequest, AvvikelseRequest } from '@msfa-models/api/avvikelse-request.model'; import { Avrop } from '@msfa-models/avrop.model'; -import { AvvikelseAlternativ_OLD, AvvikelseRequestData_OLD } from '@msfa-models/avvikelse.model'; +import { AvvikelseQuestion } from '@msfa-models/avvikelse-question.model'; +import { AvvikelseReason } from '@msfa-models/avvikelse-reason.model'; import { CustomError } from '@msfa-models/error/custom-error'; -import { FragorForAvvikelser } from '@msfa-models/fragor-for-avvikelser.model'; -import { OrsaksKoderAvvikelse } from '@msfa-models/orsaks-koder-avvikelse.model'; import { markControlsAsDirty } from '@msfa-utils/mark-controls-as-dirty.util'; import { RegexValidator } from '@msfa-utils/validators/regex.validator'; import { RequiredValidator } from '@msfa-validators/required.validator'; @@ -49,16 +49,16 @@ export class AvvikelseReportFormComponent implements OnInit, OnDestroy { shareReplay(1) ); - reasons$: Observable = this.avvikelseReportFormService.getAvvikelseOrsaker$; + reasons$: Observable = this.avvikelseReportFormService.fetchAvvikelseReasons$; reasonsAsNgDigiFormSelectItems$: Observable = this.reasons$.pipe( - map(reasons => reasons.map(reason => ({ name: reason.name, value: reason.id }))) + map(reasons => reasons.map(reason => ({ name: reason.name, value: reason.id.toString() }))) ); - allAvvikelseQuestions$ = this.avvikelseReportFormService.fragorForAvvikelser$; + allAvvikelseQuestions$ = this.avvikelseReportFormService.avvikelseQuestions$; chosenReasonId$: Observable; - chosenReason$: Observable; - questionsForChosenReason$: Observable; - avvikelseSubmitData$: Observable; + chosenReason$: Observable; + questionsForChosenReason$: Observable; + avvikelseSubmitData$: Observable; confirmDialogIsOpen$ = new BehaviorSubject(false); submittedDate$ = new BehaviorSubject(null); private subscriptions: Subscription[] = []; @@ -70,7 +70,7 @@ export class AvvikelseReportFormComponent implements OnInit, OnDestroy { }); private formData$: Observable = this.avvikelseFormGroup .valueChanges as Observable; - private currentQuestions: FragorForAvvikelser[]; + private currentQuestions: AvvikelseQuestion[]; constructor(private avvikelseReportFormService: AvvikelseReportFormService, private activatedRoute: ActivatedRoute) {} @@ -90,14 +90,14 @@ export class AvvikelseReportFormComponent implements OnInit, OnDestroy { return new Date(); } - getCurrentQuestionFromId(id: string): FragorForAvvikelser { + getCurrentQuestionFromId(id: string): AvvikelseQuestion { return this.currentQuestions.find(currentQuestions => currentQuestions.id === id); } ngOnInit(): void { this.chosenReasonId$ = this.reasonFormControl.valueChanges as Observable; this.chosenReason$ = combineLatest([this.chosenReasonId$, this.reasons$]).pipe( - map(([chosenReasonId, reasons]) => reasons.find(reason => reason.id === chosenReasonId)) + map(([chosenReasonId, reasons]) => reasons.find(reason => reason.id.toString() === chosenReasonId)) ); this.questionsForChosenReason$ = combineLatest([this.chosenReasonId$, this.allAvvikelseQuestions$]).pipe( @@ -124,7 +124,7 @@ export class AvvikelseReportFormComponent implements OnInit, OnDestroy { ); } - questionIsRequired(question: FragorForAvvikelser): boolean { + questionIsRequired(question: AvvikelseQuestion): boolean { return !(question.id === '19_2' || question.id === '20_2'); } @@ -175,15 +175,15 @@ export class AvvikelseReportFormComponent implements OnInit, OnDestroy { genomforandeReferens: number, chosenReason: string, formData: AvvikelseFormData - ): AvvikelseRequestData_OLD { - const avvikelseAlternativ: AvvikelseAlternativ_OLD = { - avvikelseorsakskod: chosenReason, + ): AvvikelseReportRequest { + const avvikelseAlternativ: AvvikelseRequest = { + avvikelseOrsakskod: chosenReason, frageformular: formData.questions.map((question, index) => ({ fraga: this.currentQuestions[index].id, svar: question, })), rapporteringsdatum: formData.reportingDate, - } as AvvikelseAlternativ_OLD; + }; return { genomforandeReferens, avvikelseAlternativ }; } @@ -193,7 +193,7 @@ export class AvvikelseReportFormComponent implements OnInit, OnDestroy { this.currentQuestions = []; } - private addQuestionToForm(question: FragorForAvvikelser): void { + private addQuestionToForm(question: AvvikelseQuestion): void { // FormArray doesnt hold any IDs so we need to store these seperately and rebuild structure at submit this.currentQuestions.push(question); diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.service.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.service.ts index 2ca892f..2d3e0f1 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.service.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; -import { Avvikelse_OLD } from '@msfa-models/avvikelse.model'; -import { FragorForAvvikelser } from '@msfa-models/fragor-for-avvikelser.model'; -import { OrsaksKoderAvvikelse } from '@msfa-models/orsaks-koder-avvikelse.model'; +import { AvvikelseReportRequest } from '@msfa-models/api/avvikelse-request.model'; +import { AvvikelseQuestion } from '@msfa-models/avvikelse-question.model'; +import { AvvikelseReason } from '@msfa-models/avvikelse-reason.model'; import { AvvikelseApiService } from '@msfa-services/api/avvikelse-api.service'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { Observable } from 'rxjs'; @@ -9,15 +9,15 @@ import { shareReplay } from 'rxjs/operators'; @Injectable() export class AvvikelseReportFormService { - fragorForAvvikelser$: Observable = this.avvikelseApiService - .getFragorForAvvikelser$() + avvikelseQuestions$: Observable = this.avvikelseApiService + .fetchAvvikelseQuestions$() .pipe(shareReplay(1)); - getAvvikelseOrsaker$: Observable = this.avvikelseApiService.getOrsaksKoderAvvikelse$(); + fetchAvvikelseReasons$: Observable = this.avvikelseApiService.fetchAvvikelseReasons$(); constructor(private avvikelseApiService: AvvikelseApiService, private deltagareApiService: DeltagareApiService) {} - createAvvikelse$(avvikelse: Avvikelse_OLD): Observable { + createAvvikelse$(avvikelse: AvvikelseReportRequest): Observable { return this.avvikelseApiService.createAvvikelse$(avvikelse); } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/franvaro-report-form/franvaro-report-form.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/franvaro-report-form/franvaro-report-form.component.ts index 141a4d4..d03d66f 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/franvaro-report-form/franvaro-report-form.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/franvaro-report-form/franvaro-report-form.component.ts @@ -4,11 +4,11 @@ import { FormControl, FormGroup } from '@angular/forms'; import { ActivatedRoute } from '@angular/router'; import { ANNAN_KAND_ORSAK_ID, ANNAN_ORSAK_ID } from '@msfa-constants/franvaro-reasons'; import { ErrorType } from '@msfa-enums/error-type.enum'; +import { FranvaroReportRequest } from '@msfa-models/api/franvaro-request.model'; import { Avrop } from '@msfa-models/avrop.model'; -import { FranvaroRequestData_OLD } from '@msfa-models/avvikelse.model'; import { CustomError } from '@msfa-models/error/custom-error'; +import { FranvaroReason } from '@msfa-models/franvaro-reason.model'; import { Franvaro } from '@msfa-models/franvaro.model'; -import { OrsaksKoderFranvaro } from '@msfa-models/orsaks-koder-franvaro.model'; import { dateToIsoString } from '@msfa-utils/format-to-date.util'; import { BehaviorSubject, Observable } from 'rxjs'; import { map, shareReplay, switchMap } from 'rxjs/operators'; @@ -50,8 +50,8 @@ export class FranvaroReportFormComponent { switchMap(genomforandeReferens => this.franvaroReportFormService.fetchAvropInformation$(+genomforandeReferens)), shareReplay(1) ); - reasons$: Observable = this.franvaroReportFormService.reasons$; - otherKnownReasons$: Observable = this.franvaroReportFormService.otherKnownReasons$; + reasons$: Observable = this.franvaroReportFormService.reasons$; + otherKnownReasons$: Observable = this.franvaroReportFormService.otherKnownReasons$; wholeDayOrPartOfDayRadiobuttons: RadiobuttonModel[] = [ { label: 'Heldag', value: true }, @@ -118,7 +118,7 @@ export class FranvaroReportFormComponent { return new Date(this.dateFormControl.value); } - getReasonNameFromValue(reasons: OrsaksKoderFranvaro[], value: string): string { + getReasonNameFromValue(reasons: FranvaroReason[], value: string): string { return reasons.find(reason => reason.value.toString() === value)?.name; } @@ -164,8 +164,8 @@ export class FranvaroReportFormComponent { expectedPresenceEndTime, } = this.franvaroFormGroup.value as Franvaro; - const postRequest: FranvaroRequestData_OLD = { - genomforandeReferens, + const postRequest: FranvaroReportRequest = { + genomforandeReferens: +genomforandeReferens, franvaro: { avvikelseOrsaksKod: reason, datum: dateToIsoString(date), diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/franvaro-report-form/franvaro-report-form.service.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/franvaro-report-form/franvaro-report-form.service.ts index 247baef..ce97282 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/franvaro-report-form/franvaro-report-form.service.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/franvaro-report-form/franvaro-report-form.service.ts @@ -1,16 +1,14 @@ import { Injectable } from '@angular/core'; +import { FranvaroReportRequest } from '@msfa-models/api/franvaro-request.model'; import { Avrop } from '@msfa-models/avrop.model'; -import { FranvaroRequestData_OLD } from '@msfa-models/avvikelse.model'; -import { OrsaksKoderFranvaro } from '@msfa-models/orsaks-koder-franvaro.model'; +import { FranvaroReason } from '@msfa-models/franvaro-reason.model'; import { FranvaroReportApiService } from '@msfa-services/api/franvaro-report.api.service'; import { Observable } from 'rxjs'; @Injectable() export class FranvaroReportFormService { - public reasons$: Observable = this.franvaroReportApiService.fetchReasons$(); - public otherKnownReasons$: Observable< - OrsaksKoderFranvaro[] - > = this.franvaroReportApiService.fetchOtherKnownReasons$(); + public reasons$: Observable = this.franvaroReportApiService.fetchReasons$(); + public otherKnownReasons$: Observable = this.franvaroReportApiService.fetchOtherKnownReasons$(); constructor(private franvaroReportApiService: FranvaroReportApiService) {} @@ -18,7 +16,7 @@ export class FranvaroReportFormService { return this.franvaroReportApiService.fetchAvropInformation$(genomforandeReferens); } - public async postFranvaroReport(requestData: FranvaroRequestData_OLD): Promise { + public async postFranvaroReport(requestData: FranvaroReportRequest): Promise { return this.franvaroReportApiService.postFranvaroReport$(requestData); } } diff --git a/apps/mina-sidor-fa/src/app/shared/enums/franvaro-orsak-kod.enum.ts b/apps/mina-sidor-fa/src/app/shared/enums/franvaro-orsak-kod.enum.ts deleted file mode 100644 index 052b43a..0000000 --- a/apps/mina-sidor-fa/src/app/shared/enums/franvaro-orsak-kod.enum.ts +++ /dev/null @@ -1,8 +0,0 @@ -export enum FranvaroOrsaksKodEnum { - Sjuk = 15, - Arbete = 16, - OkandOrsak = 17, - AnnanKandOrsak = 18, - VAB = 26, - Utbildning = 27, -} diff --git a/apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-question.response.model.ts b/apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-question.response.model.ts new file mode 100644 index 0000000..e921ba8 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-question.response.model.ts @@ -0,0 +1,5 @@ +export interface AvvikelseQuestionsResponse { + id: string; + name: string; + required: boolean; +} diff --git a/apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-reason.response.model.ts b/apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-reason.response.model.ts new file mode 100644 index 0000000..5950926 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-reason.response.model.ts @@ -0,0 +1,4 @@ +export interface AvvikelseReasonResponse { + id: number; + name: string; +} diff --git a/apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-request.model.ts b/apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-request.model.ts new file mode 100644 index 0000000..a7fcd6a --- /dev/null +++ b/apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-request.model.ts @@ -0,0 +1,15 @@ +export interface AvvikelseQuestionRequest { + fraga: string; + svar: string; +} + +export interface AvvikelseRequest { + avvikelseOrsakskod: string; + frageformular: AvvikelseQuestionRequest[]; + rapporteringsdatum: string; +} + +export interface AvvikelseReportRequest { + genomforandeReferens: number; + avvikelseAlternativ: AvvikelseRequest; +} diff --git a/apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-response.model.ts b/apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-response.model.ts index 362dc83..3cad2d2 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-response.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/api/avvikelse-response.model.ts @@ -1,11 +1,9 @@ -export interface AvvikelseQuestionResponse { - fraga: string; - svar: string; -} - export interface AvvikelseResponse { avvikelseOrsakskod: string; - frageformular: AvvikelseQuestionResponse[]; + frageformular: { + fraga: string; + svar: string; + }[]; rapporteringsdatum: string; } diff --git a/apps/mina-sidor-fa/src/app/shared/models/api/fragor-for-avvikelser.response.ts b/apps/mina-sidor-fa/src/app/shared/models/api/fragor-for-avvikelser.response.ts deleted file mode 100644 index 319b36b..0000000 --- a/apps/mina-sidor-fa/src/app/shared/models/api/fragor-for-avvikelser.response.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface FragorForAvvikelserResponse { - id: string; - name: string; -} diff --git a/apps/mina-sidor-fa/src/app/shared/models/api/franvaro-reason.response.model.ts b/apps/mina-sidor-fa/src/app/shared/models/api/franvaro-reason.response.model.ts new file mode 100644 index 0000000..47ab3e9 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/shared/models/api/franvaro-reason.response.model.ts @@ -0,0 +1,4 @@ +export interface FranvaroReasonResponse { + id: number; + name: string; +} diff --git a/apps/mina-sidor-fa/src/app/shared/models/api/franvaro-request.model.ts b/apps/mina-sidor-fa/src/app/shared/models/api/franvaro-request.model.ts new file mode 100644 index 0000000..dfb4d25 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/shared/models/api/franvaro-request.model.ts @@ -0,0 +1,20 @@ +export interface FranvaroRequest { + avvikelseOrsaksKod: string; + datum: string; + heldag: boolean; + startTid: string; + slutTid: string; + alternativForKandaOrsaker: { + typ: string; + motivering: string; + } | null; + forvantadNarvaro: { + startTid: string; + slutTid: string; + }; +} + +export interface FranvaroReportRequest { + genomforandeReferens: number; + franvaro: FranvaroRequest; +} diff --git a/apps/mina-sidor-fa/src/app/shared/models/api/gemensam-planering.request.model.ts b/apps/mina-sidor-fa/src/app/shared/models/api/gemensam-planering.request.model.ts index 266d841..d8d9a9c 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/api/gemensam-planering.request.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/api/gemensam-planering.request.model.ts @@ -1,5 +1,5 @@ export interface GemensamPlaneringPostRequest { - genomforandeReferens: string; + genomforandeReferens: number; distans: boolean; aktivitetsIds: number[]; } diff --git a/apps/mina-sidor-fa/src/app/shared/models/api/kanda-avvikelse-koder.response.model.ts b/apps/mina-sidor-fa/src/app/shared/models/api/kanda-avvikelse-koder.response.model.ts deleted file mode 100644 index 7be3b17..0000000 --- a/apps/mina-sidor-fa/src/app/shared/models/api/kanda-avvikelse-koder.response.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface KandaAvvikelseKoderResponse { - id: number; - name: string; -} diff --git a/apps/mina-sidor-fa/src/app/shared/models/api/orsaks-koder-avvikelse.response.model.ts b/apps/mina-sidor-fa/src/app/shared/models/api/orsaks-koder-avvikelse.response.model.ts deleted file mode 100644 index ad152e9..0000000 --- a/apps/mina-sidor-fa/src/app/shared/models/api/orsaks-koder-avvikelse.response.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface OrsaksKoderAvvikelseResponse { - id: number; - name: string; - state: number -} diff --git a/apps/mina-sidor-fa/src/app/shared/models/api/orsaks-koder-franvaro.response.model.ts b/apps/mina-sidor-fa/src/app/shared/models/api/orsaks-koder-franvaro.response.model.ts deleted file mode 100644 index 12acb3d..0000000 --- a/apps/mina-sidor-fa/src/app/shared/models/api/orsaks-koder-franvaro.response.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface OrsaksKoderFranvaroResponse { - id: number; - name: string; -} diff --git a/apps/mina-sidor-fa/src/app/shared/models/avvikelse-question.model.ts b/apps/mina-sidor-fa/src/app/shared/models/avvikelse-question.model.ts new file mode 100644 index 0000000..5606b7c --- /dev/null +++ b/apps/mina-sidor-fa/src/app/shared/models/avvikelse-question.model.ts @@ -0,0 +1,17 @@ +import { AvvikelseQuestionsResponse } from './api/avvikelse-question.response.model'; + +export interface AvvikelseQuestion { + name: string; + id: string; + required: boolean; +} + +export function mapResponseToAvvikelseQuestion(data: AvvikelseQuestionsResponse): AvvikelseQuestion { + const { name, id, required } = data; + + return { + name: name, + id: id, + required, + }; +} diff --git a/apps/mina-sidor-fa/src/app/shared/models/avvikelse-reason.model.ts b/apps/mina-sidor-fa/src/app/shared/models/avvikelse-reason.model.ts new file mode 100644 index 0000000..9917215 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/shared/models/avvikelse-reason.model.ts @@ -0,0 +1,15 @@ +import { AvvikelseReasonResponse } from './api/avvikelse-reason.response.model'; + +export interface AvvikelseReason { + name: string; + id: number; +} + +export function mapResponseToAvvikelseReason(data: AvvikelseReasonResponse): AvvikelseReason { + const { name, id } = data; + + return { + name, + id, + }; +} diff --git a/apps/mina-sidor-fa/src/app/shared/models/avvikelse.model.ts b/apps/mina-sidor-fa/src/app/shared/models/avvikelse.model.ts index 21563f8..cd46c64 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/avvikelse.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/avvikelse.model.ts @@ -1,17 +1,13 @@ -import { Fraga } from '@msfa-models/fraga.model'; import { AvvikelseResponse } from './api/avvikelse-response.model'; -import { FragorForAvvikelser } from './fragor-for-avvikelser.model'; -import { FranvaroAlternativ } from './franvaro-alternativ.model'; -import { OrsaksKoderAvvikelse } from './orsaks-koder-avvikelse.model'; - -export interface AvvikelseQuestion { - question: string; - answer: string; -} +import { AvvikelseQuestion } from './avvikelse-question.model'; +import { AvvikelseReason } from './avvikelse-reason.model'; export interface Avvikelse { reason: string; - questions: AvvikelseQuestion[]; + questions: { + question: string; + answer: string; + }[]; date: Date; } @@ -20,36 +16,15 @@ export interface AvvikelseReport { avvikelse: Avvikelse; } -export interface AvvikelseAlternativ_OLD { - avvikelseorsakskod: string; - frageformular: Fraga[]; - rapporteringsdatum: string; -} - -export interface Avvikelse_OLD { - genomforandeReferens: number; - avvikelseAlternativ?: AvvikelseAlternativ_OLD; -} - -export interface AvvikelseRequestData_OLD { - genomforandeReferens: number; - avvikelseAlternativ: AvvikelseAlternativ_OLD; -} - -export interface FranvaroRequestData_OLD { - genomforandeReferens: number; - franvaro: FranvaroAlternativ; -} - export function mapResponseToAvvikelse( data: AvvikelseResponse, - reasons: OrsaksKoderAvvikelse[], - questions: FragorForAvvikelser[] + reasons: AvvikelseReason[], + questions: AvvikelseQuestion[] ): Avvikelse { const { avvikelseOrsakskod, rapporteringsdatum, frageformular } = data; return { - reason: reasons.find(reason => reason.id === avvikelseOrsakskod).name, + reason: reasons.find(reason => reason.id.toString() === avvikelseOrsakskod).name, questions: frageformular.map(fraga => ({ question: questions.find(question => question.id === fraga.fraga).name, answer: fraga.svar, @@ -57,13 +32,3 @@ export function mapResponseToAvvikelse( date: new Date(rapporteringsdatum), }; } - -export function mapAvvikelseRequestDataToAvvikelse_OLD(data: AvvikelseRequestData_OLD): Avvikelse_OLD { - return data; - // const { genomforandeReferens, avvikelseAlternativ } = data; - // - // return { - // genomforandeReferens, - // avvikelseAlternativ, - // }; -} diff --git a/apps/mina-sidor-fa/src/app/shared/models/fragor-for-avvikelser.model.ts b/apps/mina-sidor-fa/src/app/shared/models/fragor-for-avvikelser.model.ts deleted file mode 100644 index f3ddf33..0000000 --- a/apps/mina-sidor-fa/src/app/shared/models/fragor-for-avvikelser.model.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { FragorForAvvikelserResponse } from './api/fragor-for-avvikelser.response'; - -export interface FragorForAvvikelser { - name: string; - id: string; - descriptionIsRequired?: boolean -} - -export function mapResponseToFragorForAvvikelser(data: FragorForAvvikelserResponse): FragorForAvvikelser { - const { name, id } = data; - - return { - name: name, - id: id - } -} diff --git a/apps/mina-sidor-fa/src/app/shared/models/franvaro-reason.model.ts b/apps/mina-sidor-fa/src/app/shared/models/franvaro-reason.model.ts new file mode 100644 index 0000000..823155c --- /dev/null +++ b/apps/mina-sidor-fa/src/app/shared/models/franvaro-reason.model.ts @@ -0,0 +1,15 @@ +import { FranvaroReasonResponse } from './api/franvaro-reason.response.model'; + +export interface FranvaroReason { + name: string; + value: number; +} + +export function mapResponseToFranvaroReason(data: FranvaroReasonResponse): FranvaroReason { + const { name, id } = data; + + return { + name, + value: id, + }; +} diff --git a/apps/mina-sidor-fa/src/app/shared/models/franvaro.model.ts b/apps/mina-sidor-fa/src/app/shared/models/franvaro.model.ts index b60b2f4..87a667b 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/franvaro.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/franvaro.model.ts @@ -1,5 +1,5 @@ import { FranvaroResponse } from './api/franvaro-response.model'; -import { OrsaksKoderFranvaro } from './orsaks-koder-franvaro.model'; +import { FranvaroReason } from './franvaro-reason.model'; export interface Franvaro { reason: string; @@ -20,8 +20,8 @@ export interface FranvaroReport { export function mapResponseToFranvaro( data: FranvaroResponse, - reasons: OrsaksKoderFranvaro[], - otherKnownReasons: OrsaksKoderFranvaro[] + reasons: FranvaroReason[], + otherKnownReasons: FranvaroReason[] ): Franvaro { const { avvikelseOrsaksKod, datum, heldag, startTid, slutTid, alternativForKandaOrsaker, forvantadNarvaro } = data; diff --git a/apps/mina-sidor-fa/src/app/shared/models/gemensam-planering.model.ts b/apps/mina-sidor-fa/src/app/shared/models/gemensam-planering.model.ts index a880b1d..e923d4e 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/gemensam-planering.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/gemensam-planering.model.ts @@ -20,7 +20,7 @@ export function mapGemensamPlaneringToGemensamPlaneringPostRequest( const { genomforandeReferens, distance, activityIds } = gemensamPlanering; return { - genomforandeReferens: genomforandeReferens.toString(), + genomforandeReferens, distans: distance, aktivitetsIds: activityIds, }; diff --git a/apps/mina-sidor-fa/src/app/shared/models/orsaks-koder-avvikelse.model.ts b/apps/mina-sidor-fa/src/app/shared/models/orsaks-koder-avvikelse.model.ts deleted file mode 100644 index 093f600..0000000 --- a/apps/mina-sidor-fa/src/app/shared/models/orsaks-koder-avvikelse.model.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { OrsaksKoderAvvikelseResponse } from './api/orsaks-koder-avvikelse.response.model'; - -// TODO rename to AvvikelseOrsaker -export interface OrsaksKoderAvvikelse { - name: string; - id: string; //AvvikelseOrsaksKodEnum - state: number; -} - -export function mapResponseToOrsaksKoderAvvikelse(data: OrsaksKoderAvvikelseResponse): OrsaksKoderAvvikelse { - const { name, id, state } = data; - - return { - name, - id: id.toString(), - state, - }; -} diff --git a/apps/mina-sidor-fa/src/app/shared/models/orsaks-koder-franvaro.model.ts b/apps/mina-sidor-fa/src/app/shared/models/orsaks-koder-franvaro.model.ts deleted file mode 100644 index 0f2a055..0000000 --- a/apps/mina-sidor-fa/src/app/shared/models/orsaks-koder-franvaro.model.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { FranvaroOrsaksKodEnum } from '@msfa-enums/franvaro-orsak-kod.enum'; -import { KandaAvvikelseKoderResponse } from './api/kanda-avvikelse-koder.response.model'; -import { OrsaksKoderFranvaroResponse } from './api/orsaks-koder-franvaro.response.model'; - -export interface OrsaksKoderFranvaro { - name: string; - value: FranvaroOrsaksKodEnum; - index?: number; -} - -export interface KandaAvvikelseKoder { - name: string; - value: number; -} - -export function mapResponseToOrsaksKoderFranvaro(data: OrsaksKoderFranvaroResponse): OrsaksKoderFranvaro { - const { name, id } = data; - - return { - name, - value: id, - }; -} - -export function mapResponseToAndraKandaOrsaker(data: KandaAvvikelseKoderResponse): KandaAvvikelseKoder { - const { name, id } = data; - - return { - name, - value: id, - }; -} diff --git a/apps/mina-sidor-fa/src/app/shared/models/out-of-office-date.model.ts b/apps/mina-sidor-fa/src/app/shared/models/out-of-office-date.model.ts deleted file mode 100644 index 1e01a83..0000000 --- a/apps/mina-sidor-fa/src/app/shared/models/out-of-office-date.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface OutOfOfficeDate { - id: number; - start: Date; - end: Date; -} diff --git a/apps/mina-sidor-fa/src/app/shared/services/api/avvikelse-api.service.ts b/apps/mina-sidor-fa/src/app/shared/services/api/avvikelse-api.service.ts index 5f7f408..9904f47 100644 --- a/apps/mina-sidor-fa/src/app/shared/services/api/avvikelse-api.service.ts +++ b/apps/mina-sidor-fa/src/app/shared/services/api/avvikelse-api.service.ts @@ -2,19 +2,12 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { ErrorType } from '@msfa-enums/error-type.enum'; import { environment } from '@msfa-environment'; -import { FragorForAvvikelserResponse } from '@msfa-models/api/fragor-for-avvikelser.response'; -import { KandaAvvikelseKoderResponse } from '@msfa-models/api/kanda-avvikelse-koder.response.model'; -import { OrsaksKoderAvvikelseResponse } from '@msfa-models/api/orsaks-koder-avvikelse.response.model'; -import { Avvikelse_OLD } from '@msfa-models/avvikelse.model'; +import { AvvikelseQuestionsResponse } from '@msfa-models/api/avvikelse-question.response.model'; +import { AvvikelseReasonResponse } from '@msfa-models/api/avvikelse-reason.response.model'; +import { AvvikelseReportRequest } from '@msfa-models/api/avvikelse-request.model'; +import { AvvikelseQuestion, mapResponseToAvvikelseQuestion } from '@msfa-models/avvikelse-question.model'; +import { AvvikelseReason, mapResponseToAvvikelseReason } from '@msfa-models/avvikelse-reason.model'; import { CustomError } from '@msfa-models/error/custom-error'; -import { FragorForAvvikelser, mapResponseToFragorForAvvikelser } from '@msfa-models/fragor-for-avvikelser.model'; -import { mapResponseToOrsaksKoderAvvikelse, OrsaksKoderAvvikelse } from '@msfa-models/orsaks-koder-avvikelse.model'; -import { - KandaAvvikelseKoder, - mapResponseToAndraKandaOrsaker, - mapResponseToOrsaksKoderFranvaro, - OrsaksKoderFranvaro, -} from '@msfa-models/orsaks-koder-franvaro.model'; import { Observable } from 'rxjs'; import { catchError, filter, map } from 'rxjs/operators'; @@ -26,39 +19,21 @@ export class AvvikelseApiService { constructor(private httpClient: HttpClient) {} - public getOrsaksKoderFranvaro$(): Observable { - return this.httpClient - .get<{ data: OrsaksKoderAvvikelseResponse[] }>(`${this._apiBaseUrl}/orsakskoderfranvaro`) - .pipe( - filter(response => !!response?.data), - map(({ data }) => data.map(orsak => mapResponseToOrsaksKoderFranvaro(orsak))) - ); - } - - public getOrsaksKoderAvvikelse$(): Observable { - return this.httpClient - .get<{ data: OrsaksKoderAvvikelseResponse[] }>(`${this._apiBaseUrl}/orsakskoderavvikelse`) - .pipe( - filter(response => !!response?.data), - map(({ data }) => data.map(avvikelse => mapResponseToOrsaksKoderAvvikelse(avvikelse))) - ); - } - - public getAndraKandaOrsaker$(): Observable { - return this.httpClient.get<{ data: KandaAvvikelseKoderResponse[] }>(`${this._apiBaseUrl}/kandaavvikelsekoder`).pipe( + public fetchAvvikelseReasons$(): Observable { + return this.httpClient.get<{ data: AvvikelseReasonResponse[] }>(`${this._apiBaseUrl}/orsakskoderavvikelse`).pipe( filter(response => !!response?.data), - map(({ data }) => data.map(annanKandOrsak => mapResponseToAndraKandaOrsaker(annanKandOrsak))) + map(({ data }) => data.map(avvikelse => mapResponseToAvvikelseReason(avvikelse))) ); } - public getFragorForAvvikelser$(): Observable { - return this.httpClient.get<{ data: FragorForAvvikelserResponse[] }>(`${this._apiBaseUrl}/fragorforavvikelser`).pipe( + public fetchAvvikelseQuestions$(): Observable { + return this.httpClient.get<{ data: AvvikelseQuestionsResponse[] }>(`${this._apiBaseUrl}/fragorforavvikelser`).pipe( filter(response => !!response?.data), - map(({ data }) => data.map(fraga => mapResponseToFragorForAvvikelser(fraga))) + map(({ data }) => data.map(fraga => mapResponseToAvvikelseQuestion(fraga))) ); } - public createAvvikelse$(avvikelse: Avvikelse_OLD): Observable { + public createAvvikelse$(avvikelse: AvvikelseReportRequest): Observable { return this.httpClient.post(`${this._apiBaseUrl}/avvikelse`, avvikelse).pipe( catchError((error: Error) => { throw new CustomError({ @@ -69,8 +44,4 @@ export class AvvikelseApiService { }) ); } - - public createFranvaro$(avvikelse: Avvikelse_OLD): Promise { - return this.httpClient.post(`${this._apiBaseUrl}/franvaro`, avvikelse).toPromise(); - } } diff --git a/apps/mina-sidor-fa/src/app/shared/services/api/franvaro-report.api.service.ts b/apps/mina-sidor-fa/src/app/shared/services/api/franvaro-report.api.service.ts index 522a16c..4c444cd 100644 --- a/apps/mina-sidor-fa/src/app/shared/services/api/franvaro-report.api.service.ts +++ b/apps/mina-sidor-fa/src/app/shared/services/api/franvaro-report.api.service.ts @@ -1,11 +1,11 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { environment } from '@msfa-environment'; -import { OrsaksKoderFranvaroResponse } from '@msfa-models/api/orsaks-koder-franvaro.response.model'; +import { FranvaroReasonResponse } from '@msfa-models/api/franvaro-reason.response.model'; +import { FranvaroReportRequest } from '@msfa-models/api/franvaro-request.model'; import { Avrop } from '@msfa-models/avrop.model'; -import { FranvaroRequestData_OLD } from '@msfa-models/avvikelse.model'; import { CustomError, errorToCustomError } from '@msfa-models/error/custom-error'; -import { mapResponseToOrsaksKoderFranvaro, OrsaksKoderFranvaro } from '@msfa-models/orsaks-koder-franvaro.model'; +import { FranvaroReason, mapResponseToFranvaroReason } from '@msfa-models/franvaro-reason.model'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { Observable } from 'rxjs'; import { catchError, filter, map, shareReplay } from 'rxjs/operators'; @@ -18,10 +18,10 @@ export class FranvaroReportApiService { constructor(private httpClient: HttpClient, private deltagareApiService: DeltagareApiService) {} - public fetchReasons$(): Observable { - return this.httpClient.get<{ data: OrsaksKoderFranvaroResponse[] }>(`${this._apiBaseUrl}/orsakskoderfranvaro`).pipe( + public fetchReasons$(): Observable { + return this.httpClient.get<{ data: FranvaroReasonResponse[] }>(`${this._apiBaseUrl}/orsakskoderfranvaro`).pipe( filter(response => !!response?.data), - map(({ data }) => data.map(reason => mapResponseToOrsaksKoderFranvaro(reason))), + map(({ data }) => data.map(reason => mapResponseToFranvaroReason(reason))), catchError((error: Error & { status: number }) => { throw new CustomError( errorToCustomError({ ...error, message: `Kunde inte hämta orsaker till frånvaro.\n\n${error.message}` }) @@ -30,10 +30,10 @@ export class FranvaroReportApiService { shareReplay(1) ); } - public fetchOtherKnownReasons$(): Observable { - return this.httpClient.get<{ data: OrsaksKoderFranvaroResponse[] }>(`${this._apiBaseUrl}/kandaavvikelsekoder`).pipe( + public fetchOtherKnownReasons$(): Observable { + return this.httpClient.get<{ data: FranvaroReasonResponse[] }>(`${this._apiBaseUrl}/kandaavvikelsekoder`).pipe( filter(response => !!response?.data), - map(({ data }) => data.map(reason => mapResponseToOrsaksKoderFranvaro(reason))), + map(({ data }) => data.map(reason => mapResponseToFranvaroReason(reason))), catchError((error: Error & { status: number }) => { throw new CustomError( errorToCustomError({ ...error, message: `Kunde inte hämta kända orsaker till frånvaro.\n\n${error.message}` }) @@ -47,7 +47,7 @@ export class FranvaroReportApiService { return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); } - public async postFranvaroReport$(requestData: FranvaroRequestData_OLD): Promise { + public async postFranvaroReport$(requestData: FranvaroReportRequest): Promise { return this.httpClient.post(`${this._apiBaseUrl}/franvaro`, requestData).toPromise(); } } 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 index f24febe..0bea88d 100644 --- 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 @@ -7,15 +7,15 @@ 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 { FragorForAvvikelser } from '@msfa-models/fragor-for-avvikelser.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 { OrsaksKoderAvvikelse } from '@msfa-models/orsaks-koder-avvikelse.model'; -import { OrsaksKoderFranvaro } from '@msfa-models/orsaks-koder-franvaro.model'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { combineLatest, Observable } from 'rxjs'; import { filter, map, switchMap } from 'rxjs/operators'; @@ -29,12 +29,12 @@ import { GemensamPlaneringApiService } from './gemensam-planering-api.service'; export class ReportApiService { private _apiBaseUrl = `${environment.api.url}/handlingar`; - private _avvikelseReasons$: Observable = this.avvikelseApiService.getOrsaksKoderAvvikelse$(); - private _avvikelseQuestions$: Observable = this.avvikelseApiService.getFragorForAvvikelser$(); + 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 _franvaroReasons$: Observable = this.franvaroReportApiService.fetchReasons$(); private _otherFranvaroReasons$: Observable< - OrsaksKoderFranvaro[] + FranvaroReason[] > = this.franvaroReportApiService.fetchOtherKnownReasons$(); constructor(