feat(employee): Added functionality to delete employees. (TV-352)

Squashed commit of the following:

commit 2602b9205ef86307fa7c85ecb6ce87cb51b71150
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Thu Sep 2 15:40:49 2021 +0200

    Added error-handling

commit 4a3f79948b992e5ad7278328957380215ad21ed7
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Thu Sep 2 14:48:54 2021 +0200

    Removed some unused variables

commit f8e69dce84fee2b1fe2a06d6f0960511c286e2b5
Merge: b155865 b80bf22
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Thu Sep 2 14:39:44 2021 +0200

    Merged develop and fixed conflicts

commit b15586559dab669d652d3a44625bacae4620ed40
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Thu Sep 2 14:34:58 2021 +0200

    Added separate component for employee deletion

commit 1720b4954ebbc2868db6f0304fc57b0f3ff07216
Author: Aden Hassan <aden.hassan@arbetsformedlingen.se>
Date:   Tue Aug 31 07:50:56 2021 +0200

    added the showing of errror- and succsess messages when employee is deleted (TV-352)

commit 2556d53802249fff545a2d256a178479103108e7
Author: Aden Hassan <aden.hassan@arbetsformedlingen.se>
Date:   Mon Aug 30 13:33:22 2021 +0200

    minor change (TV-352)

commit 035dbbe67486392a7a9c656ac73103e938953b24
Author: Aden Hassan <aden.hassan@arbetsformedlingen.se>
Date:   Mon Aug 30 12:38:07 2021 +0200

    added close and open methods for better handling of modal (TV-352)

commit abc9ce0f8580ae1b9d784bc7591f095faeddcc33
Author: Aden Hassan <aden.hassan@arbetsformedlingen.se>
Date:   Mon Aug 30 12:27:07 2021 +0200

    feat(edit-employee): added functionality to delete employee, and catch error if such exists

commit 23603dd2d84b0e694a19c2131c9c842cf730d97b
Merge: 56a4a6a 02cf0f6
Author: Aden Hassan <aden.hassan@arbetsformedlingen.se>
Date:   Mon Aug 30 11:19:18 2021 +0200

    Merge branch 'develop' into feature/TV-352-add-delete-employee-button

commit 56a4a6a9c9195542f51578bd4ee937086ace8df8
Author: Aden Hassan <aden.hassan@arbetsformedlingen.se>
Date:   Fri Aug 27 12:58:23 2021 +0200

    added the basic http-delete request method

commit 2f61ff7d6ac2c42a7972fc88548d3d59172cbcc1
Author: Aden Hassan <aden.hassan@arbetsformedlingen.se>
Date:   Fri Aug 27 09:18:13 2021 +0200

    added the basic html/css and functionality for deleting an employee from edit-page
This commit is contained in:
Erik Tiekstra
2021-09-02 15:42:03 +02:00
parent b80bf226a9
commit b7ff429db3
19 changed files with 218 additions and 139 deletions

View File

@@ -5,7 +5,6 @@ import { ErrorType } from '@msfa-enums/error-type.enum';
import { RoleEnum } from '@msfa-enums/role.enum';
import { SortOrder } from '@msfa-enums/sort-order.enum';
import { environment } from '@msfa-environment';
import { DeleteEmployeeMockApiResponse } from '@msfa-models/api/delete-employee.response.model';
import { EmployeeInviteResponse } from '@msfa-models/api/employee-invite.response.model';
import {
EmployeeCompactResponse,
@@ -25,7 +24,7 @@ import { mapRoleResponseToRoleObject, Role } from '@msfa-models/role.model';
import { Sort } from '@msfa-models/sort.model';
import { ErrorService } from '@msfa-services/error.service';
import { BehaviorSubject, combineLatest, Observable, of, throwError } from 'rxjs';
import { catchError, filter, map, switchMap, take } from 'rxjs/operators';
import { catchError, filter, map, switchMap, take, tap } from 'rxjs/operators';
import { TjanstService } from './tjanst.service';
@Injectable({
@@ -40,9 +39,14 @@ export class EmployeeService extends UnsubscribeDirective {
public sort$: Observable<Sort<keyof EmployeeCompactResponse>> = this._sort$.asObservable();
private _searchFilter$ = new BehaviorSubject<string>('');
private _onlyEmployeesWithoutAuthorization$ = new BehaviorSubject<boolean>(false);
public onlyEmployeesWithoutAuthorization$: Observable<boolean> = this._onlyEmployeesWithoutAuthorization$.asObservable();
private _employee$ = new BehaviorSubject<Employee>(null);
public employee$: Observable<Employee> = this._employee$.asObservable();
private _lastDeletedEmployee$ = new BehaviorSubject<Employee>(null);
public lastDeletedEmployee$: Observable<Employee> = this._lastDeletedEmployee$.asObservable();
private _employeeToDelete$ = new BehaviorSubject<Employee>(null);
public employeeToDelete$: Observable<Employee> = this._employeeToDelete$.asObservable();
constructor(
private httpClient: HttpClient,
private errorService: ErrorService,
@@ -58,7 +62,7 @@ export class EmployeeService extends UnsubscribeDirective {
filter(([employee, allTjanster]) => !!(employee && allTjanster?.length)),
map(([employee, allTjanster]) => {
const tjanster = [];
employee.tjanstCodes.forEach(code => {
employee.tjanstCodes?.forEach(code => {
const currentTjanst = allTjanster.find(tjanst => tjanst.code === code);
if (currentTjanst) {
@@ -82,6 +86,7 @@ export class EmployeeService extends UnsubscribeDirective {
this._sort$,
this._searchFilter$,
this._onlyEmployeesWithoutAuthorization$,
this._lastDeletedEmployee$,
]).pipe(
switchMap(([limit, page, sort, searchFilter, onlyEmployeesWithoutAuthorization]) =>
this._fetchEmployees$(limit, page, sort, searchFilter, onlyEmployeesWithoutAuthorization)
@@ -144,17 +149,17 @@ export class EmployeeService extends UnsubscribeDirective {
this._onlyEmployeesWithoutAuthorization$.next(value);
}
// Not done, waiting for delete api http response
public deleteEmployee(id: string): Observable<any> {
return this.httpClient.delete<DeleteEmployeeMockApiResponse>(`${this._apiBaseUrl}/${id}`).pipe(
take(1),
map(response => {
return {
status: response.status || 200, // mockresponse
message: response.message || 'deleted succeeded', // mockresponse
};
public setEmployeeToDelete(employee: Employee): void {
this._employeeToDelete$.next(employee);
}
public deleteEmployee(employee: Employee): Observable<Employee | Partial<Employee>> {
return this.httpClient.delete<void>(`${this._apiBaseUrl}/hubba`).pipe(
tap(() => {
this._lastDeletedEmployee$.next(employee);
}),
catchError(error => throwError({ message: error as string, type: ErrorType.API }))
map(() => employee),
catchError(error => throwError(errorToCustomError(error)))
);
}
@@ -184,8 +189,11 @@ export class EmployeeService extends UnsubscribeDirective {
})
.pipe(
take(1),
map(res => res.data),
catchError(error => throwError({ message: error as string, type: ErrorType.API }))
map(({ data }) => data),
catchError(error => {
this.errorService.add(errorToCustomError(error));
return of(null);
})
);
}