import { Injectable } from '@angular/core'; import { HttpClient } from "@angular/common/http"; import { Observable, from } from "rxjs"; import { Season } from '../models/season.model'; import { ServerEndpointService } from './server-endpoint.service'; @Injectable({ providedIn: 'root' }) export class SeasonsService { seasons: Season[] = []; useTestData: boolean = false; constructor( private httpClient: HttpClient, private serverEndpointService: ServerEndpointService, ) {} private convertToClientSeason(data: any): Season { let _season = new Season(); _season.id = data.id.toString(); _season.title = data.title; _season.subTitle = data.subTitle; _season.startingDate = new Date(data.startingDate); _season.racers = []; _season.races = data.races; _season.standings = data.standings; console.log(_season); return _season; } getAllSeasons(): Observable> { if(this.useTestData) { return this.httpClient.get>("assets/Seasons.json"); } let promise = new Promise>((resolve, reject) =>{ this.httpClient.get>(this.serverEndpointService.getCurrentEndpoint()+"seasons/").subscribe(data => { let seasons: Season[] = []; for(let server_season of data) { let _season = this.convertToClientSeason(server_season); seasons.push(_season) console.log(_season) console.log(server_season) } resolve(seasons); //reject(undefined); }); }); return from(promise); } getSeason(id: string): Observable { if(this.useTestData) { let promise = new Promise((resolve, reject) =>{ this.httpClient.get>("assets/Seasons.json").subscribe(data => { for(let season of data) { if(season.id.toString() == id) { resolve(season); } } reject(undefined); }); }); return from(promise); } let promise = new Promise((resolve, reject) =>{ this.httpClient.get>(this.serverEndpointService.getCurrentEndpoint()+"seasons/"+id).subscribe(data => { let _season = this.convertToClientSeason(data); console.log(data); console.log(_season); resolve(_season); }); }); return from(promise); } create(title: string, subTitle: string, startingDate: Date) { return this.httpClient.post(this.serverEndpointService.getCurrentEndpoint()+"seasons/create", {title, subTitle, startingDate}); } updateSeason(id: string) { this.httpClient.get(this.serverEndpointService.getCurrentEndpoint()+"seasons/"+id+"/refresh").subscribe(data => { }); } }