Fix test identities
[groupbasedpolicy.git] / groupbasedpolicy-ui / module / src / main / resources / gbp / contract / contract.service.js
1 define([], function () {
2     'use strict';
3
4     angular.module('app.gbp').service('ContractService', ContractService);
5
6     ContractService.$inject = ['Restangular'];
7
8     function ContractService(Restangular) {
9         /* methods */
10         this.createObject = createObject;
11
12         /**
13          * Contract constructor
14          * @constructor
15          */
16         function Contract() {
17             /* properties */
18             this.data = {};
19             /* methods */
20             this.setData = setData;
21             this.get = get;
22             this.put = put;
23             this.deleteContract = deleteContract;
24
25             /* Implementation */
26             /**
27              * fills Contract object with data
28              * @param data
29              */
30             function setData(data) {
31                 this.data.id = data.id;
32                 this.data.description = data.description;
33                 this.data.parent = data.parent;
34
35                 // TODO: use objects
36                 this.data['forwarding-context'] = data['forwarding-context'];
37                 this.data.target = data.target;
38                 this.data.subject = data.subject;
39                 this.data.clause = data.clause;
40                 this.data.quality = data.quality;
41             }
42
43             /**
44              * gets one Contract object from Restconf
45              * @param id
46              * @returns {*}
47              */
48             function get(idContract, idTenant, apiType) {
49                 var self = this;
50
51                 var restObj = Restangular.one('restconf').one(apiType).one('policy:tenants')
52                             .one('tenant').one(idTenant).one('policy').one('contract').one(idContract);
53
54                 return restObj.get().then(function (data) {
55                     self.setData(data.contract[0]);
56                 });
57             }
58
59             function put(id, successCallback) {
60                 var self = this;
61
62                 var restObj = Restangular.one('restconf').one('config').one('policy:tenants').one('tenant')
63                     .one(id).one('policy').one('contract').one(self.data.id),
64                     dataObj = { contract: [self.data] };
65
66                 return restObj.customPUT(dataObj).then(function (data) {
67                     successCallback(data);
68                 }, function (res) {
69
70                 });
71             }
72
73             function deleteContract(id, successCallback) {
74                 var self = this;
75
76                 var restObj = Restangular.one('restconf').one('config').one('policy:tenants').one('tenant')
77                     .one(id).one('policy').one('contract').one(self.data.id);
78
79                 return restObj.remove().then(function (data) {
80                     successCallback(data);
81                 }, function (res) {
82
83                 });
84             }
85
86         }
87
88         /**
89          * creates Contract object and fills it with data if available
90          * @param data
91          * @returns {Contract}
92          */
93         function createObject(data) {
94             var obj = new Contract();
95
96             if (data) {
97                 obj.setData(data);
98             }
99
100             return obj;
101         }
102     }
103
104     return ContractService;
105 });