import {Injectable} from "@angular/core"; import {HttpClient} from "@angular/common/http"; import {BehaviorSubject, Observable} from "rxjs"; import {Indicator, Stakeholder} from "../utils/entities/stakeholder"; import {HelperFunctions} from "../openaireLibrary/utils/HelperFunctions.class"; @Injectable({ providedIn: "root" }) export class StakeholderService { private stakeholderSubject: BehaviorSubject = null; constructor(private http: HttpClient) { this.stakeholderSubject = new BehaviorSubject(null); } getStakeholder(url: string, alias:string): Observable { // return new BehaviorSubject(Stakeholder.createECStakeholder()).asObservable(); return this.http.get(url + '/stakeholder/' + encodeURIComponent(alias)); } getAllStakeholders(url: string, type: string = null): Observable { return this.http.get(url + '/stakeholder/all' + (type)?('?type=' + type):''); } getStakeholders(url: string, type: string = null): Observable { return this.http.get(url + '/stakeholder' + (type)?('?type=' + type):''); } getDefaultStakeholders(url: string, type: string = null): Observable { return this.http.get(url + '/stakeholder/default' + (type)?('?type=' + type):''); } saveStakeholder(url: string, stakeholder: Stakeholder): Observable { return this.http.post(url + '/stakeholder/save', stakeholder); } saveIndicator(url: string, path: string[], indicator: Indicator): Observable { path = HelperFunctions.encodeArray(path); return this.http.post(url + '/' + path.join('/') + '/indicator/save', indicator); } deleteElement(url: string, path: string[]): Observable { path = HelperFunctions.encodeArray(path); return this.http.delete(url + '/' + path.join('/')) } getStakeholderAsObservable(): Observable { return this.stakeholderSubject.asObservable(); } get stakeholder(): Stakeholder { return this.stakeholderSubject.getValue(); } setStakeholder(stakeholder: Stakeholder) { this.stakeholderSubject.next(stakeholder); } }