Merge pull request #258 in TEA/mina-sidor-fa-web from bugfix/TV-889-avrop-model to develop

Squashed commit of the following:

commit 8e98b79d711a708eec7908417506d8f707d023b4
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Fri Nov 12 10:16:54 2021 +0100

    Added personnummer to deltagare avrop

commit 6ac1849fa61b65346084c2304339a628844a7617
Merge: 095585ff 0cf61c0b
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Fri Nov 12 09:52:10 2021 +0100

    Merged develop and fixed conflicts

commit 095585ffa78b25f5d5ddd6987dcd3702c78bb494
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Thu Nov 11 09:07:46 2021 +0100

    Updated avrop model for nya deltagare
This commit is contained in:
Erik Tiekstra
2021-11-12 10:17:27 +01:00
parent 0cf61c0b44
commit 8682ca963a
42 changed files with 287 additions and 201 deletions

View File

@@ -10,48 +10,53 @@
(change)="emitToggle($event.target.checked)" (change)="emitToggle($event.target.checked)"
></digi-form-checkbox> ></digi-form-checkbox>
</div> </div>
<dl class="avrop-row__name"> <dl class="avrop-row__description-list">
<dt class="avrop-table__label">Namn:</dt> <div class="avrop-row__name">
<dd *ngIf="avrop.fullName; else emptyText">{{avrop.fullName}}</dd> <dt>Namn:</dt>
</dl> <dd><ng-container *ngIf="avrop.fullName; else emptyText">{{avrop.fullName}}</ng-container></dd>
<dl class="avrop-row__tjanst"> </div>
<dt class="avrop-table__label">Tjänst:</dt> <div class="avrop-row__tjanst">
<dd *ngIf="avrop.tjanst; else emptyText">{{avrop.tjanst}}</dd> <dt>Tjänst:</dt>
</dl> <dd><ng-container *ngIf="avrop.tjanst; else emptyText">{{avrop.tjanst}}</ng-container></dd>
<dl class="avrop-row__start"> </div>
<dt class="avrop-table__label">Startdatum:</dt> <div class="avrop-row__start">
<dd> <dt>Startdatum:</dt>
<digi-typography-time <dd>
*ngIf="avrop.startDate; else emptyText" <digi-typography-time
[afDateTime]="avrop.startDate" *ngIf="avrop.startDate; else emptyText"
></digi-typography-time> [afDateTime]="avrop.startDate"
</dd> ></digi-typography-time>
</dl> </dd>
<dl class="avrop-row__end"> </div>
<dt class="avrop-table__label">Slutdatum:</dt> <div class="avrop-row__end">
<dd> <dt>Slutdatum:</dt>
<digi-typography-time *ngIf="avrop.endDate; else emptyText" [afDateTime]="avrop.endDate"></digi-typography-time> <dd>
</dd> <digi-typography-time
</dl> *ngIf="avrop.endDate; else emptyText"
<dl class="avrop-row__translator"> [afDateTime]="avrop.endDate"
<dt class="avrop-table__label">Språkstöd/Tolk:</dt> ></digi-typography-time>
<dd>{{avrop.sprakstod || '- '}}/{{avrop.tolkbehov || ' -'}}</dd> </dd>
</dl> </div>
<dl class="avrop-row__address"> <div class="avrop-row__translator">
<dt class="avrop-table__label">Utförande adress:</dt> <dt>Språkstöd/Tolk:</dt>
<dd *ngIf="avrop.utforandeAdress; else emptyText">{{avrop.utforandeAdress + ', ' + avrop.kommun}}</dd> <dd>{{avrop.sprakstod || '- '}}/{{avrop.tolkbehov || ' -'}}</dd>
</dl> </div>
<dl class="avrop-row__level"> <div class="avrop-row__address">
<dt class="avrop-table__label">Spår/nivå:</dt> <dt>Utförande adress:</dt>
<dd *ngIf="avrop.trackCode; else emptyText">{{avrop.trackName}}</dd> <dd *ngIf="avrop.utforandeAdress; else emptyText">{{avrop.utforandeAdress + ', ' + avrop.kommun}}</dd>
</dl> </div>
<dl> <div class="avrop-row__level">
<dt class="avrop-table__label">Genomförandereferens:</dt> <dt>Spår/nivå:</dt>
<dd *ngIf="avrop.genomforandeReferens; else emptyText">{{avrop.genomforandeReferens}}</dd> <dd *ngIf="avrop.trackName; else emptyText">{{avrop.trackName}}</dd>
</dl> </div>
<dl class="avrop-row__handledare" *ngIf="isLocked"> <div class="avrop-row__genomforandereferens">
<dt class="avrop-table__label">Vald handledare:</dt> <dt>Genomförandereferens:</dt>
<dd *ngIf="handledare?.fullName; else emptyText">{{handledare?.fullName}}</dd> <dd *ngIf="avrop.genomforandeReferens; else emptyText">{{avrop.genomforandeReferens}}</dd>
</div>
<div class="avrop-row__handledare" *ngIf="isLocked">
<dt>Vald handledare:</dt>
<dd *ngIf="handledare?.fullName; else emptyText">{{handledare?.fullName}}</dd>
</div>
</dl> </dl>
<div *ngIf="isLocked" class="avrop-row__delete"> <div *ngIf="isLocked" class="avrop-row__delete">
<digi-button <digi-button

View File

@@ -9,20 +9,22 @@
gap: var(--digi--layout--gutter) $digi--layout--gutter--l; gap: var(--digi--layout--gutter) $digi--layout--gutter--l;
grid-template-areas: grid-template-areas:
'select name start translator level' 'select name start translator level'
'select tjanst end address handledare'; 'select genomforandereferens tjanst end address';
&--locked { &--locked {
grid-template-columns: repeat(4, 1fr) 7.5rem; grid-template-columns: repeat(4, 1fr) 7.5rem;
grid-template-areas: grid-template-areas:
'name start translator level delete' 'name start translator level delete'
'tjanst end address handledare delete'; 'genomforandereferens tjanst end address handledare';
}
&__description-list {
display: contents;
} }
&__select { &__select {
grid-area: select; grid-area: select;
margin-right: var(--digi--layout--gutter);
display: flex; display: flex;
justify-content: center;
align-items: center; align-items: center;
} }
@@ -50,6 +52,9 @@
&__handledare { &__handledare {
grid-area: handledare; grid-area: handledare;
} }
&__genomforandereferens {
grid-area: genomforandereferens;
}
&__delete { &__delete {
grid-area: delete; grid-area: delete;
display: flex; display: flex;

View File

@@ -1,5 +1,5 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
@Component({ @Component({
selector: 'msfa-report-description-list', selector: 'msfa-report-description-list',
@@ -8,5 +8,5 @@ import { Avrop } from '@msfa-models/avrop.model';
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
}) })
export class ReportDescriptionListComponent { export class ReportDescriptionListComponent {
@Input() avrop: Avrop; @Input() avrop: DeltagareAvrop;
} }

View File

@@ -1,5 +1,5 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
@Component({ @Component({
selector: 'msfa-report-layout', selector: 'msfa-report-layout',
@@ -13,6 +13,6 @@ export class ReportLayoutComponent {
@Input() description: string; @Input() description: string;
@Input() startDate: string; @Input() startDate: string;
@Input() endDate: string; @Input() endDate: string;
@Input() avrop: Avrop; @Input() avrop: DeltagareAvrop;
@Input() showAvropDetails = true; @Input() showAvropDetails = true;
} }

View File

@@ -1,5 +1,5 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { ContactInformation } from '@msfa-models/contact-information.model'; import { ContactInformation } from '@msfa-models/contact-information.model';
import { Handledare } from '@msfa-models/handledare.model'; import { Handledare } from '@msfa-models/handledare.model';
import { Role } from '@msfa-models/role.model'; import { Role } from '@msfa-models/role.model';
@@ -18,7 +18,7 @@ export class DeltagareTabPersonalInformationComponent {
@Input() userRoles: Role[]; @Input() userRoles: Role[];
@Input() handledarePickerVisible: boolean; @Input() handledarePickerVisible: boolean;
avropInformation$: Observable<Avrop> = this.deltagareCardService.avropInformation$; avropInformation$: Observable<DeltagareAvrop> = this.deltagareCardService.avropInformation$;
contactInformation$: Observable<ContactInformation> = this.deltagareCardService.contactInformation$; contactInformation$: Observable<ContactInformation> = this.deltagareCardService.contactInformation$;
availableHandledare$: Observable<Handledare[]> = this.avropInformation$.pipe( availableHandledare$: Observable<Handledare[]> = this.avropInformation$.pipe(
distinctUntilChanged((prevAvrop, currAvrop) => prevAvrop.id === currAvrop.id), distinctUntilChanged((prevAvrop, currAvrop) => prevAvrop.id === currAvrop.id),

View File

@@ -1,6 +1,6 @@
import { ChangeDetectionStrategy, Component } from '@angular/core'; import { ChangeDetectionStrategy, Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { Disability } from '@msfa-models/disability.model'; import { Disability } from '@msfa-models/disability.model';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { combineLatest, Observable } from 'rxjs'; import { combineLatest, Observable } from 'rxjs';
@@ -17,7 +17,7 @@ export class DeltagareTabSensitiveInformationComponent {
genomforandereferens$: Observable<number> = this.activatedRoute.params.pipe( genomforandereferens$: Observable<number> = this.activatedRoute.params.pipe(
map(({ genomforandeReferens }) => +genomforandeReferens) map(({ genomforandeReferens }) => +genomforandeReferens)
); );
avropInformation$: Observable<Avrop> = this.deltagareCardService.avropInformation$; avropInformation$: Observable<DeltagareAvrop> = this.deltagareCardService.avropInformation$;
workLanguages$: Observable<string[]> = this.genomforandereferens$.pipe( workLanguages$: Observable<string[]> = this.genomforandereferens$.pipe(
switchMap(genomforandeReferens => switchMap(genomforandeReferens =>
genomforandeReferens ? this.deltagareApiService.fetchWorkLanguages$(genomforandeReferens) : null genomforandeReferens ? this.deltagareApiService.fetchWorkLanguages$(genomforandeReferens) : null

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { ContactInformation } from '@msfa-models/contact-information.model'; import { ContactInformation } from '@msfa-models/contact-information.model';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { HandledareService } from '@msfa-services/handledare.service'; import { HandledareService } from '@msfa-services/handledare.service';
@@ -30,7 +30,7 @@ export class DeltagareCardService {
shareReplay(1) shareReplay(1)
); );
avropInformation$: Observable<Avrop> = combineLatest([ avropInformation$: Observable<DeltagareAvrop> = combineLatest([
this.currentGenomforandeReferens$, this.currentGenomforandeReferens$,
this.avropNeedsUpdate$, this.avropNeedsUpdate$,
]).pipe( ]).pipe(

View File

@@ -3,7 +3,7 @@ import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/
import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { AvvikelseReportRequest, AvvikelseRequest } from '@msfa-models/api/avvikelse-request.model'; import { AvvikelseReportRequest, AvvikelseRequest } from '@msfa-models/api/avvikelse-request.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { AvvikelseQuestion } from '@msfa-models/avvikelse-question.model'; import { AvvikelseQuestion } from '@msfa-models/avvikelse-question.model';
import { AvvikelseReason } from '@msfa-models/avvikelse-reason.model'; import { AvvikelseReason } from '@msfa-models/avvikelse-reason.model';
import { CustomError } from '@msfa-models/error/custom-error'; import { CustomError } from '@msfa-models/error/custom-error';
@@ -46,7 +46,7 @@ export class AvvikelseReportFormComponent implements OnInit, OnDestroy {
genomforandeReferens$: Observable<number> = this.activatedRoute.params.pipe( genomforandeReferens$: Observable<number> = this.activatedRoute.params.pipe(
map((params: Params) => +params.genomforandeReferens) map((params: Params) => +params.genomforandeReferens)
); );
avrop$: Observable<Avrop> = this.genomforandeReferens$.pipe( avrop$: Observable<DeltagareAvrop> = this.genomforandeReferens$.pipe(
switchMap(genomforandeReferens => this.avvikelseReportFormService.fetchAvropInformation$(genomforandeReferens)), switchMap(genomforandeReferens => this.avvikelseReportFormService.fetchAvropInformation$(genomforandeReferens)),
shareReplay(1) shareReplay(1)
); );
@@ -143,11 +143,11 @@ export class AvvikelseReportFormComponent implements OnInit, OnDestroy {
return lastPossibleReportDay > new Date(); return lastPossibleReportDay > new Date();
} }
isAllowedToReport(avrop: Avrop): boolean { isAllowedToReport(avrop: DeltagareAvrop): boolean {
return this._isAfterStartDate(avrop.startDate) && this._isBeforeLastPossibleReportDay(avrop.endDate); return this._isAfterStartDate(avrop.startDate) && this._isBeforeLastPossibleReportDay(avrop.endDate);
} }
notAllowedToReportWarning(avrop: Avrop): string { notAllowedToReportWarning(avrop: DeltagareAvrop): string {
if (!this._isBeforeLastPossibleReportDay(avrop.endDate)) { if (!this._isBeforeLastPossibleReportDay(avrop.endDate)) {
return 'Det går inte att göra Avvikelserapport (avvikelse) eftersom tjänsten har avslutats.'; return 'Det går inte att göra Avvikelserapport (avvikelse) eftersom tjänsten har avslutats.';
} }

View File

@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { AvvikelseReportRequest } from '@msfa-models/api/avvikelse-request.model'; import { AvvikelseReportRequest } from '@msfa-models/api/avvikelse-request.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { AvvikelseQuestion } from '@msfa-models/avvikelse-question.model'; import { AvvikelseQuestion } from '@msfa-models/avvikelse-question.model';
import { AvvikelseReason, sortAvvikelseReasons } from '@msfa-models/avvikelse-reason.model'; import { AvvikelseReason, sortAvvikelseReasons } from '@msfa-models/avvikelse-reason.model';
import { AvvikelseApiService } from '@msfa-services/api/avvikelse-api.service'; import { AvvikelseApiService } from '@msfa-services/api/avvikelse-api.service';
@@ -14,10 +14,9 @@ export class AvvikelseReportFormService {
.fetchAvvikelseQuestions$() .fetchAvvikelseQuestions$()
.pipe(shareReplay(1)); .pipe(shareReplay(1));
fetchAvvikelseReasons$: Observable<AvvikelseReason[]> = this.avvikelseApiService.fetchAvvikelseReasons$() fetchAvvikelseReasons$: Observable<AvvikelseReason[]> = this.avvikelseApiService
.pipe( .fetchAvvikelseReasons$()
map(reasons => sortAvvikelseReasons(reasons)) .pipe(map(reasons => sortAvvikelseReasons(reasons)));
);
constructor(private avvikelseApiService: AvvikelseApiService, private deltagareApiService: DeltagareApiService) {} constructor(private avvikelseApiService: AvvikelseApiService, private deltagareApiService: DeltagareApiService) {}
@@ -25,7 +24,7 @@ export class AvvikelseReportFormService {
return this.avvikelseApiService.createAvvikelse$(avvikelse); return this.avvikelseApiService.createAvvikelse$(avvikelse);
} }
fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
} }
} }

View File

@@ -4,7 +4,7 @@ import { ActivatedRoute } from '@angular/router';
import { ANNAN_ORSAK_ID } from '@msfa-constants/franvaro-reasons'; import { ANNAN_ORSAK_ID } from '@msfa-constants/franvaro-reasons';
import { OrsaksKoderKanda } from '@msfa-enums/orsaks-koder-kanda.enum'; import { OrsaksKoderKanda } from '@msfa-enums/orsaks-koder-kanda.enum';
import { FranvaroReportRequest } from '@msfa-models/api/franvaro-request.model'; import { FranvaroReportRequest } from '@msfa-models/api/franvaro-request.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { CustomError } from '@msfa-models/error/custom-error'; import { CustomError } from '@msfa-models/error/custom-error';
import { FranvaroReason, setKnownReason, sortFranvaroReasons } from '@msfa-models/franvaro-reason.model'; import { FranvaroReason, setKnownReason, sortFranvaroReasons } from '@msfa-models/franvaro-reason.model';
import { Franvaro } from '@msfa-models/franvaro.model'; import { Franvaro } from '@msfa-models/franvaro.model';
@@ -45,15 +45,15 @@ export class FranvaroReportFormComponent {
currentGenomforandeReferens$: Observable<number> = this.activatedRoute.params.pipe( currentGenomforandeReferens$: Observable<number> = this.activatedRoute.params.pipe(
map(params => +params.genomforandeReferens) map(params => +params.genomforandeReferens)
); );
avrop$: Observable<Avrop> = this.currentGenomforandeReferens$.pipe( avrop$: Observable<DeltagareAvrop> = this.currentGenomforandeReferens$.pipe(
switchMap(genomforandeReferens => this.franvaroReportFormService.fetchAvropInformation$(genomforandeReferens)), switchMap(genomforandeReferens => this.franvaroReportFormService.fetchAvropInformation$(genomforandeReferens)),
shareReplay(1) shareReplay(1)
); );
reasons$: Observable<FranvaroReason[]> = this.franvaroReportFormService.reasons$; reasons$: Observable<FranvaroReason[]> = this.franvaroReportFormService.reasons$;
allReasons$: Observable<FranvaroReason[]> = combineLatest([this.reasons$, this.franvaroReportFormService.otherKnownReasons$]) allReasons$: Observable<FranvaroReason[]> = combineLatest([
.pipe( this.reasons$,
map(([reasons, otherKnownReasons]) => sortFranvaroReasons(reasons.concat(otherKnownReasons))) this.franvaroReportFormService.otherKnownReasons$,
) ]).pipe(map(([reasons, otherKnownReasons]) => sortFranvaroReasons(reasons.concat(otherKnownReasons))));
otherKnownReasons$: Observable<FranvaroReason[]> = this.franvaroReportFormService.otherKnownReasons$; otherKnownReasons$: Observable<FranvaroReason[]> = this.franvaroReportFormService.otherKnownReasons$;
wholeDayOrPartOfDayRadiobuttons: Radiobutton[] = [ wholeDayOrPartOfDayRadiobuttons: Radiobutton[] = [
@@ -123,11 +123,11 @@ export class FranvaroReportFormComponent {
return lastPossibleReportDay > new Date(); return lastPossibleReportDay > new Date();
} }
isAllowedToReport(avrop: Avrop): boolean { isAllowedToReport(avrop: DeltagareAvrop): boolean {
return this._isAfterStartDate(avrop.startDate) && this._isBeforeLastPossibleReportDay(avrop.endDate); return this._isAfterStartDate(avrop.startDate) && this._isBeforeLastPossibleReportDay(avrop.endDate);
} }
notAllowedToReportWarning(avrop: Avrop): string { notAllowedToReportWarning(avrop: DeltagareAvrop): string {
if (!this._isBeforeLastPossibleReportDay(avrop.endDate)) { if (!this._isBeforeLastPossibleReportDay(avrop.endDate)) {
return 'Det går inte att göra Avvikelserapport (frånvaro) eftersom tjänsten har avslutats.'; return 'Det går inte att göra Avvikelserapport (frånvaro) eftersom tjänsten har avslutats.';
} }
@@ -197,9 +197,9 @@ export class FranvaroReportFormComponent {
slutTid: this.showTimePickers ? endTime : '23:59', // BÄR doesn't accept empty string or null slutTid: this.showTimePickers ? endTime : '23:59', // BÄR doesn't accept empty string or null
alternativForKandaOrsaker: this.isOtherKnownReason alternativForKandaOrsaker: this.isOtherKnownReason
? { ? {
typ: reason, typ: reason,
motivering: this.showKnownReasonTextArea ? knownReasonComment : '', motivering: this.showKnownReasonTextArea ? knownReasonComment : '',
} }
: null, : null,
forvantadNarvaro: { forvantadNarvaro: {
startTid: expectedPresenceStartTime, startTid: expectedPresenceStartTime,

View File

@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { FranvaroReportRequest } from '@msfa-models/api/franvaro-request.model'; import { FranvaroReportRequest } from '@msfa-models/api/franvaro-request.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { FranvaroReason } from '@msfa-models/franvaro-reason.model'; import { FranvaroReason } from '@msfa-models/franvaro-reason.model';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { FranvaroReportApiService } from '@msfa-services/api/franvaro-report.api.service'; import { FranvaroReportApiService } from '@msfa-services/api/franvaro-report.api.service';
@@ -16,7 +16,7 @@ export class FranvaroReportFormService {
private deltagareApiService: DeltagareApiService private deltagareApiService: DeltagareApiService
) {} ) {}
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
} }

View File

@@ -3,7 +3,7 @@ import { ChangeDetectionStrategy, Component } from '@angular/core';
import { FormArray, FormControl, FormGroup } from '@angular/forms'; import { FormArray, FormControl, FormGroup } from '@angular/forms';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { Activity } from '@msfa-models/activity.model'; import { Activity } from '@msfa-models/activity.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { CustomError } from '@msfa-models/error/custom-error'; import { CustomError } from '@msfa-models/error/custom-error';
import { import {
GemensamPlanering, GemensamPlanering,
@@ -36,7 +36,7 @@ export class GemensamPlaneringFormComponent {
currentGenomforandeReferens$: Observable<number> = this.activatedRoute.params.pipe( currentGenomforandeReferens$: Observable<number> = this.activatedRoute.params.pipe(
map(params => +params.genomforandeReferens) map(params => +params.genomforandeReferens)
); );
avrop$: Observable<Avrop> = this.currentGenomforandeReferens$.pipe( avrop$: Observable<DeltagareAvrop> = this.currentGenomforandeReferens$.pipe(
switchMap(genomforandeReferens => this.gemensamPlaneringFormService.fetchAvropInformation$(genomforandeReferens)), switchMap(genomforandeReferens => this.gemensamPlaneringFormService.fetchAvropInformation$(genomforandeReferens)),
shareReplay(1) shareReplay(1)
); );
@@ -158,11 +158,11 @@ export class GemensamPlaneringFormComponent {
return lastPossibleReportDay > new Date(); return lastPossibleReportDay > new Date();
} }
isAllowedToReport(avrop: Avrop): boolean { isAllowedToReport(avrop: DeltagareAvrop): boolean {
return this._isAfterStartDate(avrop.startDate) && this._isBeforeLastPossibleReportDay(avrop.endDate); return this._isAfterStartDate(avrop.startDate) && this._isBeforeLastPossibleReportDay(avrop.endDate);
} }
notAllowedToReportWarning(avrop: Avrop): string { notAllowedToReportWarning(avrop: DeltagareAvrop): string {
if (!this._isBeforeLastPossibleReportDay(avrop.endDate)) { if (!this._isBeforeLastPossibleReportDay(avrop.endDate)) {
return 'Det går inte att göra Gemensam planering eftersom tjänsten har avslutats.'; return 'Det går inte att göra Gemensam planering eftersom tjänsten har avslutats.';
} }

View File

@@ -1,7 +1,7 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Activity } from '@msfa-models/activity.model'; import { Activity } from '@msfa-models/activity.model';
import { GemensamPlaneringPostRequest } from '@msfa-models/api/gemensam-planering.request.model'; import { GemensamPlaneringPostRequest } from '@msfa-models/api/gemensam-planering.request.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { GemensamPlaneringApiService } from '@msfa-services/api/gemensam-planering-api.service'; import { GemensamPlaneringApiService } from '@msfa-services/api/gemensam-planering-api.service';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
@@ -11,7 +11,7 @@ export class GemensamPlaneringFormService {
constructor(private gemensamPlaneringApiService: GemensamPlaneringApiService) {} constructor(private gemensamPlaneringApiService: GemensamPlaneringApiService) {}
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.gemensamPlaneringApiService.fetchAvropInformation$(genomforandeReferens); return this.gemensamPlaneringApiService.fetchAvropInformation$(genomforandeReferens);
} }

View File

@@ -4,7 +4,7 @@ import { FormControl, FormGroup } from '@angular/forms';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { InformativRapportCategory, InformativRapportCategoryKey } from '@msfa-enums/informativ-rapport-category.enum'; import { InformativRapportCategory, InformativRapportCategoryKey } from '@msfa-enums/informativ-rapport-category.enum';
import { InformativRapportRequest } from '@msfa-models/api/informativ-rapport.request.model'; import { InformativRapportRequest } from '@msfa-models/api/informativ-rapport.request.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { CustomError } from '@msfa-models/error/custom-error'; import { CustomError } from '@msfa-models/error/custom-error';
import { RequiredValidator } from '@msfa-utils/validators/required.validator'; import { RequiredValidator } from '@msfa-utils/validators/required.validator';
import { BehaviorSubject, combineLatest, Observable } from 'rxjs'; import { BehaviorSubject, combineLatest, Observable } from 'rxjs';
@@ -28,7 +28,7 @@ export class InformativRapportFormComponent {
genomforandeReferens$: Observable<number> = this.activatedRoute.params.pipe( genomforandeReferens$: Observable<number> = this.activatedRoute.params.pipe(
map(params => +params.genomforandeReferens) map(params => +params.genomforandeReferens)
); );
avrop$: Observable<Avrop> = this.genomforandeReferens$.pipe( avrop$: Observable<DeltagareAvrop> = this.genomforandeReferens$.pipe(
switchMap(genomforandeReferens => this.informativRapportFormService.fetchAvropInformation$(genomforandeReferens)), switchMap(genomforandeReferens => this.informativRapportFormService.fetchAvropInformation$(genomforandeReferens)),
shareReplay(1) shareReplay(1)
); );

View File

@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { InformativRapportRequest } from '@msfa-models/api/informativ-rapport.request.model'; import { InformativRapportRequest } from '@msfa-models/api/informativ-rapport.request.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { InformativRapportApiService } from '@msfa-services/api/informativ-rapport.api.service'; import { InformativRapportApiService } from '@msfa-services/api/informativ-rapport.api.service';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
@@ -16,7 +16,7 @@ export class InformativRapportFormService {
return this.informativRapportApiService.postInformativRapport$(requestData); return this.informativRapportApiService.postInformativRapport$(requestData);
} }
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
} }
} }

View File

@@ -9,7 +9,7 @@ import {
PeriodiskRedovisningRequest, PeriodiskRedovisningRequest,
} from '@msfa-models/api/periodisk-redovisning.request.model'; } from '@msfa-models/api/periodisk-redovisning.request.model';
import { AvropPeriod } from '@msfa-models/avrop-period.model'; import { AvropPeriod } from '@msfa-models/avrop-period.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { CustomError } from '@msfa-models/error/custom-error'; import { CustomError } from '@msfa-models/error/custom-error';
import { capitalizeWords } from '@msfa-utils/capitalize-words.util'; import { capitalizeWords } from '@msfa-utils/capitalize-words.util';
import { formatDate, formatToDate } from '@msfa-utils/format-to-date.util'; import { formatDate, formatToDate } from '@msfa-utils/format-to-date.util';
@@ -53,7 +53,7 @@ export class PeriodiskRedovisningFormComponent implements OnInit {
genomforandeReferens$: Observable<number> = this.activatedRoute.params.pipe( genomforandeReferens$: Observable<number> = this.activatedRoute.params.pipe(
map((params: Params) => +params.genomforandeReferens) map((params: Params) => +params.genomforandeReferens)
); );
avrop$: Observable<Avrop> = this.genomforandeReferens$.pipe( avrop$: Observable<DeltagareAvrop> = this.genomforandeReferens$.pipe(
switchMap(genomforandeReferens => switchMap(genomforandeReferens =>
this.periodiskRedovisningFormService.fetchAvropInformation$(genomforandeReferens) this.periodiskRedovisningFormService.fetchAvropInformation$(genomforandeReferens)
), ),

View File

@@ -1,12 +1,12 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Avrop } from '@msfa-models/avrop.model'; import { Activity, mapResponseToActivity } from '@msfa-models/activity.model';
import { PeriodiskRedovisningRequest } from '@msfa-models/api/periodisk-redovisning.request.model';
import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { GemensamPlaneringApiService } from '@msfa-services/api/gemensam-planering-api.service';
import { PeriodiskRedovisningApiService } from '@msfa-services/api/periodisk-redovisning.api.service'; import { PeriodiskRedovisningApiService } from '@msfa-services/api/periodisk-redovisning.api.service';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { PeriodiskRedovisningRequest } from '@msfa-models/api/periodisk-redovisning.request.model';
import { map } from 'rxjs/operators'; import { map } from 'rxjs/operators';
import { Activity, mapResponseToActivity } from '@msfa-models/activity.model';
import { GemensamPlaneringApiService } from '@msfa-services/api/gemensam-planering-api.service';
@Injectable() @Injectable()
export class PeriodiskRedovisningFormService { export class PeriodiskRedovisningFormService {
@@ -16,7 +16,7 @@ export class PeriodiskRedovisningFormService {
private gemensamPlaneringApiService: GemensamPlaneringApiService private gemensamPlaneringApiService: GemensamPlaneringApiService
) {} ) {}
fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
} }

View File

@@ -3,7 +3,7 @@ import { ChangeDetectionStrategy, Component } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms'; import { FormControl, FormGroup } from '@angular/forms';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { SignalRequest } from '@msfa-models/api/signal.request.model'; import { SignalRequest } from '@msfa-models/api/signal.request.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { CustomError } from '@msfa-models/error/custom-error'; import { CustomError } from '@msfa-models/error/custom-error';
import { Signal } from '@msfa-models/signal.model'; import { Signal } from '@msfa-models/signal.model';
import { formatDate } from '@msfa-utils/format-to-date.util'; import { formatDate } from '@msfa-utils/format-to-date.util';
@@ -39,7 +39,7 @@ export class SignalFormComponent {
currentGenomforandeReferens$: Observable<number> = this.activatedRoute.params.pipe( currentGenomforandeReferens$: Observable<number> = this.activatedRoute.params.pipe(
map(params => +params.genomforandeReferens) map(params => +params.genomforandeReferens)
); );
avrop$: Observable<Avrop> = this.currentGenomforandeReferens$.pipe( avrop$: Observable<DeltagareAvrop> = this.currentGenomforandeReferens$.pipe(
switchMap(genomforandeReferens => this.signalFormService.fetchAvropInformation$(genomforandeReferens)), switchMap(genomforandeReferens => this.signalFormService.fetchAvropInformation$(genomforandeReferens)),
shareReplay(1) shareReplay(1)
); );

View File

@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { SignalRequest } from '@msfa-models/api/signal.request.model'; import { SignalRequest } from '@msfa-models/api/signal.request.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { SignalApiService } from '@msfa-services/api/signal.api.service'; import { SignalApiService } from '@msfa-services/api/signal.api.service';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
@@ -13,7 +13,7 @@ export class SignalFormService {
return this.signalApiService.postSignal$(requestData); return this.signalApiService.postSignal$(requestData);
} }
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
} }
} }

View File

@@ -1,13 +1,13 @@
import { Component, EventEmitter, Input, Output } from '@angular/core'; import { Component, EventEmitter, Input, Output } from '@angular/core';
import { slutredovisningFormDataToSlutredovisningRequest } from '../utils/form-data-to-slutredovisning.util';
import { CustomError } from '@msfa-models/error/custom-error';
import { BehaviorSubject } from 'rxjs';
import { SlutredovisningFormService } from '../slutredovisning-form.service';
import { SlutredovisningResponseMainOccupationDetails } from '@msfa-models/api/slutredovisning.response.model'; import { SlutredovisningResponseMainOccupationDetails } from '@msfa-models/api/slutredovisning.response.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { map } from 'rxjs/operators'; import { CustomError } from '@msfa-models/error/custom-error';
import { MainOccupation, Slutredovisning } from '@msfa-models/slutredovisning.model'; import { MainOccupation, Slutredovisning } from '@msfa-models/slutredovisning.model';
import { BehaviorSubject } from 'rxjs';
import { map } from 'rxjs/operators';
import { SlutredovisningFormData } from '../models/slutredovisning-form-data.model'; import { SlutredovisningFormData } from '../models/slutredovisning-form-data.model';
import { SlutredovisningFormService } from '../slutredovisning-form.service';
import { slutredovisningFormDataToSlutredovisningRequest } from '../utils/form-data-to-slutredovisning.util';
@Component({ @Component({
selector: 'msfa-slutredovisning-form-step3', selector: 'msfa-slutredovisning-form-step3',
@@ -17,7 +17,7 @@ import { SlutredovisningFormData } from '../models/slutredovisning-form-data.mod
export class SlutredovisningFormStep3Component { export class SlutredovisningFormStep3Component {
@Output() backClick = new EventEmitter<void>(); @Output() backClick = new EventEmitter<void>();
@Input() slutredovisningFormData: SlutredovisningFormData; @Input() slutredovisningFormData: SlutredovisningFormData;
@Input() avrop: Avrop; @Input() avrop: DeltagareAvrop;
submitIsLoading$ = new BehaviorSubject<boolean>(false); submitIsLoading$ = new BehaviorSubject<boolean>(false);
submitError$ = new BehaviorSubject<CustomError>(null); submitError$ = new BehaviorSubject<CustomError>(null);

View File

@@ -1,17 +1,17 @@
import { ChangeDetectionStrategy, Component, OnDestroy } from '@angular/core'; import { ChangeDetectionStrategy, Component, OnDestroy } from '@angular/core';
import { AbstractControl, FormGroup } from '@angular/forms'; import { AbstractControl, FormGroup } from '@angular/forms';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { addDays } from 'date-fns';
import { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs'; import { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs';
import { map, shareReplay, switchMap } from 'rxjs/operators'; import { map, shareReplay, switchMap } from 'rxjs/operators';
import { SlutredovisningFormService } from './slutredovisning-form.service'; import { SlutredovisningFormData } from './models/slutredovisning-form-data.model';
import { addDays } from 'date-fns';
import { SlutredovisningStep } from './slutredovisning-form.model';
import { SlutredovisningStep0FormData } from './slutredovisning-form-step0/slutredovisning-form-step0.component'; import { SlutredovisningStep0FormData } from './slutredovisning-form-step0/slutredovisning-form-step0.component';
import { SlutredovisningStep1FormData } from './slutredovisning-form-step1/slutredovisning-form-step1.component'; import { SlutredovisningStep1FormData } from './slutredovisning-form-step1/slutredovisning-form-step1.component';
import { SlutredovisningStep2FormData } from './slutredovisning-form-step2/slutredovisning-form-step2.component'; import { SlutredovisningStep2FormData } from './slutredovisning-form-step2/slutredovisning-form-step2.component';
import { SlutredovisningStep } from './slutredovisning-form.model';
import { SlutredovisningFormService } from './slutredovisning-form.service';
import { formsToSlutredovisningFormData } from './utils/form-data-to-slutredovisning.util'; import { formsToSlutredovisningFormData } from './utils/form-data-to-slutredovisning.util';
import { SlutredovisningFormData } from './models/slutredovisning-form-data.model';
interface Params { interface Params {
genomforandeReferens: string; genomforandeReferens: string;
@@ -54,7 +54,7 @@ export class SlutredovisningFormComponent implements OnDestroy {
) )
); );
avrop$: Observable<Avrop> = this.genomforandeReferens$.pipe( avrop$: Observable<DeltagareAvrop> = this.genomforandeReferens$.pipe(
switchMap(genomforandeReferens => this.slutredovisningFormService.fetchAvropInformation$(genomforandeReferens)), switchMap(genomforandeReferens => this.slutredovisningFormService.fetchAvropInformation$(genomforandeReferens)),
shareReplay(1) shareReplay(1)
); );
@@ -80,11 +80,11 @@ export class SlutredovisningFormComponent implements OnDestroy {
return lastPossibleReportDay > new Date(); return lastPossibleReportDay > new Date();
} }
isAllowedToReport(avrop: Avrop): boolean { isAllowedToReport(avrop: DeltagareAvrop): boolean {
return this._isAfterStartDate(avrop.startDate) && this._isBeforeLastPossibleReportDay(avrop.endDate); return this._isAfterStartDate(avrop.startDate) && this._isBeforeLastPossibleReportDay(avrop.endDate);
} }
notAllowedToReportWarning(avrop: Avrop): string { notAllowedToReportWarning(avrop: DeltagareAvrop): string {
if (!this._isBeforeLastPossibleReportDay(avrop.endDate)) { if (!this._isBeforeLastPossibleReportDay(avrop.endDate)) {
return 'Det går inte att göra Slutredovisning eftersom tjänsten har avslutats.'; return 'Det går inte att göra Slutredovisning eftersom tjänsten har avslutats.';
} }

View File

@@ -1,6 +1,7 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Activity, mapResponseToActivity } from '@msfa-models/activity.model'; import { Activity, mapResponseToActivity } from '@msfa-models/activity.model';
import { Avrop } from '@msfa-models/avrop.model'; import { SlutredovisningRequest } from '@msfa-models/api/slutredovisning.request.model';
import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { mapResponseToYrkesomrade, Yrkesomrade, yrkeToTextMap } from '@msfa-models/yrkesomrade.model'; import { mapResponseToYrkesomrade, Yrkesomrade, yrkeToTextMap } from '@msfa-models/yrkesomrade.model';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { GemensamPlaneringApiService } from '@msfa-services/api/gemensam-planering-api.service'; import { GemensamPlaneringApiService } from '@msfa-services/api/gemensam-planering-api.service';
@@ -9,9 +10,8 @@ import { BehaviorSubject, Observable } from 'rxjs';
import { map, shareReplay } from 'rxjs/operators'; import { map, shareReplay } from 'rxjs/operators';
import { SlutredovisningStep0FormData } from './slutredovisning-form-step0/slutredovisning-form-step0.component'; import { SlutredovisningStep0FormData } from './slutredovisning-form-step0/slutredovisning-form-step0.component';
import { SlutredovisningStep1FormData } from './slutredovisning-form-step1/slutredovisning-form-step1.component'; import { SlutredovisningStep1FormData } from './slutredovisning-form-step1/slutredovisning-form-step1.component';
import { SlutredovisningStep } from './slutredovisning-form.model';
import { SlutredovisningStep2FormData } from './slutredovisning-form-step2/slutredovisning-form-step2.component'; import { SlutredovisningStep2FormData } from './slutredovisning-form-step2/slutredovisning-form-step2.component';
import { SlutredovisningRequest } from '@msfa-models/api/slutredovisning.request.model'; import { SlutredovisningStep } from './slutredovisning-form.model';
@Injectable() @Injectable()
export class SlutredovisningFormService { export class SlutredovisningFormService {
@@ -49,7 +49,7 @@ export class SlutredovisningFormService {
return this.slutredovisningApiService.submitSlutredovisning$(slutredovisning); return this.slutredovisningApiService.submitSlutredovisning$(slutredovisning);
} }
fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
} }

View File

@@ -1,7 +1,7 @@
import { ChangeDetectionStrategy, Component } from '@angular/core'; import { ChangeDetectionStrategy, Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { Params } from '@msfa-models/api/params.model'; import { Params } from '@msfa-models/api/params.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { AvvikelseReport } from '@msfa-models/avvikelse.model'; import { AvvikelseReport } from '@msfa-models/avvikelse.model';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { map, shareReplay, switchMap } from 'rxjs/operators'; import { map, shareReplay, switchMap } from 'rxjs/operators';
@@ -20,7 +20,7 @@ export class AvvikelseReportViewComponent {
genomforandeReferens: params.genomforandeReferens as string, genomforandeReferens: params.genomforandeReferens as string,
})) }))
); );
avrop$: Observable<Avrop> = this.params$.pipe( avrop$: Observable<DeltagareAvrop> = this.params$.pipe(
switchMap(({ genomforandeReferens }) => switchMap(({ genomforandeReferens }) =>
this.avvikelseReportViewService.fetchAvropInformation$(+genomforandeReferens) this.avvikelseReportViewService.fetchAvropInformation$(+genomforandeReferens)
), ),

View File

@@ -1,13 +1,13 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } 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 { AvvikelseReport, mapResponseToAvvikelse } from '@msfa-models/avvikelse.model';
import { AvvikelseApiService } from '@msfa-services/api/avvikelse-api.service';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { HandlingarApiService } from '@msfa-services/api/handlingar.api.service'; import { HandlingarApiService } from '@msfa-services/api/handlingar.api.service';
import { combineLatest, Observable } from 'rxjs'; import { combineLatest, Observable } from 'rxjs';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { filter, map, switchMap } from 'rxjs/operators'; 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() @Injectable()
export class AvvikelseReportViewService { export class AvvikelseReportViewService {
@@ -20,7 +20,7 @@ export class AvvikelseReportViewService {
private avvikelseApiService: AvvikelseApiService private avvikelseApiService: AvvikelseApiService
) {} ) {}
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
} }

View File

@@ -1,7 +1,7 @@
import { ChangeDetectionStrategy, Component } from '@angular/core'; import { ChangeDetectionStrategy, Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { Params } from '@msfa-models/api/params.model'; import { Params } from '@msfa-models/api/params.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { FranvaroReport } from '@msfa-models/franvaro.model'; import { FranvaroReport } from '@msfa-models/franvaro.model';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { map, shareReplay, switchMap } from 'rxjs/operators'; import { map, shareReplay, switchMap } from 'rxjs/operators';
@@ -20,7 +20,7 @@ export class FranvaroReportViewComponent {
genomforandeReferens: params.genomforandeReferens as string, genomforandeReferens: params.genomforandeReferens as string,
})) }))
); );
avrop$: Observable<Avrop> = this.params$.pipe( avrop$: Observable<DeltagareAvrop> = this.params$.pipe(
switchMap(({ genomforandeReferens }) => switchMap(({ genomforandeReferens }) =>
this.franvaroReportViewService.fetchAvropInformation$(+genomforandeReferens) this.franvaroReportViewService.fetchAvropInformation$(+genomforandeReferens)
), ),

View File

@@ -1,11 +1,11 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { FranvaroReason } from '@msfa-models/franvaro-reason.model';
import { FranvaroReport, mapResponseToFranvaro } from '@msfa-models/franvaro.model'; import { FranvaroReport, mapResponseToFranvaro } from '@msfa-models/franvaro.model';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { FranvaroReportApiService } from '@msfa-services/api/franvaro-report.api.service';
import { HandlingarApiService } from '@msfa-services/api/handlingar.api.service'; import { HandlingarApiService } from '@msfa-services/api/handlingar.api.service';
import { combineLatest, Observable } from 'rxjs'; 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'; import { filter, map, switchMap } from 'rxjs/operators';
@Injectable() @Injectable()
@@ -21,7 +21,7 @@ export class FranvaroReportViewService {
private deltagareApiService: DeltagareApiService private deltagareApiService: DeltagareApiService
) {} ) {}
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
} }

View File

@@ -1,7 +1,7 @@
import { ChangeDetectionStrategy, Component } from '@angular/core'; import { ChangeDetectionStrategy, Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { Params } from '@msfa-models/api/params.model'; import { Params } from '@msfa-models/api/params.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { GemensamPlaneringDetailed } from '@msfa-models/gemensam-planering.model'; import { GemensamPlaneringDetailed } from '@msfa-models/gemensam-planering.model';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { map, shareReplay, switchMap } from 'rxjs/operators'; import { map, shareReplay, switchMap } from 'rxjs/operators';
@@ -20,7 +20,7 @@ export class GemensamPlaneringViewComponent {
genomforandeReferens: params.genomforandeReferens as string, genomforandeReferens: params.genomforandeReferens as string,
})) }))
); );
avrop$: Observable<Avrop> = this.params$.pipe( avrop$: Observable<DeltagareAvrop> = this.params$.pipe(
switchMap(({ genomforandeReferens }) => switchMap(({ genomforandeReferens }) =>
this.gemensamPlaneringViewService.fetchAvropInformation$(+genomforandeReferens) this.gemensamPlaneringViewService.fetchAvropInformation$(+genomforandeReferens)
), ),

View File

@@ -1,15 +1,15 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Avrop } from '@msfa-models/avrop.model'; import { Activity } from '@msfa-models/activity.model';
import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { import {
GemensamPlaneringDetailed, GemensamPlaneringDetailed,
mapResponseToGemensamPlaneringDetailed, mapResponseToGemensamPlaneringDetailed,
} from '@msfa-models/gemensam-planering.model'; } from '@msfa-models/gemensam-planering.model';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { GemensamPlaneringApiService } from '@msfa-services/api/gemensam-planering-api.service';
import { HandlingarApiService } from '@msfa-services/api/handlingar.api.service'; import { HandlingarApiService } from '@msfa-services/api/handlingar.api.service';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { map, switchMap } from 'rxjs/operators'; import { map, switchMap } from 'rxjs/operators';
import { Activity } from '@msfa-models/activity.model';
import { GemensamPlaneringApiService } from '@msfa-services/api/gemensam-planering-api.service';
@Injectable() @Injectable()
export class GemensamPlaneringViewService { export class GemensamPlaneringViewService {
@@ -21,7 +21,7 @@ export class GemensamPlaneringViewService {
private gemensamPlaneringApiService: GemensamPlaneringApiService private gemensamPlaneringApiService: GemensamPlaneringApiService
) {} ) {}
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
} }

View File

@@ -1,7 +1,7 @@
import { ChangeDetectionStrategy, Component } from '@angular/core'; import { ChangeDetectionStrategy, Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { Params } from '@msfa-models/api/params.model'; import { Params } from '@msfa-models/api/params.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { InformativRapport } from '@msfa-models/informativ-rapport.model'; import { InformativRapport } from '@msfa-models/informativ-rapport.model';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { map, shareReplay, switchMap } from 'rxjs/operators'; import { map, shareReplay, switchMap } from 'rxjs/operators';
@@ -20,7 +20,7 @@ export class InformativRapportViewComponent {
genomforandeReferens: params.genomforandeReferens as string, genomforandeReferens: params.genomforandeReferens as string,
})) }))
); );
avrop$: Observable<Avrop> = this.params$.pipe( avrop$: Observable<DeltagareAvrop> = this.params$.pipe(
switchMap(({ genomforandeReferens }) => switchMap(({ genomforandeReferens }) =>
this.informativRapportViewService.fetchAvropInformation$(+genomforandeReferens) this.informativRapportViewService.fetchAvropInformation$(+genomforandeReferens)
), ),

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { InformativRapport, mapResponseToInformativRapport } from '@msfa-models/informativ-rapport.model'; import { InformativRapport, mapResponseToInformativRapport } from '@msfa-models/informativ-rapport.model';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { HandlingarApiService } from '@msfa-services/api/handlingar.api.service'; import { HandlingarApiService } from '@msfa-services/api/handlingar.api.service';
@@ -10,7 +10,7 @@ import { map } from 'rxjs/operators';
export class InformativRapportViewService { export class InformativRapportViewService {
constructor(private handlingarApiService: HandlingarApiService, private deltagareApiService: DeltagareApiService) {} constructor(private handlingarApiService: HandlingarApiService, private deltagareApiService: DeltagareApiService) {}
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
} }

View File

@@ -1,7 +1,7 @@
import { ChangeDetectionStrategy, Component } from '@angular/core'; import { ChangeDetectionStrategy, Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { Params } from '@msfa-models/api/params.model'; import { Params } from '@msfa-models/api/params.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { PeriodiskRedovisning, PeriodiskRedovisningActivity } from '@msfa-models/periodisk-redovisning.model'; import { PeriodiskRedovisning, PeriodiskRedovisningActivity } from '@msfa-models/periodisk-redovisning.model';
import { capitalizeWords } from '@msfa-shared/utils/capitalize-words.util'; import { capitalizeWords } from '@msfa-shared/utils/capitalize-words.util';
import { formatDate, formatToDate } from '@msfa-shared/utils/format-to-date.util'; import { formatDate, formatToDate } from '@msfa-shared/utils/format-to-date.util';
@@ -22,7 +22,7 @@ export class PeriodiskRedovisningViewComponent {
genomforandeReferens: params.genomforandeReferens as string, genomforandeReferens: params.genomforandeReferens as string,
})) }))
); );
avrop$: Observable<Avrop> = this.params$.pipe( avrop$: Observable<DeltagareAvrop> = this.params$.pipe(
switchMap(({ genomforandeReferens }) => switchMap(({ genomforandeReferens }) =>
this.periodiskRedovisningViewService.fetchAvropInformation$(+genomforandeReferens) this.periodiskRedovisningViewService.fetchAvropInformation$(+genomforandeReferens)
), ),

View File

@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Activity } from '@msfa-models/activity.model'; import { Activity } from '@msfa-models/activity.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { mapResponseToPeriodiskRedovisning, PeriodiskRedovisning } from '@msfa-models/periodisk-redovisning.model'; import { mapResponseToPeriodiskRedovisning, PeriodiskRedovisning } from '@msfa-models/periodisk-redovisning.model';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { GemensamPlaneringApiService } from '@msfa-services/api/gemensam-planering-api.service'; import { GemensamPlaneringApiService } from '@msfa-services/api/gemensam-planering-api.service';
@@ -18,7 +18,7 @@ export class PeriodiskRedovisningViewService {
private deltagareApiService: DeltagareApiService private deltagareApiService: DeltagareApiService
) {} ) {}
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
} }

View File

@@ -1,11 +1,11 @@
import { ChangeDetectionStrategy, Component } from '@angular/core'; import { ChangeDetectionStrategy, Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { Params } from '@msfa-models/api/params.model'; import { Params } from '@msfa-models/api/params.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { Slutredovisning } from '@msfa-models/slutredovisning.model';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { map, shareReplay, switchMap } from 'rxjs/operators'; import { map, shareReplay, switchMap } from 'rxjs/operators';
import { SlutredovisningViewService } from './slutredovisning-view.service'; import { SlutredovisningViewService } from './slutredovisning-view.service';
import { Slutredovisning } from '@msfa-models/slutredovisning.model';
@Component({ @Component({
selector: 'msfa-slutredovisning-view', selector: 'msfa-slutredovisning-view',
@@ -20,7 +20,7 @@ export class SlutredovisningViewComponent {
genomforandeReferens: params.genomforandeReferens as string, genomforandeReferens: params.genomforandeReferens as string,
})) }))
); );
avrop$: Observable<Avrop> = this.params$.pipe( avrop$: Observable<DeltagareAvrop> = this.params$.pipe(
switchMap(({ genomforandeReferens }) => switchMap(({ genomforandeReferens }) =>
this.slutredovisningViewService.fetchAvropInformation$(+genomforandeReferens) this.slutredovisningViewService.fetchAvropInformation$(+genomforandeReferens)
), ),

View File

@@ -1,21 +1,16 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Avrop } from '@msfa-models/avrop.model'; import { SlutredovisningResponse } from '@msfa-models/api/slutredovisning.response.model';
import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { HandlingarApiService } from '@msfa-services/api/handlingar.api.service'; import { HandlingarApiService } from '@msfa-services/api/handlingar.api.service';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { SlutredovisningApiService } from '@msfa-services/api/slutredovisning.api.service';
import { SlutredovisningResponse } from '@msfa-models/api/slutredovisning.response.model';
import { map } from 'rxjs/operators'; import { map } from 'rxjs/operators';
@Injectable() @Injectable()
export class SlutredovisningViewService { export class SlutredovisningViewService {
constructor( constructor(private handlingarApiService: HandlingarApiService, private deltagareApiService: DeltagareApiService) {}
private handlingarApiService: HandlingarApiService,
private deltagareApiService: DeltagareApiService,
private gemensamPlaneringApiService: SlutredovisningApiService
) {}
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
} }

View File

@@ -1,6 +1,6 @@
import { PaginationMeta } from '@msfa-models/pagination-meta.model'; import { PaginationMeta } from '@msfa-models/pagination-meta.model';
export interface AvropResponse { export interface DeltagareAvropResponse {
id: string; id: string;
fullName: string; fullName: string;
tjanst: string; tjanst: string;
@@ -19,8 +19,49 @@ export interface AvropResponse {
handledare: string; handledare: string;
hasAvbrott: boolean; hasAvbrott: boolean;
hasGemensamPlanering: boolean; hasGemensamPlanering: boolean;
kommun: string;
personnummer: string;
}
//personnummer: string; export interface AvropResponse {
id: string;
deltagare: string;
genomforandeReferens: number;
kommun: string;
adress: string;
tjansteNamn: string;
startdatumAvrop: Date;
slutdatumAvrop: Date;
tolkbehov: string | null;
sprakstod: string | null;
sparkod: string;
// These are not used, but are available inside the response
leverantorId: number;
organisationsnummer: string;
utforandeVerksamhetId: number;
utforandeverksamhet: string;
kommunKod: string;
utforandeAdressId: number;
bokningsId: number;
ordernummer: string;
personnummer: string;
sokandeId: number;
tjanstekod: string;
deltagandeGrad: number;
sparNamn: string;
aktnummerDiariet: string;
handledareCiamUserId: string | null;
handledare: string | null;
exported: boolean;
avbrottHandelseId: string | null;
avbrottHandelse: string | null;
handelser: unknown[] | null;
handlingar: unknown[] | null;
recievedTimestamp: Date;
isDeltagare: boolean;
hasGemensamPlanering: boolean;
hasAvbrott: boolean;
} }
export interface AvropAndMetaResponse { export interface AvropAndMetaResponse {

View File

@@ -1,5 +1,5 @@
import { PaginationMeta } from '@msfa-models/pagination-meta.model'; import { PaginationMeta } from '@msfa-models/pagination-meta.model';
import { AvropResponse } from './avrop.response.model'; import { DeltagareAvropResponse } from './avrop.response.model';
import { ContactInformationResponse } from './contact-information.response.model'; import { ContactInformationResponse } from './contact-information.response.model';
import { DisabilitiesResponse } from './disabilities.response.model'; import { DisabilitiesResponse } from './disabilities.response.model';
import { DriversLicenseResponse } from './drivers-license.response.model'; import { DriversLicenseResponse } from './drivers-license.response.model';
@@ -32,7 +32,7 @@ export interface DeltagareResponse {
workLanguages: WorkLanguagesResponse; workLanguages: WorkLanguagesResponse;
disabilities: DisabilitiesResponse; disabilities: DisabilitiesResponse;
workExperiences: WorkExperiencesResponse; workExperiences: WorkExperiencesResponse;
avropInformation: AvropResponse; avropInformation: DeltagareAvropResponse;
} }
export interface DeltagareCompactApiResponse { export interface DeltagareCompactApiResponse {

View File

@@ -1,8 +1,9 @@
import { TrackName } from '@msfa-enums/track-name.enum'; import { TrackName } from '@msfa-enums/track-name.enum';
import { AvropResponse } from './api/avrop.response.model'; import { mapStringToSsn } from '@msfa-shared/utils/map-string-to-ssn.util';
import { AvropResponse, DeltagareAvropResponse } from './api/avrop.response.model';
import { PaginationMeta } from './pagination-meta.model'; import { PaginationMeta } from './pagination-meta.model';
export interface Avrop { export interface DeltagareAvrop {
id: string; id: string;
fullName: string; fullName: string;
tjanst: string; tjanst: string;
@@ -22,9 +23,22 @@ export interface Avrop {
receivedTimestamp: Date; receivedTimestamp: Date;
hasGemensamPlanering: boolean; hasGemensamPlanering: boolean;
hasAvbrott: boolean; hasAvbrott: boolean;
ssn: string; // personnummer
kommun: string; kommun: string;
ssn: string;
}
export interface Avrop {
id: string;
fullName: string;
tjanst: string;
startDate: Date;
endDate: Date;
sprakstod: string;
tolkbehov: string;
utforandeAdress: string;
kommun: string;
trackName: TrackName;
genomforandeReferens: number;
} }
export interface AvropAndMeta { export interface AvropAndMeta {
@@ -32,7 +46,37 @@ export interface AvropAndMeta {
meta: PaginationMeta; meta: PaginationMeta;
} }
export function mapAvropResponseToAvrop(data: AvropResponse): Avrop { export function mapResponseToAvrop(data: AvropResponse): Avrop {
const {
id,
deltagare,
tjansteNamn,
startdatumAvrop,
slutdatumAvrop,
sprakstod,
tolkbehov,
adress,
kommun,
sparkod,
genomforandeReferens,
} = data;
return {
id,
fullName: deltagare,
tjanst: tjansteNamn,
startDate: new Date(startdatumAvrop),
endDate: new Date(slutdatumAvrop),
sprakstod,
tolkbehov,
utforandeAdress: adress,
kommun,
trackName: (TrackName[sparkod] || TrackName.UNKNOWN) as TrackName,
genomforandeReferens,
};
}
export function mapResponseToDeltagareAvrop(data: DeltagareAvropResponse): DeltagareAvrop {
const { const {
id, id,
fullName, fullName,
@@ -52,9 +96,8 @@ export function mapAvropResponseToAvrop(data: AvropResponse): Avrop {
handledare, handledare,
hasAvbrott, hasAvbrott,
hasGemensamPlanering, hasGemensamPlanering,
kommun,
// kommun personnummer,
// personnummer,
} = data; } = data;
return { return {
@@ -68,12 +111,10 @@ export function mapAvropResponseToAvrop(data: AvropResponse): Avrop {
sprakstod, sprakstod,
utforandeVerksamhet, utforandeVerksamhet,
utforandeAdress, utforandeAdress,
// kommun, kommun: kommun || '',
kommun: '',
trackCode: sparkod, trackCode: sparkod,
trackName: (TrackName[sparkod] || TrackName.UNKNOWN) as TrackName, trackName: (TrackName[sparkod] || TrackName.UNKNOWN) as TrackName,
// ssn: mapStringToSsn(personnummer), ssn: mapStringToSsn(personnummer),
ssn: '',
genomforandeReferens, genomforandeReferens,
participationFrequency, participationFrequency,
handledareCiamUserId, handledareCiamUserId,

View File

@@ -1,6 +1,6 @@
import { Address } from './address.model'; import { Address } from './address.model';
import { DeltagareCompactResponse, DeltagareResponse } from './api/deltagare.response.model'; import { DeltagareCompactResponse, DeltagareResponse } from './api/deltagare.response.model';
import { Avrop, mapAvropResponseToAvrop } from './avrop.model'; import { DeltagareAvrop, mapResponseToDeltagareAvrop } from './avrop.model';
import { mapResponseToContactInformation } from './contact-information.model'; import { mapResponseToContactInformation } from './contact-information.model';
import { Disability, mapResponseToDisability } from './disability.model'; import { Disability, mapResponseToDisability } from './disability.model';
import { DriversLicense, mapResponseToDriversLicense } from './drivers-license.model'; import { DriversLicense, mapResponseToDriversLicense } from './drivers-license.model';
@@ -42,7 +42,7 @@ export interface Deltagare {
disabilities: Disability[]; disabilities: Disability[];
workLanguages: string[]; workLanguages: string[];
workExperiences: WorkExperience[]; workExperiences: WorkExperience[];
avropInformation: Avrop; avropInformation: DeltagareAvrop;
} }
export interface DeltagareCompactData { export interface DeltagareCompactData {
@@ -105,6 +105,6 @@ export function mapResponseToDeltagare(data: DeltagareResponse): Deltagare {
workExperiences: workExperiences:
workExperiences && workExperiences &&
workExperiences.arbetslivserfarenheter.map(workExperience => mapResponseToWorkExperience(workExperience)), workExperiences.arbetslivserfarenheter.map(workExperience => mapResponseToWorkExperience(workExperience)),
avropInformation: avropInformation && mapAvropResponseToAvrop(avropInformation), avropInformation: avropInformation && mapResponseToDeltagareAvrop(avropInformation),
}; };
} }

View File

@@ -5,9 +5,8 @@ import { AvropFilterResponse } from '@msfa-models/api/avrop-filter.response.mode
import { AvropAndMetaResponse } from '@msfa-models/api/avrop.response.model'; import { AvropAndMetaResponse } from '@msfa-models/api/avrop.response.model';
import { Params } from '@msfa-models/api/params.model'; import { Params } from '@msfa-models/api/params.model';
import { AvropFilter, mapResponseToAvropFilter } from '@msfa-models/avrop-filter.model'; import { AvropFilter, mapResponseToAvropFilter } from '@msfa-models/avrop-filter.model';
import { Avrop, AvropAndMeta, mapAvropResponseToAvrop } from '@msfa-models/avrop.model'; import { Avrop, AvropAndMeta, mapResponseToAvrop } from '@msfa-models/avrop.model';
import { CustomError, errorToCustomError } from '@msfa-models/error/custom-error'; import { CustomError, errorToCustomError } from '@msfa-models/error/custom-error';
import { Handledare } from '@msfa-models/handledare.model';
import { BehaviorSubject, Observable, of } from 'rxjs'; import { BehaviorSubject, Observable, of } from 'rxjs';
import { catchError, filter, map } from 'rxjs/operators'; import { catchError, filter, map } from 'rxjs/operators';
@@ -17,7 +16,6 @@ import { catchError, filter, map } from 'rxjs/operators';
export class AvropApiService { export class AvropApiService {
private _apiBaseUrl = `${environment.api.url}/avrop`; private _apiBaseUrl = `${environment.api.url}/avrop`;
private _lockedAvropSnapshot$ = new BehaviorSubject<Avrop[]>(null); private _lockedAvropSnapshot$ = new BehaviorSubject<Avrop[]>(null);
private _availableHandledareSnapshot$ = new BehaviorSubject<Handledare[]>(null);
private _showUnauthorizedError$ = new BehaviorSubject<boolean>(false); private _showUnauthorizedError$ = new BehaviorSubject<boolean>(false);
public showUnauthorizedError$: Observable<boolean> = this._showUnauthorizedError$.asObservable(); public showUnauthorizedError$: Observable<boolean> = this._showUnauthorizedError$.asObservable();
@@ -31,14 +29,14 @@ export class AvropApiService {
return this.httpClient return this.httpClient
.get<AvropAndMetaResponse>(`${this._apiBaseUrl}`, { params }) .get<AvropAndMetaResponse>(`${this._apiBaseUrl}`, { params })
.pipe( .pipe(
map(({ data, meta }) => ({ data: data.map(avrop => mapAvropResponseToAvrop(avrop)), meta })), map(({ data, meta }) => ({ data: data.map(avrop => mapResponseToAvrop(avrop)), meta })),
catchError((error: Error & { status: number }) => { catchError((error: Error & { status: number }) => {
if (error.status === 403) { if (error.status === 403) {
this._showUnauthorizedError$.next(true); this._showUnauthorizedError$.next(true);
return of(null as null); return of(null as null);
} else { } else {
throw new CustomError( throw new CustomError(
errorToCustomError({ ...error, message: `Kunde inte hämta deltagare.\n\n${error.message}` }) errorToCustomError({ ...error, message: `Kunde inte hämta nya deltagare.\n\n${error.message}` })
); );
} }
}) })

View File

@@ -1,7 +1,7 @@
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { environment } from '@msfa-environment'; import { environment } from '@msfa-environment';
import { AvropResponse } from '@msfa-models/api/avrop.response.model'; import { DeltagareAvropResponse } from '@msfa-models/api/avrop.response.model';
import { ContactInformationResponse } from '@msfa-models/api/contact-information.response.model'; import { ContactInformationResponse } from '@msfa-models/api/contact-information.response.model';
import { DeltagareCompactApiResponse } from '@msfa-models/api/deltagare.response.model'; import { DeltagareCompactApiResponse } from '@msfa-models/api/deltagare.response.model';
import { DisabilityResponse } from '@msfa-models/api/disability.response.model'; import { DisabilityResponse } from '@msfa-models/api/disability.response.model';
@@ -13,7 +13,7 @@ import { ReportsDataResponse } from '@msfa-models/api/report.response.model';
import { TranslatorResponse } from '@msfa-models/api/translator.response.model'; import { TranslatorResponse } from '@msfa-models/api/translator.response.model';
import { WorkExperiencesResponse } from '@msfa-models/api/work-experiences.response.model'; import { WorkExperiencesResponse } from '@msfa-models/api/work-experiences.response.model';
import { WorkLanguagesResponse } from '@msfa-models/api/work-languages.response.model'; import { WorkLanguagesResponse } from '@msfa-models/api/work-languages.response.model';
import { Avrop, mapAvropResponseToAvrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop, mapResponseToDeltagareAvrop } from '@msfa-models/avrop.model';
import { ContactInformation, mapResponseToContactInformation } from '@msfa-models/contact-information.model'; import { ContactInformation, mapResponseToContactInformation } from '@msfa-models/contact-information.model';
import { DeltagareCompactData, mapResponseToDeltagareCompact } from '@msfa-models/deltagare.model'; import { DeltagareCompactData, mapResponseToDeltagareCompact } from '@msfa-models/deltagare.model';
import { Disability, mapResponseToDisability } from '@msfa-models/disability.model'; import { Disability, mapResponseToDisability } from '@msfa-models/disability.model';
@@ -217,14 +217,16 @@ export class DeltagareApiService {
); );
} }
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.httpClient.get<{ data: AvropResponse }>(`${this._apiBaseUrl}/${genomforandeReferens}/avrop`).pipe( return this.httpClient
map(({ data }) => mapAvropResponseToAvrop(data)), .get<{ data: DeltagareAvropResponse }>(`${this._apiBaseUrl}/${genomforandeReferens}/avrop`)
catchError((error: Error) => { .pipe(
throw new CustomError( map(({ data }) => mapResponseToDeltagareAvrop(data)),
errorToCustomError({ ...error, message: `Kunde inte hämta avropsinformation.\n\n${error.message}` }) catchError((error: Error) => {
); throw new CustomError(
}) errorToCustomError({ ...error, message: `Kunde inte hämta avropsinformation.\n\n${error.message}` })
); );
})
);
} }
} }

View File

@@ -4,7 +4,7 @@ import { ErrorType } from '@msfa-enums/error-type.enum';
import { environment } from '@msfa-environment'; import { environment } from '@msfa-environment';
import { FranvaroReasonResponse } from '@msfa-models/api/franvaro-reason.response.model'; import { FranvaroReasonResponse } from '@msfa-models/api/franvaro-reason.response.model';
import { FranvaroReportRequest } from '@msfa-models/api/franvaro-request.model'; import { FranvaroReportRequest } from '@msfa-models/api/franvaro-request.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { CustomError, errorToCustomError } from '@msfa-models/error/custom-error'; import { CustomError, errorToCustomError } from '@msfa-models/error/custom-error';
import { FranvaroReason, mapResponseToFranvaroReason } from '@msfa-models/franvaro-reason.model'; import { FranvaroReason, mapResponseToFranvaroReason } from '@msfa-models/franvaro-reason.model';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
@@ -44,7 +44,7 @@ export class FranvaroReportApiService {
); );
} }
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
} }

View File

@@ -5,7 +5,7 @@ import { environment } from '@msfa-environment';
import { Activity, mapResponseToActivity } from '@msfa-models/activity.model'; import { Activity, mapResponseToActivity } from '@msfa-models/activity.model';
import { ActivityResponse } from '@msfa-models/api/activity.response.model'; import { ActivityResponse } from '@msfa-models/api/activity.response.model';
import { GemensamPlaneringPostRequest } from '@msfa-models/api/gemensam-planering.request.model'; import { GemensamPlaneringPostRequest } from '@msfa-models/api/gemensam-planering.request.model';
import { Avrop } from '@msfa-models/avrop.model'; import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { CustomError, errorToCustomError } from '@msfa-models/error/custom-error'; import { CustomError, errorToCustomError } from '@msfa-models/error/custom-error';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
@@ -31,7 +31,7 @@ export class GemensamPlaneringApiService {
); );
} }
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> { public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens); return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
} }