import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router'; import { Observable } from 'rxjs/Observable'; import { environment } from '../../../environments/environment'; import { Team } from '../team'; @Injectable() export class TeamService implements Resolve> { private apiEndPoint = environment.apiUrl + '/api/team'; private cachedTeams: Array = []; constructor(private httpClient: HttpClient) { } public resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise> { return this.list().toPromise(); } public list(): Observable> { return this.httpClient.get>(this.apiEndPoint); } public persist(team: Team): Observable { return team.id === null ? this.create(team) : this.update(team); } public create(team: Team) { return this.httpClient.post(this.apiEndPoint, team); } public update(team: Team) { return this.httpClient.put(`${this.apiEndPoint}/${team.id.toString()}`, team); } public delete(team: Team) { return this.httpClient.delete(`${this.apiEndPoint}/${team.id.toString()}`); } get teams(): Array { return this.cachedTeams; } set teams(teams: Array) { this.cachedTeams = teams; } }