import { HttpClient } from '@angular/common/http'; import { Inject, Injectable } from '@angular/core'; import { select, Store } from '@ngrx/store'; import { Observable } from 'rxjs'; import * as fromCore from '../reducers/root-reducer'; import { map } from 'rxjs/operators'; import { get, map as _map } from 'lodash'; import { Environment } from '../../shared/interfaces/environment.interface'; import { CaseNotes } from '../models/case-notes/case-notes'; import { LoadCaseNotesAction, SaveCaseNotesAction } from '../actions/case-notes.action'; import { SaveCaseNotes } from '../models/case-notes/save-case-notes'; @Injectable() export class CaseNotesService { caseNotes: Observable; caseNotesLoading: Observable; constructor(private http: HttpClient, private store: Store, @Inject('environment') private environment: Environment) { this.caseNotes = this.store.pipe(select(fromCore.getAllCaseNotes)); this.caseNotesLoading = this.store.pipe(select(fromCore.getCaseNotesLoading)); } dispatchLoadCaseNotes(payload: number): void { this.store.dispatch(new LoadCaseNotesAction( payload )); } dispatchSaveCaseNotes(payload: SaveCaseNotes): void { this.store.dispatch(new SaveCaseNotesAction( payload )); } getCaseNotes(payload: number): Observable { return this.http.get(`${this.environment.utilityQueryService}Case/CaseNote/${payload}`).pipe( map((data: unknown) => { return _map(get(data, 'responseObject'), (i: unknown) => new CaseNotes(i)); }), ); } saveCaseNotes(payload: SaveCaseNotes): Observable { return this.http.post(`${this.environment.utilityCommandService}Case/CaseNote`, { ...payload }).pipe( map((data: unknown) => get(data, 'responseObject')), ); } }