import { Injectable } from '@angular/core';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';
import { Telepules } from './telepules';

@Injectable({
    providedIn: 'root'
})
export class TelepulesService {
    telepulesekUrl = '';

    constructor(private http: HttpClient) { }

    getTelepulesekIranyitoSzamMap(): Map<string, Telepules> {
        let telepulesMap = new Map<string, Telepules>();
        this.readFromJson().subscribe(telepulesek => {
            telepulesek.forEach(telepules => {
                telepulesMap.set(telepules.iranyitoSzam, telepules);
            });
        });
        return telepulesMap;
    }

    private readFromJson(): Observable<Telepules[]> {
        return this.http
            .get<Telepules[]>(this.telepulesekUrl)
            .pipe(catchError(this.handleError));
    }

    private handleError(err: HttpErrorResponse) {
        let errorMessage = '';
        if (err.error instanceof ErrorEvent) {
            // A client-side or network error occurred. Handle it accordingly.
            errorMessage = `An error occurred: ${err.error.message}`;
        } else {
            // The backend returned an unsuccessful response code.
            // The response body may contain clues as to what went wrong,
            errorMessage = `Server returned code: ${
                err.status
                }, error message is: ${err.message}`;
        }
        console.error(errorMessage);
        return throwError(errorMessage);
    }
}
