Changes to some models and data coming from API

This commit is contained in:
Erik Tiekstra
2021-09-01 10:26:05 +02:00
parent 02cf0f6114
commit e4f5802f97
9 changed files with 55 additions and 62 deletions

View File

@@ -2,7 +2,9 @@
<section class="employee-card">
<digi-typography *ngIf="employee$ | async as employee; else loadingRef">
<header class="employee-card__header">
<a class="employee-card__edit-button" [routerLink]="['/administration/redigera-konto', employee.id]">Redigera</a>
<a class="employee-card__edit-button" [routerLink]="['/administration/redigera-konto', employee.id]"
>Redigera</a
>
<h1>{{ employee.fullName }}</h1>
</header>
<p>Här kan du se och ändra personalkontots behörigheter. Ändra behörighet genom att klicka på redigera.</p>
@@ -40,7 +42,7 @@
Kontot har behörighet till alla utförande verksamheter och utförande adresser inom organisationen.
</p>
<ng-template #specificUtforandeVerksamheter>
<div class="employee-card__utforandeverksamheter-cards" >
<div class="employee-card__utforandeverksamheter-cards">
<ng-container *ngIf="employee.utforandeVerksamhet?.length; else emptyText">
<digi-info-card
*ngFor="let utforandeverksamhet of employee.utforandeVerksamhet"
@@ -49,12 +51,9 @@
af-type="info"
class="employee-card__utforandeverksamheter-card"
>
<digi-ng-layout-expansion-panel
*ngIf="utforandeverksamhet.adresser.length > 0"
>
<digi-ng-layout-expansion-panel *ngIf="utforandeverksamhet.adresser.length > 0">
<span data-slot-trigger>
{{ accordionExpanded ? 'Dölj' : 'Visa' }}
{{utforandeverksamhet.adresser.length}}
{{ accordionExpanded ? 'Dölj' : 'Visa' }} {{utforandeverksamhet.adresser.length}}
{{utforandeverksamhet.adresser.length === 1 ? 'adress' : 'adresser'}}
</span>
<ul class="employee-card__utforandeverksamheter-address-list">
@@ -106,9 +105,7 @@
</dd>
</ng-template>
<ng-template #emptyText>
<p>
<span aria-hidden="true">-</span>
<span class="msfa__a11y-sr-only">Info saknas</span>
</p>
<span aria-hidden="true">-</span>
<span class="msfa__a11y-sr-only">Info saknas</span>
</ng-template>
</msfa-layout>

View File

@@ -1,6 +1,5 @@
import { ChangeDetectionStrategy, Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { RoleEnum } from '@msfa-enums/role.enum';
import { Employee } from '@msfa-models/employee.model';
import { Role } from '@msfa-models/role.model';
import { EmployeeService } from '@msfa-services/api/employee.service';
@@ -15,7 +14,7 @@ import { BehaviorSubject, Observable } from 'rxjs';
export class EmployeeCardComponent {
private _pendingSelectedParticipants$ = new BehaviorSubject<string[]>([]);
employee$: Observable<Employee> = this.employeeService.employee$;
allRoles: Role[] = Object.entries(RoleEnum).map(([key, value]) => ({ type: key as RoleEnum, name: value }));
allRoles: Role[] = this.employeeService.allRoles;
constructor(private activatedRoute: ActivatedRoute, private employeeService: EmployeeService) {
this.employeeService.setCurrentEmployeeId(this.activatedRoute.snapshot.params.employeeId);

View File

@@ -25,7 +25,7 @@ export class EmployeeFormComponent extends UnsubscribeDirective implements OnIni
tjanster$: Observable<Tjanst[]> = this.tjanstService.tjanster$;
availableTjanster: FormSelectItem[] | null = null;
selectableRoles: Role[] | null = this.employeeService.getAllRoles();
selectableRoles: Role[] = this.employeeService.allRoles;
currentEmployeeRoles: Role[] | undefined | null = null;
constructor(
@@ -41,22 +41,18 @@ export class EmployeeFormComponent extends UnsubscribeDirective implements OnIni
this.employeeService.setCurrentEmployeeId(this.activatedRoute.snapshot.params['employeeId']);
const employeeDataSub = this.employee$.subscribe(employee => {
this.employee = employee;
this.currentEmployeeRoles = employee?.roles
.map(role => mapRoleResponseToRoleObject(role));
this.currentEmployeeRoles = employee?.roles.map(role => mapRoleResponseToRoleObject(role));
});
const tjanstRelatedDataSub = this.tjanster$.subscribe(tjanster => {
const tjanstOptions: FormSelectItem[] = [];
tjanster?.forEach(tjanst => {
tjanstOptions.push({name: tjanst?.name, value: tjanst?.code});
tjanstOptions.push({ name: tjanst?.name, value: tjanst?.code });
});
this.availableTjanster = tjanstOptions;
});
this.subscriptionsList.push(
employeeDataSub,
tjanstRelatedDataSub
);
this.subscriptionsList.push(employeeDataSub, tjanstRelatedDataSub);
}
updateEmployee(editEmployeeFormData: EditEmployeeFormData): void {

View File

@@ -31,17 +31,15 @@
<a [routerLink]="employee.id" class="employees-list__link">{{ employee.fullName }}</a>
</th>
<td>
<ng-container *ngIf="employee.tjanster.length">
<ng-container *ngIf="employee.tjanster.length; else emptyText">
{{ employee.tjanster[0] }}<ng-container *ngIf="employee.tjanster.length > 1">
(+{{employee.tjanster.length - 1}})</ng-container
>
</ng-container>
</td>
<td>
<ng-container *ngIf="employee.utforandeVerksamheter.length">
{{ employee.utforandeVerksamheter[0]['namn'] }}<ng-container
*ngIf="employee.utforandeVerksamheter.length > 1"
>
<ng-container *ngIf="employee.utforandeVerksamheter.length; else emptyText">
{{ employee.utforandeVerksamheter[0] }}<ng-container *ngIf="employee.utforandeVerksamheter.length > 1">
(+{{employee.utforandeVerksamheter.length - 1}})</ng-container
>
</ng-container>
@@ -87,3 +85,8 @@
>
</digi-navigation-pagination>
</div>
<ng-template #emptyText>
<span aria-hidden="true">-</span>
<span class="msfa__a11y-sr-only">Info saknas</span>
</ng-template>

View File

@@ -203,9 +203,7 @@
</dd>
</ng-template>
<ng-template #emptyText>
<p>
<span aria-hidden="true">-</span>
<span class="msfa__a11y-sr-only">Info saknas</span>
</p>
<span aria-hidden="true">-</span>
<span class="msfa__a11y-sr-only">Info saknas</span>
</ng-template>
</msfa-layout>

View File

@@ -1,7 +1,6 @@
export enum RoleEnum {
OrganizationUser = 'OrganizationUser', // Default role
ReportAndPlanning = 'ReportAndPlanning',
ReceiveDeltagare = 'ReceiveDeltagare',
AuthAdmin = 'AuthAdmin',
ContactPerson = 'ContactPerson',
MSFA_AuthAdmin = 'MSFA_AuthAdmin',
MSFA_ReceiveDeltagare = 'MSFA_ReceiveDeltagare',
MSFA_ReportAndPlanning = 'MSFA_ReportAndPlanning',
MSFA_Standard = 'MSFA_Standard', // Default role
}

View File

@@ -6,33 +6,28 @@ export interface Role {
}
export function mapRoleResponseToRoleObject(type: string): Role {
switch(type) {
case 'OrganizationUser':
switch (type) {
case 'MSFA_Standard':
return {
name: 'Basanvändare',
type: RoleEnum[type]
name: 'Basanvändare',
type: RoleEnum[type],
};
case 'ReportAndPlanning':
case 'MSFA_ReportAndPlanning':
return {
name: 'Rapportering, planering och information om deltagare',
type: RoleEnum[type]
name: 'Rapportering, planering och information om deltagare',
type: RoleEnum[type],
};
case 'ReceiveDeltagare':
case 'MSFA_ReceiveDeltagare':
return {
name: 'Ta emot deltagare',
type: RoleEnum[RoleEnum[type]]
type: RoleEnum[RoleEnum[type]],
};
case 'AuthAdmin':
case 'MSFA_AuthAdmin':
return {
name: 'Administrera behörigheter',
type: RoleEnum[RoleEnum[type]]
};
case 'ContactPerson':
return {
name: 'Kontaktperson',
type: RoleEnum[type]
name: 'Administrera behörigheter',
type: RoleEnum[RoleEnum[type]],
};
default:
return;
}
}
}

View File

@@ -50,12 +50,16 @@ export class AvropApiService {
this._lockedAvropSnapshot$.next(avrop);
return this.httpClient.get<{ data: HandledareResponse[] }>(`${this._apiBaseUrl}/handledare`).pipe(
map(({ data }) => data.map(handledare => mapHandledareResponseToHandledare(handledare))),
tap(handledare => {
this._availableHandledareSnapshot$.next(handledare);
return this.httpClient
.get<{ data: HandledareResponse[] }>(`${this._apiBaseUrl}/handledare`, {
params: { avropIds: avrop.map(a => a.id) },
})
);
.pipe(
map(({ data }) => data.map(handledare => mapHandledareResponseToHandledare(handledare))),
tap(handledare => {
this._availableHandledareSnapshot$.next(handledare);
})
);
}
fetchAvailableTjanster$(params: Params): Observable<AvropTjanst[]> {

View File

@@ -190,15 +190,17 @@ export class EmployeeService extends UnsubscribeDirective {
}
public updateEmployeeData(employeeData: Employee): Observable<string> {
return /* this.httpClient.put<{ id: string }>(`${this._apiBaseUrl}/${employeeData.id}`,
return; /* this.httpClient.put<{ id: string }>(`${this._apiBaseUrl}/${employeeData.id}`,
mapEmployeeToRequestData(employeeData), API_HEADERS).pipe(
map(({ id }) => id),
catchError(error => throwError({ message: error as string, type: ErrorType.API }))
); */
}
public getAllRoles(): Role[] {
const allAuths: string[] = Object.keys(RoleEnum).filter((item) => {return isNaN(Number(item))});
return allAuths.map(key => mapRoleResponseToRoleObject(key));
public get allRoles(): Role[] {
const allAuths: string[] = Object.keys(RoleEnum).filter(item => {
return isNaN(Number(item));
});
return allAuths.map(key => mapRoleResponseToRoleObject(key));
}
}