Added user service

This commit is contained in:
Erik Tiekstra
2021-05-05 10:12:47 +02:00
parent 1c0f77b506
commit cd60e9383a
15 changed files with 100 additions and 41 deletions

View File

@@ -1,13 +1,14 @@
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { environment } from '@dafa-environment';
import { Employee, EmployeeDetail, mapEmployeeReponseToEmployee } from '@dafa-models/employee.model';
import { EmployeeResponse } from '@dafa-models/api/employee-response.model';
import { EmployeeDetail, mapEmployeeReponseToEmployee, User } from '@dafa-models/employee.model';
import { SortBy } from '@dafa-models/sort-by.model';
import { sort } from '@dafa-utils/sort.util';
import { BehaviorSubject, combineLatest, Observable, throwError } from 'rxjs';
import { catchError, map } from 'rxjs/operators';
function filterEmployees(employees: Employee[], searchFilter: string): Employee[] {
function filterEmployees(employees: User[], searchFilter: string): User[] {
return employees.filter(person => person.fullName.toLowerCase().includes(searchFilter.toLowerCase()));
}
@@ -16,8 +17,8 @@ function filterEmployees(employees: Employee[], searchFilter: string): Employee[
})
export class EmployeeService {
private _employeesApiUrl = `${environment.apiBase}/D_pxOperatorsList`;
private _allEmployees$: Observable<Employee[]> = this.httpClient
.get<any>(this._employeesApiUrl, {
private _allEmployees$: Observable<User[]> = this.httpClient
.get<{ pxResults: EmployeeResponse[] }>(this._employeesApiUrl, {
headers: environment.apiHeaders,
})
.pipe(map(({ pxResults }) => pxResults.map(result => mapEmployeeReponseToEmployee(result))));
@@ -27,11 +28,11 @@ export class EmployeeService {
private _searchFilter$ = new BehaviorSubject<string>('');
public searchFilter$: Observable<string> = this._searchFilter$.asObservable();
private _filteredEmployees$: Observable<Employee[]> = combineLatest([this._allEmployees$, this._searchFilter$]).pipe(
private _filteredEmployees$: Observable<User[]> = combineLatest([this._allEmployees$, this._searchFilter$]).pipe(
map(([employees, searchFilter]) => filterEmployees(employees, searchFilter))
);
public filteredEmployees$: Observable<Employee[]> = combineLatest([
public filteredEmployees$: Observable<User[]> = combineLatest([
this._filteredEmployees$,
this._employeesSortBy$,
]).pipe(
@@ -42,15 +43,15 @@ export class EmployeeService {
constructor(private httpClient: HttpClient) {}
public getDetailedEmployeeData(id: string): Observable<Employee> {
return this.httpClient.get<Employee>(`${this._employeesApiUrl}/${id}`, { params: { _embed: 'participants' } });
public getDetailedEmployeeData(id: string): Observable<User> {
return this.httpClient.get<User>(`${this._employeesApiUrl}/${id}`, { params: { _embed: 'participants' } });
}
public setSearchFilter(value: string) {
this._searchFilter$.next(value);
}
public setEmployeesSortKey(key: keyof Employee) {
public setEmployeesSortKey(key: keyof User) {
const currentSortBy = this._employeesSortBy$.getValue();
const reverse = currentSortBy?.key === key ? !currentSortBy.reverse : false;
this._employeesSortBy$.next({ key, reverse });