Project

General

Profile

1 57449 argiro.kok
import {Injectable} from "@angular/core";
2
import {HttpClient} from "@angular/common/http";
3
import {BehaviorSubject, Observable} from "rxjs";
4 57673 k.triantaf
import {Indicator, IndicatorPath, Stakeholder} from "../utils/entities/stakeholder";
5 57591 k.triantaf
import {HelperFunctions} from "../openaireLibrary/utils/HelperFunctions.class";
6 57639 k.triantaf
import {map} from "rxjs/operators";
7 57449 argiro.kok
8 57673 k.triantaf
let maps: string[] = ['parameters', 'filters'];
9
10 57496 k.triantaf
@Injectable({
11
  providedIn: "root"
12
})
13 57449 argiro.kok
export class StakeholderService {
14
15 57496 k.triantaf
  private stakeholderSubject: BehaviorSubject<Stakeholder> = null;
16
17 57449 argiro.kok
  constructor(private http: HttpClient) {
18 57496 k.triantaf
    this.stakeholderSubject = new BehaviorSubject<Stakeholder>(null);
19 57449 argiro.kok
  }
20
21 57514 k.triantaf
  getStakeholder(url: string, alias:string): Observable<Stakeholder> {
22 57673 k.triantaf
    /*return new BehaviorSubject<Stakeholder>(
23
      StakeholderCreator.createFunderFromDefaultProfile("ec","funder","ec__________::EC",
24
        "European Commission","EC",
25
        false,"ec",true,true)).asObservable();*/
26
    return this.http.get<Stakeholder>(url + '/stakeholder/' + encodeURIComponent(alias)).pipe(map(stakeholder => {
27
      return this.formalize(stakeholder);
28
    }));
29 57449 argiro.kok
  }
30 57496 k.triantaf
31 57574 k.triantaf
  getAllStakeholders(url: string, type: string = null): Observable<Stakeholder[]> {
32 57639 k.triantaf
    return this.http.get<Stakeholder[]>(url + '/stakeholder/all' + (type)?('?type=' + type):'').pipe(map(stakeholders => {
33 57673 k.triantaf
      return this.formalize(stakeholders);
34 57639 k.triantaf
    }));
35 57574 k.triantaf
  }
36
37
  getStakeholders(url: string, type: string = null): Observable<Stakeholder[]> {
38 57639 k.triantaf
    return this.http.get<Stakeholder[]>(url + '/stakeholder' + (type)?('?type=' + type):'').pipe(map(stakeholders => {
39 57673 k.triantaf
      return this.formalize(stakeholders);
40 57639 k.triantaf
    }));
41 57574 k.triantaf
  }
42
43
  getDefaultStakeholders(url: string, type: string = null): Observable<Stakeholder[]> {
44 57639 k.triantaf
    return this.http.get<Stakeholder[]>(url + '/stakeholder/default' + (type)?('?type=' + type):'').pipe(map(stakeholders => {
45 57673 k.triantaf
      return this.formalize(stakeholders);
46 57639 k.triantaf
    }));
47 57574 k.triantaf
  }
48
49 57673 k.triantaf
  buildStakeholder(url: string, stakeholder: Stakeholder): Observable<Stakeholder> {
50
    return this.http.post<Stakeholder>(url + '/build-stakeholder', stakeholder).pipe(map(stakeholder => {
51
      return this.formalize(stakeholder);
52
    }));
53
  }
54
55 57574 k.triantaf
  saveStakeholder(url: string, stakeholder: Stakeholder): Observable<Stakeholder> {
56 57639 k.triantaf
    return this.http.post<Stakeholder>(url + '/stakeholder/save', stakeholder).pipe(map(stakeholder => {
57 57673 k.triantaf
      return this.formalize(stakeholder);
58 57639 k.triantaf
    }));
59 57574 k.triantaf
  }
60
61 57673 k.triantaf
  saveElement(url: string, element: any, path: string[] = []): Observable<any> {
62 57591 k.triantaf
    path = HelperFunctions.encodeArray(path);
63 57673 k.triantaf
    return this.http.post<any>(url + ((path.length > 0)?'/':'') + path.join('/') +
64
      '/save', element).pipe(map(element => {
65
        return this.formalize(element);
66
    }));
67 57574 k.triantaf
  }
68
69 57594 k.triantaf
  deleteElement(url: string, path: string[]): Observable<any> {
70 57591 k.triantaf
    path = HelperFunctions.encodeArray(path);
71 57673 k.triantaf
    return this.http.delete<any>(url + '/' + path.join('/') + '/delete');
72 57574 k.triantaf
  }
73
74 57673 k.triantaf
  reorderIndicators(url: string, path: string[], indicators: Indicator[], type: string = 'chart'): Observable<boolean> {
75
    path = HelperFunctions.encodeArray(path);
76
    return this.http.post<boolean>(url + '/' + path.join('/') + '/' + type + '/reorder', indicators);
77
  }
78
79 57496 k.triantaf
  getStakeholderAsObservable(): Observable<Stakeholder> {
80
    return this.stakeholderSubject.asObservable();
81
  }
82
83
  get stakeholder(): Stakeholder {
84
    return this.stakeholderSubject.getValue();
85
  }
86
87
  setStakeholder(stakeholder: Stakeholder) {
88
    this.stakeholderSubject.next(stakeholder);
89
  }
90 57639 k.triantaf
91 57673 k.triantaf
  private formalize(element: any) {
92
    return HelperFunctions.copy(element);
93 57639 k.triantaf
  }
94 57449 argiro.kok
}