1 |
43769
|
argiro.kok
|
import {Injectable} from '@angular/core';
|
2 |
|
|
import {Jsonp, URLSearchParams,ResponseOptions, RequestOptions, Headers} from '@angular/http';
|
3 |
|
|
import {Http, Response} from '@angular/http';
|
4 |
|
|
import {Observable} from 'rxjs/Observable';
|
5 |
43785
|
argiro.kok
|
import {Claim} from '../utils/entities/claim';
|
6 |
|
|
import {OpenaireProperties} from '../utils/properties/openaireProperties';
|
7 |
44638
|
argiro.kok
|
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 |
43769
|
argiro.kok
|
|
12 |
|
|
@Injectable()
|
13 |
|
|
export class ClaimsService {
|
14 |
|
|
private baseUrl;
|
15 |
44638
|
argiro.kok
|
constructor(private jsonp: Jsonp, private http: Http, public _cache: CacheService) {
|
16 |
43769
|
argiro.kok
|
this.baseUrl = OpenaireProperties.getClaimsAPIURL();
|
17 |
|
|
}
|
18 |
|
|
|
19 |
|
|
private getClaimRequest(size : number, page : number, url :string):any {
|
20 |
|
|
console.info('ClaimsService: Claims request: '+url);
|
21 |
44638
|
argiro.kok
|
let key = url;
|
22 |
|
|
if (this._cache.has(key)) {
|
23 |
|
|
return Observable.of(this._cache.get(key));
|
24 |
|
|
}
|
25 |
43769
|
argiro.kok
|
return this.http.get( url)
|
26 |
|
|
.map(request => <any> request.json())
|
27 |
|
|
.do(request => console.info("Get claims: offset = "+(size*(page-1)) + " limit ="+size ))
|
28 |
44638
|
argiro.kok
|
.catch(this.handleError)
|
29 |
|
|
.do(res => {
|
30 |
|
|
this._cache.set(key, res);
|
31 |
|
|
});
|
32 |
43769
|
argiro.kok
|
}
|
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 |
43894
|
argiro.kok
|
let url = this.baseUrl +"claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+"&"+types;
|
37 |
43769
|
argiro.kok
|
return this.getClaimRequest(size,page,url);
|
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 |
43894
|
argiro.kok
|
let url = this.baseUrl +"users/"+user+"/claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+"&"+types;
|
43 |
43769
|
argiro.kok
|
return this.getClaimRequest(size,page,url);
|
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 |
43894
|
argiro.kok
|
let url = this.baseUrl +"contexts/"+contextId+"/claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+"&"+types;
|
49 |
43769
|
argiro.kok
|
return this.getClaimRequest(size,page,url);
|
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 |
43894
|
argiro.kok
|
let url = this.baseUrl +"results/"+resultId+"/claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+"&"+types;
|
55 |
43769
|
argiro.kok
|
return this.getClaimRequest(size,page,url);
|
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 |
43894
|
argiro.kok
|
let url = this.baseUrl +"projects/"+projectId+"/claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+"&"+types;
|
61 |
43769
|
argiro.kok
|
return this.getClaimRequest(size,page,url);
|
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, options).map(request => <any> request.json())
|
70 |
44087
|
argiro.kok
|
// .do(request => console.info("After delete" ))
|
71 |
43769
|
argiro.kok
|
.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 |
|
|
let headers = new Headers({ 'Content-Type': 'application/json' });
|
84 |
|
|
let options = new RequestOptions({ headers: headers });
|
85 |
|
|
return this.http.delete( url, options).map(request => <any> request.json())
|
86 |
44087
|
argiro.kok
|
// .do(request => console.info("After delete" ))
|
87 |
43769
|
argiro.kok
|
.catch(this.handleError);
|
88 |
|
|
|
89 |
|
|
}
|
90 |
|
|
insertBulkClaims(claims):any{
|
91 |
|
|
console.warn('Trying toinsert claims : '+claims);
|
92 |
|
|
let url = this.baseUrl +"claims/bulk";
|
93 |
|
|
let body = JSON.stringify( claims );
|
94 |
|
|
console.warn('Json body: : '+body);
|
95 |
|
|
let headers = new Headers({ 'Content-Type': 'application/json' });
|
96 |
|
|
let options = new RequestOptions({ headers: headers });
|
97 |
|
|
return this.http.post(url, body, options)
|
98 |
|
|
.map(res => res.json())
|
99 |
|
|
.do(request => console.info("Insert Response:"+request.status) )
|
100 |
|
|
.catch(this.handleError);
|
101 |
|
|
|
102 |
|
|
}
|
103 |
|
|
insertClaim(claim):any{
|
104 |
|
|
console.warn('Trying toinsert claim : '+claim);
|
105 |
|
|
let url = this.baseUrl +"claims";
|
106 |
|
|
let body = JSON.stringify( claim );
|
107 |
|
|
let headers = new Headers({ 'Content-Type': 'application/json' });
|
108 |
|
|
let options = new RequestOptions({ headers: headers });
|
109 |
|
|
return this.http.post(url, body, options)
|
110 |
|
|
.map(res => res.json())
|
111 |
|
|
.do(request => console.info("Insert Response:"+request.status) )
|
112 |
|
|
.catch(this.handleError);
|
113 |
|
|
|
114 |
|
|
}
|
115 |
|
|
|
116 |
|
|
private handleError (error: Response) {
|
117 |
|
|
// in a real world app, we may send the error to some remote logging infrastructure
|
118 |
|
|
// instead of just logging it to the console
|
119 |
44907
|
argiro.kok
|
console.log(error);
|
120 |
43769
|
argiro.kok
|
return Observable.throw(error || 'Server error');
|
121 |
|
|
}
|
122 |
|
|
|
123 |
|
|
getClaim(id:string):any {
|
124 |
|
|
let url = this.baseUrl+"claims/"+id;
|
125 |
|
|
return new Promise((resolve, reject) => {
|
126 |
|
|
this.http.get(url)
|
127 |
|
|
.map(res => res.json())
|
128 |
|
|
.subscribe(
|
129 |
|
|
data => {
|
130 |
|
|
resolve(data.data);
|
131 |
|
|
},
|
132 |
|
|
err => {
|
133 |
|
|
reject(err);
|
134 |
|
|
}
|
135 |
|
|
)
|
136 |
|
|
;
|
137 |
|
|
});
|
138 |
|
|
}
|
139 |
|
|
|
140 |
|
|
}
|