From 6f8bf890ba0684ff33e32b4f0b8b9e22eddcfce4 Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Thu, 6 May 2021 15:33:21 +0200 Subject: [PATCH] Added fetch for single employee and prepared data for access-groups --- .../src/app/data/enums/access-group.enum.ts | 28 +++++++++++++++++++ .../data/models/api/user-response.model.ts | 1 + .../src/app/data/models/employee.model.ts | 20 ++++--------- .../src/app/data/models/user.model.ts | 15 ++++++++-- .../employee-card.component.html | 22 +++++++++------ .../employee-card/employee-card.component.ts | 4 +-- .../src/app/services/api/employee.service.ts | 8 ++++-- 7 files changed, 68 insertions(+), 30 deletions(-) create mode 100644 apps/dafa-web/src/app/data/enums/access-group.enum.ts diff --git a/apps/dafa-web/src/app/data/enums/access-group.enum.ts b/apps/dafa-web/src/app/data/enums/access-group.enum.ts new file mode 100644 index 0000000..3341a23 --- /dev/null +++ b/apps/dafa-web/src/app/data/enums/access-group.enum.ts @@ -0,0 +1,28 @@ +export enum AccessGroup { + UserManagement = 'UserManagement', + Economy = 'Economy', + Reports = 'Reports', + ParticipantManagement = 'ParticipantManagement', + User = 'User', +} + +export enum PegaAccessGroup { + Users = 'MeetTest:Users', + Administrators = 'MeetTest:Administrators', +} + +export function mapPegaAccessGroupToAccessGroups(pegaAccessGroup: PegaAccessGroup): AccessGroup[] { + const accessGroups: AccessGroup[] = []; + switch (pegaAccessGroup) { + case PegaAccessGroup.Users: + accessGroups.push(AccessGroup.User); + break; + case PegaAccessGroup.Administrators: + accessGroups.push(AccessGroup.UserManagement); + break; + default: + break; + } + + return accessGroups; +} diff --git a/apps/dafa-web/src/app/data/models/api/user-response.model.ts b/apps/dafa-web/src/app/data/models/api/user-response.model.ts index 346381e..78610dc 100644 --- a/apps/dafa-web/src/app/data/models/api/user-response.model.ts +++ b/apps/dafa-web/src/app/data/models/api/user-response.model.ts @@ -8,6 +8,7 @@ export interface UserResponse { pyLastSignon: string; pyOrganization: string; pyOrgDivision: string; + pyOrgUnit: string; pyTelephone: string; pyUserIdentifier: string; pyUserName: string; diff --git a/apps/dafa-web/src/app/data/models/employee.model.ts b/apps/dafa-web/src/app/data/models/employee.model.ts index 111053f..63ed837 100644 --- a/apps/dafa-web/src/app/data/models/employee.model.ts +++ b/apps/dafa-web/src/app/data/models/employee.model.ts @@ -1,21 +1,11 @@ +import { mapPegaAccessGroupToAccessGroups, PegaAccessGroup } from '@dafa-enums/access-group.enum'; import { Agency } from '@dafa-models/agency.model'; import { EmployeeResponse } from './api/employee-response.model'; import { Participant } from './participant.model'; +import { User } from './user.model'; -export interface Employee { - id: string; - firstName: string; - lastName: string; - fullName: string; - organization: string; - organizationDivision: string; - organizationUnit: string; - phone: string; - email: string; - accessGroup: string; - utforandeverksamhet: string; - service: string; -} +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface Employee extends User {} export interface EmployeeDetail extends Employee { languages: string[]; @@ -42,7 +32,7 @@ export function mapEmployeeReponseToEmployee(data: EmployeeResponse): Employee { organizationUnit: data.pyOrgUnit, phone: data.pyTelephone, email: '', - accessGroup: data.pyAccessGroup, + accessGroups: mapPegaAccessGroupToAccessGroups(data.pyAccessGroup as PegaAccessGroup), utforandeverksamhet: '', service: '', }; diff --git a/apps/dafa-web/src/app/data/models/user.model.ts b/apps/dafa-web/src/app/data/models/user.model.ts index ee4dad0..df744c0 100644 --- a/apps/dafa-web/src/app/data/models/user.model.ts +++ b/apps/dafa-web/src/app/data/models/user.model.ts @@ -1,3 +1,4 @@ +import { AccessGroup, mapPegaAccessGroupToAccessGroups, PegaAccessGroup } from '@dafa-enums/access-group.enum'; import { UserResponse } from './api/user-response.model'; export interface User { @@ -5,9 +6,14 @@ export interface User { firstName: string; lastName: string; fullName: string; - userName: string; + organization: string; + organizationDivision: string; + organizationUnit: string; phone: string; email: string; + accessGroups: AccessGroup[]; + utforandeverksamhet: string; + service: string; } export function mapUserReponseToUser(data: UserResponse): User { @@ -16,8 +22,13 @@ export function mapUserReponseToUser(data: UserResponse): User { lastName: data.pyLastName, firstName: data.pyFirstName, fullName: `${data.pyFirstName} ${data.pyLastName}`, - userName: data.pyUserName, + organization: data.pyOrganization, + organizationDivision: data.pyOrgDivision, + organizationUnit: data.pyOrgUnit, phone: data.pyTelephone, email: data.pyAddresses.Email.pyEmailAddress, + accessGroups: mapPegaAccessGroupToAccessGroups(data.pyAccessGroup as PegaAccessGroup), + utforandeverksamhet: '', + service: '', }; } diff --git a/apps/dafa-web/src/app/pages/administration/pages/employee-card/employee-card.component.html b/apps/dafa-web/src/app/pages/administration/pages/employee-card/employee-card.component.html index 0235f02..2642210 100644 --- a/apps/dafa-web/src/app/pages/administration/pages/employee-card/employee-card.component.html +++ b/apps/dafa-web/src/app/pages/administration/pages/employee-card/employee-card.component.html @@ -13,14 +13,12 @@
Personnummer
-
{{ detailedEmployeeData.ssn || '' }}
-
Personal-ID
-
{{ detailedEmployeeData.employeeId || '' }}
-
Telefon arbete
+
{{ detailedEmployeeData.ssn }}
+
Telefonnummer
{{ detailedEmployeeData.phone }}
-
Mailadress arbete
+
Epost adress
{{ detailedEmployeeData.email }}
@@ -31,14 +29,22 @@

Uppgifter om arbete

+
Organisation
+
{{ detailedEmployeeData.organization }}
+
Avdelning
+
+ {{ detailedEmployeeData.organizationDivision }} +
+
Behörigheter
+
+ {{ detailedEmployeeData.accessGroups.join(', ') }} +
Behörighet
{{ item }}
-
Aktivt i arbete
-
{{ detailedEmployeeData.active ? 'Ja' : 'Nej' }}
Frånvaroperiod
@@ -46,7 +52,7 @@
Tjänst
-
{{ detailedEmployeeData.service || '' }}
+
{{ detailedEmployeeData.service }}
Språk
{{ detailedEmployeeData.languages?.join(', ') }}
diff --git a/apps/dafa-web/src/app/pages/administration/pages/employee-card/employee-card.component.ts b/apps/dafa-web/src/app/pages/administration/pages/employee-card/employee-card.component.ts index 0ce8506..595f493 100644 --- a/apps/dafa-web/src/app/pages/administration/pages/employee-card/employee-card.component.ts +++ b/apps/dafa-web/src/app/pages/administration/pages/employee-card/employee-card.component.ts @@ -21,10 +21,8 @@ export class EmployeeCardComponent extends UnsubscribeDirective { super.unsubscribeOnDestroy( this.activatedRoute.params.subscribe(({ id }) => { - console.log(id); this.detailedEmployeeData$ = this.employeeService.getDetailedEmployeeData(id); - }), - this._pendingSelectedParticipants$.subscribe(ids => console.log(ids)) + }) ); } diff --git a/apps/dafa-web/src/app/services/api/employee.service.ts b/apps/dafa-web/src/app/services/api/employee.service.ts index 7edeb07..6428a96 100644 --- a/apps/dafa-web/src/app/services/api/employee.service.ts +++ b/apps/dafa-web/src/app/services/api/employee.service.ts @@ -12,14 +12,16 @@ function filterEmployees(employees: Employee[], searchFilter: string): Employee[ return employees.filter(person => person.fullName.toLowerCase().includes(searchFilter.toLowerCase())); } +const API_HEADERS = { headers: environment.api.headers }; @Injectable({ providedIn: 'root', }) export class EmployeeService { private _employeesApiUrl = `${environment.api.meet}/employees`; + private _employeeApiUrl = `${environment.api.meet}/employee`; private _employeesRawData: Observable = this.httpClient.get( this._employeesApiUrl, - { headers: environment.api.headers } + API_HEADERS ); private _allEmployees$: Observable = this._employeesRawData.pipe( map(({ pxResults }) => pxResults.map(result => mapEmployeeReponseToEmployee(result))) @@ -47,7 +49,9 @@ export class EmployeeService { constructor(private httpClient: HttpClient) {} public getDetailedEmployeeData(id: string): Observable { - return this.httpClient.get(`${this._employeesApiUrl}/${id}`, { params: { _embed: 'participants' } }); + return this.httpClient + .get(`${this._employeeApiUrl}/${id}`, API_HEADERS) + .pipe(map(({ pxResults }) => mapEmployeeReponseToEmployee(pxResults[0]))); } public setSearchFilter(value: string) {