Merge pull request #180 in TEA/mina-sidor-fa-web from feature/TV-565-report-signal-arbete-studier to develop
Squashed commit of the following: commit 6331ed75b007f97f46d92584b55ca8c358fb9dd0 Author: fueno <nicolas.fuentes-maturana@arbetsformedlingen.se> Date: Fri Oct 8 13:13:48 2021 +0200 TV-565 hide link, update routing commit d5b08ef9f7e3e896b19c765ccb6cbd65b4ed2754 Author: fueno <nicolas.fuentes-maturana@arbetsformedlingen.se> Date: Fri Oct 8 12:42:43 2021 +0200 TV-565 deleted unused method commit 6e6095130c01ce2b6a978e06cb1b1a6ccb362ce0 Author: fueno <nicolas.fuentes-maturana@arbetsformedlingen.se> Date: Fri Oct 8 12:34:21 2021 +0200 TV-565 refactoring signal report commit 5a4452ed88554ce5e462d53222889c5535802208 Author: fueno <nicolas.fuentes-maturana@arbetsformedlingen.se> Date: Fri Oct 8 11:28:19 2021 +0200 TV-565 corrected format date commit 2983df1c7af82d6495b7fb5cca92ed7398e52d63 Merge: fa36a8213321e04aAuthor: fueno <nicolas.fuentes-maturana@arbetsformedlingen.se> Date: Fri Oct 8 09:12:35 2021 +0200 Merge branch 'develop' into feature/TV-565-report-signal-arbete-studier commit fa36a8210951cd495895f6ae8df30f397ea35cad Author: fueno <nicolas.fuentes-maturana@arbetsformedlingen.se> Date: Fri Oct 8 09:12:02 2021 +0200 TV-565 refactoring validation, cleaning scss commit 33076ba5e3dd136324d89d03feee0ad6ed094625 Merge: 1f3d5cf8890573b1Author: fueno <nicolas.fuentes-maturana@arbetsformedlingen.se> Date: Wed Oct 6 17:32:50 2021 +0200 Merge branch 'develop' into feature/TV-565-report-signal-arbete-studier commit 1f3d5cf8bd16376e8d798d00261c72c4db462280 Author: fueno <nicolas.fuentes-maturana@arbetsformedlingen.se> Date: Wed Oct 6 13:44:33 2021 +0200 TV-565 refactoring, send in avrop to report layout commit 2a79f44202a5e1db7ba6d0564be708f535ebe8f0 Author: fueno <nicolas.fuentes-maturana@arbetsformedlingen.se> Date: Wed Oct 6 11:27:03 2021 +0200 TV-565 updated spec files commit 3ae4a3d50f5b9d6d24c491cda47992960c7b744c Merge: d606ef903d941fddAuthor: fueno <nicolas.fuentes-maturana@arbetsformedlingen.se> Date: Wed Oct 6 11:13:35 2021 +0200 Merge branch 'develop' into feature/TV-565-report-signal-arbete-studier commit d606ef90f44d4d27b8588f51d1717732545deb0d Author: fueno <nicolas.fuentes-maturana@arbetsformedlingen.se> Date: Wed Oct 6 11:08:31 2021 +0200 TV-565 fixed validation commit 9d733ab4868d85a5756e45023e8efe4a10623e29 Author: fueno <nicolas.fuentes-maturana@arbetsformedlingen.se> Date: Wed Oct 6 09:12:39 2021 +0200 TV-565 max, min dates, text updates, part time utbildning commit b3e479b84bd5622be2d4e2b44648560c8731c92a Merge: b95dd0d95cee9695Author: fueno <nicolas.fuentes-maturana@arbetsformedlingen.se> Date: Tue Oct 5 23:23:01 2021 +0200 Merge branch 'develop' into feature/TV-565-report-signal-arbete-studier commit b95dd0d96e5d10415a145925904565ed7bfb12a3 Author: Cecilia Varnava <cecilia.varnava@arbetsformedlingen.se> Date: Fri Oct 1 16:34:15 2021 +0200 TV-565 fix according to PR comments commit 99c3e6f7cea6edf44684dd2ee3011c8911c6645e Author: Cecilia Varnava <cecilia.varnava@arbetsformedlingen.se> Date: Thu Sep 30 13:06:22 2021 +0200 TV-565 remove file commit 273a93d2d074b2fafaa14c6d3ef5f51fdbb62a22 Author: Cecilia Varnava <cecilia.varnava@arbetsformedlingen.se> Date: Thu Sep 30 12:56:33 2021 +0200 TV-565 cleanup commit 2a2237505d14ed15add4c623afb7705f29e0069c Author: Cecilia Varnava <cecilia.varnava@arbetsformedlingen.se> Date: Thu Sep 30 12:43:00 2021 +0200 TV-565 solved merge conflicts commit e3357510ab62b27327716b160daf626c9d399251 Author: Cecilia Varnava <cecilia.varnava@arbetsformedlingen.se> Date: Thu Sep 30 10:09:32 2021 +0200 TV-565 mergekonflikter commit 46421470a560123d3ad9ee5c64fea564cfb4cc8b Merge: 62e231806147a2e7Author: Cecilia Varnava <cecilia.varnava@arbetsformedlingen.se> Date: Thu Sep 30 10:04:50 2021 +0200 Merge branch 'develop' into feature/TV-565-report-signal-arbete-studier # Conflicts: # apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-card/deltagare-card.component.ts # apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/deltagare-avvikelse.component.html # apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.html # apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.ts # apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.scss commit 62e2318092a978e59147fa18e80a0c5d1a25d0f8 Author: Cecilia Varnava <cecilia.varnava@arbetsformedlingen.se> Date: Thu Sep 30 09:50:58 2021 +0200 TV-565 fix shared report layout progress ... and 15 more commits
This commit is contained in:
@@ -12,10 +12,17 @@ const routes: Routes = [
|
||||
loadChildren: () =>
|
||||
import('./pages/deltagare-details/deltagare-details.module').then(m => m.DeltagareDetailsModule),
|
||||
},
|
||||
{
|
||||
path: ':genomforandeReferens/signal',
|
||||
data: { title: 'Skapa signal om arbete eller studier' },
|
||||
loadChildren: () =>
|
||||
import(
|
||||
'./pages/deltagare-details/pages/deltagare-reports/deltagare-signal-arbete-studier/deltagare-signal-arbete-studier.module'
|
||||
).then(m => m.DeltagareSignalArbeteStudierModule),
|
||||
},
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [RouterModule.forChild(routes)],
|
||||
exports: [RouterModule],
|
||||
})
|
||||
export class DeltagareRoutingModule {}
|
||||
export class DeltagareRoutingModule { }
|
||||
|
||||
@@ -20,12 +20,14 @@ export class DeltagareTabReportsComponent {
|
||||
reportPickerFormGroup: FormGroup = this.formBuilder.group({
|
||||
reports: this.formBuilder.control('', [RequiredValidator('Rapporttyp')]),
|
||||
});
|
||||
|
||||
selectableReportTypes: Array<FormSelectItem> = [
|
||||
{ name: 'Avvikelse', value: 'avvikelse' },
|
||||
{ name: 'Gemensam Planering', value: 'planering' },
|
||||
// { name: 'Signal om arbete eller studier', value: 'signal' },
|
||||
];
|
||||
|
||||
constructor(private formBuilder: FormBuilder, private router: Router) {}
|
||||
constructor(private formBuilder: FormBuilder, private router: Router) { }
|
||||
|
||||
get reportsFormControl(): AbstractControl | null {
|
||||
return this.reportPickerFormGroup?.get(this.reportsFormControlName);
|
||||
@@ -46,6 +48,9 @@ export class DeltagareTabReportsComponent {
|
||||
case 'avvikelse':
|
||||
void this.router.navigateByUrl(`/deltagare/${this.genomforandeReferens}/avvikelserapport`);
|
||||
break;
|
||||
case 'signal':
|
||||
void this.router.navigate([`/deltagare/${this.genomforandeReferens}/signal`]);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
@import 'variables/z-index';
|
||||
@import 'apps/mina-sidor-fa/src/styles/variables/gutters';
|
||||
|
||||
.report-layout {
|
||||
@@ -8,4 +9,8 @@
|
||||
&__progress-bar {
|
||||
margin: $digi--layout--gutter--xl 0;
|
||||
}
|
||||
|
||||
&__progress-bar {
|
||||
z-index: $msfa__z-index-default;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
<section class="deltagare-confirm">
|
||||
<h3 class="deltagare-confirm__header">Ersättningsgrund sysselsättning</h3>
|
||||
<p>{{ ersattningsgrundTypNamn }}</p>
|
||||
|
||||
<ng-container *ngIf="formGroup?.get('percent').value;">
|
||||
<h3 class="deltagare-confirm__header">Antal procent vid deltid</h3>
|
||||
<p>{{formGroup?.get('percent').value}} %</p>
|
||||
</ng-container>
|
||||
|
||||
<h3 class="deltagare-confirm__header">Startdatum</h3>
|
||||
<p>{{formGroup?.get('date').value}}</p>
|
||||
</section>
|
||||
@@ -0,0 +1,14 @@
|
||||
@import 'variables/gutters';
|
||||
|
||||
.deltagare-confirm {
|
||||
margin-bottom: $digi--layout--gutter--xl;
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
&__header {
|
||||
font-size: var(--digi--typography--font-size--l);
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { DeltagareConfirmSignalFormComponent } from './deltagare-confirm-signal-form.component';
|
||||
|
||||
describe('DeltagareConfirmSignalFormComponent', () => {
|
||||
let component: DeltagareConfirmSignalFormComponent;
|
||||
let fixture: ComponentFixture<DeltagareConfirmSignalFormComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||
declarations: [DeltagareConfirmSignalFormComponent]
|
||||
}).compileComponents();
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(DeltagareConfirmSignalFormComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,17 @@
|
||||
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
||||
import { FormGroup } from '@angular/forms';
|
||||
import { getErsattningsGrundTyp } from '@msfa-enums/ersattning-grund-typ-kod.enum';
|
||||
|
||||
@Component({
|
||||
selector: 'msfa-deltagare-confirm-signal-form',
|
||||
templateUrl: './deltagare-confirm-signal-form.component.html',
|
||||
styleUrls: ['./deltagare-confirm-signal-form.component.scss'],
|
||||
changeDetection: ChangeDetectionStrategy.Default,
|
||||
})
|
||||
export class DeltagareConfirmSignalFormComponent {
|
||||
@Input() formGroup: FormGroup | null = null;
|
||||
|
||||
get ersattningsgrundTypNamn(): string {
|
||||
return getErsattningsGrundTyp(this.formGroup?.get('ersattningsTyp').value);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { DeltagareConfirmSignalFormComponent } from './deltagare-confirm-signal-form.component';
|
||||
|
||||
@NgModule({
|
||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||
declarations: [DeltagareConfirmSignalFormComponent],
|
||||
imports: [CommonModule],
|
||||
exports: [DeltagareConfirmSignalFormComponent],
|
||||
})
|
||||
export class DeltagareConfirmSignalFormModule {}
|
||||
@@ -0,0 +1,117 @@
|
||||
<msfa-layout *ngIf="avrop$ | async as avrop, else skeletenRef">
|
||||
<msfa-report-layout
|
||||
[currentStep]="currentStep"
|
||||
[totalAmountOfSteps]="totalAmountOfSteps"
|
||||
description="Här skickar du signal om att deltagare har påbörjat anställning eller utbildning."
|
||||
reportTitle="Signal om arbete eller studier"
|
||||
reportSubTitle="Skicka signal"
|
||||
reportName="Signal om arbete eller studier"
|
||||
[avrop]="avrop"
|
||||
>
|
||||
<div *ngIf="submittedDate$ | async as submittedDate" class="deltagare-signal__confirmation">
|
||||
<digi-notification-alert
|
||||
af-heading="Allt gick bra"
|
||||
af-heading-level="h3"
|
||||
af-variation="success"
|
||||
class="deltagare-signal__alert"
|
||||
>
|
||||
<p>
|
||||
Signalrapport för deltagare {{avrop.fullName}} är nu inskickad till Arbetsförmedlingen och inväntar
|
||||
godkännande.
|
||||
</p>
|
||||
<dl>
|
||||
<dt>Datum</dt>
|
||||
<dd>{{submittedDate | date:'longDate'}} kl {{submittedDate | date:'shortTime'}}</dd>
|
||||
</dl>
|
||||
</digi-notification-alert>
|
||||
<msfa-back-link [route]="['../']">Tillbaka till deltagaren</msfa-back-link>
|
||||
</div>
|
||||
|
||||
<div *ngIf="currentStep === 1">
|
||||
<h3 class="deltagare-signal__ersattning-heading">Har den sökande fått arbete eller påbörjat studier?</h3>
|
||||
<h4>Ange sysselsättning (obligatoriskt)</h4>
|
||||
<form [formGroup]="signalArbeteStudierFormGroup">
|
||||
<div class="deltagare-signal__ersattning">
|
||||
<digi-ng-form-radiobutton-group
|
||||
[afRadiobuttons]="ersattningsTypAlternatives"
|
||||
[formControlName]="ersattningsTypFormControlName"
|
||||
[afRequired]="true"
|
||||
></digi-ng-form-radiobutton-group>
|
||||
<digi-form-validation-message
|
||||
af-variation="error"
|
||||
*ngIf="ersattningsTypFormControl.invalid && (ersattningsTypFormControl.dirty || ersattningsTypFormControl.touched)"
|
||||
>
|
||||
Typ av sysselsättning är obligatoriskt
|
||||
</digi-form-validation-message>
|
||||
</div>
|
||||
<div class="deltagare-signal__input" *ngIf="partTimeIsSelected">
|
||||
<digi-ng-form-input
|
||||
afLabel="Antal procent vid deltid (valfritt)"
|
||||
afDescription
|
||||
[formControlName]="percentFormControlName"
|
||||
[afInvalid]="percentFormControl.invalid && (percentFormControl.dirty || percentFormControl.touched)"
|
||||
afType="number"
|
||||
[afInvalidMessage]="'Ange procent från 1 till 99'"
|
||||
></digi-ng-form-input>
|
||||
</div>
|
||||
|
||||
<div class="deltagare-signal__datepicker">
|
||||
<digi-ng-form-datepicker
|
||||
[formControlName]="dateFormControlName"
|
||||
afLabel="Välj startdatum för anställning/utbildning"
|
||||
[afDisableValidStyle]="true"
|
||||
[afMinDate]="setMinDate(avrop.startDate)"
|
||||
[afMaxDate]="setMaxDate(avrop.startDate)"
|
||||
></digi-ng-form-datepicker>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<msfa-deltagare-confirm-signal-form
|
||||
*ngIf="currentStep === totalAmountOfSteps"
|
||||
[formGroup]="signalArbeteStudierFormGroup"
|
||||
></msfa-deltagare-confirm-signal-form>
|
||||
|
||||
<div class="deltagare-signal__alert-wrapper">
|
||||
<digi-notification-alert
|
||||
*ngIf="error$ | async as error"
|
||||
af-heading="Någonting gick fel"
|
||||
af-variation="danger"
|
||||
class="deltagare-signal__alert"
|
||||
>
|
||||
<p>Kunde inte spara signalrapporten. Ladda om sidan och försök igen.</p>
|
||||
<p *ngIf="error.message" class="msfa__small-text">{{error.message}}</p>
|
||||
</digi-notification-alert>
|
||||
</div>
|
||||
|
||||
<div class="deltagare-signal__step-buttons-wrapper">
|
||||
<ng-container *ngIf="(submittedDate$ | async) === null">
|
||||
<digi-button
|
||||
(afOnClick)="previousStep()"
|
||||
*ngIf="currentStep > 1"
|
||||
af-size="m"
|
||||
af-variation="secondary"
|
||||
class="deltagare-signal__step-buttons-wrapper--space-right"
|
||||
>
|
||||
Tillbaka
|
||||
</digi-button>
|
||||
<digi-button (afOnClick)="openConfirmDialog = true" *ngIf="currentStep === totalAmountOfSteps" af-size="m">
|
||||
Skicka in
|
||||
</digi-button>
|
||||
</ng-container>
|
||||
<digi-button (afOnClick)="nextStep" *ngIf="currentStep === (totalAmountOfSteps -1)" af-size="m">
|
||||
Förhandsgranska
|
||||
</digi-button>
|
||||
</div>
|
||||
</msfa-report-layout>
|
||||
|
||||
<msfa-confirm-dialog
|
||||
[openConfirmDialog]="openConfirmDialog"
|
||||
reportToConfirm="signal om arbete eller studier"
|
||||
(confirmDialogChanged)="setConfirmDialogChanged($event)"
|
||||
>
|
||||
</msfa-confirm-dialog>
|
||||
</msfa-layout>
|
||||
<ng-template #skeletenRef>
|
||||
<digi-ng-skeleton-base [afCount]="3" afText="Laddar data för signal om arbete eller studier"></digi-ng-skeleton-base>
|
||||
</ng-template>
|
||||
@@ -0,0 +1,39 @@
|
||||
@import 'variables/gutters';
|
||||
|
||||
.deltagare-signal {
|
||||
&__confirmation,
|
||||
&__deltagare,
|
||||
&__ersattning,
|
||||
&__input,
|
||||
&__alert-wrapper,
|
||||
&__datepicker {
|
||||
max-width: var(--digi--typography--text--max-width);
|
||||
margin-bottom: $digi--layout--gutter--xl;
|
||||
}
|
||||
|
||||
&__input {
|
||||
width: 330px;
|
||||
}
|
||||
|
||||
&__ersattning-heading {
|
||||
font-size: var(--digi--typography--font-size--h3);
|
||||
}
|
||||
|
||||
&__step-buttons-wrapper--space-right {
|
||||
margin-right: var(--digi--layout--gutter--s);
|
||||
}
|
||||
|
||||
&__go-back {
|
||||
margin-right: $digi--layout--gutter;
|
||||
}
|
||||
|
||||
&__step-buttons-wrapper--space-right {
|
||||
margin-right: var(--digi--layout--gutter--s);
|
||||
}
|
||||
|
||||
&__alert {
|
||||
max-width: var(--digi--typography--text--max-width);
|
||||
margin-bottom: $digi--layout--gutter--xl;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { DeltagareSignalArbeteStudierComponent } from './deltagare-signal-arbete-studier.component';
|
||||
import { HttpClientTestingModule } from '@angular/common/http/testing';
|
||||
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||
import { ReactiveFormsModule } from '@angular/forms';
|
||||
import { RouterTestingModule } from '@angular/router/testing';
|
||||
import { LayoutComponent } from '@msfa-shared/components/layout/layout.component';
|
||||
import { DigiNgFormRadiobuttonGroupModule } from '@af/digi-ng/_form/form-radiobutton-group';
|
||||
|
||||
describe('DeltagareSignalArbeteStudierComponent', () => {
|
||||
let component: DeltagareSignalArbeteStudierComponent;
|
||||
let fixture: ComponentFixture<DeltagareSignalArbeteStudierComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||
declarations: [DeltagareSignalArbeteStudierComponent, LayoutComponent],
|
||||
imports: [RouterTestingModule, HttpClientTestingModule, ReactiveFormsModule, DigiNgFormRadiobuttonGroupModule],
|
||||
}).compileComponents();
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(DeltagareSignalArbeteStudierComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,140 @@
|
||||
import { RadiobuttonModel } from '@af/digi-ng/_form/form-radiobutton-group';
|
||||
import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
|
||||
import { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { ConfirmDialog } from '@msfa-enums/confirm-dialog.enum';
|
||||
import { ErrorType } from '@msfa-enums/error-type.enum';
|
||||
import { ErsattningsGrundTypKod, getErsattningsGrundTyp } from '@msfa-enums/ersattning-grund-typ-kod.enum';
|
||||
import { Avrop } from '@msfa-models/avrop.model';
|
||||
import { CustomError } from '@msfa-models/error/custom-error';
|
||||
import { SignalArbeteStudier } from '@msfa-models/signal-arbete-studier.model';
|
||||
import { DeltagareSignalArbeteStudierService } from '@msfa-services/api/deltagare-signal-arbete-studier.service';
|
||||
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
|
||||
import { RequiredValidator } from '@msfa-utils/validators/required.validator';
|
||||
import { add } from 'date-fns';
|
||||
import { BehaviorSubject, Observable } from 'rxjs';
|
||||
import { switchMap } from 'rxjs/operators';
|
||||
|
||||
@Component({
|
||||
selector: 'msfa-deltagare-signal-arbete-studier',
|
||||
templateUrl: './deltagare-signal-arbete-studier.component.html',
|
||||
styleUrls: ['./deltagare-signal-arbete-studier.component.scss'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class DeltagareSignalArbeteStudierComponent implements OnInit {
|
||||
readonly ersattningsTypFormControlName = 'ersattningsTyp';
|
||||
readonly dateFormControlName = 'date';
|
||||
readonly percentFormControlName = 'percent';
|
||||
|
||||
private _submittedDate$ = new BehaviorSubject<Date | null>(null);
|
||||
private _error$ = new BehaviorSubject<CustomError>(null);
|
||||
|
||||
submittedDate$ = this._submittedDate$.asObservable();
|
||||
error$ = this._error$.asObservable();
|
||||
totalAmountOfSteps = 2;
|
||||
currentStep = 1;
|
||||
openConfirmDialog = false;
|
||||
avrop$: Observable<Avrop>;
|
||||
signalArbeteStudierFormGroup: FormGroup | null = null;
|
||||
todayDate = new Date().toISOString().slice(0, 10);
|
||||
|
||||
ersattningsTypAlternatives: RadiobuttonModel[] = [
|
||||
{
|
||||
label: getErsattningsGrundTyp(ErsattningsGrundTypKod.ARBETE_HELTID),
|
||||
value: ErsattningsGrundTypKod.ARBETE_HELTID,
|
||||
},
|
||||
{
|
||||
label: getErsattningsGrundTyp(ErsattningsGrundTypKod.ARBETE_DELTID),
|
||||
value: ErsattningsGrundTypKod.ARBETE_DELTID,
|
||||
},
|
||||
{
|
||||
label: getErsattningsGrundTyp(ErsattningsGrundTypKod.UTBILDNING_HELTID),
|
||||
value: ErsattningsGrundTypKod.UTBILDNING_HELTID,
|
||||
},
|
||||
{
|
||||
label: getErsattningsGrundTyp(ErsattningsGrundTypKod.UTBILDNING_DELTID),
|
||||
value: ErsattningsGrundTypKod.UTBILDNING_DELTID,
|
||||
},
|
||||
];
|
||||
|
||||
constructor(
|
||||
private deltagareSignalArbeteStudierService: DeltagareSignalArbeteStudierService,
|
||||
private deltagareApiService: DeltagareApiService,
|
||||
private activatedRoute: ActivatedRoute
|
||||
) { }
|
||||
|
||||
ngOnInit(): void {
|
||||
this.avrop$ = this.activatedRoute.params.pipe(
|
||||
switchMap(({ genomforandeReferens }) => this.deltagareApiService.fetchAvropInformation$(genomforandeReferens))
|
||||
)
|
||||
|
||||
this.signalArbeteStudierFormGroup = new FormGroup({
|
||||
ersattningsTyp: new FormControl(null, [RequiredValidator()]),
|
||||
date: new FormControl(new Date().toLocaleDateString(), [Validators.required]),
|
||||
percent: new FormControl('', [Validators.min(1), Validators.max(99)])
|
||||
});
|
||||
}
|
||||
|
||||
setConfirmDialogChanged(confirm: ConfirmDialog): void {
|
||||
this.openConfirmDialog = false;
|
||||
if (confirm === ConfirmDialog.ACCEPTED) {
|
||||
const postSignalArbeteStudier: SignalArbeteStudier = {
|
||||
sokandeId: +this.activatedRoute.snapshot.params['genomforandeReferens'],
|
||||
ersattningsgrund: this.ersattningsTypFormControl.value as number,
|
||||
startDatum: this.dateFormControl.value as Date,
|
||||
antalProcent: +this.percentFormControl.value,
|
||||
};
|
||||
|
||||
this.deltagareSignalArbeteStudierService.createSignalArbeteStudier$(postSignalArbeteStudier)
|
||||
.then(() => {
|
||||
this._submittedDate$.next(new Date());
|
||||
this.signalArbeteStudierFormGroup.reset();
|
||||
this.currentStep = 3;
|
||||
})
|
||||
.catch((error: Error) => {
|
||||
this._error$.next(new CustomError({ error, message: error.message, type: ErrorType.API }));
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
get ersattningsTypFormControl(): AbstractControl | undefined {
|
||||
return this.signalArbeteStudierFormGroup?.get(this.ersattningsTypFormControlName);
|
||||
}
|
||||
get dateFormControl(): AbstractControl | undefined {
|
||||
return this.signalArbeteStudierFormGroup?.get(this.dateFormControlName);
|
||||
}
|
||||
get percentFormControl(): AbstractControl | undefined {
|
||||
return this.signalArbeteStudierFormGroup?.get(this.percentFormControlName);
|
||||
}
|
||||
|
||||
get nextStep(): number {
|
||||
console.log(this.signalArbeteStudierFormGroup);
|
||||
|
||||
this.signalArbeteStudierFormGroup.markAllAsTouched();
|
||||
if (this.signalArbeteStudierFormGroup.valid && this.currentStep < this.totalAmountOfSteps) {
|
||||
return this.currentStep++;
|
||||
}
|
||||
}
|
||||
|
||||
get partTimeIsSelected(): boolean {
|
||||
return +this.ersattningsTypFormControl.value === ErsattningsGrundTypKod.ARBETE_DELTID ||
|
||||
+this.ersattningsTypFormControl.value === ErsattningsGrundTypKod.UTBILDNING_DELTID;
|
||||
}
|
||||
|
||||
setMinDate(startdatumAvrop: Date): Date {
|
||||
return new Date(startdatumAvrop);
|
||||
}
|
||||
|
||||
setMaxDate(startdatumAvrop: Date): Date {
|
||||
return add(new Date(startdatumAvrop), { months: 10, days: 1 });
|
||||
}
|
||||
|
||||
previousStep(): void {
|
||||
if (this.currentStep > 1) {
|
||||
this.currentStep--;
|
||||
this._submittedDate$.next(null);
|
||||
this._error$.next(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
import { DigiNgFormDatepickerModule } from '@af/digi-ng/_form/form-datepicker';
|
||||
import { DigiNgFormInputModule } from '@af/digi-ng/_form/form-input';
|
||||
import { DigiNgFormRadiobuttonGroupModule } from '@af/digi-ng/_form/form-radiobutton-group';
|
||||
import { DigiNgFormTextareaModule } from '@af/digi-ng/_form/form-textarea';
|
||||
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
||||
import { ReactiveFormsModule } from '@angular/forms';
|
||||
import { RouterModule } from '@angular/router';
|
||||
import { BackLinkModule } from '@msfa-shared/components/back-link/back-link.module';
|
||||
import { ConfirmDialogModule } from '@msfa-shared/components/confirm-dialog/confirm-dialog.module';
|
||||
import { LayoutModule } from '@msfa-shared/components/layout/layout.module';
|
||||
import { ReportLayoutModule } from '../components/report-layout/report-layout.module';
|
||||
import { DeltagareConfirmSignalFormModule } from './components/deltagare-confirm-signal-form/deltagare-confirm-signal-form.module';
|
||||
import { DeltagareSignalArbeteStudierComponent } from './deltagare-signal-arbete-studier.component';
|
||||
|
||||
@NgModule({
|
||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||
declarations: [DeltagareSignalArbeteStudierComponent],
|
||||
imports: [
|
||||
CommonModule,
|
||||
RouterModule.forChild([{ path: '', component: DeltagareSignalArbeteStudierComponent }]),
|
||||
LayoutModule,
|
||||
ReactiveFormsModule,
|
||||
DigiNgFormRadiobuttonGroupModule,
|
||||
DigiNgFormDatepickerModule,
|
||||
DigiNgFormTextareaModule,
|
||||
DigiNgFormInputModule,
|
||||
DeltagareConfirmSignalFormModule,
|
||||
ReportLayoutModule,
|
||||
ConfirmDialogModule,
|
||||
DigiNgSkeletonBaseModule,
|
||||
BackLinkModule
|
||||
],
|
||||
exports: [DeltagareSignalArbeteStudierComponent],
|
||||
})
|
||||
export class DeltagareSignalArbeteStudierModule { }
|
||||
@@ -0,0 +1,19 @@
|
||||
export enum ErsattningsGrundTypKod {
|
||||
ARBETE_HELTID = 1,
|
||||
ARBETE_DELTID = 2,
|
||||
UTBILDNING_HELTID = 3,
|
||||
UTBILDNING_DELTID = 4,
|
||||
}
|
||||
|
||||
export function getErsattningsGrundTyp(kod: number): string {
|
||||
switch (kod) {
|
||||
case 1:
|
||||
return 'Arbete heltid';
|
||||
case 2:
|
||||
return 'Arbete deltid';
|
||||
case 3:
|
||||
return 'Utbildning heltid';
|
||||
case 4:
|
||||
return 'Utbildning deltid'
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { ErsattningsGrundTypKod } from '../enums/ersattning-grund-typ-kod.enum';
|
||||
|
||||
export interface SignalArbeteStudier {
|
||||
sokandeId: number;
|
||||
ersattningsgrund: ErsattningsGrundTypKod;
|
||||
antalProcent?: number;
|
||||
startDatum: Date;
|
||||
}
|
||||
|
||||
export interface SignalArbeteStudierRequestData {
|
||||
sokandeId: number;
|
||||
ersattningsgrund: ErsattningsGrundTypKod;
|
||||
antalProcent?: number;
|
||||
startDatum: Date;
|
||||
}
|
||||
|
||||
export function mapSignalArbeteStudierRequestDataToReport(data: SignalArbeteStudierRequestData): SignalArbeteStudier {
|
||||
const { sokandeId, ersattningsgrund, antalProcent, startDatum } = data;
|
||||
|
||||
return {
|
||||
sokandeId,
|
||||
ersattningsgrund,
|
||||
antalProcent,
|
||||
startDatum,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { SignalArbeteStudier } from '@msfa-models/signal-arbete-studier.model';
|
||||
import { SignalArbeteStudierApiService } from '@msfa-services/api/signal-arbete-studier-api.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class DeltagareSignalArbeteStudierService {
|
||||
constructor(private signalArbeteStudierApiService: SignalArbeteStudierApiService) { }
|
||||
|
||||
public createSignalArbeteStudier$(signalArbeteStudier: SignalArbeteStudier): Promise<void> {
|
||||
return this.signalArbeteStudierApiService.createSignalArbeteStudier$(signalArbeteStudier);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { environment } from '@msfa-environment';
|
||||
import { SignalArbeteStudier } from '@msfa-models/signal-arbete-studier.model';
|
||||
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class SignalArbeteStudierApiService {
|
||||
private _apiBaseUrl = `${environment.api.url}`;
|
||||
|
||||
public createSignalArbeteStudier$(signalArbeteStudier: SignalArbeteStudier): Promise<void> {
|
||||
return this.httpClient.post<void>(`${this._apiBaseUrl}/signal`, signalArbeteStudier).toPromise();
|
||||
}
|
||||
|
||||
constructor(private httpClient: HttpClient) { }
|
||||
}
|
||||
Reference in New Issue
Block a user