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