From 454699b78571e98d924a9242f30fcf8325a51621 Mon Sep 17 00:00:00 2001 From: Nicolas Fuentes Maturana Date: Thu, 23 Sep 2021 09:20:11 +0200 Subject: [PATCH] =?UTF-8?q?feat(avvikelserapport):=20implementerat=20repor?= =?UTF-8?q?t=20layout=20f=C3=B6r=20avvikelserapport.=20TV-667?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Squashed commit of the following: commit 4ef5359297295bce54df281081c3f44f690cadab Author: fueno Date: Thu Sep 23 09:11:15 2021 +0200 TV-667 changed names, cleanup commit 4e2354ee25a11543b22ac74783989110cbc3c788 Author: fueno Date: Thu Sep 23 08:50:52 2021 +0200 TV-667 removed unused enum commit fb393aa61617892f9ebe8af67963aa9ed21d391e Author: fueno Date: Thu Sep 23 08:20:09 2021 +0200 TV-667 removed test api url commit aadf97ef0d05915a72bdc1c95df10f8d8d932e2c Author: fueno Date: Thu Sep 23 08:09:13 2021 +0200 TV-667 show dynamic name for notification alert commit e5453f0f5ee3fb9706817cd208f797688fb453f7 Author: fueno Date: Thu Sep 23 00:25:10 2021 +0200 TV-667 restructoring report layout commit f68e5bf2675dee5e8ae7c0d06f24389d8efddf25 Author: fueno Date: Wed Sep 22 17:40:49 2021 +0200 TV-667 updated path for report layout module commit d2273a38304a457b3015dd086e93fc7d8d0d07ea Merge: c9da568 3f7663a Author: fueno Date: Wed Sep 22 17:38:14 2021 +0200 Merge branch 'feature/TV-633' into feature/TV-667 commit c9da568ecc950718f7d1f9d28e80ae18ebbf0994 Author: fueno Date: Wed Sep 22 17:30:43 2021 +0200 TV-667 implementerat report layout i avvikelserapporten commit 3f7663a48b2f556c36752ab443754070136f2d6e Author: fueno Date: Wed Sep 22 16:46:44 2021 +0200 TV-633 confirm dialog for reports commit 32c1d194e9266100e70f5440b6bc62e40ed05d9d Author: fueno Date: Tue Sep 21 18:02:01 2021 +0200 TV-633 delete previous version commit b8fde47a4cc3c8e7e372eaa600f8ddd92a39b7a0 Author: fueno Date: Tue Sep 21 17:57:22 2021 +0200 TV-633 generic confirm dialog component commit f0d34d639c8c91833cdfb82a42775ec0744573dc Merge: df27008 5846c2c Author: fueno Date: Tue Sep 21 17:22:48 2021 +0200 Merge branch 'develop' into feature/TV-633 commit df270080a361a052a186bbfc1f7e9a36804d4e9d Merge: 7ff69bf fc6551a Author: fueno Date: Tue Sep 21 15:06:08 2021 +0200 Merge remote-tracking branch 'origin/feature/TV-634-reports-layout' into feature/TV-633 commit fc6551a1101f448544bccb62c6272d105dd1e0a4 Merge: e3f7204 2dd9d3d Author: Aden Hassan Date: Tue Sep 21 13:32:01 2021 +0200 Merge branch 'develop' into feature/TV-634-reports-layout commit e3f72043c68c326b7f1adc8bd85f993a4b2aafff Author: Aden Hassan Date: Tue Sep 21 12:46:00 2021 +0200 minor adjustments according to feedback commit 7ff69bf5534ad4d96c838ac4969dddd222ccbd5c Author: fueno Date: Tue Sep 21 10:13:17 2021 +0200 TV-633 Confirm Report Modal created commit 6ef20a3b5074bcf06a84a7de4fded08cbe1e0026 Author: Aden Hassan Date: Mon Sep 20 21:55:38 2021 +0200 added minor changes to default steps (TV-634) commit 4835e8f48da04432505cc5225cc57a1763fcdd60 Author: Aden Hassan Date: Mon Sep 20 21:47:23 2021 +0200 added output-event to send event from skicka in button (TV-634) commit f01a87dfe099514529ed641c85007986f98b9ea8 Merge: 1a4bdfc e120e50 Author: Aden Hassan Date: Mon Sep 20 19:49:26 2021 +0200 Merge branch 'develop' into feature/TV-634-reports-layout commit 1a4bdfc1684a36a168371d74d90ea2d41060af0e Author: Aden Hassan Date: Mon Sep 20 19:48:21 2021 +0200 created basic layout modul for all reports (TV-634 and TV-624) --- .../deltagare-confirm-form.component.html | 56 +++++ .../deltagare-confirm-form.component.scss | 10 + .../deltagare-confirm-form.component.spec.ts | 25 ++ .../deltagare-confirm-form.component.ts | 17 ++ .../deltagare-confirm-form.module.ts | 15 ++ .../deltagare-fragor-form.component.html | 2 +- .../deltagare-avvikelse.component.html | 217 ++++++++++-------- .../deltagare-avvikelse.component.scss | 4 +- .../deltagare-avvikelse.component.ts | 100 ++++---- .../deltagare-avvikelse.module.ts | 10 +- .../confirm-dialog.component.html | 14 ++ .../confirm-dialog.component.scss | 0 .../confirm-dialog.component.spec.ts | 29 +++ .../confirm-dialog.component.ts | 25 ++ .../confirm-dialog/confirm-dialog.module.ts | 14 ++ .../report-layout.component.html | 132 ++++++----- .../report-layout.component.scss | 7 +- .../report-layout/report-layout.component.ts | 37 ++- .../app/shared/enums/confirm-dialog.enum.ts | 4 + .../shared/enums/franvaro-orsak-kod.enum.ts | 4 +- .../src/app/shared/enums/report-type.enum.ts | 4 - .../models/orsaks-koder-franvaro.model.ts | 5 +- 22 files changed, 514 insertions(+), 217 deletions(-) create mode 100644 apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.html create mode 100644 apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.scss create mode 100644 apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.spec.ts create mode 100644 apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.ts create mode 100644 apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.module.ts create mode 100644 apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.html create mode 100644 apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.scss create mode 100644 apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.spec.ts create mode 100644 apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.ts create mode 100644 apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.module.ts create mode 100644 apps/mina-sidor-fa/src/app/shared/enums/confirm-dialog.enum.ts delete mode 100644 apps/mina-sidor-fa/src/app/shared/enums/report-type.enum.ts diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.html new file mode 100644 index 0000000..3dc1935 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.html @@ -0,0 +1,56 @@ +
+

Vad är det du vill rapportera?

+

{{ formGroup?.get('alternative').value === 'franvaro' ? 'Frånvaro' : 'Avvikelse'}}

+ + +

Frånvaroorsak

+ +

{{orsak.name}}

+
+ + +

Annan känd orsak

+ +

+ {{annanKandOrsak.name}} +

+
+
+ + +

Beskrivning

+

{{formGroup?.get('description').value}}

+
+ +

Datum

+

{{formGroup?.get('date').value}}

+

Hel- eller del av dag

+

{{formGroup.get('dayOrPartOfDay').value === 'HELDAG' ? 'Heldag' : 'Del av dag'}}

+ + +

Startid

+

{{formGroup?.get('timepickerFormGroup').get('startTime').value}}

+ +

Sluttid

+

{{formGroup?.get('timepickerFormGroup').get('endTime').value}}

+
+
+ + +

Avvikelseoorsak

+ +

{{orsak.name}}

+
+ +

Fråga 1

+

{{formGroup?.get('fragorFormGroup').get('fraga1').value}}

+ + +

Fråga 2

+

{{formGroup?.get('fragorFormGroup').get('fraga2').value}}

+
+ +

Datum

+

{{formGroup?.get('date').value}}

+
+
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.scss b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.scss new file mode 100644 index 0000000..03ad032 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.scss @@ -0,0 +1,10 @@ +@import 'variables/gutters'; + +.deltagare-confirm { + margin-bottom: $digi--layout--gutter--xl; + + &__header { + font-size: var(--digi--typography--font-size--l); + margin: 0; + } +} diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.spec.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.spec.ts new file mode 100644 index 0000000..37d62ed --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeltagareConfirmFormComponent } from './deltagare-confirm-form.component'; + +describe('DeltagareConfirmFormComponent', () => { + let component: DeltagareConfirmFormComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DeltagareConfirmFormComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DeltagareConfirmFormComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.ts new file mode 100644 index 0000000..796138f --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.component.ts @@ -0,0 +1,17 @@ +import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { OrsaksKoderAvvikelse } from '@msfa-models/orsaks-koder-avvikelse.model'; +import { KandaAvvikelseKoder, OrsaksKoderFranvaro } from '@msfa-models/orsaks-koder-franvaro.model'; + +@Component({ + selector: 'msfa-deltagare-confirm-form', + templateUrl: './deltagare-confirm-form.component.html', + styleUrls: ['./deltagare-confirm-form.component.scss'], + changeDetection: ChangeDetectionStrategy.Default +}) +export class DeltagareConfirmFormComponent { + @Input() formGroup: FormGroup | null = null; + @Input() orsakskoderfranvaro: OrsaksKoderFranvaro[]; + @Input() andraKandaOrsaker: KandaAvvikelseKoder[]; + @Input() avvikelseOrsaker: OrsaksKoderAvvikelse[]; +} diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.module.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.module.ts new file mode 100644 index 0000000..9848b0c --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-confirm-form/deltagare-confirm-form.module.ts @@ -0,0 +1,15 @@ +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { DeltagareConfirmFormComponent } from './deltagare-confirm-form.component'; + + + +@NgModule({ + schemas: [CUSTOM_ELEMENTS_SCHEMA], + declarations: [DeltagareConfirmFormComponent], + imports: [ + CommonModule + ], + exports: [DeltagareConfirmFormComponent] +}) +export class DeltagareConfirmFormModule { } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-fragor-form/deltagare-fragor-form.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-fragor-form/deltagare-fragor-form.component.html index 1ce221a..77ebb16 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-fragor-form/deltagare-fragor-form.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/components/deltagare-fragor-form/deltagare-fragor-form.component.html @@ -18,7 +18,7 @@ -
+
-
- -

Rapport

-

- Här rapporterar du deltagarens frånvaro och eventuella misskötsel i tjänsten. Rapportering via avvikelserapport - ska också ske om tjänsten inte fungerar för deltagaren. -

-

Skapa rapport

-
-

Deltagare: {{contactInformation.fornamn + ' ' + contactInformation.efternamn}}

-

Personnummer: {{contactInformation.personnummer}}

-
-
-

Vad är det du vill rapportera?

-
-
- + + +

Vad är det du vill rapportera?

+ +
+ + + Alternativ är obligatoriskt + +
+ + + + +
+ - Alternativ är obligatoriskt + Beskrivning är obligatoriskt
- + + + + [selectedOrsaksKod]="selectedOrsaksKod" + > +
- -
- - - Beskrivning är obligatoriskt - -
-
+
+ + + {{avvikelseFormGroup.errors?.dateIsRequired}} + +
- - - +
+ +
-
- - - {{avvikelseFormGroup.errors?.dateIsRequired}} - -
+ + + + +
-
- -
- - - + +
+ + - Tillbaka + Tillbaka + + + + Skicka in + + + + Förhandsgranska + + + Tillbaka till deltagaren + +
+
- Nästa - -
- -
+ + diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/deltagare-avvikelse.component.scss b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/deltagare-avvikelse.component.scss index 020d530..9ff59e7 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/deltagare-avvikelse.component.scss +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/deltagare-avvikelse.component.scss @@ -22,7 +22,7 @@ font-size: var(--digi--typography--font-size--h3); } - &__go-back { - margin-right: $digi--layout--gutter; + &__step-buttons-wrapper--space-right { + margin-right: var(--digi--layout--gutter--s); } } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/deltagare-avvikelse.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/deltagare-avvikelse.component.ts index 81343bf..f04f376 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/deltagare-avvikelse.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/deltagare-avvikelse.component.ts @@ -4,6 +4,7 @@ import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; import { AbstractControl, FormControl, FormGroup } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; import { Alternative } from '@msfa-enums/alternative.enum'; +import { ConfirmDialog } from '@msfa-enums/confirm-dialog.enum'; import { DayOrPartOfDay } from '@msfa-enums/day-or-part-of-day.enum'; import { FranvaroOrsaksKodEnum } from '@msfa-enums/franvaro-orsak-kod.enum'; import { KandaOrsakerEnum } from '@msfa-enums/kanda-orsaker-kod.enum'; @@ -15,17 +16,17 @@ import { FranvaroAlternativ } from '@msfa-models/franvaro-alternativ.model'; import { OrsaksKoderAvvikelse } from '@msfa-models/orsaks-koder-avvikelse.model'; import { KandaAvvikelseKoder, OrsaksKoderFranvaro } from '@msfa-models/orsaks-koder-franvaro.model'; import { - OrsakerIsRequiredCheck, AnnanKandOrsakeIsRequiredCheck, - DescriptionIsRequiredCheck, DateIsRequiredCheck, DayOrPartOfDayIsRequiredCheck, - StartTimeIsRequiredCheck, + DescriptionIsRequiredCheck, EndTimeIsRequiredCheck, - MotiveringIsRequiredCheck + MotiveringIsRequiredCheck, + OrsakerIsRequiredCheck, + StartTimeIsRequiredCheck } from '@msfa-utils/validators/avvikelse-form-validator'; import { RequiredValidator } from '@msfa-utils/validators/required.validator'; -import { Observable } from 'rxjs'; +import { BehaviorSubject, Observable } from 'rxjs'; import { first, map, switchMap } from 'rxjs/operators'; import { DeltagareAvvikelseService } from '../../services/deltagare-avvikelse.service'; import { avvikelseAlternatives, dayOrPartOfDay } from './report-alternatives'; @@ -48,6 +49,9 @@ export class DeltagareAvvikelseComponent implements OnInit { readonly startTimeFormControlName = 'startTime'; readonly endTimeFormControlName = 'endTime'; + private _showSuccessNotification$ = new BehaviorSubject(false); + private _showDangerNotification$ = new BehaviorSubject(false); + contactInformation$: Observable = this.activatedRoute.params .pipe( switchMap(({ deltagareId }) => this.deltagareAvvikelseService.getContactInformationCompact$(deltagareId)) @@ -64,12 +68,16 @@ export class DeltagareAvvikelseComponent implements OnInit { dayOrPartOfDay: RadiobuttonModel[] = dayOrPartOfDay; selectedOrsaksKod: string; avvikelseFormGroup: FormGroup | null = null; + totalAmountOfSteps = 2; + currentStep = 1; + openConfirmDialog = false; + showSuccessNotification$ = this._showSuccessNotification$.asObservable(); + showDangerNotification$ = this._showDangerNotification$.asObservable(); constructor( private deltagareAvvikelseService: DeltagareAvvikelseService, - private activatedRoute: ActivatedRoute, - private router: Router) { - } + private router: Router, + private activatedRoute: ActivatedRoute) { } ngOnInit(): void { this.contactInformation$ @@ -152,34 +160,32 @@ export class DeltagareAvvikelseComponent implements OnInit { return this.avvikelseFormGroup.get('timepickerFormGroup').get(this.endTimeFormControlName); } - onFormSubmitted(): void { - if (this.avvikelseFormGroup.invalid) { - this.alternativeFormControl.markAsTouched(); - return; + setConfirmDialogChanged(confirm: ConfirmDialog): void { + this.openConfirmDialog = false; + if (confirm === ConfirmDialog.ACCEPTED) { + const postAvvikelse: Avvikelse = { + datum_for_rapportering: this.todayDate, + arbetssokande: { + personnummer: this.contactInformation.personnummer.toString(), + fornamn: this.contactInformation.fornamn.toString(), + efternamn: this.contactInformation.efternamn.toString() + }, + sokandeId: +this.activatedRoute.snapshot.params['deltagareId'] + } + + if (this.alternativeFormControl.value as string === Alternative.AVVIKELSE) { + postAvvikelse['avvikelsealternativ'] = this.avvikelse; + } else if (this.alternativeFormControl.value as string == Alternative.FRANVARO) { + postAvvikelse['franvaro'] = this.franvaro; + } + + this.deltagareAvvikelseService.createAvvikelse$(postAvvikelse, this.alternativeFormControl.value as string) + .subscribe({ + error: () => this._showDangerNotification$.next(true), + next: () => this._showSuccessNotification$.next(true), + complete: () => this.avvikelseFormGroup.reset() + }); } - - this.avvikelseFormGroup.markAllAsTouched(); - - const postAvvikelse: Avvikelse = { - datum_for_rapportering: this.todayDate, - arbetssokande: { - personnummer: this.contactInformation.personnummer.toString(), - fornamn: this.contactInformation.fornamn.toString(), - efternamn: this.contactInformation.efternamn.toString() - }, - sokandeId: +this.activatedRoute.snapshot.params['deltagareId'] - } - - if (this.alternativeFormControl.value as string === Alternative.AVVIKELSE) { - postAvvikelse['avvikelsealternativ'] = this.avvikelse; - } else if (this.alternativeFormControl.value as string == Alternative.FRANVARO) { - postAvvikelse['franvaro'] = this.franvaro; - } - - this.deltagareAvvikelseService.createAvvikelse$(postAvvikelse, this.alternativeFormControl.value as string) - .subscribe({ - next: () => this.avvikelseFormGroup.reset() - }); } get franvaro(): FranvaroAlternativ { @@ -218,7 +224,6 @@ export class DeltagareAvvikelseComponent implements OnInit { } } - setAlternative(): void { if (this.alternativeFormControl.value as string == Alternative.FRANVARO) { this.franvaroOrsaker$ = this.deltagareAvvikelseService.getOrsaksKoderFranvaro$(); @@ -293,6 +298,25 @@ export class DeltagareAvvikelseComponent implements OnInit { this.dayOrPartOfDayFormControl.value as string === DayOrPartOfDay.DEL_AV_DAG } + get nextStep(): number { + this.avvikelseFormGroup.markAllAsTouched(); + if (this.avvikelseFormGroup.valid && this.currentStep < this.totalAmountOfSteps) { + return this.currentStep++; + } + } + + previousStep(): void { + if (this.currentStep > 1) { + this.currentStep--; + this._showSuccessNotification$.next(false); + this._showDangerNotification$.next(false); + } + } + + backToDeltagare(): void { + void this.router.navigate(['./deltagare', this.activatedRoute.snapshot.params['deltagareId']]); + } + private clearControlOnAlternativeChange(): void { this.descriptionFormControl.setValue(''); this.fraga1FormControl.setValue(''); @@ -301,8 +325,4 @@ export class DeltagareAvvikelseComponent implements OnInit { this.avvikelseFormGroup?.get('timepickerFormGroup').reset(); } - goBack(): void { - void this.router.navigate(['./deltagare', this.activatedRoute.snapshot.params['deltagareId']]); - } - } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/deltagare-avvikelse.module.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/deltagare-avvikelse.module.ts index 2a8ca3c..a0379d1 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/deltagare-avvikelse.module.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/deltagare-avvikelse/deltagare-avvikelse.module.ts @@ -1,11 +1,15 @@ import { DigiNgFormDatepickerModule } from '@af/digi-ng/_form/form-datepicker'; import { DigiNgFormRadiobuttonGroupModule } from '@af/digi-ng/_form/form-radiobutton-group'; import { DigiNgFormTextareaModule } from '@af/digi-ng/_form/form-textarea'; +import { DigiNgProgressProgressbarModule } from '@af/digi-ng/_progress/progressbar'; import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { ReactiveFormsModule } from '@angular/forms'; import { RouterModule } from '@angular/router'; import { LayoutModule } from '@msfa-shared/components/layout/layout.module'; +import { ConfirmDialogModule } from '../../../../shared/confirm-dialog/confirm-dialog.module'; +import { ReportLayoutModule } from '../../../../shared/report-layout/report-layout.module'; +import { DeltagareConfirmFormModule } from './components/deltagare-confirm-form/deltagare-confirm-form.module'; import { DeltagareFragorFormModule } from './components/deltagare-fragor-form/deltagare-fragor-form.module'; import { DeltagareOrsaksFormModule } from './components/deltagare-orsaks-form/deltagare-orsaks-form.module'; import { DeltagareTimePickerModule } from './components/deltagare-time-picker/deltagare-time-picker.module'; @@ -23,9 +27,13 @@ import { DeltagareAvvikelseComponent } from './deltagare-avvikelse.component'; DigiNgFormRadiobuttonGroupModule, DigiNgFormDatepickerModule, DigiNgFormTextareaModule, + DigiNgProgressProgressbarModule, DeltagareOrsaksFormModule, DeltagareFragorFormModule, - DeltagareTimePickerModule + DeltagareTimePickerModule, + DeltagareConfirmFormModule, + ReportLayoutModule, + ConfirmDialogModule ], exports: [DeltagareAvvikelseComponent] }) diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.html new file mode 100644 index 0000000..ecd8938 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.html @@ -0,0 +1,14 @@ + +

Är du säker på att du vill skicka in en {{itemToConfirm}}?

+
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.scss b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.spec.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.spec.ts new file mode 100644 index 0000000..8d7c5c6 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.spec.ts @@ -0,0 +1,29 @@ +import { DigiNgDialogModule } from '@af/digi-ng/_dialog/dialog'; +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ConfirmDialogComponent } from './confirm-dialog.component'; + + +describe('DeltagareCreateAvvikelseComponent', () => { + let component: ConfirmDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + schemas: [CUSTOM_ELEMENTS_SCHEMA], + declarations: [ConfirmDialogComponent], + imports: [DigiNgDialogModule] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ConfirmDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.ts new file mode 100644 index 0000000..c25e50e --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.component.ts @@ -0,0 +1,25 @@ +import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; +import { ConfirmDialog } from '@msfa-enums/confirm-dialog.enum'; + +@Component({ + selector: 'msfa-confirm-dialog', + templateUrl: './confirm-dialog.component.html', + styleUrls: ['./confirm-dialog.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ConfirmDialogComponent { + @Input() openConfirmDialog: boolean; + @Input() itemToConfirm: string; + @Output() confirmDialogChanged = new EventEmitter(); + + sendRequest(): void { + this.openConfirmDialog = false; + this.confirmDialogChanged.emit(ConfirmDialog.ACCEPTED); + } + + closeConfirmDialog(): void { + this.openConfirmDialog = false; + this.confirmDialogChanged.emit(ConfirmDialog.DISMISSED); + } + +} diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.module.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.module.ts new file mode 100644 index 0000000..21b49e2 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/confirm-dialog/confirm-dialog.module.ts @@ -0,0 +1,14 @@ +import { DigiNgDialogModule } from '@af/digi-ng/_dialog/dialog'; +import { CommonModule } from '@angular/common'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { ConfirmDialogComponent } from './confirm-dialog.component'; + + + +@NgModule({ + schemas: [CUSTOM_ELEMENTS_SCHEMA], + declarations: [ConfirmDialogComponent], + imports: [CommonModule, DigiNgDialogModule], + exports: [ConfirmDialogComponent] +}) +export class ConfirmDialogModule { } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.html index bd3e913..751cf95 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.html @@ -1,58 +1,82 @@
- -

{{ reportTitle }}

-

{{description}}

-
-

{{reportSubTitle}}

-
{{contactInformation.fornamn + ' ' + contactInformation.efternamn}}
-
- Personnummer: - -
- Tjänst: KROM - - Startdatum: {{startDate}} - Slutdatum: {{endDate}} - - Avser period: {{startDate}} - {{endDate}} -
+ +

{{ reportTitle }}

+

{{description}}

+
+

{{reportSubTitle}}

+
{{contactInformation.fornamn + ' ' + contactInformation.efternamn}}
+
+ Personnummer: + +
+ Tjänst: KROM + + Startdatum: {{startDate}} + Slutdatum: {{endDate}} + + Avser period: {{startDate}} - {{endDate}} +
- +
+ +

Din {{reportName}} är nu inskickad till Arbetsförmedlingen.

+
-
- -
+ +

Vi kunde inte skicka in din {{reportName}}.

+
+
-
- - - Tillbaka - - - - - Nästa - - - - - Förhandsgranska - - - - - Skicka in - - -
-
-
\ No newline at end of file + + +
+ +
+ + + + diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.scss b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.scss index d15c95a..a9428e1 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.scss +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.scss @@ -1,8 +1,5 @@ @import 'variables/gutters'; .report-layout { - &__description { - } - &____name { margin-top: 0; font-size: var(--digi--typography--font-size--s); @@ -25,6 +22,10 @@ margin-left: var(--digi--layout--gutter--s); } + &__notification-alert { + margin-bottom: $digi--layout--gutter--xl; + } + &__main-content { margin: $digi--layout--gutter--xl 0; } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.ts index bbee51f..1a6dcf0 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.ts @@ -1,5 +1,6 @@ -import { Component, ChangeDetectionStrategy, Input, EventEmitter, Output } from '@angular/core'; -import { ActivatedRoute } from '@angular/router'; +import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; import { ContactInformationCompact } from '@msfa-models/api/contact-information.response.model'; import { Observable } from 'rxjs'; import { switchMap } from 'rxjs/operators'; @@ -22,36 +23,50 @@ export class ReportLayoutComponent { @Input() isPeriodDate = false; @Input() totalAmountOfSteps = 3; @Input() currentStep = 1; + @Input() form: FormGroup | null = null; + @Input() reportName: string; + @Input() showSuccessNotification = false; + @Input() showDangerNotification = false; @Output() currentStepEvent = new EventEmitter(); @Output() sendRequestEvent = new EventEmitter(); contactInformation$: Observable = this.activatedRoute.params - .pipe( - switchMap(({ deltagareId }) => this.deltagareAvvikelseService.getContactInformationCompact$(deltagareId)) - ); + .pipe( + switchMap(({ deltagareId }) => this.deltagareAvvikelseService.getContactInformationCompact$(deltagareId)) + ); constructor( private deltagareAvvikelseService: DeltagareAvvikelseService, private activatedRoute: ActivatedRoute, + private router: Router ) { } - nextStep():void { - if(this.currentStep < this.totalAmountOfSteps) { + nextStep(): void { + console.log(this.form); + + if (this.form.valid && this.currentStep < this.totalAmountOfSteps) { this.currentStep++; this.currentStepEvent.emit(this.currentStep); } + this.form.markAllAsTouched(); } - previousStep():void { - if(this.currentStep > 1) { + previousStep(): void { + if (this.currentStep > 1) { this.currentStep--; this.currentStepEvent.emit(this.currentStep); + this.showSuccessNotification = false; + this.showDangerNotification = false; } - this.currentStep !== this.totalAmountOfSteps ? this.sendRequestEvent.emit(false): null; + this.currentStep !== this.totalAmountOfSteps ? this.sendRequestEvent.emit(false) : null; } - sendRequest():void { + sendRequest(): void { this.sendRequestEvent.emit(true); } + backToDeltagare(): void { + void this.router.navigate(['./deltagare', this.activatedRoute.snapshot.params['deltagareId']]); + } + } diff --git a/apps/mina-sidor-fa/src/app/shared/enums/confirm-dialog.enum.ts b/apps/mina-sidor-fa/src/app/shared/enums/confirm-dialog.enum.ts new file mode 100644 index 0000000..cf78972 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/shared/enums/confirm-dialog.enum.ts @@ -0,0 +1,4 @@ +export enum ConfirmDialog { + ACCEPTED = 'ACCEPTED', + DISMISSED = 'DISMISSED' +} diff --git a/apps/mina-sidor-fa/src/app/shared/enums/franvaro-orsak-kod.enum.ts b/apps/mina-sidor-fa/src/app/shared/enums/franvaro-orsak-kod.enum.ts index 052b43a..7b2ffe3 100644 --- a/apps/mina-sidor-fa/src/app/shared/enums/franvaro-orsak-kod.enum.ts +++ b/apps/mina-sidor-fa/src/app/shared/enums/franvaro-orsak-kod.enum.ts @@ -3,6 +3,6 @@ export enum FranvaroOrsaksKodEnum { Arbete = 16, OkandOrsak = 17, AnnanKandOrsak = 18, - VAB = 26, - Utbildning = 27, + VAB = 23, + Utbildning = 24, } diff --git a/apps/mina-sidor-fa/src/app/shared/enums/report-type.enum.ts b/apps/mina-sidor-fa/src/app/shared/enums/report-type.enum.ts deleted file mode 100644 index eaed2bd..0000000 --- a/apps/mina-sidor-fa/src/app/shared/enums/report-type.enum.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum ReportType { - AVVIKELSERAPPORT = 'Avvikelserapport', - OKAND = 'Okänd', -} diff --git a/apps/mina-sidor-fa/src/app/shared/models/orsaks-koder-franvaro.model.ts b/apps/mina-sidor-fa/src/app/shared/models/orsaks-koder-franvaro.model.ts index 45700c9..38ae8bb 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/orsaks-koder-franvaro.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/orsaks-koder-franvaro.model.ts @@ -1,11 +1,10 @@ -import { AvvikelseOrsaksKodEnum } from '@msfa-enums/avvikelse-orsak-kod.enum'; -import { KandaOrsakerEnum } from '@msfa-enums/kanda-orsaker-kod.enum'; +import { FranvaroOrsaksKodEnum } from '@msfa-enums/franvaro-orsak-kod.enum'; import { KandaAvvikelseKoderResponse } from './api/kanda-avvikelse-koder.response.model'; import { OrsaksKoderFranvaroResponse } from './api/orsaks-koder-franvaro.response.model'; export interface OrsaksKoderFranvaro { name: string; - value: AvvikelseOrsaksKodEnum | KandaOrsakerEnum; + value: FranvaroOrsaksKodEnum; state: number; index?: number; }