diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.ts b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.ts
index f6a2987..34b0675 100644
--- a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.ts
+++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.ts
@@ -1,4 +1,4 @@
-import { ButtonSize, ButtonType, ButtonVariation } from '@af/digi-ng/_button/button';
+import { ButtonSize, ButtonType } from '@af/digi-ng/_button/button';
import { FormSelectItem } from '@af/digi-ng/_form/form-select';
import {
ChangeDetectionStrategy,
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.html
new file mode 100644
index 0000000..4e0f62a
--- /dev/null
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.html
@@ -0,0 +1,33 @@
+
+
+ Genomförandereferens: {{deltagare?.genomforandeReferens}}
+
+
+
+
+ Lista med alla händelser för {{deltagare?.fullName}}
+
+
+ | Inkom |
+ Händelse |
+ Datum för händelse |
+ Datum förklaring |
+
+
+
+
+ | {{handelse.receivedDate | date}} |
+
+ {{handelse.description}} |
+ {{handelse.tidpunkt | date }} |
+ {{handelse.tidpunktDescription}} |
+
+
+
+ {{handelse.description}} |
+
+
+
+
+
+
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.scss b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.scss
new file mode 100644
index 0000000..8123921
--- /dev/null
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.scss
@@ -0,0 +1,26 @@
+.deltagare-list-handelser {
+
+ &__heading-row {
+ white-space: nowrap;
+ }
+
+
+ &__table-cell {
+ white-space: nowrap;
+ }
+
+ &__avbrott-cell {
+ color: var(--digi--ui--color--danger);
+ }
+}
+
+// DA: Digins maxbredd är hårt satt till 540px (!?) Bör vara auto tycker jag.
+// Vi kanske bör ersätta med egen dialog längre fram?
+::ng-deep .digi-ng-dialog-base__content {
+ width: auto;
+ max-width: 90vw !important;
+}
+::ng-deep .digi-ng-dialog__inner {
+ width: auto !important;
+ max-width: 90vw !important;
+}
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.spec.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.spec.ts
new file mode 100644
index 0000000..9b56114
--- /dev/null
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.spec.ts
@@ -0,0 +1,28 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DeltagareListHandelserDialogComponent } from './deltagare-list-handelser-dialog.component';
+import { HttpClientTestingModule } from '@angular/common/http/testing';
+import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
+
+describe('DeltagareListHandelserDialogComponent', () => {
+ let component: DeltagareListHandelserDialogComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+ imports: [HttpClientTestingModule],
+ declarations: [DeltagareListHandelserDialogComponent],
+ }).compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DeltagareListHandelserDialogComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.ts
new file mode 100644
index 0000000..1ac4328
--- /dev/null
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.ts
@@ -0,0 +1,28 @@
+import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
+import { DeltagareHandelserApiService } from '@msfa-services/api/deltagare-handelser-api.service';
+import { DeltagareHandelse } from '@msfa-models/deltagare-handelse.model';
+import { Observable } from 'rxjs';
+import { IconType } from '@msfa-enums/icon-type.enum';
+import { DeltagareCompact } from '@msfa-models/deltagare.model';
+
+@Component({
+ selector: 'msfa-deltagare-list-handelser-dialog',
+ templateUrl: './deltagare-list-handelser-dialog.component.html',
+ styleUrls: ['./deltagare-list-handelser-dialog.component.scss'],
+ changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class DeltagareListHandelserDialogComponent implements OnInit {
+ @Input() deltagare: DeltagareCompact;
+ iconType = IconType;
+ deltagareHandelser$: Observable;
+
+ constructor(private deltagareHandelserApiService: DeltagareHandelserApiService) {}
+
+ ngOnInit(): void {
+ if (this.deltagare) {
+ this.deltagareHandelser$ = this.deltagareHandelserApiService.fetchDeltagareHandelser(
+ this.deltagare.genomforandeReferens
+ );
+ }
+ }
+}
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.html
index bc2a3f7..731d9dd 100644
--- a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.html
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.html
@@ -1,41 +1,76 @@
-
+
+ Tabell med de deltagare som tillhör organistaionen.
-
- |
-
- |
-
+
+ |
+
+ |
+
-
- |
- {{ singleDeltagare.fullName }}
- |
- {{ singleDeltagare.tjanst }} |
- {{ singleDeltagare.utforandeVerksamhet }} |
-
+
+ |
+ {{ singleDeltagare.fullName }}
+ |
+ {{ singleDeltagare.tjanst }} |
+ {{ singleDeltagare.utforandeVerksamhet }} |
+ {{ singleDeltagare.startdatumAvrop | date }} |
+
+ {{ singleDeltagare.slutdatumAvrop | date }}
+
+
+ Avbrott
+
+ |
+
+
+
+ Visa händelser
+
+ |
+
+
+
+
+
1"
class="deltagare-list__pagination"
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.scss b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.scss
index 3de9fca..b5a11ba 100644
--- a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.scss
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.scss
@@ -1,6 +1,11 @@
@import 'variables/gutters';
.deltagare-list {
+
+ &__table {
+ font-size: var(--digi--typography--font-size--s);
+ }
+
&__column-head {
padding: 0;
}
@@ -11,8 +16,7 @@
border-width: 0;
width: 100%;
text-align: left;
- padding: var(--digi--layout--gutter--s) $digi--layout--gutter--l var(--digi--layout--gutter--s)
- var(--digi--layout--gutter);
+ padding: var(--digi--layout--gutter--s) $digi--layout--gutter--l var(--digi--layout--gutter--s) var(--digi--layout--gutter);
margin: 0;
font-size: inherit;
font-weight: inherit;
@@ -32,4 +36,15 @@
display: block;
margin-top: var(--digi--layout--gutter);
}
+
+ &__avbrott-alert {
+ display: inline-block;
+ color: var(--digi--ui--color--danger);
+ }
+
+ &__info-icon {
+ --digi-icon--height: 1rem;
+ --digi-icon--width: 1rem;
+ }
+
}
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.ts
index 2415604..2ca295e 100644
--- a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.ts
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.ts
@@ -3,6 +3,10 @@ import { SortOrder } from '@msfa-enums/sort-order.enum';
import { DeltagareCompact } from '@msfa-models/deltagare.model';
import { PaginationMeta } from '@msfa-models/pagination-meta.model';
import { Sort } from '@msfa-models/sort.model';
+import { IconType } from '@msfa-enums/icon-type.enum';
+import { ErrorSeverity } from '@msfa-enums/error-severity.enum';
+import { BehaviorSubject } from 'rxjs';
+import { map } from 'rxjs/operators';
@Component({
selector: 'msfa-deltagare-list',
@@ -16,6 +20,12 @@ export class DeltagareListComponent {
@Input() sort: Sort;
@Output() sorted = new EventEmitter();
@Output() paginated = new EventEmitter();
+ handelserDialogDeltagare$ = new BehaviorSubject(null);
+
+ handelserDialogIsOpen$ = this.handelserDialogDeltagare$.pipe(map(genomforandereferens => !!genomforandereferens));
+
+ iconType = IconType;
+ errorSeverity = ErrorSeverity;
columnHeaders: { label: string; key: keyof DeltagareCompact }[] = [
{ label: 'Namn', key: 'fullName' },
@@ -27,6 +37,18 @@ export class DeltagareListComponent {
label: 'Utförande verksamhet',
key: 'utforandeVerksamhet',
},
+ {
+ label: 'Startdatum',
+ key: 'startdatumAvrop',
+ },
+ {
+ label: 'Slutdatum',
+ key: 'slutdatumAvrop',
+ },
+ {
+ label: 'Status',
+ key: 'genomforandeReferens',
+ },
];
orderType = SortOrder;
@@ -59,4 +81,12 @@ export class DeltagareListComponent {
setNewPage(page: number): void {
this.paginated.emit(page);
}
+
+ openHandelser(deltagareCompact: DeltagareCompact): void {
+ this.handelserDialogDeltagare$.next(deltagareCompact);
+ }
+
+ closeHandelser(): void {
+ this.handelserDialogDeltagare$.next(null);
+ }
}
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.module.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.module.ts
index ce8cf49..df3879a 100644
--- a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.module.ts
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.module.ts
@@ -2,11 +2,14 @@ import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { DeltagareListComponent } from './deltagare-list.component';
+import { IconModule } from '@msfa-shared/components/icon/icon.module';
+import { DigiNgDialogModule } from '@af/digi-ng/_dialog/dialog';
+import { DeltagareListHandelserDialogComponent } from './deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component';
@NgModule({
schemas: [CUSTOM_ELEMENTS_SCHEMA],
- declarations: [DeltagareListComponent],
- imports: [CommonModule, RouterModule],
+ declarations: [DeltagareListComponent, DeltagareListHandelserDialogComponent],
+ imports: [CommonModule, RouterModule, IconModule, DigiNgDialogModule],
exports: [DeltagareListComponent],
})
export class DeltagareListModule {}
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/deltagare.module.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/deltagare.module.ts
index dbc5e8d..2a2a29d 100644
--- a/apps/mina-sidor-fa/src/app/pages/deltagare/deltagare.module.ts
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/deltagare.module.ts
@@ -4,10 +4,11 @@ import { LayoutModule } from '@msfa-shared/components/layout/layout.module';
import { DeltagareListModule } from './components/deltagare-list/deltagare-list.module';
import { DeltagareRoutingModule } from './deltagare-routing.module';
import { DeltagareComponent } from './deltagare.component';
+import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base';
@NgModule({
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [DeltagareComponent],
- imports: [CommonModule, DeltagareRoutingModule, LayoutModule, DeltagareListModule],
+ imports: [CommonModule, DeltagareRoutingModule, LayoutModule, DeltagareListModule, DigiNgSkeletonBaseModule],
})
export class DeltagareModule {}
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/periodisk-redovisning/periodisk-redovisning.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/periodisk-redovisning/periodisk-redovisning.component.ts
index 58adf3a..7229eda 100644
--- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/periodisk-redovisning/periodisk-redovisning.component.ts
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/periodisk-redovisning/periodisk-redovisning.component.ts
@@ -1,18 +1,12 @@
-import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';
+import { Component, ChangeDetectionStrategy } from '@angular/core';
@Component({
selector: 'msfa-periodisk-redovisning',
templateUrl: './periodisk-redovisning.component.html',
styleUrls: ['./periodisk-redovisning.component.scss'],
- changeDetection: ChangeDetectionStrategy.OnPush
+ changeDetection: ChangeDetectionStrategy.OnPush,
})
-export class PeriodiskRedovisningComponent implements OnInit {
+export class PeriodiskRedovisningComponent {
currentStep = 1;
sendRequest = false;
-
- constructor() { }
-
- ngOnInit(): void {
- }
-
}
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/periodisk-redovisning/periodisk-redovisning.module.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/periodisk-redovisning/periodisk-redovisning.module.ts
index 2439aec..7aa8e03 100644
--- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/periodisk-redovisning/periodisk-redovisning.module.ts
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-report/pages/periodisk-redovisning/periodisk-redovisning.module.ts
@@ -3,10 +3,9 @@ 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 { ReportLayoutModule } from '../../../../shared/report-layout/report-layout-module';
+import { ReportLayoutModule } from '../../../../shared/report-layout/report-layout.module';
import { PeriodiskRedovisningComponent } from './periodisk-redovisning.component';
-
@NgModule({
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [PeriodiskRedovisningComponent],
@@ -15,8 +14,8 @@ import { PeriodiskRedovisningComponent } from './periodisk-redovisning.component
RouterModule.forChild([{ path: '', component: PeriodiskRedovisningComponent }]),
LayoutModule,
ReactiveFormsModule,
- ReportLayoutModule
+ ReportLayoutModule,
],
- exports: [PeriodiskRedovisningComponent]
+ exports: [PeriodiskRedovisningComponent],
})
-export class PeriodiskRedovisningModule { }
+export class PeriodiskRedovisningModule {}
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.spec.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.spec.ts
index b2809a2..897ed41 100644
--- a/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.spec.ts
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.component.spec.ts
@@ -1,6 +1,8 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
-
import { ReportLayoutComponent } from './report-layout.component';
+import { HttpClientTestingModule } from '@angular/common/http/testing';
+import { ReportLayoutModule } from './report-layout.module';
+import { RouterTestingModule } from '@angular/router/testing';
describe('ReportLayoutComponent', () => {
let component: ReportLayoutComponent;
@@ -8,9 +10,8 @@ describe('ReportLayoutComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
- declarations: [ ReportLayoutComponent ]
- })
- .compileComponents();
+ imports: [ReportLayoutModule, RouterTestingModule, HttpClientTestingModule],
+ }).compileComponents();
});
beforeEach(() => {
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout-module.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.module.ts
similarity index 59%
rename from apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout-module.ts
rename to apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.module.ts
index 5d34f04..e45f5e4 100644
--- a/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout-module.ts
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/shared/report-layout/report-layout.module.ts
@@ -4,11 +4,12 @@ import { LayoutModule } from '@msfa-shared/components/layout/layout.module';
import { ReportLayoutComponent } from './report-layout.component';
import { DigiNgProgressProgressbarModule } from '@af/digi-ng/_progress/progressbar';
import { HideTextModule } from '@msfa-shared/components/hide-text/hide-text.module';
+import { RouterModule } from '@angular/router';
@NgModule({
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
- declarations: [ReportLayoutComponent],
- imports: [CommonModule, LayoutModule, DigiNgProgressProgressbarModule, HideTextModule],
- exports: [ReportLayoutComponent]
- })
- export class ReportLayoutModule {}
\ No newline at end of file
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+ declarations: [ReportLayoutComponent],
+ imports: [CommonModule, RouterModule, LayoutModule, DigiNgProgressProgressbarModule, HideTextModule],
+ exports: [ReportLayoutComponent],
+})
+export class ReportLayoutModule {}
diff --git a/apps/mina-sidor-fa/src/app/shared/components/multiselect/multiselect.component.ts b/apps/mina-sidor-fa/src/app/shared/components/multiselect/multiselect.component.ts
index 7344eea..1e5162c 100644
--- a/apps/mina-sidor-fa/src/app/shared/components/multiselect/multiselect.component.ts
+++ b/apps/mina-sidor-fa/src/app/shared/components/multiselect/multiselect.component.ts
@@ -9,7 +9,6 @@ import {
Output,
Renderer2,
ViewChild,
- ChangeDetectorRef,
} from '@angular/core';
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
import { DropdownTriggerForDirective } from '@msfa-shared/components/dropdown/dropdown-trigger-for.directive';
@@ -55,7 +54,7 @@ export class MultiselectComponent implements AfterViewInit, ControlValueAccessor
private propagateChange: PropagateChangeFn;
private propagateTouched: PropagateTouchedFn;
- constructor(private renderer: Renderer2, private changeDetectionRef: ChangeDetectorRef) {}
+ constructor(private renderer: Renderer2) {}
// Allows Angular to update the model.
// Update the model and changes needed for the view here.
diff --git a/apps/mina-sidor-fa/src/app/shared/models/api/deltagare.response.model.ts b/apps/mina-sidor-fa/src/app/shared/models/api/deltagare.response.model.ts
index a06db41..414386f 100644
--- a/apps/mina-sidor-fa/src/app/shared/models/api/deltagare.response.model.ts
+++ b/apps/mina-sidor-fa/src/app/shared/models/api/deltagare.response.model.ts
@@ -16,6 +16,10 @@ export interface DeltagareCompactResponse {
tjanst: string;
utforandeVerksamhet: string;
utforandeAdress: string;
+ hasAvbrott: boolean;
+ genomforandeReferens: string;
+ startdatumAvrop: Date;
+ slutdatumAvrop: Date;
}
export interface DeltagareResponse {
diff --git a/apps/mina-sidor-fa/src/app/shared/models/deltagare-handelse.model.ts b/apps/mina-sidor-fa/src/app/shared/models/deltagare-handelse.model.ts
new file mode 100644
index 0000000..1f0a48e
--- /dev/null
+++ b/apps/mina-sidor-fa/src/app/shared/models/deltagare-handelse.model.ts
@@ -0,0 +1,11 @@
+export interface DeltagareHandelse {
+ description: string;
+ receivedDate: Date;
+ isAvbrott: boolean;
+ tidpunkt: Date;
+ tidpunktDescription: string;
+}
+
+export interface DeltagareHandelseApiResponse {
+ data: DeltagareHandelse[];
+}
diff --git a/apps/mina-sidor-fa/src/app/shared/models/deltagare.model.ts b/apps/mina-sidor-fa/src/app/shared/models/deltagare.model.ts
index 4c6cba9..47a19dc 100644
--- a/apps/mina-sidor-fa/src/app/shared/models/deltagare.model.ts
+++ b/apps/mina-sidor-fa/src/app/shared/models/deltagare.model.ts
@@ -18,6 +18,10 @@ export interface DeltagareCompact {
tjanst: string;
utforandeVerksamhet: string;
utforandeAdress: string;
+ hasAvbrott: boolean;
+ genomforandeReferens: string;
+ startdatumAvrop: Date;
+ slutdatumAvrop: Date;
}
export interface Deltagare {
@@ -45,7 +49,18 @@ export interface DeltagareCompactData {
}
export function mapResponseToDeltagareCompact(data: DeltagareCompactResponse): DeltagareCompact {
- const { sokandeId, fornamn, efternamn, tjanst, utforandeVerksamhet, utforandeAdress } = data;
+ const {
+ sokandeId,
+ fornamn,
+ efternamn,
+ tjanst,
+ utforandeVerksamhet,
+ utforandeAdress,
+ hasAvbrott,
+ genomforandeReferens,
+ startdatumAvrop,
+ slutdatumAvrop,
+ } = data;
return {
id: sokandeId.toString(),
firstName: fornamn,
@@ -54,6 +69,10 @@ export function mapResponseToDeltagareCompact(data: DeltagareCompactResponse): D
tjanst,
utforandeVerksamhet,
utforandeAdress,
+ hasAvbrott,
+ genomforandeReferens,
+ startdatumAvrop,
+ slutdatumAvrop,
};
}
diff --git a/apps/mina-sidor-fa/src/app/shared/services/api/deltagare-handelser-api.service.ts b/apps/mina-sidor-fa/src/app/shared/services/api/deltagare-handelser-api.service.ts
new file mode 100644
index 0000000..1d1c80c
--- /dev/null
+++ b/apps/mina-sidor-fa/src/app/shared/services/api/deltagare-handelser-api.service.ts
@@ -0,0 +1,26 @@
+import { Injectable } from '@angular/core';
+import { Observable } from 'rxjs';
+import { map } from 'rxjs/operators';
+import { HttpClient } from '@angular/common/http';
+import { DeltagareHandelse, DeltagareHandelseApiResponse } from '@msfa-models/deltagare-handelse.model';
+import { environment } from '@msfa-environment';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class DeltagareHandelserApiService {
+ private _apiBaseUrl = `${environment.api.url}/deltagareHandelser`;
+ constructor(private httpClient: HttpClient) {}
+
+ fetchDeltagareHandelser(genomforandereferens: string): Observable {
+ return this.httpClient
+ .get(`${this._apiBaseUrl}?genomforandereferens=${genomforandereferens}`)
+ .pipe(
+ map(({ data }) => {
+ if (data) {
+ return data;
+ }
+ })
+ );
+ }
+}
diff --git a/mock-api/mina-sidor-fa/scripts/avrop.js b/mock-api/mina-sidor-fa/scripts/avrop.js
index 99e83fa..862523e 100644
--- a/mock-api/mina-sidor-fa/scripts/avrop.js
+++ b/mock-api/mina-sidor-fa/scripts/avrop.js
@@ -58,6 +58,7 @@ function generateAvrop(amount = 10, deltagare, handledare) {
sparNamn: track.name,
handledareCiamUserId: null,
recievedTimestamp: faker.date.recent(),
+ hasAvbrott: currentDeltagare.hasAvbrott,
});
}
diff --git a/mock-api/mina-sidor-fa/scripts/deltagare-handelser.js b/mock-api/mina-sidor-fa/scripts/deltagare-handelser.js
new file mode 100644
index 0000000..2a09b4d
--- /dev/null
+++ b/mock-api/mina-sidor-fa/scripts/deltagare-handelser.js
@@ -0,0 +1,36 @@
+import faker from 'faker';
+faker.locale = 'sv';
+
+const HANDELSER = [
+ 'Gemensam planering inkommen',
+ 'Gemensam planering godkänd',
+ 'Slutredovisning inkommen',
+ 'Slutredovisning godkänd',
+ 'Slutredovisning ej godkänd',
+ 'Avbrott handläggs',
+ 'Avbrott bifall',
+ 'Avbrott avslag',
+ 'Byte av leverantör bifall',
+];
+
+const TIDPUNKT_DESCRIPTION = ['Handläggning startad', 'Inrapporteringsdatum slutredovisning'];
+
+function generateHandelser(amount = 10) {
+ const handelser = [];
+
+ for (let id = 1; id <= amount; ++id) {
+ const handelse = HANDELSER[Math.floor(Math.random() * HANDELSER.length)];
+ handelser.push({
+ description: handelse,
+ receivedDate: faker.date.recent(),
+ isAvbrott: handelse.indexOf('Avbrott') >= 0,
+ tidpunkt: faker.date.recent(),
+ tidpunktDescription: TIDPUNKT_DESCRIPTION[Math.floor(Math.random() * TIDPUNKT_DESCRIPTION.length)],
+ });
+ }
+ return handelser;
+}
+
+export default {
+ generate: generateHandelser,
+};
diff --git a/mock-api/mina-sidor-fa/scripts/deltagare.js b/mock-api/mina-sidor-fa/scripts/deltagare.js
index 5f70403..bd2c14e 100644
--- a/mock-api/mina-sidor-fa/scripts/deltagare.js
+++ b/mock-api/mina-sidor-fa/scripts/deltagare.js
@@ -111,6 +111,7 @@ function generateDeltagare(amount = 10) {
workExperiences: {
arbetslivserfarenheter: chooseRandom(WORK_EXPERIENCES, faker.datatype.number(WORK_EXPERIENCES.length)),
},
+ hasAvbrott: Math.random() < 0.2,
};
if (Math.random() > 0.8) {
deltagare.contact.adresser.push({
diff --git a/mock-api/mina-sidor-fa/scripts/generate-api.js b/mock-api/mina-sidor-fa/scripts/generate-api.js
index 0a17809..3913356 100644
--- a/mock-api/mina-sidor-fa/scripts/generate-api.js
+++ b/mock-api/mina-sidor-fa/scripts/generate-api.js
@@ -4,6 +4,7 @@ import avrop from './avrop.js';
import currentUser from './current-user.js';
import userinfo from './userinfo.js';
import deltagare from './deltagare.js';
+import deltagareHandelser from './deltagare-handelser.js';
import employees from './employees.js';
import handledare from './handledare.js';
import languages from './languages.js';
@@ -21,6 +22,7 @@ const AUTHORIZATIONS = ['Hantera användare', 'Hantera origisation', 'Hantera ek
const generatedEmployees = employees.generate(50);
const generatedDeltagare = deltagare.generate(50);
+const generatedDeltagareHandelser = deltagareHandelser.generate(10);
const generatedHandledare = handledare.generate(generatedEmployees.slice(0, 6));
const generatedAvrop = avrop.generate(10, generatedDeltagare.slice(0, 25), generatedHandledare);
const generatedTjanster = tjanster.generate();
@@ -111,6 +113,7 @@ const apiData = {
utforandeVerksamheter,
kommuner: avropKommuner,
deltagare: generatedDeltagare,
+ deltagareHandelser: generatedDeltagareHandelser,
handledare: generatedHandledare,
participants: participants.generate(50).map(participant => ({
...participant,
diff --git a/mock-api/mina-sidor-fa/server.js b/mock-api/mina-sidor-fa/server.js
index 012bf0d..8b53b0e 100644
--- a/mock-api/mina-sidor-fa/server.js
+++ b/mock-api/mina-sidor-fa/server.js
@@ -123,14 +123,32 @@ router.render = (req, res) => {
}
if (pathname === '/deltagare') {
- data = data.map(({ sokandeId, fornamn, efternamn, tjansteNamn, utforandeverksamhet, adress }) => ({
- sokandeId: sokandeId.toString(),
- fornamn,
- efternamn,
- tjanst: tjansteNamn,
- utforandeVerksamhet: utforandeverksamhet,
- utforandeAdress: adress,
- }));
+ // NOTE: this is reading from avrop.js
+ data = data.map(
+ ({
+ sokandeId,
+ fornamn,
+ efternamn,
+ tjansteNamn,
+ utforandeverksamhet,
+ adress,
+ startdatumAvrop,
+ slutdatumAvrop,
+ hasAvbrott,
+ genomforandeReferens,
+ }) => ({
+ sokandeId: sokandeId.toString(),
+ fornamn,
+ efternamn,
+ tjanst: tjansteNamn,
+ utforandeVerksamhet: utforandeverksamhet,
+ utforandeAdress: adress,
+ startdatumAvrop,
+ slutdatumAvrop,
+ hasAvbrott,
+ genomforandeReferens,
+ })
+ );
}
res.jsonp({