Project

General

Profile

1
import {Injectable} from "@angular/core";
2
import {HttpClient} from "@angular/common/http";
3
import {BehaviorSubject, Observable} from "rxjs";
4
import {Indicator, IndicatorPath, Stakeholder} from "../utils/entities/stakeholder";
5
import {HelperFunctions} from "../openaireLibrary/utils/HelperFunctions.class";
6
import {map} from "rxjs/operators";
7

    
8
let maps: string[] = ['parameters', 'filters'];
9

    
10
@Injectable({
11
  providedIn: "root"
12
})
13
export class StakeholderService {
14

    
15
  private stakeholderSubject: BehaviorSubject<Stakeholder> = null;
16

    
17
  constructor(private http: HttpClient) {
18
    this.stakeholderSubject = new BehaviorSubject<Stakeholder>(null);
19
  }
20

    
21
  getStakeholder(url: string, alias:string): Observable<Stakeholder> {
22
    /*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
  }
30

    
31
  getAllStakeholders(url: string, type: string = null): Observable<Stakeholder[]> {
32
    return this.http.get<Stakeholder[]>(url + '/stakeholder/all' + (type)?('?type=' + type):'').pipe(map(stakeholders => {
33
      return this.formalize(stakeholders);
34
    }));
35
  }
36

    
37
  getStakeholders(url: string, type: string = null): Observable<Stakeholder[]> {
38
    return this.http.get<Stakeholder[]>(url + '/stakeholder' + (type)?('?type=' + type):'').pipe(map(stakeholders => {
39
      return this.formalize(stakeholders);
40
    }));
41
  }
42

    
43
  getDefaultStakeholders(url: string, type: string = null): Observable<Stakeholder[]> {
44
    return this.http.get<Stakeholder[]>(url + '/stakeholder/default' + (type)?('?type=' + type):'').pipe(map(stakeholders => {
45
      return this.formalize(stakeholders);
46
    }));
47
  }
48

    
49
  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
  saveStakeholder(url: string, stakeholder: Stakeholder): Observable<Stakeholder> {
56
    return this.http.post<Stakeholder>(url + '/stakeholder/save', stakeholder).pipe(map(stakeholder => {
57
      return this.formalize(stakeholder);
58
    }));
59
  }
60

    
61
  saveElement(url: string, element: any, path: string[] = []): Observable<any> {
62
    path = HelperFunctions.encodeArray(path);
63
    return this.http.post<any>(url + ((path.length > 0)?'/':'') + path.join('/') +
64
      '/save', element).pipe(map(element => {
65
        return this.formalize(element);
66
    }));
67
  }
68

    
69
  deleteElement(url: string, path: string[]): Observable<any> {
70
    path = HelperFunctions.encodeArray(path);
71
    return this.http.delete<any>(url + '/' + path.join('/') + '/delete');
72
  }
73

    
74
  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
  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

    
91
  private formalize(element: any) {
92
    return HelperFunctions.copy(element);
93
  }
94
}
    (1-1/1)