import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; import { map } from "rxjs/operators"; import { AircraftResp, AircraftReq } from '../models/aircraft'; import { BaseService } from './base.service'; import { CacheApiKey } from '../models/cache-api-key.enum'; @Injectable() export class AircraftService extends BaseService { constructor(private http: HttpClient) { super(); } public getListOfAircrafts(simple: boolean = false): Observable> { let url : string; if (simple === true) { url = `${this.apiUrl}/Aircraft/GetSimple`; } else { url = `${this.apiUrl}/Aircraft`; } let callToApi = this.http.get>(url, { headers: this.headers }); return this.serviceCacheApi.get>(CacheApiKey.Aircraft, callToApi); } public AddAircraft(aircraftName: string, dataImg: string) { const bodyNewAircraft: AircraftReq = { id: 0, name: aircraftName, imageData: dataImg }; return this.http.post(`${this.apiUrl}/Aircraft`, bodyNewAircraft, { headers: this.headers }); } public getById(id: number) : Observable { return this.serviceCacheApi.getByKey>(CacheApiKey.Aircraft) .pipe(map(data => { return data.find(f => f.id === id); })); } public getFromCache(): Observable> { return this.serviceCacheApi.getByKey>(CacheApiKey.Aircraft); } }