From 28f94c7a29f4ed5989a4e72be13c036a42dbb410 Mon Sep 17 00:00:00 2001 From: Daniel Appelgren Date: Thu, 7 Oct 2021 09:28:58 +0200 Subject: [PATCH] Merge pull request #184 in TEA/mina-sidor-fa-web from feature/TV-731-refaktorisera-avvikelserapport to develop Squashed commit of the following: commit 62ea9988b66107457da553bf2cd0e423a6f44606 Author: Daniel Appelgren Date: Thu Oct 7 08:26:52 2021 +0200 simplify post requests commit bf35fa3f4972536c52c15d0ef942678e565fff74 Author: Daniel Appelgren Date: Thu Oct 7 07:44:15 2021 +0200 Update deltagare-avvikelse.component.html commit 22e55d0e51eb83f2d8bbc6c9e3a65d2bd479fa92 Author: Daniel Appelgren Date: Wed Oct 6 17:06:27 2021 +0200 wip commit 2836a0c7687755dbf7b7e20d98f24d9bf3bc3f40 Author: Daniel Appelgren Date: Wed Oct 6 16:55:14 2021 +0200 merge with develop commit 77f16e8a1961b623bb741056882a1df3480f9d13 Merge: a4e3b940 890573b1 Author: Daniel Appelgren Date: Wed Oct 6 16:51:50 2021 +0200 Merge branch 'develop' into feature/TV-731-refaktorisera-avvikelserapport # Conflicts: # apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.component.html # apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.component.ts commit a4e3b940ca9e2e484f92dd5d05e14a65e714b897 Author: Daniel Appelgren Date: Wed Oct 6 16:38:35 2021 +0200 Refactor avvikelse commit 5e1923324801baba29bcf2273908075ccc5e29e1 Author: Daniel Appelgren Date: Wed Oct 6 15:13:34 2021 +0200 Update deltagare-avvikelse.component.html commit e57b42761b07899f3922f65995bc905abed44c83 Merge: 14a776bc 19a3b05e Author: Erik Tiekstra Date: Wed Oct 6 12:54:23 2021 +0200 Merged develop commit 14a776bc2e72dd7145dfe27e5e5745cc0d5b43a1 Author: Daniel Appelgren Date: Wed Oct 6 12:33:57 2021 +0200 correct API commit 9c155b578454865aaa6a4557348d3fd460459434 Author: Daniel Appelgren Date: Wed Oct 6 11:36:38 2021 +0200 match utv API commit 6625524adab2e04269ad14a3c581505e83c8483a Merge: 2a9cbee7 3d941fdd Author: Daniel Appelgren Date: Wed Oct 6 10:45:46 2021 +0200 Merge branch 'develop' into feature/TV-731-refaktorisera-avvikelserapport commit 2a9cbee7e544decb0a897063bcbbe6b0ac883608 Author: Daniel Appelgren Date: Tue Oct 5 15:06:42 2021 +0200 Update deltagare-avvikelse.component.ts --- .../deltagare-avvikelse.component.html | 113 ++++++---- .../deltagare-avvikelse.component.scss | 13 +- .../deltagare-avvikelse.component.ts | 197 ++++++++++-------- .../deltagare-avvikelse.module.ts | 4 + .../deltagare-avvikelse.service.ts | 61 +++--- .../src/app/shared/models/avvikelse.model.ts | 31 ++- .../models/franvaro-alternativ.model.ts | 20 +- .../services/api/avvikelse-api.service.ts | 42 +--- config/proxy.conf.json | 4 +- 9 files changed, 267 insertions(+), 218 deletions(-) diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.component.html index 56287bf..7703a56 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.component.html @@ -1,89 +1,104 @@ - + +
+ +

+ Avvikelserapport för deltagare {{avrop.fullName}} är nu inskickad till + Arbetsförmedlingen och inväntar + godkännande. +

+
+
Datum
+
{{submittedDate | date:'longDate'}} kl {{submittedDate | date:'shortTime'}}
+
+
+ Tillbaka till deltagaren +
+

Vad är det du vill rapportera?

Alternativ är obligatoriskt
- + {{avvikelseFormGroup.errors?.dateIsRequired}}
{{dayOrPartOfDayFormControl.errors?.message}} @@ -91,51 +106,61 @@ + +

Kunde inte spara avvikelserapporten. Ladda om sidan och försök igen.

+

{{error.message}}

+
+
- + Tillbaka - + Skicka in - + Förhandsgranska - - Tillbaka till deltagaren -
+ + + diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.component.scss b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.component.scss index e669a7e..2f4acc8 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.component.scss +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.component.scss @@ -1,6 +1,13 @@ -@import 'apps/mina-sidor-fa/src/styles/variables/gutters'; +@import 'variables/gutters'; .deltagare-avvikelse { + &__confirmation, + &__form { + display: flex; + flex-direction: column; + gap: $digi--layout--gutter--l; + } + &__deltagare, &__alternative, &__description, @@ -25,4 +32,8 @@ &__step-buttons-wrapper--space-right { margin-right: var(--digi--layout--gutter--s); } + + &__alert { + max-width: var(--digi--typography--text--max-width); + } } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.component.ts index 795f46f..32a7476 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.component.ts @@ -1,14 +1,13 @@ import { RadiobuttonModel } from '@af/digi-ng/_form/form-radiobutton-group'; import { FormTextareaSize } from '@af/digi-ng/_form/form-textarea'; -import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; import { AbstractControl, FormControl, FormGroup } from '@angular/forms'; -import { ActivatedRoute, Router } from '@angular/router'; -import { ReportType } from '@msfa-enums/report-type.enum'; +import { ActivatedRoute } from '@angular/router'; import { ConfirmDialog } from '@msfa-enums/confirm-dialog.enum'; import { DayOrPartOfDay } from '@msfa-enums/day-or-part-of-day.enum'; import { FranvaroOrsaksKodEnum } from '@msfa-enums/franvaro-orsak-kod.enum'; import { KandaOrsakerEnum } from '@msfa-enums/kanda-orsaker-kod.enum'; -import { Avrop } from '@msfa-models/avrop.model'; +import { ReportType } from '@msfa-enums/report-type.enum'; import { AvvikelseAlternativ } from '@msfa-models/avvikelse-alternativ.model'; import { Avvikelse } from '@msfa-models/avvikelse.model'; import { FragorForAvvikelser } from '@msfa-models/fragor-for-avvikelser.model'; @@ -17,21 +16,28 @@ import { OrsaksKoderAvvikelse } from '@msfa-models/orsaks-koder-avvikelse.model' import { KandaAvvikelseKoder, OrsaksKoderFranvaro } from '@msfa-models/orsaks-koder-franvaro.model'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { - requiredOrsakerValidator, requiredAnnanKandOrsakValidator, - requiredDescriptionValidator, RequiredDateValidator, requiredDayOrPartOfDayValidator, - requiredStartTimeValidator, + requiredDescriptionValidator, requiredEndTimeValidator, requiredFraga1Validator, - requiredfraga2Validator + requiredfraga2Validator, + requiredOrsakerValidator, + requiredStartTimeValidator, } from '@msfa-validators/avvikelse-form-validator'; import { RequiredValidator } from '@msfa-validators/required.validator'; import { BehaviorSubject, Observable } from 'rxjs'; -import { map, switchMap } from 'rxjs/operators'; +import { map, shareReplay, switchMap } from 'rxjs/operators'; import { DeltagareAvvikelseService } from './deltagare-avvikelse.service'; import { avvikelseAlternatives, dayOrPartOfDay } from './report-alternatives'; +import { CustomError } from '@msfa-models/error/custom-error'; +import { ErrorType } from '@msfa-enums/error-type.enum'; +import { Avrop } from '@msfa-models/avrop.model'; + +interface Params { + genomforandeReferens: string; +} @Component({ selector: 'msfa-deltagare-avvikelse', @@ -39,7 +45,7 @@ import { avvikelseAlternatives, dayOrPartOfDay } from './report-alternatives'; styleUrls: ['./deltagare-avvikelse.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class DeltagareAvvikelseComponent implements OnInit { +export class DeltagareAvvikelseComponent { readonly alternativeFormControlName = 'alternative'; readonly descriptionFormControlName = 'description'; readonly dateFormControlName = 'date'; @@ -50,11 +56,14 @@ export class DeltagareAvvikelseComponent implements OnInit { readonly fraga2FormControlName = 'fraga2'; readonly startTimeFormControlName = 'startTime'; readonly endTimeFormControlName = 'endTime'; + genomforandeReferens$: Observable = this.activatedRoute.params.pipe( + map((params: Params) => +params.genomforandeReferens) + ); + avrop$: Observable = this.genomforandeReferens$.pipe( + switchMap(genomforandeReferens => this.deltagareAvvikelseService.fetchAvropInformation$(genomforandeReferens)), + shareReplay(1) + ); - private _showSuccessNotification$ = new BehaviorSubject(false); - private _showDangerNotification$ = new BehaviorSubject(false); - - avrop$: Observable; franvaroOrsaker$: Observable; avvikelseOrsaker$: Observable; andraKandaOrsaker$: Observable; @@ -65,50 +74,43 @@ export class DeltagareAvvikelseComponent implements OnInit { avvikelseAlternatives: RadiobuttonModel[] = avvikelseAlternatives; dayOrPartOfDay: RadiobuttonModel[] = dayOrPartOfDay; selectedOrsaksKod: string; - avvikelseFormGroup: FormGroup | null = null; + avvikelseFormGroup = new FormGroup( + { + alternative: new FormControl(null, [RequiredValidator()]), + description: new FormControl('', [requiredDescriptionValidator()]), + date: new FormControl(this.todayDate), + dayOrPartOfDay: new FormControl(null, [requiredDayOrPartOfDayValidator()]), + orsakerFormGroup: new FormGroup({ + orsaker: new FormControl([], [requiredOrsakerValidator()]), + andraKandaOrsaker: new FormControl([], [requiredAnnanKandOrsakValidator()]), + }), + fragorFormGroup: new FormGroup({ + fraga1: new FormControl('', [requiredFraga1Validator()]), + fraga2: new FormControl('', [requiredfraga2Validator()]), + }), + timepickerFormGroup: new FormGroup({ + startTime: new FormControl('', [requiredStartTimeValidator()]), + endTime: new FormControl('', [requiredEndTimeValidator()]), + }), + }, + { + validators: [RequiredDateValidator.CheckIfRequired()], + } + ); totalAmountOfSteps = 2; currentStep = 1; openConfirmDialog = false; - showSuccessNotification$ = this._showSuccessNotification$.asObservable(); - showDangerNotification$ = this._showDangerNotification$.asObservable(); + private _submittedDate$ = new BehaviorSubject(null); + submittedDate$: Observable = this._submittedDate$.asObservable(); + private _error$ = new BehaviorSubject(null); + error$: Observable = this._error$.asObservable(); + private _showDangerNotification$ = new BehaviorSubject(false); constructor( private deltagareAvvikelseService: DeltagareAvvikelseService, private deltagareApiService: DeltagareApiService, - private router: Router, private activatedRoute: ActivatedRoute - ) { } - - ngOnInit(): void { - this.avrop$ = this.activatedRoute.params - .pipe( - switchMap(({ genomforandeReferens }) => this.deltagareApiService.fetchAvropInformation$(genomforandeReferens)) - ) - - this.avvikelseFormGroup = new FormGroup( - { - alternative: new FormControl(null, [RequiredValidator()]), - description: new FormControl('', [requiredDescriptionValidator()]), - date: new FormControl(this.todayDate), - dayOrPartOfDay: new FormControl(null, [requiredDayOrPartOfDayValidator()]), - orsakerFormGroup: new FormGroup({ - orsaker: new FormControl([], [requiredOrsakerValidator()]), - andraKandaOrsaker: new FormControl([], [requiredAnnanKandOrsakValidator()]), - }), - fragorFormGroup: new FormGroup({ - fraga1: new FormControl('', [requiredFraga1Validator()]), - fraga2: new FormControl('', [requiredfraga2Validator()]), - }), - timepickerFormGroup: new FormGroup({ - startTime: new FormControl('', [requiredStartTimeValidator()]), - endTime: new FormControl('', [requiredEndTimeValidator()]), - }), - }, - { - validators: [RequiredDateValidator.CheckIfRequired()], - } - ); - } + ) {} get alternativeFormControl(): AbstractControl | undefined { return this.avvikelseFormGroup?.get(this.alternativeFormControlName); @@ -152,16 +154,16 @@ export class DeltagareAvvikelseComponent implements OnInit { get franvaro(): FranvaroAlternativ { return { - avvikelseorsakskod: this.orsakerFormControl.value as string, + avvikelseOrsaksKod: this.orsakerFormControl.value as string, datum: this.dateFormControl.value as string, - heldag: this.dayOrPartOfDayFormControl.value === DayOrPartOfDay.HELDAG ? true : false, - starttid: (this.startTimeFormControl.value as string) || '9:00', - sluttid: (this.endTimeFormControl.value as string) || '16:00', - forvantad_narvaro: { - starttid: '', - sluttid: '', + heldag: this.dayOrPartOfDayFormControl.value === DayOrPartOfDay.HELDAG, + startTid: (this.startTimeFormControl.value as string) || '9:00', + slutTid: (this.endTimeFormControl.value as string) || '16:00', + forvantadNarvaro: { + startTid: '', + slutTid: '', }, - alternativ_for_kanda_orsaker: { + alternativForKandaOrsaker: { typ: (this.andraKandaOrsakerFormControl.value as string) || '', motivering: this.descriptionFormControl.value as string, }, @@ -190,7 +192,7 @@ export class DeltagareAvvikelseComponent implements OnInit { get showDescription(): boolean { return ( - (this.alternativeFormControl.value as string) == ReportType.FRANVARO && + (this.alternativeFormControl.value as string) === ReportType.FRANVARO && +this.orsakerFormControl.value === FranvaroOrsaksKodEnum.AnnanKandOrsak && +this.andraKandaOrsakerFormControl.value === KandaOrsakerEnum.AnnanOrsak ); @@ -222,8 +224,6 @@ export class DeltagareAvvikelseComponent implements OnInit { } get nextStep(): number { - console.log(this.avvikelseFormGroup); - this.avvikelseFormGroup.markAllAsTouched(); if (this.avvikelseFormGroup.valid && this.currentStep < this.totalAmountOfSteps) { return this.currentStep++; @@ -234,41 +234,72 @@ export class DeltagareAvvikelseComponent implements OnInit { this.openConfirmDialog = false; if (confirm === ConfirmDialog.ACCEPTED) { const postAvvikelse: Avvikelse = { - datum_for_rapportering: this.todayDate, - sokandeId: +this.activatedRoute.snapshot.params['genomforandeReferens'], + genomforandeReferens: +this.activatedRoute.snapshot.params['genomforandeReferens'], }; if ((this.alternativeFormControl.value as string) === ReportType.AVVIKELSE) { - postAvvikelse['avvikelsealternativ'] = this.avvikelse; - } else if ((this.alternativeFormControl.value as string) == ReportType.FRANVARO) { - postAvvikelse['franvaro'] = this.franvaro; + this.postAvvikelse(); + } else if ((this.alternativeFormControl.value as string) === ReportType.FRANVARO) { + this.postFranvaro(); } - - this.deltagareAvvikelseService - .createAvvikelse$(postAvvikelse, this.alternativeFormControl.value as string) - .subscribe({ - error: () => this._showDangerNotification$.next(true), - next: () => this._showSuccessNotification$.next(true), - complete: () => this.avvikelseFormGroup.reset(), - }); } } + get genomforandeReferensSnapshot() { + return +this.activatedRoute.snapshot.params['genomforandeReferens']; + } + + postAvvikelse() { + const avvikelseData: Avvikelse = { + genomforandeReferens: this.genomforandeReferensSnapshot, + avvikelseAlternativ: this.avvikelse, + }; + + this.deltagareAvvikelseService + .createAvvikelse$(avvikelseData) + .then(() => { + this._submittedDate$.next(new Date()); + this.avvikelseFormGroup.reset(); + this.currentStep = 3; + }) + .catch((error: Error) => { + this._error$.next(new CustomError({ error, message: error.message, type: ErrorType.API })); + }); + } + + postFranvaro() { + const avvikelseData: Avvikelse = { + genomforandeReferens: this.genomforandeReferensSnapshot, + franvaro: this.franvaro, + }; + + this.deltagareAvvikelseService + .createFranvaro$(avvikelseData) + .then(() => { + this._submittedDate$.next(new Date()); + this.avvikelseFormGroup.reset(); + this.currentStep = 3; + }) + .catch((error: Error) => { + this._error$.next(new CustomError({ error, message: error.message, type: ErrorType.API })); + }); + } + setAlternative(): void { if ((this.alternativeFormControl.value as string) == ReportType.FRANVARO) { - this.franvaroOrsaker$ = this.deltagareAvvikelseService.getOrsaksKoderFranvaro$(); - this.andraKandaOrsaker$ = this.deltagareAvvikelseService.getAndraKandaOrsaker$(); + this.franvaroOrsaker$ = this.deltagareAvvikelseService.getOrsaksKoderFranvaro$.pipe(shareReplay(1)); + this.andraKandaOrsaker$ = this.deltagareAvvikelseService.getAndraKandaOrsaker$.pipe(shareReplay(1)); } if ((this.alternativeFormControl.value as string) == ReportType.AVVIKELSE) { - this.avvikelseOrsaker$ = this.deltagareAvvikelseService.getOrsaksKoderAvvikelse$(); - this.fragor1$ = this.deltagareAvvikelseService.getFragorForAvvikelser$().pipe( + this.avvikelseOrsaker$ = this.deltagareAvvikelseService.getOrsaksKoderAvvikelse$.pipe(shareReplay(1)); + this.fragor1$ = this.deltagareAvvikelseService.fragorForAvvikelser$.pipe( map((fragor: FragorForAvvikelser[]) => { return fragor.filter((fraga: FragorForAvvikelser) => fraga.id.includes('_1')); }) ); - this.fragor2$ = this.deltagareAvvikelseService.getFragorForAvvikelser$().pipe( + this.fragor2$ = this.deltagareAvvikelseService.fragorForAvvikelser$.pipe( map((fragor: FragorForAvvikelser[]) => { return fragor.filter((fraga: FragorForAvvikelser) => { return fraga.id.includes('_2'); @@ -314,17 +345,11 @@ export class DeltagareAvvikelseComponent implements OnInit { previousStep(): void { if (this.currentStep > 1) { this.currentStep--; - this._showSuccessNotification$.next(false); + this._submittedDate$.next(null); this._showDangerNotification$.next(false); } } - backToDeltagare(): void { - this.router - .navigate(['./deltagare', this.activatedRoute.snapshot.params['genomforandeReferens']]) - .catch(error => console.log(error, 'Failed to go back to deltagare')); - } - private clearControlOnAlternativeChange(): void { this.descriptionFormControl.setValue(''); this.fraga1FormControl.setValue(''); diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.module.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.module.ts index 2aa4eb6..563c93f 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.module.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.module.ts @@ -15,6 +15,8 @@ import { DeltagareOrsaksFormModule } from './components/deltagare-orsaks-form/de import { DeltagareTimePickerModule } from './components/deltagare-time-picker/deltagare-time-picker.module'; import { DeltagareAvvikelseComponent } from './deltagare-avvikelse.component'; import { DeltagareAvvikelseService } from './deltagare-avvikelse.service'; +import { BackLinkModule } from '@msfa-shared/components/back-link/back-link.module'; +import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; @NgModule({ schemas: [CUSTOM_ELEMENTS_SCHEMA], @@ -34,6 +36,8 @@ import { DeltagareAvvikelseService } from './deltagare-avvikelse.service'; DeltagareConfirmFormModule, ReportLayoutModule, ConfirmDialogModule, + BackLinkModule, + DigiNgSkeletonBaseModule, ], providers: [DeltagareAvvikelseService], exports: [DeltagareAvvikelseComponent], diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.service.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.service.ts index d00967d..840b6b0 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.service.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/deltagare-avvikelse/deltagare-avvikelse.service.ts @@ -6,39 +6,42 @@ import { OrsaksKoderAvvikelse } from '@msfa-models/orsaks-koder-avvikelse.model' import { KandaAvvikelseKoder, OrsaksKoderFranvaro } from '@msfa-models/orsaks-koder-franvaro.model'; import { AvvikelseApiService } from '@msfa-services/api/avvikelse-api.service'; import { Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; +import { map, shareReplay } from 'rxjs/operators'; +import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; @Injectable() export class DeltagareAvvikelseService { - constructor(private avvikelseApiService: AvvikelseApiService) {} + public fragorForAvvikelser$: Observable< + FragorForAvvikelser[] + > = this.avvikelseApiService.getFragorForAvvikelser$().pipe(shareReplay(1)); + public getOrsaksKoderFranvaro$: Observable< + OrsaksKoderFranvaro[] + > = this.avvikelseApiService.getOrsaksKoderFranvaro$().pipe( + map((orsaksKoder: OrsaksKoderFranvaro[]) => { + orsaksKoder.find(kod => { + if (kod.value === FranvaroOrsaksKodEnum.VAB) { + kod.name = 'Vård av barn'; + } + }); + return this.sortOrsaksKoder(orsaksKoder); + }), + shareReplay(1) + ); - public getOrsaksKoderFranvaro$(): Observable { - return this.avvikelseApiService.getOrsaksKoderFranvaro$().pipe( - map((orsaksKoder: OrsaksKoderFranvaro[]) => { - orsaksKoder.find(kod => { - if (kod.value === FranvaroOrsaksKodEnum.VAB) { - kod.name = 'Vård av barn'; - } - }); - return this.sortOrsaksKoder(orsaksKoder); - }) - ); + constructor(private avvikelseApiService: AvvikelseApiService, private deltagareApiService: DeltagareApiService) {} + + public getOrsaksKoderAvvikelse$: Observable< + OrsaksKoderAvvikelse[] + > = this.avvikelseApiService.getOrsaksKoderAvvikelse$(); + + public getAndraKandaOrsaker$: Observable = this.avvikelseApiService.getAndraKandaOrsaker$(); + + public createAvvikelse$(avvikelse: Avvikelse): Promise { + return this.avvikelseApiService.createAvvikelse$(avvikelse); } - public getOrsaksKoderAvvikelse$(): Observable { - return this.avvikelseApiService.getOrsaksKoderAvvikelse$(); - } - - public getAndraKandaOrsaker$(): Observable { - return this.avvikelseApiService.getAndraKandaOrsaker$(); - } - - public getFragorForAvvikelser$(): Observable { - return this.avvikelseApiService.getFragorForAvvikelser$(); - } - - public createAvvikelse$(avvikelse: Avvikelse, alternative: string): Observable { - return this.avvikelseApiService.createAvvikelse$(avvikelse, alternative); + public createFranvaro$(avvikelse: Avvikelse): Promise { + return this.avvikelseApiService.createFranvaro$(avvikelse); } private sortOrsaksKoder(orsaksKoder: OrsaksKoderFranvaro[]): OrsaksKoderFranvaro[] { @@ -66,4 +69,8 @@ export class DeltagareAvvikelseService { const sortedOrsaksKoder = orsaksKoder.sort((kodA, kodB) => (kodA.index < kodB.index ? -1 : 1)); return sortedOrsaksKoder; } + + fetchAvropInformation$(genomforandeReferens: number) { + return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); + } } 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 1e80bd9..a847beb 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 @@ -2,30 +2,27 @@ import { AvvikelseAlternativ } from './avvikelse-alternativ.model'; import { FranvaroAlternativ } from './franvaro-alternativ.model'; export interface Avvikelse { - datum_for_rapportering: string, - sokandeId: number; - avvikelsealternativ?: AvvikelseAlternativ, - franvaro?: FranvaroAlternativ + genomforandeReferens: number; + avvikelseAlternativ?: AvvikelseAlternativ; + franvaro?: FranvaroAlternativ; } export interface AvvikelseRequestData { - datum_for_rapportering: string, - sokandeId: number; - avvikelsealternativ: AvvikelseAlternativ, + genomforandeReferens: number; + avvikelseAlternativ: AvvikelseAlternativ; } export interface FranvaroRequestData { - datum_for_rapportering: string, - sokandeId: number; - franvaro: FranvaroAlternativ + genomforandeReferens: number; + franvaro: FranvaroAlternativ; } export function mapAvvikelseRequestDataToAvvikelse(data: AvvikelseRequestData): Avvikelse { - const { datum_for_rapportering, sokandeId, avvikelsealternativ } = data; - - return { - datum_for_rapportering, - sokandeId, - avvikelsealternativ - } + return data; + // const { genomforandeReferens, avvikelseAlternativ } = data; + // + // return { + // genomforandeReferens, + // avvikelseAlternativ, + // }; } diff --git a/apps/mina-sidor-fa/src/app/shared/models/franvaro-alternativ.model.ts b/apps/mina-sidor-fa/src/app/shared/models/franvaro-alternativ.model.ts index 7410e0b..a921fb0 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/franvaro-alternativ.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/franvaro-alternativ.model.ts @@ -1,15 +1,15 @@ export interface FranvaroAlternativ { - avvikelseorsakskod: string; + avvikelseOrsaksKod: string; datum: string; heldag: boolean; - starttid: string; - sluttid: string; - forvantad_narvaro: { - starttid: string; - sluttid: string; - }, - alternativ_for_kanda_orsaker: { - typ: string, + startTid: string; + slutTid: string; + forvantadNarvaro: { + startTid: string; + slutTid: string; + }; + alternativForKandaOrsaker: { + typ: string; motivering: string; - } + }; } 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 a4bae46..382dd59 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 @@ -1,12 +1,10 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { ReportType } from '@msfa-enums/report-type.enum'; -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, AvvikelseRequestData, mapAvvikelseRequestDataToAvvikelse } from '@msfa-models/avvikelse.model'; +import { Avvikelse } from '@msfa-models/avvikelse.model'; import { FragorForAvvikelser, mapResponseToFragorForAvvikelser } from '@msfa-models/fragor-for-avvikelser.model'; import { mapResponseToOrsaksKoderAvvikelse, OrsaksKoderAvvikelse } from '@msfa-models/orsaks-koder-avvikelse.model'; import { @@ -15,15 +13,16 @@ import { mapResponseToOrsaksKoderFranvaro, OrsaksKoderFranvaro, } from '@msfa-models/orsaks-koder-franvaro.model'; -import { ErrorService } from '@msfa-services/error.service'; -import { Observable, throwError } from 'rxjs'; -import { catchError, filter, map, take } from 'rxjs/operators'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; @Injectable({ providedIn: 'root', }) export class AvvikelseApiService { - private _apiBaseUrl = `${environment.api.url}/report`; + private _apiBaseUrl = `${environment.api.url}/rapporter`; + + constructor(private httpClient: HttpClient) {} public getOrsaksKoderFranvaro$(): Observable { return this.httpClient @@ -57,32 +56,11 @@ export class AvvikelseApiService { ); } - public createAvvikelse$(avvikelse: Avvikelse, alternative: string): Observable { - return this.httpClient - .post<{ data: AvvikelseRequestData }>(`${this._apiBaseUrl}/${this.setEndPoint(alternative)}`, avvikelse) - .pipe( - filter(response => !!response?.data), - take(1), - map(({ data }) => mapAvvikelseRequestDataToAvvikelse(data)), - catchError(error => throwError({ message: error as string, type: ErrorType.API })) - ); + public createAvvikelse$(avvikelse: Avvikelse): Promise { + return this.httpClient.post(`${this._apiBaseUrl}/avvikelse`, avvikelse).toPromise(); } - private setEndPoint(alternative: string): string { - let endpoint = ''; - - switch (alternative) { - case ReportType.AVVIKELSE: - endpoint = 'avvikelse'; - break; - case ReportType.FRANVARO: - endpoint = 'franvaro'; - break; - default: - break; - } - return endpoint; + public createFranvaro$(avvikelse: Avvikelse): Promise { + return this.httpClient.post(`${this._apiBaseUrl}/franvaro`, avvikelse).toPromise(); } - - constructor(private httpClient: HttpClient, private errorService: ErrorService) {} } diff --git a/config/proxy.conf.json b/config/proxy.conf.json index a7d9746..4b6b641 100644 --- a/config/proxy.conf.json +++ b/config/proxy.conf.json @@ -8,6 +8,8 @@ "target": "https://298b3305d4834aa4869f8250a0d0b314.ece-test.arbetsformedlingen.se:9243", "secure": false, "changeOrigin": true, - "pathRewrite": { "^/logging": "" } + "pathRewrite": { + "^/logging": "" + } } }