import { Injectable } from '@angular/core'; import { HttpHeaders, HttpClient, HttpResponse } from '@angular/common/http'; import { Observable, throwError } from 'rxjs'; import { Lock, LockModel, LockPersist } from '@app/core/model/lock/lock.model'; import { ConfigurationService } from '../configuration/configuration.service'; import { BaseHttpV2Service } from '../http/base-http-v2.service'; import { FilterService } from '@common/modules/text-filter/filter-service'; import { LockLookup } from '@app/core/query/lock.lookup'; import { QueryResult } from '@common/model/query-result'; import { catchError } from 'rxjs/operators'; import { Guid } from '@common/types/guid'; @Injectable() export class LockService { private headers = new HttpHeaders(); constructor(private http: BaseHttpV2Service, private configurationService: ConfigurationService, private filterService: FilterService) { } private get apiBase(): string { return `${this.configurationService.server}lock`; } query(q: LockLookup): Observable> { const url = `${this.apiBase}/query`; return this.http.post>(url, q).pipe(catchError((error: any) => throwError(error))); } getSingle(id: Guid, reqFields: string[] = []): Observable { const url = `${this.apiBase}/${id}`; const options = { params: { f: reqFields } }; return this.http .get(url, options).pipe( catchError((error: any) => throwError(error))); } persist(item: LockPersist): Observable { const url = `${this.apiBase}/persist`; return this.http .post(url, item).pipe( catchError((error: any) => throwError(error))); } delete(id: Guid): Observable { const url = `${this.apiBase}/${id}`; return this.http .delete(url).pipe( catchError((error: any) => throwError(error))); } checkLockStatus(targetId: Guid): Observable { return this.http.get(`${this.apiBase}/target/status/${targetId}`) .pipe(catchError((error: any) => throwError(error))); } unlockTarget(targetId: Guid): Observable { return this.http.delete(`${this.apiBase}/target/unlock/${targetId}`) .pipe(catchError((error: any) => throwError(error))); } getSingleWithTarget(targetId: Guid, reqFields: string[] = []): Observable { const url = `${this.apiBase}/target/${targetId}`; const options = { params: { f: reqFields } }; return this.http .get(url, options).pipe( catchError((error: any) => throwError(error))); } //ToDo replace with persist function createOrUpdate(lock: LockModel): Observable { return this.http.post(`${this.apiBase}`, lock, { headers: this.headers }); } }