Project

General

Profile

1
import {Injectable} from '@angular/core';
2
import {Jsonp, URLSearchParams } from '@angular/http';
3
import {Http, Response} from '@angular/http';
4
import {Observable}     from 'rxjs/Observable';
5
// import {Claim}           from '../claim';
6
import {OpenaireProperties} from '../../../utils/properties/openaireProperties';
7
import 'rxjs/add/observable/of';
8
import 'rxjs/add/operator/do';
9
import 'rxjs/add/operator/share';
10
import { CacheService  } from '../../../shared/cache.service';
11
import { CustomOptions } from './customOptions.class';
12
@Injectable()
13
export class ClaimsService {
14
  private baseUrl;
15
  constructor(private jsonp: Jsonp, private http: Http, public _cache: CacheService) {
16
    this.baseUrl = OpenaireProperties.getClaimsAPIURL();
17
  }
18

    
19
  private getClaimRequest(size : number, page : number, url :string, fromCache:boolean):any {
20
    console.info('ClaimsService: Claims request: '+url);
21
    let key = url;
22
    if (fromCache && this._cache.has(key)) {
23
      return Observable.of(this._cache.get(key));
24
    }
25
      return this.http.get( url, CustomOptions.getAuthOptions())
26
                    .map(request => <any> request.json())
27
                    .do(request => console.info("Get claims: offset = "+(size*(page-1)) + " limit ="+size ))
28
                    .catch(this.handleError)
29
                    .do(res => {
30
                      this._cache.set(key, res);
31
                    });
32
  }
33
  getClaims( size : number, page : number, keyword:string, sortby: string, descending: boolean, types: string):any {
34
    console.info('ClaimsService: getClaims     ' );
35
    console.info('ClaimsService: Types : '+types );
36
    let url = this.baseUrl +"claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+"&"+types;
37
     return this.getClaimRequest(size,page,url,true);
38

    
39
  }
40
  getClaimsByUser( size : number, page : number, user:string, keyword:string, sortby: string, descending: boolean, types: string):any {
41
    console.info('ClaimsService: getClaims for user : '+user);
42
    let url = this.baseUrl +"users/claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+"&"+types;
43
     return this.getClaimRequest(size,page,url,false);
44

    
45
  }
46
  getClaimsBycontext( size : number, page : number, contextId:string, keyword:string, sortby: string, descending: boolean, types: string ):any {
47
    console.info('ClaimsService: getClaims for context : '+contextId);
48
    let url = this.baseUrl +"contexts/"+contextId+"/claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+"&"+types;
49
     return this.getClaimRequest(size,page,url,true);
50

    
51
  }
52
  getClaimsByResult( size : number, page : number, resultId:string, keyword:string, sortby: string, descending: boolean, types: string ):any {
53
    console.info('ClaimsService: getClaims for result : '+resultId);
54
    let url = this.baseUrl +"results/"+resultId+"/claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+"&"+types;
55
     return this.getClaimRequest(size,page,url,true);
56

    
57
  }
58
  getClaimsByProject( size : number, page : number, projectId:string, keyword:string, sortby: string, descending: boolean, types: string ):any {
59
    console.info('ClaimsService: getClaims for project : '+projectId);
60
    let url = this.baseUrl +"projects/"+projectId+"/claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+"&"+types;
61
     return this.getClaimRequest(size,page,url,true);
62
  }
63

    
64
  deleteClaimById(claimId:string ):any{
65
    console.warn('Trying to delete claim with id : '+claimId);
66
    let url = this.baseUrl +"claims/"+claimId;
67
    // let headers = new Headers({ 'Content-Type': 'application/json' });
68
    // let options = new RequestOptions({ headers: headers });
69
      return this.http.delete( url,  CustomOptions.getAuthOptionsWithBody()).map(request => <any> request.json())
70
      // .do(request => console.info("After delete" ))
71
      .catch(this.handleError);
72

    
73
  }
74
  deleteBulk(claimIds:string[]):any{
75

    
76
    console.warn('Trying to delete claims with ids : '+claimIds);
77
     var url = "";
78

    
79
    for(var claimId of claimIds){
80
      url=url+(url.length >0 ?"&":"")+"claimId="+claimId;
81
    }
82
    url= this.baseUrl +"claims/bulk?"+url;
83

    
84
    // let headers = new Headers({ 'Content-Type': 'application/json' });
85
    // let options = new RequestOptions({ headers: headers });
86
      return this.http.delete( url,  CustomOptions.getAuthOptions()).map(request => <any> request.json())
87
      // .do(request => console.info("After delete" ))
88
      .catch(this.handleError);
89

    
90
  }
91
  insertBulkClaims(claims):any{
92
    console.warn('Trying toinsert claims  : '+claims);
93
    let url = this.baseUrl +"claims/bulk";
94
    let body = JSON.stringify( claims );
95
    console.warn('Json body:  : '+body);
96
    // let headers = new Headers({ 'Content-Type': 'application/json' });
97
    // let options = new RequestOptions({ headers: headers });
98
    return this.http.post(url, body,  CustomOptions.getAuthOptionsWithBody())
99
                          .map(res => res.json())
100
                          .do(request => console.info("Insert Response:"+request.status) )
101
                          .catch(this.handleError);
102

    
103
    }
104
  insertClaim(claim):any{
105
    console.warn('Trying toinsert claim  : '+claim);
106
   let url = this.baseUrl +"claims";
107
          let body = JSON.stringify( claim );
108
          // let headers = new Headers({ 'Content-Type': 'application/json' });
109
          // let options = new RequestOptions({ headers: headers });
110
          return this.http.post(url, body,  CustomOptions.getAuthOptionsWithBody())
111
                          .map(res => res.json())
112
                          .do(request => console.info("Insert Response:"+request.status) )
113
                          .catch(this.handleError);
114

    
115
    }
116
    insertDirectRecords(records):any{
117
      console.warn('Trying to feedrecords  : '+records);
118
      let url = this.baseUrl +"feed/bulk";
119
      let body = JSON.stringify( records );
120
      console.warn('Json body:  : '+body);
121
      // let headers = new Headers({ 'Content-Type': 'application/json' });
122
      // let options = new RequestOptions({ headers: headers });
123
      return this.http.post(url, body, CustomOptions.getAuthOptionsWithBody())
124
                            .map(res => res.json())
125
                            .do(request => console.info("Insert Response:"+request) )
126
                            .catch(this.handleError);
127

    
128
      }
129
  private handleError (error: Response) {
130
    // in a real world app, we may send the error to some remote logging infrastructure
131
    // instead of just logging it to the console
132
    console.log(error);
133
    return Observable.throw(error  || 'Server error');
134
  }
135

    
136
  getClaim(id:string):any {
137
  let url = this.baseUrl+"claims/"+id;
138
      return new Promise((resolve, reject) => {
139
        this.http.get(url)
140
          .map(res => res.json())
141
          .subscribe(
142
            data => {
143
              resolve(data.data);
144
            },
145
            err => {
146
              reject(err);
147
            }
148
          )
149
        ;
150
      });
151
      }
152

    
153

    
154
}
(1-1/10)