aboutsummaryrefslogtreecommitdiffstats
path: root/old/moon_gui/static/app/services/moon/pdp.service.js
blob: 822f741421b9be1ba1074f5e6d421449c73f20d8 (plain)
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;
		}
		
	}
	
})();