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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
/**
* service allowing the client to interact with pdp
* @author arnaud marhin<arnaud.marhin@orange.com>
*/
(function() {
'use strict';
angular
.module('moon')
.factory('pdpService', pdpService);
pdpService.$inject = ['$q', '$resource','REST_URI', 'utilService'];
function pdpService($q, $resource, REST_URI, utilService) {
return {
data: {
pdp: $resource(REST_URI.PDP + ':pdp_id', {}, {
query: { method: 'GET', isArray: false },
get: { method: 'GET', isArray: false },
create: { method: 'POST' },
update: { method:'PATCH'},
remove: { method: 'DELETE' }
})
},
findAll: function() {
return this.data.pdp.query().$promise.then(function (data) {
return utilService.transform(data, 'pdps');
});
},
findAllWithCallBack : function (callback){
return this.data.pdp.query().$promise.then(function (data) {
callback( utilService.transform(data, 'pdps'));
});
},
findOne: function(id) {
return this.data.pdp.get({pdp_id: id}).$promise.then(function (data) {
return utilService.transformOne(data, 'pdps');
});
},
unMap: function(pdp, callbackSuccess, callbackError){
pdp.keystone_project_id = null;
if(_.has(pdp, 'project')){
delete pdp.project;
}
this.data.pdp.update({pdp_id: pdp.id}, pdp, callbackSuccess, callbackError);
},
map: function(pdp, projectId, callbackSuccess, callbackError){
pdp.keystone_project_id = projectId;
this.data.pdp.update({pdp_id: pdp.id}, pdp, callbackSuccess, callbackError);
},
update: function (pdp, callbackSuccess, callbackError) {
this.data.pdp.update({pdp_id: pdp.id}, pdp, callbackSuccess, callbackError);
},
mapPdpsToProjects : mapPdpsToProjects,
mapPdpsToProject : mapPdpsToProject
};
/**
* Will assign each project to it related pdp
* @param projects a list of Project, a new attribute pdp will be add, if the related pdp is existing in @param pdps
* @param pdps a list of Pdp
*/
function mapPdpsToProjects(projects, pdps){
_.each(projects, function(project){
return mapPdpsToProject(project, pdps);
});
}
function mapPdpsToProject(project, pdps){
if (_.isNull(project.keystone_project_id)){
return false;
}
var index = _.findIndex(pdps, function(pdp){
return project.id === pdp.keystone_project_id;
});
if(index === -1){
return false;
}
project.pdp = pdps[index];
return true;
}
}
})();
|