import { Injectable } from '@angular/core'; import { Observable } from 'rxjs/Rx'; import 'rxjs/add/operator/map' import { Http, Response, Headers } from '@angular/http'; import { Flight } from './../classes/flight.class'; import { User } from './../classes/user.class'; import { Reader } from './../classes/reader.class'; import { Plane } from './../classes/plane.class'; @Injectable() export class DataService { url:string = ""; constructor(private http : Http){ } load() : Promise { return new Promise((resolve, reject) => { if(this.url != "") { resolve(); } else { this.http.get('/app/config/api.json').subscribe((res)=>{ var data = res.json(); this.url = data.protocol + data.hostname + ":" + data.port + "/" + data.api; console.log(this.url); resolve(); }); } }); } //FLIGHTS flight(id:number): Observable { let flightdata = this.http.get(`${this.url}/flights/${id}`, {headers: this.getHeaders()}).map(r => r.json()); return flightdata; } flights(): Observable { let flightdata = this.http.get(`${this.url}/flights`, {headers: this.getHeaders()}).map(r => r.json()); return flightdata; } endFlight(id:number): Observable { let flight = this.http.put(`${this.url}/flights/${id}/stop`, {headers: this.getHeaders()}).map(r => r.json()); return flight } //USERS user(id:number): Observable { let usersdata = this.http.get(`${this.url}/users/${id}`, {headers: this.getHeaders()}).map(r => r.json()); return usersdata; } users(): Observable { let usersdata = this.http.get(`${this.url}/users`, {headers: this.getHeaders()}).map(r => r.json()); return usersdata; } postUser(user:User): Observable{ let userData = this.http.post(`${this.url}/users`, {name:user.name, cardId: user.card, role:user.role}, {headers: this.getHeaders()}).map(r => r.json()); return userData; } editUser(user:User): Observable{ let userData = this.http.put(`${this.url}/users/${user.id}`, {name:user.name, cardId: user.card, role:user.role}, {headers: this.getHeaders()}).map(r => r.json()); return userData; } //READERS reader(id:number): Observable { let readerData = this.http.get(`${this.url}/readers/${id}`, {headers: this.getHeaders()}).map(r => r.json()); return readerData; } readers(): Observable { let readersData = this.http.get(`${this.url}/readers`, {headers: this.getHeaders()}).map(r => r.json()); return readersData; } editReader(reader:Reader): Observable{ let readerData = this.http.put(`${this.url}/readers/${reader.id}`, {readerId:reader.reader_id, planeId:reader.plane.id}, {headers: this.getHeaders()}).map(r => r.json()); return readerData; } //PLANES plane(id:number): Observable { let planeData = this.http.get(`${this.url}/planes/${id}`, {headers: this.getHeaders()}).map(r => r.json()); return planeData; } planes(): Observable { let planesData = this.http.get(`${this.url}/planes`, {headers: this.getHeaders()}).map(r => r.json()); return planesData; } postPlane(plane:Plane): Observable{ let userData = this.http.post(`${this.url}/planes`, {name:plane.name, registration: plane.registration, model:plane.model, comment:plane.comment}, {headers: this.getHeaders()}).map(r => r.json()); return userData; } editPlane(plane:Plane): Observable{ let planeData = this.http.put(`${this.url}/planes/${plane.id}`, {name:plane.name, registration: plane.registration, model:plane.model, comment:plane.comment}, {headers: this.getHeaders()}).map(r => r.json()); return planeData; } //OTHER private getHeaders(){ let headers = new Headers(); headers.append('Accept', 'application/json'); return headers; } }