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