Project

General

Profile

1
import {Injectable} from '@angular/core';
2
import {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 {   } from '../../../shared/cache.service';
11
import { CustomOptions } from './customOptions.class';
12
@Injectable()
13
export class ClaimsService {
14
  private baseUrl;
15
  constructor(private http: Http ) {
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
      return this.http.get((fromCache && OpenaireProperties.isCacheEnabled())? (OpenaireProperties.getCacheUrl()+encodeURIComponent(url)): url, CustomOptions.getAuthOptions())
23
                    .map(request => <any> request.json())
24
                    .do(request => console.info("Get claims: offset = "+(size*(page-1)) + " limit ="+size ))
25
                    .catch(this.handleError);
26
  }
27
  getClaims( size : number, page : number, keyword:string, sortby: string, descending: boolean, types: string):any {
28
    console.info('ClaimsService: getClaims     ' );
29
    console.info('ClaimsService: Types : '+types );
30
    let url = this.baseUrl +"claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+"&"+types;
31
     return this.getClaimRequest(size,page,url,true);
32

    
33
  }
34
  getClaimsByUser( size : number, page : number, user:string, keyword:string, sortby: string, descending: boolean, types: string):any {
35
    console.info('ClaimsService: getClaims for user : '+user);
36
    let url = this.baseUrl +"users/claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+"&"+types;
37
     return this.getClaimRequest(size,page,url,false);
38

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

    
45
  }
46
  getClaimsByResult( size : number, page : number, resultId:string, keyword:string, sortby: string, descending: boolean, types: string ):any {
47
    console.info('ClaimsService: getClaims for result : '+resultId);
48
    let url = this.baseUrl +"results/"+resultId+"/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
  getClaimsByProject( size : number, page : number, projectId:string, keyword:string, sortby: string, descending: boolean, types: string ):any {
53
    console.info('ClaimsService: getClaims for project : '+projectId);
54
    let url = this.baseUrl +"projects/"+projectId+"/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
  deleteClaimById(claimId:string ):any{
59
    console.warn('Trying to delete claim with id : '+claimId);
60
    let url = this.baseUrl +"claims/"+claimId;
61
    // let headers = new Headers({ 'Content-Type': 'application/json' });
62
    // let options = new RequestOptions({ headers: headers });
63
      return this.http.delete( url,  CustomOptions.getAuthOptionsWithBody()).map(request => <any> request.json())
64
      // .do(request => console.info("After delete" ))
65
      .catch(this.handleError);
66

    
67
  }
68
  deleteBulk(claimIds:string[]):any{
69

    
70
    console.warn('Trying to delete claims with ids : '+claimIds);
71
     var url = "";
72

    
73
    for(var claimId of claimIds){
74
      url=url+(url.length >0 ?"&":"")+"claimId="+claimId;
75
    }
76
    url= this.baseUrl +"claims/bulk?"+url;
77

    
78
    // let headers = new Headers({ 'Content-Type': 'application/json' });
79
    // let options = new RequestOptions({ headers: headers });
80
      return this.http.delete( url,  CustomOptions.getAuthOptions()).map(request => <any> request.json())
81
      // .do(request => console.info("After delete" ))
82
      .catch(this.handleError);
83

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

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

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

    
122
      }
123
  private handleError (error: Response) {
124
    // in a real world app, we may send the error to some remote logging infrastructure
125
    // instead of just logging it to the console
126
    console.log(error);
127
    return Observable.throw(error  || 'Server error');
128
  }
129

    
130
  getClaim(id:string):any {
131
  let url = this.baseUrl+"claims/"+id;
132
      return new Promise((resolve, reject) => {
133
        this.http.get(url)
134
          .map(res => res.json())
135
          .subscribe(
136
            data => {
137
              resolve(data.data);
138
            },
139
            err => {
140
              reject(err);
141
            }
142
          )
143
        ;
144
      });
145
      }
146

    
147

    
148
}
(1-1/10)