rsanchez
2017-04-17 f11e78dacb3bbf45988a5002bed3bf8e7f97d043
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import { LocaleService } from '../common/i18n';
import { BasicService } from '../common/utils';
import { Observable } from 'rxjs/Observable';
import { Http, RequestOptionsArgs, URLSearchParams } from '@angular/http';
class MySearchParams extends URLSearchParams {
  constructor(obj : any) {
    var searchQuery = Object.keys(obj).map(key => `${key}=${encodeURIComponent(obj[key])}`).join('&');
    super(searchQuery);
  }
}
export class SeCurisResourceServices extends BasicService {
    constructor($L: LocaleService,
                protected http: Http,                
                protected resource: string) {
        super($L);
    }    
    public get(id?: any) : Observable<any> {
      let url = `${this.resource}/${id || ''}`;
      return this.http.get(url).map(response => response.json()).catch(err => super.processErrorResponse(err));
    }
    public create(data: any) : Observable<any> {
      let url = `${this.resource}`;
      return this.http.post(url, JSON.stringify(data)).map(response => response.json()).catch(err => super.processErrorResponse(err));
    }
    public modify(id: any, data: any) : Observable<any> {
      let url = `${this.resource}/${id}`;
      return this.http.post(url, JSON.stringify(data)).map(response => response.json()).catch(err => super.processErrorResponse(err));
    }
    public remove(id: any) : Observable<any> {
      let url = `${this.resource}/${id}`;
      return this.http.delete(url).map(response => response.json()).catch(err => super.processErrorResponse(err));
    }
    
    public action(id: any, action: string, method = 'POST', params : any = {}) : Observable<any> {
      let url = `${this.resource}/${id}/${action}`;
      params.action = action;
      var options:RequestOptionsArgs = {
        url: url,
        method: method,
        search: (method == 'GET') && new MySearchParams(params) || undefined,
        body: (method == 'POST') && JSON.stringify(params) || undefined
      };
      return this.http.request(url, options).map(response => response.json()).catch(err => super.processErrorResponse(err));
    }
}