org.onap migration
[vid.git] / vid-app-common / src / main / webapp / app / vid / scripts / controller / ServiceModelController.js
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  * VID\r
4  * ================================================================================\r
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
6  * ================================================================================\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * \r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  * ============LICENSE_END=========================================================\r
19  */\r
20 \r
21 (function () {\r
22         'use strict';\r
23 \r
24         appDS2.controller("ServiceModelController", function ($scope, $http, $location, COMPONENT, VIDCONFIGURATION, FIELD, DataService, vidService,\r
25                         PropertyService, UtilityService) {\r
26 \r
27                 $scope.popup = {};\r
28                 \r
29         //      var baseEndpoint = "vid";\r
30                 var pathQuery = COMPONENT.SERVICES_DIST_STATUS_PATH + VIDCONFIGURATION.ASDC_MODEL_STATUS;\r
31                 \r
32                 if ( VIDCONFIGURATION.ASDC_MODEL_STATUS === FIELD.STATUS.ALL) {\r
33                         pathQuery = COMPONENT.SERVICES_PATH;\r
34                 }\r
35                 \r
36                 $scope.getServiceModels = function() {\r
37                         $scope.status = FIELD.STATUS.FETCHING_SERVICE_CATALOG_ASDC;\r
38 \r
39                         $http.get(pathQuery)\r
40                         .then(function successCallback(response) {\r
41                                 $scope.services = [];\r
42                                 if (response.data && angular.isArray(response.data.services)) {\r
43                                         wholeData = response.data.services;\r
44                                         $scope.services = $scope.filterDataWithHigherVersion(wholeData);\r
45                                         $scope.viewPerPage=10;\r
46                                         $scope.totalPage=$scope.services.length/$scope.viewPerPage;\r
47                                         $scope.sortBy=COMPONENT.NAME;\r
48                                         $scope.scrollViewPerPage=2;\r
49                                         $scope.currentPage=1;\r
50                                         $scope.searchCategory;\r
51                                         $scope.currentPageNum=1;\r
52                                         $scope.isSpinnerVisible = false;\r
53                                         $scope.isProgressVisible = false;\r
54                                 } else {\r
55                                         $scope.status = FIELD.STATUS.FAILED_SERVICE_MODELS_ASDC;\r
56                                         $scope.error = true;\r
57                                         $scope.isSpinnerVisible = false;\r
58                                 }\r
59                                 $scope.deployButtonType = response.data.readOnly ? 'disabled' : 'primary';\r
60                         }, function errorCallback(response) {\r
61                                 console.log("Error: " + response);\r
62                         });\r
63                 };\r
64 \r
65                 var wholeData=[];\r
66 \r
67                 $scope.filterDataWithHigherVersion = function(serviceData){\r
68                         var delimiter = '$$';\r
69                         var fiterDataServices = {};\r
70                         for(var i=0;i<serviceData.length;i++) {\r
71                                 var index = serviceData[i].invariantUUID.trim() + delimiter + serviceData[i].name.trim();\r
72                                 if(!fiterDataServices[index]) {\r
73                     var hasPreviousVersion = false;\r
74                     fiterDataServices[index] = {\r
75                         service: serviceData[i],\r
76                         hasPreviousVersion: false\r
77                     };\r
78                 }\r
79                 else {\r
80                     fiterDataServices[index].hasPreviousVersion = true;\r
81                     if(parseFloat(serviceData[i].version.trim())>parseFloat(fiterDataServices[index].service.version.trim())) {\r
82                         fiterDataServices[index].service = serviceData[i];\r
83                                         }\r
84                                 }\r
85                         }\r
86             return Object.keys(fiterDataServices).map(function(key) {\r
87                 var service = fiterDataServices[key].service;\r
88                 service.hasPreviousVersion = fiterDataServices[key].hasPreviousVersion;\r
89                 return  service;\r
90             });\r
91                 };\r
92 \r
93                 $scope.init = function() {\r
94                 var msecs = PropertyService.retrieveMsoMaxPollingIntervalMsec();\r
95                 PropertyService.setMsoMaxPollingIntervalMsec(msecs);\r
96                 \r
97                 var polls = PropertyService.retrieveMsoMaxPolls();\r
98                 PropertyService.setMsoMaxPolls(polls);\r
99                 \r
100                 //PropertyService.setMsoBaseUrl("testmso");\r
101                 PropertyService.setServerResponseTimeoutMsec(30000);\r
102         }\r
103                 \r
104                 $scope.prevPage = function() {\r
105                         $scope.currentPage--;\r
106                 }\r
107                 \r
108                 $scope.nextPage = function() {\r
109                         $scope.currentPage++;\r
110                 }\r
111                 \r
112                 $scope.createType = COMPONENT.A_LA_CARTE;\r
113                 $scope.deployService = function(service) {\r
114                         \r
115                         \r
116                         console.log("Instantiating SDC service " + service.uuid);\r
117                         \r
118                         $http.get(COMPONENT.SERVICES_PATH + service.uuid)\r
119                                 .then(function successCallback(getServiceResponse) {\r
120                                         \r
121                                         var serviceModel = getServiceResponse.data;\r
122                                         DataService.setServiceName(serviceModel.service.name);\r
123                                         \r
124                                         DataService.setModelInfo(COMPONENT.SERVICE, {\r
125                                                 "modelInvariantId": serviceModel.service.invariantUuid,\r
126                                                 "modelVersion": serviceModel.service.version,\r
127                                                 "serviceType" : serviceModel.service.serviceType,\r
128                                                 "serviceRole": serviceModel.service.serviceRole,\r
129                                                 "modelNameVersionId": serviceModel.service.uuid,\r
130                                                 "modelName": serviceModel.service.name,\r
131                                                 "description": serviceModel.service.description,\r
132                                                 "category":serviceModel.service.category\r
133                                         });\r
134                                         DataService.setALaCarte (true);\r
135                                         $scope.createType = COMPONENT.A_LA_CARTE;\r
136                                         var broadcastType = COMPONENT.CREATE_COMPONENT;\r
137                                         \r
138                                         if (UtilityService.arrayContains (VIDCONFIGURATION.MACRO_SERVICES, serviceModel.service.invariantUuid )) {\r
139                                                 DataService.setALaCarte (false);\r
140                                                 $scope.createType = COMPONENT.MACRO;\r
141                                                 var convertedAsdcModel = UtilityService.convertModel(serviceModel);\r
142                                                 \r
143                                                 //console.log ("display inputs "); \r
144                                                 //console.log (JSON.stringify ( convertedAsdcModel.completeDisplayInputs));\r
145                                                 \r
146                                                 DataService.setModelInfo(COMPONENT.SERVICE, {\r
147                                                         "modelInvariantId": serviceModel.service.invariantUuid,\r
148                                                         "modelVersion": serviceModel.service.version,\r
149                                                         "modelNameVersionId": serviceModel.service.uuid,\r
150                                                         "modelName": serviceModel.service.name,\r
151                                                         "description": serviceModel.service.description,\r
152                                                         "category":serviceModel.service.category,\r
153                                                         "serviceEcompNaming": serviceModel.service.serviceEcompNaming,\r
154                                                         "inputs": serviceModel.service.inputs,\r
155                                                         "serviceType": serviceModel.service.serviceType,\r
156                                                         "serviceRole": serviceModel.service.serviceRole,\r
157                                                         "displayInputs": convertedAsdcModel.completeDisplayInputs\r
158                                                 });\r
159                                         };\r
160                                         \r
161                                         $scope.$broadcast(broadcastType, {\r
162                                             componentId : COMPONENT.SERVICE,\r
163                                             callbackFunction : function(response) {\r
164                                                 if (response.isSuccessful) {\r
165                                                                 vidService.setModel(serviceModel);\r
166                                                                 \r
167                                                                 var subscriberId = FIELD.STATUS.NOT_FOUND;\r
168                                                                 var serviceType = FIELD.STATUS.NOT_FOUND;\r
169                                                                 \r
170                                                                 var serviceInstanceId = response.instanceId;\r
171                                                                 \r
172                                                                 for (var i = 0; i < response.control.length; i++) {\r
173                                                                         if (response.control[i].id == COMPONENT.SUBSCRIBER_NAME) {\r
174                                                                                 subscriberId = response.control[i].value;\r
175                                                                         } else if (response.control[i].id == FIELD.ID.SERVICE_TYPE) {\r
176                                                                                 serviceType = response.control[i].value;\r
177                                                                         }\r
178                                                                 }\r
179                                                                 \r
180                                                                 \r
181                                                                 $scope.refreshSubs(subscriberId,serviceType,serviceInstanceId);\r
182                                                         \r
183                                                 }\r
184                                             }\r
185                                         });\r
186                                         \r
187                                 }, function errorCallback(response) {\r
188                                         console.log("Error: " + response);\r
189                                 });\r
190                 };\r
191                 \r
192                 $scope.tableData=[];\r
193                 var oldData=[];\r
194                 $scope.loadPreviousVersionData=function(invariantUUID , name, version){\r
195                         $scope.tableData =[];\r
196                         oldData=[];\r
197                         for(var i=0;i<wholeData.length;i++){\r
198                                 if(wholeData[i].invariantUUID == invariantUUID && wholeData[i].name == name && version!=wholeData[i].version){\r
199                                         oldData.push(wholeData[i]);\r
200                                 }\r
201                         }\r
202                         $scope.tableData = oldData;\r
203                         $scope.createType = "Previous Version";\r
204                         var broadcastType = "createTableComponent";\r
205                         $scope.componentName = name;\r
206                         $scope.$broadcast(broadcastType, {\r
207                             componentId : COMPONENT.OLDVERSION,\r
208                             callbackFunction : function(response) {\r
209                             }\r
210                         });\r
211                 }\r
212 \r
213                 $scope.refreshSubs = function(subscriberId, serviceType, serviceInstanceId) {\r
214                         $scope.status = FIELD.STATUS.FETCHING_SUBSCRIBER_LIST_AAI;\r
215                         $scope.init();\r
216                         $http.get( FIELD.ID.AAI_REFRESH_FULL_SUBSCRIBERS, {\r
217 \r
218                         },{\r
219                                 timeout: $scope.responseTimeoutMsec\r
220                         }).then(function(response){\r
221                                 \r
222                                 if (response.data.status < 200 || response.data.status > 202) {\r
223                                         $scope.showError(FIELD.ERROR.MSO)\r
224                                         return;\r
225                                 }\r
226 \r
227                                 $scope.customer = response.data.customer; // get data from json\r
228 \r
229                                 $scope.customerList = [];\r
230 \r
231                                 $scope.serviceInstanceToCustomer = [];\r
232                                 \r
233                                 angular.forEach($scope.customer, function(subVal, subKey) {\r
234                                         var cust = { "globalCustomerId": subVal[FIELD.ID.GLOBAL_CUSTOMER_ID], "subscriberName": subVal[FIELD.ID.SUBNAME] };\r
235                                         $scope.customerList.push(cust);\r
236                                         if (subVal[FIELD.ID.SERVICE_SUBSCRIPTIONS] != null) {\r
237                                                         angular.forEach(subVal[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION], function(serviceSubscription, key) {\r
238                                                                 $scope.serviceInstanceId = [];\r
239                                                                 if (serviceSubscription[FIELD.ID.SERVICETYPE] != null) {\r
240                                                                         $scope.serviceType = serviceSubscription[FIELD.ID.SERVICETYPE];\r
241                                                                 } else {\r
242                                                                         $scope.serviceType = FIELD.STATUS.NO_SERVICE_SUBSCRIPTION_FOUND;\r
243                                                                 }\r
244                                                                 if (serviceSubscription[FIELD.ID.SERVICE_INSTANCES] != null) {\r
245                                                                         angular.forEach(serviceSubscription[FIELD.ID.SERVICE_INSTANCES][FIELD.ID.SERVICE_INSTANCE], function(instValue, instKey) {\r
246                                                                                 var foo = { "serviceInstanceId": instValue[FIELD.ID.SERVICE_INSTANCE_ID], \r
247                                                                                                 "globalCustomerId": subVal[FIELD.ID.GLOBAL_CUSTOMER_ID],\r
248                                                                                                 "subscriberName": subVal[FIELD.ID.SUBNAME] };\r
249                                                                                 $scope.serviceInstanceToCustomer.push(foo);\r
250                                                                         });\r
251                                                                 }\r
252                                                         });\r
253                                         }\r
254                                 });     \r
255                                 DataService.setServiceInstanceToCustomer($scope.serviceInstanceToCustomer);\r
256                                 var serviceIdList = [];\r
257                                 $http.get( FIELD.ID.AAI_GET_SERVICES, {\r
258                                 },{\r
259                                         timeout: $scope.responseTimeoutMsec\r
260                                 }).then(function(response) {\r
261                                         angular.forEach(response.data, function(value, key) {\r
262                                                 angular.forEach(value, function(subVal, key) {\r
263                                                         var newVal = { "id" : subVal[FIELD.ID.SERVICE_ID], "description" : subVal[FIELD.ID.SERVICE_DESCRIPTION] ,"isPermitted" : subVal[FIELD.ID.IS_PERMITTED] };\r
264                                                         serviceIdList.push(newVal);\r
265                                                         DataService.setServiceIdList(serviceIdList);\r
266                                                         \r
267                                                         $location.search({\r
268                                                                 "subscriberId": subscriberId,\r
269                                                                 "serviceType": serviceType,\r
270                                                                 "serviceInstanceId": serviceInstanceId,\r
271                                                                 "isPermitted": newVal.isPermitted.toString()\r
272                                                         });\r
273                                                         \r
274                                                         $location.path(COMPONENT.INSTANTIATE_PATH);\r
275                                                 });\r
276                                         });\r
277                                 });     \r
278                         })\r
279                         ["catch"]($scope.handleServerError);\r
280                 };\r
281         });\r
282 })();\r