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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
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 { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { HandledareService } from '@msfa-services/handledare.service';
@@ -30,7 +30,7 @@ export class DeltagareCardService {
shareReplay(1)
);
avropInformation$: Observable<Avrop> = combineLatest([
avropInformation$: Observable<DeltagareAvrop> = combineLatest([
this.currentGenomforandeReferens$,
this.avropNeedsUpdate$,
]).pipe(

View File

@@ -3,7 +3,7 @@ import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/
import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';
import { ActivatedRoute } from '@angular/router';
import { AvvikelseReportRequest, AvvikelseRequest } from '@msfa-models/api/avvikelse-request.model';
import { Avrop } from '@msfa-models/avrop.model';
import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { AvvikelseQuestion } from '@msfa-models/avvikelse-question.model';
import { AvvikelseReason } from '@msfa-models/avvikelse-reason.model';
import { CustomError } from '@msfa-models/error/custom-error';
@@ -46,7 +46,7 @@ export class AvvikelseReportFormComponent implements OnInit, OnDestroy {
genomforandeReferens$: Observable<number> = this.activatedRoute.params.pipe(
map((params: Params) => +params.genomforandeReferens)
);
avrop$: Observable<Avrop> = this.genomforandeReferens$.pipe(
avrop$: Observable<DeltagareAvrop> = this.genomforandeReferens$.pipe(
switchMap(genomforandeReferens => this.avvikelseReportFormService.fetchAvropInformation$(genomforandeReferens)),
shareReplay(1)
);
@@ -143,11 +143,11 @@ export class AvvikelseReportFormComponent implements OnInit, OnDestroy {
return lastPossibleReportDay > new Date();
}
isAllowedToReport(avrop: Avrop): boolean {
isAllowedToReport(avrop: DeltagareAvrop): boolean {
return this._isAfterStartDate(avrop.startDate) && this._isBeforeLastPossibleReportDay(avrop.endDate);
}
notAllowedToReportWarning(avrop: Avrop): string {
notAllowedToReportWarning(avrop: DeltagareAvrop): string {
if (!this._isBeforeLastPossibleReportDay(avrop.endDate)) {
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 { 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 { AvvikelseReason, sortAvvikelseReasons } from '@msfa-models/avvikelse-reason.model';
import { AvvikelseApiService } from '@msfa-services/api/avvikelse-api.service';
@@ -14,10 +14,9 @@ export class AvvikelseReportFormService {
.fetchAvvikelseQuestions$()
.pipe(shareReplay(1));
fetchAvvikelseReasons$: Observable<AvvikelseReason[]> = this.avvikelseApiService.fetchAvvikelseReasons$()
.pipe(
map(reasons => sortAvvikelseReasons(reasons))
);
fetchAvvikelseReasons$: Observable<AvvikelseReason[]> = this.avvikelseApiService
.fetchAvvikelseReasons$()
.pipe(map(reasons => sortAvvikelseReasons(reasons)));
constructor(private avvikelseApiService: AvvikelseApiService, private deltagareApiService: DeltagareApiService) {}
@@ -25,7 +24,7 @@ export class AvvikelseReportFormService {
return this.avvikelseApiService.createAvvikelse$(avvikelse);
}
fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> {
fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
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 { OrsaksKoderKanda } from '@msfa-enums/orsaks-koder-kanda.enum';
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 { FranvaroReason, setKnownReason, sortFranvaroReasons } from '@msfa-models/franvaro-reason.model';
import { Franvaro } from '@msfa-models/franvaro.model';
@@ -45,15 +45,15 @@ export class FranvaroReportFormComponent {
currentGenomforandeReferens$: Observable<number> = this.activatedRoute.params.pipe(
map(params => +params.genomforandeReferens)
);
avrop$: Observable<Avrop> = this.currentGenomforandeReferens$.pipe(
avrop$: Observable<DeltagareAvrop> = this.currentGenomforandeReferens$.pipe(
switchMap(genomforandeReferens => this.franvaroReportFormService.fetchAvropInformation$(genomforandeReferens)),
shareReplay(1)
);
reasons$: Observable<FranvaroReason[]> = this.franvaroReportFormService.reasons$;
allReasons$: Observable<FranvaroReason[]> = combineLatest([this.reasons$, this.franvaroReportFormService.otherKnownReasons$])
.pipe(
map(([reasons, otherKnownReasons]) => sortFranvaroReasons(reasons.concat(otherKnownReasons)))
)
allReasons$: Observable<FranvaroReason[]> = combineLatest([
this.reasons$,
this.franvaroReportFormService.otherKnownReasons$,
]).pipe(map(([reasons, otherKnownReasons]) => sortFranvaroReasons(reasons.concat(otherKnownReasons))));
otherKnownReasons$: Observable<FranvaroReason[]> = this.franvaroReportFormService.otherKnownReasons$;
wholeDayOrPartOfDayRadiobuttons: Radiobutton[] = [
@@ -123,11 +123,11 @@ export class FranvaroReportFormComponent {
return lastPossibleReportDay > new Date();
}
isAllowedToReport(avrop: Avrop): boolean {
isAllowedToReport(avrop: DeltagareAvrop): boolean {
return this._isAfterStartDate(avrop.startDate) && this._isBeforeLastPossibleReportDay(avrop.endDate);
}
notAllowedToReportWarning(avrop: Avrop): string {
notAllowedToReportWarning(avrop: DeltagareAvrop): string {
if (!this._isBeforeLastPossibleReportDay(avrop.endDate)) {
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
alternativForKandaOrsaker: this.isOtherKnownReason
? {
typ: reason,
motivering: this.showKnownReasonTextArea ? knownReasonComment : '',
}
typ: reason,
motivering: this.showKnownReasonTextArea ? knownReasonComment : '',
}
: null,
forvantadNarvaro: {
startTid: expectedPresenceStartTime,

View File

@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core';
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 { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { FranvaroReportApiService } from '@msfa-services/api/franvaro-report.api.service';
@@ -16,7 +16,7 @@ export class FranvaroReportFormService {
private deltagareApiService: DeltagareApiService
) {}
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> {
public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
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 { ActivatedRoute } from '@angular/router';
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 {
GemensamPlanering,
@@ -36,7 +36,7 @@ export class GemensamPlaneringFormComponent {
currentGenomforandeReferens$: Observable<number> = this.activatedRoute.params.pipe(
map(params => +params.genomforandeReferens)
);
avrop$: Observable<Avrop> = this.currentGenomforandeReferens$.pipe(
avrop$: Observable<DeltagareAvrop> = this.currentGenomforandeReferens$.pipe(
switchMap(genomforandeReferens => this.gemensamPlaneringFormService.fetchAvropInformation$(genomforandeReferens)),
shareReplay(1)
);
@@ -158,11 +158,11 @@ export class GemensamPlaneringFormComponent {
return lastPossibleReportDay > new Date();
}
isAllowedToReport(avrop: Avrop): boolean {
isAllowedToReport(avrop: DeltagareAvrop): boolean {
return this._isAfterStartDate(avrop.startDate) && this._isBeforeLastPossibleReportDay(avrop.endDate);
}
notAllowedToReportWarning(avrop: Avrop): string {
notAllowedToReportWarning(avrop: DeltagareAvrop): string {
if (!this._isBeforeLastPossibleReportDay(avrop.endDate)) {
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 { Activity } from '@msfa-models/activity.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 { Observable } from 'rxjs';
@@ -11,7 +11,7 @@ export class GemensamPlaneringFormService {
constructor(private gemensamPlaneringApiService: GemensamPlaneringApiService) {}
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> {
public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.gemensamPlaneringApiService.fetchAvropInformation$(genomforandeReferens);
}

View File

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

View File

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

View File

@@ -9,7 +9,7 @@ import {
PeriodiskRedovisningRequest,
} from '@msfa-models/api/periodisk-redovisning.request.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 { capitalizeWords } from '@msfa-utils/capitalize-words.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(
map((params: Params) => +params.genomforandeReferens)
);
avrop$: Observable<Avrop> = this.genomforandeReferens$.pipe(
avrop$: Observable<DeltagareAvrop> = this.genomforandeReferens$.pipe(
switchMap(genomforandeReferens =>
this.periodiskRedovisningFormService.fetchAvropInformation$(genomforandeReferens)
),

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,17 +1,17 @@
import { ChangeDetectionStrategy, Component, OnDestroy } from '@angular/core';
import { AbstractControl, FormGroup } from '@angular/forms';
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 { map, shareReplay, switchMap } from 'rxjs/operators';
import { SlutredovisningFormService } from './slutredovisning-form.service';
import { addDays } from 'date-fns';
import { SlutredovisningStep } from './slutredovisning-form.model';
import { SlutredovisningFormData } from './models/slutredovisning-form-data.model';
import { SlutredovisningStep0FormData } from './slutredovisning-form-step0/slutredovisning-form-step0.component';
import { SlutredovisningStep1FormData } from './slutredovisning-form-step1/slutredovisning-form-step1.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 { SlutredovisningFormData } from './models/slutredovisning-form-data.model';
interface Params {
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)),
shareReplay(1)
);
@@ -80,11 +80,11 @@ export class SlutredovisningFormComponent implements OnDestroy {
return lastPossibleReportDay > new Date();
}
isAllowedToReport(avrop: Avrop): boolean {
isAllowedToReport(avrop: DeltagareAvrop): boolean {
return this._isAfterStartDate(avrop.startDate) && this._isBeforeLastPossibleReportDay(avrop.endDate);
}
notAllowedToReportWarning(avrop: Avrop): string {
notAllowedToReportWarning(avrop: DeltagareAvrop): string {
if (!this._isBeforeLastPossibleReportDay(avrop.endDate)) {
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 { 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 { DeltagareApiService } from '@msfa-services/api/deltagare.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 { SlutredovisningStep0FormData } from './slutredovisning-form-step0/slutredovisning-form-step0.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 { SlutredovisningRequest } from '@msfa-models/api/slutredovisning.request.model';
import { SlutredovisningStep } from './slutredovisning-form.model';
@Injectable()
export class SlutredovisningFormService {
@@ -49,7 +49,7 @@ export class SlutredovisningFormService {
return this.slutredovisningApiService.submitSlutredovisning$(slutredovisning);
}
fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> {
fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
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 { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { HandlingarApiService } from '@msfa-services/api/handlingar.api.service';
@@ -10,7 +10,7 @@ import { map } from 'rxjs/operators';
export class InformativRapportViewService {
constructor(private handlingarApiService: HandlingarApiService, private deltagareApiService: DeltagareApiService) {}
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> {
public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
}

View File

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

View File

@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core';
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 { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { GemensamPlaneringApiService } from '@msfa-services/api/gemensam-planering-api.service';
@@ -18,7 +18,7 @@ export class PeriodiskRedovisningViewService {
private deltagareApiService: DeltagareApiService
) {}
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> {
public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
}

View File

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

View File

@@ -1,21 +1,16 @@
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 { 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';
@Injectable()
export class SlutredovisningViewService {
constructor(
private handlingarApiService: HandlingarApiService,
private deltagareApiService: DeltagareApiService,
private gemensamPlaneringApiService: SlutredovisningApiService
) {}
constructor(private handlingarApiService: HandlingarApiService, private deltagareApiService: DeltagareApiService) {}
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> {
public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
}

View File

@@ -1,6 +1,6 @@
import { PaginationMeta } from '@msfa-models/pagination-meta.model';
export interface AvropResponse {
export interface DeltagareAvropResponse {
id: string;
fullName: string;
tjanst: string;
@@ -19,8 +19,49 @@ export interface AvropResponse {
handledare: string;
hasAvbrott: 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 {

View File

@@ -1,5 +1,5 @@
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 { DisabilitiesResponse } from './disabilities.response.model';
import { DriversLicenseResponse } from './drivers-license.response.model';
@@ -32,7 +32,7 @@ export interface DeltagareResponse {
workLanguages: WorkLanguagesResponse;
disabilities: DisabilitiesResponse;
workExperiences: WorkExperiencesResponse;
avropInformation: AvropResponse;
avropInformation: DeltagareAvropResponse;
}
export interface DeltagareCompactApiResponse {

View File

@@ -1,8 +1,9 @@
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';
export interface Avrop {
export interface DeltagareAvrop {
id: string;
fullName: string;
tjanst: string;
@@ -22,9 +23,22 @@ export interface Avrop {
receivedTimestamp: Date;
hasGemensamPlanering: boolean;
hasAvbrott: boolean;
ssn: string; // personnummer
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 {
@@ -32,7 +46,37 @@ export interface AvropAndMeta {
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 {
id,
fullName,
@@ -52,9 +96,8 @@ export function mapAvropResponseToAvrop(data: AvropResponse): Avrop {
handledare,
hasAvbrott,
hasGemensamPlanering,
// kommun
// personnummer,
kommun,
personnummer,
} = data;
return {
@@ -68,12 +111,10 @@ export function mapAvropResponseToAvrop(data: AvropResponse): Avrop {
sprakstod,
utforandeVerksamhet,
utforandeAdress,
// kommun,
kommun: '',
kommun: kommun || '',
trackCode: sparkod,
trackName: (TrackName[sparkod] || TrackName.UNKNOWN) as TrackName,
// ssn: mapStringToSsn(personnummer),
ssn: '',
ssn: mapStringToSsn(personnummer),
genomforandeReferens,
participationFrequency,
handledareCiamUserId,

View File

@@ -1,6 +1,6 @@
import { Address } from './address.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 { Disability, mapResponseToDisability } from './disability.model';
import { DriversLicense, mapResponseToDriversLicense } from './drivers-license.model';
@@ -42,7 +42,7 @@ export interface Deltagare {
disabilities: Disability[];
workLanguages: string[];
workExperiences: WorkExperience[];
avropInformation: Avrop;
avropInformation: DeltagareAvrop;
}
export interface DeltagareCompactData {
@@ -105,6 +105,6 @@ export function mapResponseToDeltagare(data: DeltagareResponse): Deltagare {
workExperiences:
workExperiences &&
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 { Params } from '@msfa-models/api/params.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 { Handledare } from '@msfa-models/handledare.model';
import { BehaviorSubject, Observable, of } from 'rxjs';
import { catchError, filter, map } from 'rxjs/operators';
@@ -17,7 +16,6 @@ import { catchError, filter, map } from 'rxjs/operators';
export class AvropApiService {
private _apiBaseUrl = `${environment.api.url}/avrop`;
private _lockedAvropSnapshot$ = new BehaviorSubject<Avrop[]>(null);
private _availableHandledareSnapshot$ = new BehaviorSubject<Handledare[]>(null);
private _showUnauthorizedError$ = new BehaviorSubject<boolean>(false);
public showUnauthorizedError$: Observable<boolean> = this._showUnauthorizedError$.asObservable();
@@ -31,14 +29,14 @@ export class AvropApiService {
return this.httpClient
.get<AvropAndMetaResponse>(`${this._apiBaseUrl}`, { params })
.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 }) => {
if (error.status === 403) {
this._showUnauthorizedError$.next(true);
return of(null as null);
} else {
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 { Injectable } from '@angular/core';
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 { DeltagareCompactApiResponse } from '@msfa-models/api/deltagare.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 { WorkExperiencesResponse } from '@msfa-models/api/work-experiences.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 { DeltagareCompactData, mapResponseToDeltagareCompact } from '@msfa-models/deltagare.model';
import { Disability, mapResponseToDisability } from '@msfa-models/disability.model';
@@ -217,14 +217,16 @@ export class DeltagareApiService {
);
}
public fetchAvropInformation$(genomforandeReferens: number): Observable<Avrop> {
return this.httpClient.get<{ data: AvropResponse }>(`${this._apiBaseUrl}/${genomforandeReferens}/avrop`).pipe(
map(({ data }) => mapAvropResponseToAvrop(data)),
catchError((error: Error) => {
throw new CustomError(
errorToCustomError({ ...error, message: `Kunde inte hämta avropsinformation.\n\n${error.message}` })
);
})
);
public fetchAvropInformation$(genomforandeReferens: number): Observable<DeltagareAvrop> {
return this.httpClient
.get<{ data: DeltagareAvropResponse }>(`${this._apiBaseUrl}/${genomforandeReferens}/avrop`)
.pipe(
map(({ data }) => mapResponseToDeltagareAvrop(data)),
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 { FranvaroReasonResponse } from '@msfa-models/api/franvaro-reason.response.model';
import { FranvaroReportRequest } from '@msfa-models/api/franvaro-request.model';
import { Avrop } from '@msfa-models/avrop.model';
import { DeltagareAvrop } from '@msfa-models/avrop.model';
import { CustomError, errorToCustomError } from '@msfa-models/error/custom-error';
import { FranvaroReason, mapResponseToFranvaroReason } from '@msfa-models/franvaro-reason.model';
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);
}

View File

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