VoLTE support
[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                                         //VOLTE services need input list generated and macro style\r
125                                         DataService.setE2EService(false);\r
126                                         if(serviceModel.service.category === 'E2E Service') {\r
127                                                 DataService.setE2EService(true);\r
128                                                 DataService.setHideServiceFields(false);\r
129                                                 VIDCONFIGURATION.MACRO_SERVICES.push(serviceModel.service.invariantUuid);\r
130                                         }\r
131 \r
132                                         DataService.setModelInfo(COMPONENT.SERVICE, {\r
133                                                 "modelInvariantId": serviceModel.service.invariantUuid,\r
134                                                 "modelVersion": serviceModel.service.version,\r
135                                                 "serviceType" : serviceModel.service.serviceType,\r
136                                                 "serviceRole": serviceModel.service.serviceRole,\r
137                                                 "modelNameVersionId": serviceModel.service.uuid,\r
138                                                 "modelName": serviceModel.service.name,\r
139                                                 "description": serviceModel.service.description,\r
140                                                 "category":serviceModel.service.category\r
141                                         });\r
142                                         DataService.setALaCarte (true);\r
143                                         $scope.createType = COMPONENT.A_LA_CARTE;\r
144                                         var broadcastType = COMPONENT.CREATE_COMPONENT;\r
145                                         \r
146                                         if (UtilityService.arrayContains (VIDCONFIGURATION.MACRO_SERVICES, serviceModel.service.invariantUuid )) {\r
147                                                 DataService.setALaCarte (false);\r
148                                                 $scope.createType = COMPONENT.MACRO;\r
149                                                 var convertedAsdcModel = UtilityService.convertModel(serviceModel);\r
150                                                 \r
151                                                 //console.log ("display inputs "); \r
152                                                 //console.log (JSON.stringify ( convertedAsdcModel.completeDisplayInputs));\r
153                                                 \r
154                                                 DataService.setModelInfo(COMPONENT.SERVICE, {\r
155                                                         "modelInvariantId": serviceModel.service.invariantUuid,\r
156                                                         "modelVersion": serviceModel.service.version,\r
157                                                         "modelNameVersionId": serviceModel.service.uuid,\r
158                                                         "modelName": serviceModel.service.name,\r
159                                                         "description": serviceModel.service.description,\r
160                                                         "category":serviceModel.service.category,\r
161                                                         "serviceEcompNaming": serviceModel.service.serviceEcompNaming,\r
162                                                         "inputs": serviceModel.service.inputs,\r
163                                                         "serviceType": serviceModel.service.serviceType,\r
164                                                         "serviceRole": serviceModel.service.serviceRole,\r
165                                                         "displayInputs": convertedAsdcModel.completeDisplayInputs\r
166                                                 });\r
167                                         };\r
168                                         \r
169                                         $scope.$broadcast(broadcastType, {\r
170                                             componentId : COMPONENT.SERVICE,\r
171                                             callbackFunction : function(response) {\r
172                                                 if (response.isSuccessful) {\r
173                                                                 vidService.setModel(serviceModel);\r
174                                                                 \r
175                                                                 var subscriberId = FIELD.STATUS.NOT_FOUND;\r
176                                                                 var serviceType = FIELD.STATUS.NOT_FOUND;\r
177                                                                 \r
178                                                                 var serviceInstanceId = response.instanceId;\r
179                                                                 \r
180                                                                 for (var i = 0; i < response.control.length; i++) {\r
181                                                                         if (response.control[i].id == COMPONENT.SUBSCRIBER_NAME) {\r
182                                                                                 subscriberId = response.control[i].value;\r
183                                                                         } else if (response.control[i].id == FIELD.ID.SERVICE_TYPE) {\r
184                                                                                 serviceType = response.control[i].value;\r
185                                                                         }\r
186                                                                 }\r
187                                                                 \r
188                                                                 \r
189                                                                 $scope.refreshSubs(subscriberId,serviceType,serviceInstanceId);\r
190                                                         \r
191                                                 }\r
192                                             }\r
193                                         });\r
194                                         \r
195                                 }, function errorCallback(response) {\r
196                                         console.log("Error: " + response);\r
197                                 });\r
198                 };\r
199                 \r
200                 $scope.tableData=[];\r
201                 var oldData=[];\r
202                 $scope.loadPreviousVersionData=function(invariantUUID , name, version){\r
203                         $scope.tableData =[];\r
204                         oldData=[];\r
205                         for(var i=0;i<wholeData.length;i++){\r
206                                 if(wholeData[i].invariantUUID == invariantUUID && wholeData[i].name == name && version!=wholeData[i].version){\r
207                                         oldData.push(wholeData[i]);\r
208                                 }\r
209                         }\r
210                         $scope.tableData = oldData;\r
211                         $scope.createType = "Previous Version";\r
212                         var broadcastType = "createTableComponent";\r
213                         $scope.componentName = name;\r
214                         $scope.$broadcast(broadcastType, {\r
215                             componentId : COMPONENT.OLDVERSION,\r
216                             callbackFunction : function(response) {\r
217                             }\r
218                         });\r
219                 }\r
220 \r
221                 $scope.refreshSubs = function(subscriberId, serviceType, serviceInstanceId) {\r
222                         $scope.status = FIELD.STATUS.FETCHING_SUBSCRIBER_LIST_AAI;\r
223                         $scope.init();\r
224                         $http.get( FIELD.ID.AAI_REFRESH_FULL_SUBSCRIBERS, {\r
225 \r
226                         },{\r
227                                 timeout: $scope.responseTimeoutMsec\r
228                         }).then(function(response){\r
229                                 \r
230                                 if (response.data.status < 200 || response.data.status > 202) {\r
231                                         $scope.showError(FIELD.ERROR.MSO)\r
232                                         return;\r
233                                 }\r
234 \r
235                                 $scope.customer = response.data.customer; // get data from json\r
236 \r
237                                 $scope.customerList = [];\r
238 \r
239                                 $scope.serviceInstanceToCustomer = [];\r
240                                 \r
241                                 angular.forEach($scope.customer, function(subVal, subKey) {\r
242                                         var cust = { "globalCustomerId": subVal[FIELD.ID.GLOBAL_CUSTOMER_ID], "subscriberName": subVal[FIELD.ID.SUBNAME] };\r
243                                         $scope.customerList.push(cust);\r
244                                         if (subVal[FIELD.ID.SERVICE_SUBSCRIPTIONS] != null) {\r
245                                                         angular.forEach(subVal[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION], function(serviceSubscription, key) {\r
246                                                                 $scope.serviceInstanceId = [];\r
247                                                                 if (serviceSubscription[FIELD.ID.SERVICETYPE] != null) {\r
248                                                                         $scope.serviceType = serviceSubscription[FIELD.ID.SERVICETYPE];\r
249                                                                 } else {\r
250                                                                         $scope.serviceType = FIELD.STATUS.NO_SERVICE_SUBSCRIPTION_FOUND;\r
251                                                                 }\r
252                                                                 if (serviceSubscription[FIELD.ID.SERVICE_INSTANCES] != null) {\r
253                                                                         angular.forEach(serviceSubscription[FIELD.ID.SERVICE_INSTANCES][FIELD.ID.SERVICE_INSTANCE], function(instValue, instKey) {\r
254                                                                                 var foo = { "serviceInstanceId": instValue[FIELD.ID.SERVICE_INSTANCE_ID], \r
255                                                                                                 "globalCustomerId": subVal[FIELD.ID.GLOBAL_CUSTOMER_ID],\r
256                                                                                                 "subscriberName": subVal[FIELD.ID.SUBNAME] };\r
257                                                                                 $scope.serviceInstanceToCustomer.push(foo);\r
258                                                                         });\r
259                                                                 }\r
260                                                         });\r
261                                         }\r
262                                 });     \r
263                                 DataService.setServiceInstanceToCustomer($scope.serviceInstanceToCustomer);\r
264                                 var serviceIdList = [];\r
265                                 $http.get( FIELD.ID.AAI_GET_SERVICES, {\r
266                                 },{\r
267                                         timeout: $scope.responseTimeoutMsec\r
268                                 }).then(function(response) {\r
269                                         angular.forEach(response.data, function(value, key) {\r
270                                                 angular.forEach(value, function(subVal, key) {\r
271                                                         var newVal = { "id" : subVal[FIELD.ID.SERVICE_ID], "description" : subVal[FIELD.ID.SERVICE_DESCRIPTION] ,"isPermitted" : subVal[FIELD.ID.IS_PERMITTED] };\r
272                                                         serviceIdList.push(newVal);\r
273                                                         DataService.setServiceIdList(serviceIdList);\r
274                                                         \r
275                                                         $location.search({\r
276                                                                 "subscriberId": subscriberId,\r
277                                                                 "serviceType": serviceType,\r
278                                                                 "serviceInstanceId": serviceInstanceId,\r
279                                                                 "isPermitted": newVal.isPermitted.toString()\r
280                                                         });\r
281                                                         \r
282                                                         $location.path(COMPONENT.INSTANTIATE_PATH);\r
283                                                 });\r
284                                         });\r
285                                 });     \r
286                         })\r
287                         ["catch"]($scope.handleServerError);\r
288                 };\r
289         });\r
290 })();\r