96 lines
3.5 KiB
TypeScript
96 lines
3.5 KiB
TypeScript
import { Injectable } from '@angular/core';
|
|
import { EmployeesService } from '../services/employees.service';
|
|
import { createEffect, Actions, ofType } from '@ngrx/effects';
|
|
import { Observable, of, EMPTY } from 'rxjs';
|
|
import { Action } from '@ngrx/store';
|
|
import { EmployeesActionsTypes, EmployeesActions } from './employees.actions';
|
|
import { mergeMap, map, catchError } from 'rxjs/operators';
|
|
import { GetAllEmployeesActionSuccess,
|
|
GetAllEmployeesActionError,
|
|
SearchEmployeesActionSuccess,
|
|
SearchEmployeesActionError,
|
|
DeleteEmployeesActionSuccess,
|
|
DeleteEmployeesActionError,
|
|
NewEmployeeActionSuccess,
|
|
SaveEmployeeActionSuccess,
|
|
SaveEmployeeActionError,
|
|
EditEmployeeActionSuccess,
|
|
EditEmployeeActionError,
|
|
UpdateEmployeeActionSuccess,
|
|
UpdateEmployeeActionError} from './employees.actions';
|
|
|
|
@Injectable()
|
|
export class EmployeesEffects {
|
|
getAllEmployeesEffect$:Observable<EmployeesActions> = createEffect(() => this.actions$.pipe(
|
|
ofType(EmployeesActionsTypes.GET_ALL_EMPLOYEES),
|
|
mergeMap((action:EmployeesActions) => {
|
|
return this.employeesService.getAllEmployees().pipe(
|
|
map(employees => new GetAllEmployeesActionSuccess(employees)),
|
|
catchError((err) => of(new GetAllEmployeesActionError(err.message)))
|
|
)
|
|
})
|
|
));
|
|
|
|
searchEmployeesEffect$:Observable<EmployeesActions> = createEffect(() => this.actions$.pipe(
|
|
ofType(EmployeesActionsTypes.SEARCH_EMPLOYEES),
|
|
mergeMap((action:EmployeesActions) => {
|
|
return this.employeesService.searchEmployees(action.payload).pipe(
|
|
map(employees => new SearchEmployeesActionSuccess(employees)),
|
|
catchError((err) => of(new SearchEmployeesActionError(err.message)))
|
|
)
|
|
})
|
|
));
|
|
|
|
deleteEmployeesEffect$:Observable<EmployeesActions> = createEffect(() => this.actions$.pipe(
|
|
ofType(EmployeesActionsTypes.DELETE_EMPLOYEES),
|
|
mergeMap((action:EmployeesActions) => {
|
|
return this.employeesService.deleteEmployee(action.payload).pipe(
|
|
map(() => new DeleteEmployeesActionSuccess(action.payload)),
|
|
catchError((err) => of(new DeleteEmployeesActionError(err.message)))
|
|
)
|
|
})
|
|
));
|
|
|
|
newEmployeesEffect$:Observable<EmployeesActions> = createEffect(() => this.actions$.pipe(
|
|
ofType(EmployeesActionsTypes.NEW_EMPLOYEE),
|
|
map((action:EmployeesActions) => {
|
|
return new NewEmployeeActionSuccess({});
|
|
})
|
|
));
|
|
|
|
saveEmployeeEffect$:Observable<EmployeesActions> = createEffect(() => this.actions$.pipe(
|
|
ofType(EmployeesActionsTypes.SAVE_EMPLOYEE),
|
|
mergeMap((action:EmployeesActions) => {
|
|
return this.employeesService.saveEmployee(action.payload).pipe(
|
|
map((employee) => new SaveEmployeeActionSuccess(employee)),
|
|
catchError((err) => of(new SaveEmployeeActionError(err.message)))
|
|
)
|
|
})
|
|
));
|
|
|
|
editEmployeeEffect$:Observable<EmployeesActions> = createEffect(() => this.actions$.pipe(
|
|
ofType(EmployeesActionsTypes.EDIT_EMPLOYEE),
|
|
mergeMap((action:EmployeesActions) => {
|
|
return this.employeesService.getEmployee(action.payload).pipe(
|
|
map((employee) => new EditEmployeeActionSuccess(employee)),
|
|
catchError((err) => of(new EditEmployeeActionError(err.message)))
|
|
)
|
|
})
|
|
));
|
|
|
|
updateEmployeeEffect$:Observable<EmployeesActions> = createEffect(() => this.actions$.pipe(
|
|
ofType(EmployeesActionsTypes.UPDATE_EMPLOYEE),
|
|
mergeMap((action:EmployeesActions) => {
|
|
return this.employeesService.updateEmployee(action.payload).pipe(
|
|
map((employee) => new UpdateEmployeeActionSuccess(employee)),
|
|
catchError((err) => of(new UpdateEmployeeActionError(err.message)))
|
|
)
|
|
})
|
|
));
|
|
|
|
constructor(
|
|
private employeesService:EmployeesService,
|
|
private actions$:Actions
|
|
) {}
|
|
}
|