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
    //(fromCache && OpenaireProperties.isCacheEnabled())? (OpenaireProperties.getCacheUrl()+encodeURIComponent(url)): url
23
      return this.http.get(url, CustomOptions.getAuthOptions())
24
                    .map(request => <any> request.json())
25
                    .do(request => console.info("Get claims: offset = "+(size*(page-1)) + " limit ="+size ))
26
                    .catch(this.handleError);
27
  }
28
  getClaims( size : number, page : number, keyword:string, sortby: string, descending: boolean, types: string):any {
29
    console.info('ClaimsService: getClaims     ' );
30
    console.info('ClaimsService: Types : '+types );
31
    let url = this.baseUrl +"claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+"&"+types;
32
     return this.getClaimRequest(size,page,url,true);
33

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
148

    
149
}
(1-1/10)