article.service.ts
3.29 KB
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import { Injectable, Inject } from "ng-forward";
import {RestangularService} from "./restangular_service";
import {ProfileService} from "./profile.service";
@Injectable()
@Inject("Restangular", "$q", "$log", ProfileService)
export class ArticleService extends RestangularService<noosfero.Article> {
constructor(Restangular: restangular.IService, $q: ng.IQService, $log: ng.ILogService, protected profileService: ProfileService) {
super(Restangular, $q, $log);
}
getResourcePath() {
return "articles";
}
getDataKeys() {
return {
singular: 'article',
plural: 'articles'
};
}
createInProfile(profile: noosfero.Profile, article: noosfero.Article): ng.IPromise<noosfero.RestResult<noosfero.Article>> {
let profileElement = this.profileService.get(<number>profile.id);
(<any>profileElement).id = profile.id;
let headers = {
'Content-Type': 'application/json'
};
return this.create(article, <noosfero.RestModel>profileElement, null, headers);
}
createInParent(parentId: number, article: noosfero.Article): ng.IPromise<noosfero.RestResult<noosfero.Article>> {
let headers = {
'Content-Type': 'application/json'
};
let parent = this.getElement(parentId);
return this.create(article, parent, null, headers, true, "children");
}
getAsCollectionChildrenOf<C>(rootElement: noosfero.Environment | noosfero.Article | noosfero.Profile, path: string, queryParams?: any, headers?: any): restangular.ICollectionPromise<C> {
return rootElement.getList<C>(path, queryParams, headers);
}
getAsElementChildrenOf<C>(rootElement: noosfero.Environment | noosfero.Article | noosfero.Profile, path: string, id: number, queryParams?: any, headers?: any) {
return rootElement.one(path, id).get<C>(queryParams, headers);
}
getByProfile<T>(profile: noosfero.Profile, params?: any): ng.IPromise<noosfero.RestResult<noosfero.Article[]>> {
let profileElement = this.profileService.get(<number>profile.id);
return this.list(profileElement, params);
}
getArticleByProfileAndPath(profile: noosfero.Profile, path: string): ng.IPromise<noosfero.RestResult<noosfero.Article>> {
let deferred = this.$q.defer<noosfero.RestResult<noosfero.Article>>();
let profileElement = this.profileService.get(<number>profile.id);
let restRequest: ng.IPromise<any>;
let params = { path: path };
restRequest = profileElement.customGET(this.getResourcePath(), params);
restRequest
.then(this.getHandleSuccessFunction(deferred))
.catch(this.getHandleErrorFunction(deferred));
return deferred.promise;
}
getOneByProfile<T>(profile: noosfero.Profile, params?: any): ng.IPromise<noosfero.RestResult<noosfero.Article>> {
let profileElement = this.profileService.get(<number>profile.id);
return this.getSub(profileElement, params);
}
getChildren<T>(article: noosfero.Article, params?: any): ng.IPromise<noosfero.RestResult<noosfero.Article[]>> {
let articleElement = this.getElement(article.id);
articleElement.id = article.id;
return this.listSubElements(<noosfero.Article>articleElement, "children", params);
}
}