feat(employee): Now possible to submit edit employee form. (TV-513)

Squashed commit of the following:

commit fc79d20601988735b407a54009426e10e233df39
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Tue Sep 7 13:24:30 2021 +0200

    Small fixes

commit bc8741bab9b3161d356d1375b7ab869b202a8195
Merge: 1ad9db8 cac0515
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Tue Sep 7 13:16:21 2021 +0200

    Merged develop

commit 1ad9db87e7f1f19fdb2cd3e2cfcc17e08c9ccfef
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Tue Sep 7 12:49:37 2021 +0200

    Stylechanges

commit 5a3b863f87f956ed90564fecbef9abe9460558bd
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Tue Sep 7 11:26:35 2021 +0200

    Now possible to edit employee-accounts

commit 0677f2ebeee12adeba6cb65a673781dea7a6c06d
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Tue Sep 7 10:05:35 2021 +0200

    Updated models to include new structure

commit 76bde9e0afbbf44a09348ee8e4849b4816b0c39d
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Tue Sep 7 08:43:25 2021 +0200

    edit employee

commit c8cf93b6bbeef0a3b4b6f141f36aea7ea86f399e
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Mon Sep 6 16:22:46 2021 +0200

    WIP

commit fe5cff4aa209c4da0025ebfb70b79d6a95c8d1f1
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Mon Sep 6 15:46:26 2021 +0200

    Fixed issue not fetching new utforande verksamheter on page load

commit c997dbe80c8f9f5ec84aad2ac18805918b7ab6f5
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Mon Sep 6 15:35:34 2021 +0200

    Added scrollPositionRestoration

commit 58ee0147ff553f2a97fdf143ddcbdf1b0241d26f
Merge: 27b595c 9a73ffe
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Mon Sep 6 15:30:08 2021 +0200

    Merge branch 'develop' into feature/TV-513

commit 27b595cbf94dc1d95ad32a0da1943e2e6fce61c4
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Mon Sep 6 14:28:10 2021 +0200

    WIP

commit 81cb9df1869784a80f6747ac68bfdc81ae5d777a
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Mon Sep 6 13:21:41 2021 +0200

    Fixed roles
This commit is contained in:
Erik Tiekstra
2021-09-07 13:26:46 +02:00
parent cac0515c9c
commit bb4d88a8e0
37 changed files with 386 additions and 359 deletions

View File

@@ -1,4 +1,4 @@
export interface AvropTjanstResponse {
export interface AvropFilterResponse {
id: string;
label: string;
count: number;

View File

@@ -0,0 +1,10 @@
import { RoleEnum } from '@msfa-enums/role.enum';
export interface EmployeeEditRequest {
email: string;
roles: RoleEnum[];
tjanstIds: number[];
allaUtforandeVerksamheter: boolean;
utforandeVerksamhetIds?: number[];
adressIds: number[];
}

View File

@@ -1,5 +1,18 @@
import { RoleEnum } from '@msfa-enums/role.enum';
import { PaginationMeta } from '@msfa-models/pagination-meta.model';
import { TjanstResponse } from './tjanst.response.model';
interface UtforandeVerksamhetResponse {
id: number;
name: string;
allaAdresser: boolean;
adresser?: AdressResponse[];
}
interface AdressResponse {
id: number;
name: string;
}
export interface EmployeeCompactResponse {
ciamUserId: string;
@@ -14,16 +27,19 @@ export interface EmployeeResponse {
firstName: string;
lastName: string;
email: string;
personnummer: string;
ssn: string;
roles: RoleEnum[];
tjansteKoder: string[];
tjanster: TjanstResponse[];
allaUtforandeVerksamheter: boolean;
utforandeVerksamhet: string[];
utforandeVerksamheter: UtforandeVerksamhetResponse[];
// Will be removed
tjansteKoder: string[];
utforandeVerksamhetIds: number[];
adressIds: number[];
}
export interface EmployeesApiResponse {
export interface EmployeesDataResponse {
data: EmployeeCompactResponse[];
meta: PaginationMeta;
}

View File

@@ -1,5 +0,0 @@
export interface KommunResponse {
id: string;
label: string;
count: number;
}

View File

@@ -1,6 +1,6 @@
export interface TjanstResponse {
id: string;
name: string;
tjanstekod: string;
tjanstId: number;
id?: string;
tjanstId?: number;
}

View File

@@ -1,5 +0,0 @@
export interface UtforandeVerksamhetResponse {
id: string;
label: string;
count: number;
}

View File

@@ -0,0 +1,17 @@
import { AvropFilterResponse } from './api/avrop-filter.response.model';
export interface AvropFilter {
id: string;
label: string;
count: number;
}
export function mapResponseToAvropFilter(data: AvropFilterResponse): AvropFilter {
const { id, label, count } = data;
return {
id,
label,
count,
};
}

View File

@@ -1,17 +0,0 @@
import { AvropTjanstResponse } from './api/avrop-tjanst.response.model';
export interface AvropTjanst {
id: string;
label: string;
count: number;
}
export function mapResponseToAvropTjanst(data: AvropTjanstResponse): AvropTjanst {
const { id, label, count } = data;
return {
id,
label,
count,
};
}

View File

@@ -1,7 +1,21 @@
import { RoleEnum } from '@msfa-enums/role.enum';
import { EmployeeCompactResponse, EmployeeResponse } from './api/employee.response.model';
import { PaginationMeta } from './pagination-meta.model';
import { Tjanst } from './tjanst.model';
import { mapResponseToTjanst, Tjanst } from './tjanst.model';
const CURRENT_YEAR = new Date().getFullYear().toString().slice(2, 4);
interface UtforandeVerksamhet {
id: number;
name: string;
allaAdresser: boolean;
adresser?: Adress[];
}
interface Adress {
id: number;
name: string;
}
export interface EmployeeCompact {
id: string;
@@ -19,9 +33,11 @@ export interface Employee {
email: string;
ssn: string;
roles: RoleEnum[];
tjanstCodes: string[];
tjanster?: Tjanst[];
tjanster: Tjanst[];
allaUtforandeVerksamheter: boolean;
utforandeVerksamheter: UtforandeVerksamhet[];
tjanstCodes: string[];
utforandeVerksamhetIds: number[];
utforandeAdressIds: number[];
}
@@ -31,26 +47,15 @@ export interface EmployeesData {
meta: PaginationMeta;
}
export interface EmployeeRequestData {
email: string;
roles: string[];
tjansteKoder: string[];
allaUtforandeVerksamheter: boolean;
utforandeVerksamhetIds: number[];
adressIds: number[];
}
export function mapEmployeeToRequestData(data: Employee): EmployeeRequestData {
const { email, roles, tjanstCodes, allaUtforandeVerksamheter, utforandeVerksamhetIds, utforandeAdressIds } = data;
return {
email,
roles,
tjansteKoder: tjanstCodes,
utforandeVerksamhetIds,
adressIds: utforandeAdressIds,
allaUtforandeVerksamheter: allaUtforandeVerksamheter,
};
function mapResponseToSsn(ssn: string): string {
if (ssn.length === 10) {
const century = +CURRENT_YEAR - +ssn.slice(0, 2) > 0 ? '20' : '19';
ssn = ssn.padStart(12, century);
}
if (ssn.length === 12) {
ssn = `${ssn.slice(0, 8)}-${ssn.slice(8, 12)}`;
}
return ssn;
}
export function mapResponseToEmployeeCompact(data: EmployeeCompactResponse): EmployeeCompact {
@@ -70,10 +75,12 @@ export function mapResponseToEmployee(data: EmployeeResponse): Employee {
firstName,
lastName,
email,
personnummer,
ssn,
roles,
tjansteKoder,
tjanster,
allaUtforandeVerksamheter,
utforandeVerksamheter,
tjansteKoder,
utforandeVerksamhetIds,
adressIds,
} = data;
@@ -83,10 +90,12 @@ export function mapResponseToEmployee(data: EmployeeResponse): Employee {
lastName,
fullName: `${firstName} ${lastName}`,
email,
ssn: personnummer,
ssn: ssn ? mapResponseToSsn(ssn) : null,
roles: roles || [],
tjanstCodes: tjansteKoder || [],
tjanster: tjanster?.map(tjanst => mapResponseToTjanst(tjanst)),
allaUtforandeVerksamheter,
utforandeVerksamheter,
tjanstCodes: tjansteKoder || [],
utforandeVerksamhetIds: utforandeVerksamhetIds || [],
utforandeAdressIds: adressIds || [],
};

View File

@@ -1,17 +0,0 @@
import { KommunResponse } from './api/kommun.response.model';
export interface Kommun {
id: string;
label: string;
count: number;
}
export function mapKommunResponseToKommun(data: KommunResponse): Kommun {
const { id, label, count } = data;
return {
id,
label,
count,
};
}

View File

@@ -5,29 +5,31 @@ export interface Role {
type: RoleEnum;
}
export function mapRoleResponseToRoleObject(type: string): Role {
switch (type) {
// case 'MSFA_Standard':
// return {
// name: 'Basanvändare',
// type: RoleEnum[type],
// };
case 'MSFA_ReportAndPlanning':
return {
name: 'Rapportering, planering och information om deltagare',
type: RoleEnum[type],
};
case 'MSFA_ReceiveDeltagare':
return {
name: 'Ta emot deltagare',
type: RoleEnum[RoleEnum[type]],
};
case 'MSFA_AuthAdmin':
return {
name: 'Administrera behörigheter',
type: RoleEnum[RoleEnum[type]],
};
default:
return null;
}
export function mapResponseToRoles(types: RoleEnum[] = []): Role[] {
return types.map(type => {
switch (type) {
case 'MSFA_Standard':
return {
name: 'Basanvändare',
type: RoleEnum[type],
};
case 'MSFA_ReportAndPlanning':
return {
name: 'Rapportering, planering och information om deltagare',
type: RoleEnum[type],
};
case 'MSFA_ReceiveDeltagare':
return {
name: 'Ta emot deltagare',
type: RoleEnum[RoleEnum[type]],
};
case 'MSFA_AuthAdmin':
return {
name: 'Administrera behörigheter',
type: RoleEnum[RoleEnum[type]],
};
default:
return;
}
});
}

View File

@@ -1,10 +1,10 @@
import { TjanstResponse } from './api/tjanst.response.model';
export interface Tjanst {
id: string;
id?: string;
name: string;
code: string;
tjanstId: number;
tjanstId?: number;
}
export function mapResponseToTjanst(data: TjanstResponse): Tjanst {

View File

@@ -1,19 +0,0 @@
import { UtforandeVerksamhetResponse } from './api/utforande-verksamhet.response.model';
export interface UtforandeVerksamhet {
id: string;
label: string;
count: number;
}
export function mapUtforandeVerksamhetResponseToUtforandeVerksamhet(
data: UtforandeVerksamhetResponse
): UtforandeVerksamhet {
const { id, label, count } = data;
return {
id,
label,
count,
};
}