Updated some models and changed to custom api
This commit is contained in:
@@ -1,14 +1,14 @@
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { environment } from '@dafa-environment';
|
||||
import { EmployeeResponse } from '@dafa-models/api/employee-response.model';
|
||||
import { EmployeeDetail, mapEmployeeReponseToEmployee, User } from '@dafa-models/employee.model';
|
||||
import { EmployeesApiResponse } from '@dafa-models/api/employee-response.model';
|
||||
import { Employee, EmployeeDetail, mapEmployeeReponseToEmployee } 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: User[], searchFilter: string): User[] {
|
||||
function filterEmployees(employees: Employee[], searchFilter: string): Employee[] {
|
||||
return employees.filter(person => person.fullName.toLowerCase().includes(searchFilter.toLowerCase()));
|
||||
}
|
||||
|
||||
@@ -16,23 +16,26 @@ function filterEmployees(employees: User[], searchFilter: string): User[] {
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class EmployeeService {
|
||||
private _employeesApiUrl = `${environment.apiBase}/D_pxOperatorsList`;
|
||||
private _allEmployees$: Observable<User[]> = this.httpClient
|
||||
.get<{ pxResults: EmployeeResponse[] }>(this._employeesApiUrl, {
|
||||
headers: environment.apiHeaders,
|
||||
})
|
||||
.pipe(map(({ pxResults }) => pxResults.map(result => mapEmployeeReponseToEmployee(result))));
|
||||
private _employeesApiUrl = `${environment.api.meet}/employees`;
|
||||
private _employeesRawData: Observable<EmployeesApiResponse> = this.httpClient.get<EmployeesApiResponse>(
|
||||
this._employeesApiUrl,
|
||||
{ headers: environment.api.headers }
|
||||
);
|
||||
private _allEmployees$: Observable<Employee[]> = this._employeesRawData.pipe(
|
||||
map(({ pxResults }) => pxResults.map(result => mapEmployeeReponseToEmployee(result)))
|
||||
);
|
||||
|
||||
private _employeesSortBy$ = new BehaviorSubject<SortBy | null>({ key: 'fullName', reverse: false });
|
||||
public employeesSortBy$: Observable<SortBy> = this._employeesSortBy$.asObservable();
|
||||
private _searchFilter$ = new BehaviorSubject<string>('');
|
||||
public searchFilter$: Observable<string> = this._searchFilter$.asObservable();
|
||||
|
||||
private _filteredEmployees$: Observable<User[]> = combineLatest([this._allEmployees$, this._searchFilter$]).pipe(
|
||||
private _filteredEmployees$: Observable<Employee[]> = combineLatest([this._allEmployees$, this._searchFilter$]).pipe(
|
||||
map(([employees, searchFilter]) => filterEmployees(employees, searchFilter))
|
||||
);
|
||||
|
||||
public filteredEmployees$: Observable<User[]> = combineLatest([
|
||||
public resultCount$: Observable<number> = this._employeesRawData.pipe(map(({ pxResultCount }) => +pxResultCount));
|
||||
public filteredEmployees$: Observable<Employee[]> = combineLatest([
|
||||
this._filteredEmployees$,
|
||||
this._employeesSortBy$,
|
||||
]).pipe(
|
||||
@@ -43,15 +46,15 @@ export class EmployeeService {
|
||||
|
||||
constructor(private httpClient: HttpClient) {}
|
||||
|
||||
public getDetailedEmployeeData(id: string): Observable<User> {
|
||||
return this.httpClient.get<User>(`${this._employeesApiUrl}/${id}`, { params: { _embed: 'participants' } });
|
||||
public getDetailedEmployeeData(id: string): Observable<Employee> {
|
||||
return this.httpClient.get<Employee>(`${this._employeesApiUrl}/${id}`, { params: { _embed: 'participants' } });
|
||||
}
|
||||
|
||||
public setSearchFilter(value: string) {
|
||||
this._searchFilter$.next(value);
|
||||
}
|
||||
|
||||
public setEmployeesSortKey(key: keyof User) {
|
||||
public setEmployeesSortKey(key: keyof Employee) {
|
||||
const currentSortBy = this._employeesSortBy$.getValue();
|
||||
const reverse = currentSortBy?.key === key ? !currentSortBy.reverse : false;
|
||||
this._employeesSortBy$.next({ key, reverse });
|
||||
|
||||
Reference in New Issue
Block a user