90daf3550bbb2f857c516d4ac7075f8485bfce47
[vid.git] / vid-app-common / src / main / webapp / app / vid / scripts / services / deleteResumeService.js
1 /*-
2  * ============LICENSE_START=======================================================
3  * VID
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 "use strict";
22
23 var DeleteResumeService = function($log, AaiService, AsdcService, DataService,
24         ComponentService, COMPONENT, FIELD, UtilityService) {
25
26     var _this = this;
27
28     var getAsyncOperationList = function() {
29         if (DataService.getLoggedInUserId() == null)
30                         getLoggedInUserID();
31                 switch (_this.componentId) {
32                 case COMPONENT.SERVICE:
33                         return [ getSubscribers, getLcpCloudRegionTenantList ];
34                 case COMPONENT.NETWORK:
35                         return [ getLcpCloudRegionTenantList ];
36                 case COMPONENT.VNF:
37                         return [ getLcpCloudRegionTenantList ];
38                 case COMPONENT.VF_MODULE:
39                         return [ getLcpCloudRegionTenantList ];
40                 case COMPONENT.VOLUME_GROUP:
41                         return [ getLcpCloudRegionTenantList ];
42                 case COMPONENT.CONFIGURATION:
43                         return [ getLcpCloudRegionTenantList ];
44                 }
45         };
46         
47         var getLcpCloudRegionTenantList = function() {
48                 //console.log ( "global customer id: " ); 
49                 //console.log ( JSON.stringify (DataService.getGlobalCustomerId()) );
50                 
51                 //console.log ( "service type: " ); 
52                 //console.log ( JSON.stringify (DataService.getServiceType()) );
53                 
54                 AaiService.getLcpCloudRegionTenantList(DataService
55                                 .getGlobalCustomerId(), DataService.getServiceType(), function(
56                                 response) {
57                         DataService.setCloudRegionTenantList(response);
58                         UtilityService.startNextAsyncOperation();
59                 });
60         };
61         
62         var getLoggedInUserID = function() {
63                 AaiService.getLoggedInUserID(function(response) {
64                         DataService.setLoggedInUserId(response.data);
65                         UtilityService.startNextAsyncOperation();
66                 });
67         };
68         
69         var getSubscribers = function() {
70                 AaiService.getSubscribers(function(response) {
71                         DataService.setSubscribers(response);
72                         UtilityService.startNextAsyncOperation();
73                 });
74         };
75         
76         var internalGetParametersHandler = function() {
77                 if (angular.isFunction(_this.getParametersHandler)) {
78                                 if (_this.componentId == COMPONENT.SERVICE) {
79                                         if ( DataService.getALaCarte() ) {
80                                                 _this.getParametersHandler({
81                                                         summaryList : getSummaryList(),
82                                                         userProvidedList : getUserProvidedList()
83                                                 }, true);
84                                         }
85                                         else {
86                                                 _this.getParametersHandler({
87                                                         summaryList : getSummaryList(),
88                                                         userProvidedList : getUserProvidedList()
89                                                 }, false);
90                                         }
91                         }
92                         else {
93                                 _this.getParametersHandler({
94                                         summaryList : getSummaryList(),
95                                         userProvidedList : getUserProvidedList()
96                                 }, false);
97                         }
98                 }
99         };
100         
101         var getSubscribersParameter = function() {
102                 var subscribers = DataService.getSubscribers();
103                 var parameter = FIELD.PARAMETER.SUBSCRIBER_NAME;
104                 parameter.optionList = [];
105
106                 for (var i = 0; i < subscribers.length; i++) {
107                         parameter.optionList.push({
108                                 id : subscribers[i][FIELD.ID.GLOBAL_CUSTOMER_ID],
109                                 name : subscribers[i][FIELD.ID.SUBNAME]
110                         })
111                 }
112                 return parameter;
113         };
114         
115         var getServiceId = function() {
116                 var serviceIdList = DataService.getServiceIdList();
117                 var parameter = FIELD.PARAMETER.PRODUCT_FAMILY;
118                 parameter.optionList = new Array();
119                 for (var i = 0; i < serviceIdList.length; i++) {
120                         parameter.optionList.push({
121                                 id : serviceIdList[i].id,
122                                 name : serviceIdList[i].description
123                         });
124                 }
125                 return parameter;
126         };
127         
128         var getUserProvidedList = function() {
129
130                 //var parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];
131
132                 var parameterList = [];
133                 
134                 switch (_this.componentId) {
135                 case COMPONENT.SERVICE:
136                         if ( DataService.getALaCarte() ) {
137                                 parameterList = [];
138                         }
139                         else {
140                                 parameterList = parameterList.concat ([getLcpRegion(),
141                                     FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
142                                     FIELD.PARAMETER.TENANT_DISABLED ]);
143                         }
144                         break;
145                 case COMPONENT.NETWORK:
146                 case COMPONENT.CONFIGURATION:
147                 case COMPONENT.VNF:
148                         parameterList = parameterList.concat([ //getServiceId(),
149                                         getLcpRegion(), FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
150                                         FIELD.PARAMETER.TENANT_DISABLED ]);
151                         break;
152                 case COMPONENT.VF_MODULE:
153                         parameterList = parameterList.concat([
154                                 getLcpRegion(),
155                                         FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
156                                         FIELD.PARAMETER.TENANT_DISABLED
157                         ]);
158                         
159                         break;
160                 case COMPONENT.VOLUME_GROUP:
161                         parameterList = parameterList.concat([ getLcpRegion(),
162                                         FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
163                                         FIELD.PARAMETER.TENANT_DISABLED ]);
164                 }
165
166                 //parameterList.push(FIELD.PARAMETER.SUPPRESS_ROLLBACK);
167
168                 //addArbitraryParameters(parameterList);
169
170                 return parameterList;
171         };
172     var getSummaryList = function() {
173         switch (_this.componentId) {
174         case COMPONENT.CONFIGURATION:
175         case COMPONENT.NETWORK:
176         case COMPONENT.SERVICE:
177         case COMPONENT.VNF:
178         case COMPONENT.VF_MODULE:
179         case COMPONENT.VOLUME_GROUP:
180             var summaryList = [ {
181                 name : FIELD.NAME.SUBSCRIBER_NAME,
182                 value : DataService.getSubscriberName()
183             }, {
184                 name : FIELD.NAME.CUSTOMER_ID,
185                 value : DataService.getGlobalCustomerId()
186             }, {
187                 name : FIELD.NAME.SERVICE_UUID,
188                 value : DataService.getServiceUuid()
189             }, {
190                 name : FIELD.NAME.SERVICE_NAME,
191                 value : DataService.getServiceName()
192            /* }, {
193                 name : FIELD.NAME.USER_SERVICE_INSTANCE_NAME,
194                 value : DataService.getUserServiceInstanceName()*/
195             } ];
196
197                 _this.parameterList = new Array();
198                 
199                 addToList(FIELD.NAME.SERVICE_NAME, DataService.getServiceName());
200
201                 switch (_this.componentId) {
202                 case COMPONENT.SERVICE:
203                         addToList(FIELD.NAME.SERVICE_INVARIANT_UUID, DataService
204                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);
205                         addToList(FIELD.NAME.SERVICE_VERSION, DataService
206                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);
207                         addToList(FIELD.NAME.SERVICE_UUID, DataService
208                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);
209                         addToList(FIELD.NAME.SERVICE_DESCRIPTION, DataService
210                                         .getModelInfo(_this.componentId)[FIELD.ID.DESCRIPTION]);
211                         addToList(FIELD.NAME.SERVICE_CATEGORY, DataService
212                                         .getModelInfo(_this.componentId)[FIELD.ID.CATEGORY]);
213                         break;
214                 case COMPONENT.VF_MODULE:
215                         addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService
216                                         .getSubscriberName());
217                         addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService
218                                         .getServiceInstanceName());
219                         addToList(FIELD.NAME.MODEL_NAME, DataService
220                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);
221                         addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService
222                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);
223                         addToList(FIELD.NAME.MODEL_VERSION, DataService
224                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);
225                         addToList(FIELD.NAME.MODEL_UUID, DataService
226                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);
227                         break;
228                 case COMPONENT.CONFIGURATION:
229                 case COMPONENT.NETWORK:
230                 case COMPONENT.VNF:
231                 case COMPONENT.VOLUME_GROUP:
232                         addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService
233                                         .getSubscriberName());
234                         addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService
235                                         .getServiceInstanceName());
236                         addToList(FIELD.NAME.MODEL_NAME, DataService
237                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);
238                         addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService
239                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);
240                         addToList(FIELD.NAME.MODEL_VERSION, DataService
241                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);
242                         addToList(FIELD.NAME.MODEL_UUID, DataService
243                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);
244                         break;
245                 }
246                 
247             /*var additionalList = ComponentService.getInventoryParameterList(
248                     _this.componentId, DataService.getInventoryItem());*/
249                 var additionalList = ComponentService.getDisplayNames(ComponentService
250                             .getInventoryParameterList(_this.componentId, DataService
251                                     .getInventoryItem(), true ));
252
253             return summaryList.concat(ComponentService
254                     .getDisplayNames(additionalList));
255         }
256     };
257
258     var getMsoUrl = function() {
259                 switch (_this.componentId) {
260                         case COMPONENT.CONFIGURATION:
261                                 return "mso_delete_configuration/"
262                                         + DataService.getServiceInstanceId() + "/configurations/"
263                                         + DataService.getConfigurationInstanceId();
264                         case COMPONENT.NETWORK:
265                                 return "mso_delete_nw_instance/"
266                                         + DataService.getServiceInstanceId() + "/networks/"
267                                         + DataService.getNetworkInstanceId();
268                         case COMPONENT.SERVICE:
269                                 return "mso_delete_svc_instance/"
270                                         + DataService.getServiceInstanceId();
271                         case COMPONENT.VNF:
272                                 return "mso_delete_vnf_instance/"
273                                         + DataService.getServiceInstanceId() + "/vnfs/"
274                                         + DataService.getVnfInstanceId();
275                         case COMPONENT.VF_MODULE:
276                                 return "mso_delete_vfmodule_instance/"
277                                         + DataService.getServiceInstanceId() + "/vnfs/"
278                                         + DataService.getVnfInstanceId() + "/vfModules/"
279                                         + DataService.getVfModuleInstanceId();
280                         case COMPONENT.VOLUME_GROUP:
281                                 return "mso_delete_volumegroup_instance/"
282                                         + DataService.getServiceInstanceId() + "/vnfs/"
283                                         + DataService.getVnfInstanceId() + "/volumeGroups/"
284                                         + DataService.getVolumeGroupInstanceId();
285                 }
286     };
287
288         var addToList = function(name, value) {
289                 _this.parameterList.push({
290                         name : name,
291                         value : value
292                 });
293         };
294         
295     var getMsoRequestDetails = function(parameterList) {
296         console.log("getMsoRequestDetails invoked");
297                 var inventoryInfo = ComponentService.getInventoryInfo(
298                         _this.componentId, DataService.getInventoryItem());
299                 var modelInfo = DataService.getModelInfo(_this.componentId);
300                 var requestorloggedInId = DataService.getLoggedInUserId();
301                 if (requestorloggedInId ==  null)
302                         requestorloggedInId = "";
303                 var requestDetails = {
304                                 modelInfo : {
305                                         modelType : _this.componentId,
306                                         modelInvariantId : modelInfo.modelInvariantId,
307                                         modelVersionId : modelInfo.modelNameVersionId,
308                                         modelName : modelInfo.modelName,
309                                         modelCustomizationName : modelInfo.modelCustomizationName,
310                                         modelCustomizationId : modelInfo.customizationUuid,
311                                         modelVersion : modelInfo.modelVersion
312                                 },
313                                 requestInfo : {
314                                         source : FIELD.ID.VID,
315                                         requestorId: requestorloggedInId
316                                 }
317                 };
318                 
319                 switch (_this.componentId) {
320                         case COMPONENT.SERVICE:
321                                 requestDetails.requestParameters = {
322                                         aLaCarte : DataService.getALaCarte()
323                                 };
324                                 if ( !(DataService.getALaCarte()) ) {
325                                         // for macro delete include cloud config.
326                                         var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);
327                                         if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {
328                                                 lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,
329                                                                 parameterList);
330                                         }
331                                         requestDetails.cloudConfiguration = {
332                                                 lcpCloudRegionId : lcpRegion,
333                                                 tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)
334                                         };
335                                 }
336                             break;
337                         case COMPONENT.VNF:
338             case COMPONENT.CONFIGURATION:
339                             console.log("getMsoRequestDetails COMPONENT.VNF");
340                                 var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);
341                                 if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {
342                                         lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,
343                                                         parameterList);
344                                 }
345                                 requestDetails.cloudConfiguration = {
346                                         lcpCloudRegionId : lcpRegion,
347                                         tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)
348                                 };
349         
350                                 break;
351                         case COMPONENT.VF_MODULE:
352                         case COMPONENT.NETWORK:
353                                         var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);
354                                         if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {
355                                                 lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,
356                                                                 parameterList);
357                                         }
358                                         requestDetails.cloudConfiguration = {
359                                                         lcpCloudRegionId : lcpRegion,
360                                                         tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)
361                                         };      
362                                         break;
363                         case COMPONENT.VOLUME_GROUP:
364                                 var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);
365                                 if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {
366                                         lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,
367                                                         parameterList);
368                                 }
369                                 requestDetails.cloudConfiguration = {
370                                                 lcpCloudRegionId : lcpRegion,
371                                                 tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)
372                                 };      
373                                 
374                                 break;
375                         default:
376                                 requestDetails.cloudConfiguration = {
377                                         lcpCloudRegionId : DataService.getLcpRegion(),
378                                         tenantId : DataService.getTenant()
379                                 };
380                 }
381                 return requestDetails;
382     }
383     
384     var getLcpRegion = function() {
385                 var cloudRegionTenantList = DataService.getCloudRegionTenantList();
386                 var parameter = "";
387                 if ( UtilityService.hasContents (cloudRegionTenantList) ) {
388                         parameter = FIELD.PARAMETER.LCP_REGION;
389                         parameter.optionList = new Array();
390                         for (var i = 0; i < cloudRegionTenantList.length; i++) {
391                                 for (var j = 0; j < parameter.optionList.length; j++) {
392                                         if (parameter.optionList[j].id === cloudRegionTenantList[i].cloudRegionId) {
393                         parameter.optionList[j].isPermitted =
394                             parameter.optionList[j].isPermitted || cloudRegionTenantList[i].isPermitted;
395                         break;
396                                         }
397                                 }
398                                 if (j < parameter.optionList.length) {
399                                         continue;
400                                 }
401                                 parameter.optionList.push({
402                                         id : cloudRegionTenantList[i].cloudRegionId,
403           isPermitted : cloudRegionTenantList[i].isPermitted
404
405         });
406                         }
407                 }
408                 return parameter;
409         };
410         
411         var getTenantList = function(cloudRegionId) {
412                 var parameter = "";
413                 var cloudRegionTenantList = DataService.getCloudRegionTenantList();
414                 if ( UtilityService.hasContents (cloudRegionTenantList) ) {
415                         var parameter = FIELD.PARAMETER.TENANT_ENABLED;
416                         parameter.optionList = new Array();
417                         for (var i = 0; i < cloudRegionTenantList.length; i++) {
418                                 if (cloudRegionTenantList[i].cloudRegionId === cloudRegionId) {
419                                         parameter.optionList.push({
420                                                 id : cloudRegionTenantList[i].tenantId,
421                                                 name : cloudRegionTenantList[i].tenantName,
422                         isPermitted : cloudRegionTenantList[i].isPermitted
423                     });
424                                 }
425                         }
426                 }
427                 return parameter;
428
429         };
430
431         var addOptionList = function(parameter, optionSimpleArray) {
432                 var optionList = new Array();
433                 if (!angular.isArray(optionSimpleArray)) {
434                         return optionList;
435                 }
436                 for (var i = 0; i < optionSimpleArray.length; i++) {
437                         optionList.push({
438                                 name : optionSimpleArray[i]
439                         });
440                 }
441                 parameter.optionList = optionList;
442                 return parameter;
443         };
444
445     var getValueFromList = function(id, parameterList) {
446                 for (var i = 0; i < parameterList.length; i++) {
447                         if (parameterList[i].id === id) {
448                                 return parameterList[i].value;
449                         }
450                 }
451         };
452
453         var updateUserParameterList = function(updatedId, parameterListControl) {
454                 if (updatedId === FIELD.ID.LCP_REGION) {
455                         var list = parameterListControl.getList(updatedId);
456                         if (list[0].selectedIndex >= 0) {
457                                 parameterListControl
458                                                 .updateList([ getTenantList(list[0].value) ]);
459                         } else {
460                                 parameterListControl
461                                                 .updateList([ FIELD.PARAMETER.TENANT_DISABLED ]);
462                         }
463                         if (list[0].value === FIELD.KEY.LCP_REGION_TEXT) {
464                                 parameterListControl
465                                                 .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_VISIBLE ]);
466                         } else {
467                                 parameterListControl
468                                                 .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN ]);
469                         }
470                 } else if (updatedId === FIELD.ID.SUBSCRIBER_NAME) {
471                         var list = parameterListControl.getList(updatedId);
472                         if (list[0].selectedIndex >= 0) {
473                                 DataService.setGlobalCustomerId(list[0].value);
474
475                                 AaiService.getSubscriptionServiceTypeList(DataService
476                                                 .getGlobalCustomerId(), function(response) {
477                                         DataService.setSubscriptionServiceTypeList(response);
478                                         var serviceTypeParameters = FIELD.PARAMETER.SERVICE_TYPE;
479                                         serviceTypeParameters.optionList = [];
480
481                                         for (var i = 0; i < response.length; i++) {
482                                                 serviceTypeParameters.optionList.push({
483                                                         "id" : response[i].name,
484                                                         "name" : response[i].name
485                                                 });
486                                         }
487                                         parameterListControl.updateList([ serviceTypeParameters ]);
488                                 });
489
490                         } else {
491                                 parameterListControl
492                                                 .updateList([ FIELD.PARAMETER.SERVICE_TYPE_DISABLED ]);
493                         }
494                 }
495         };
496
497     return {
498                 initializeComponent : function(componentId) {
499                         _this.componentId = ComponentService.initialize(componentId);
500                 },
501                 getComponentDisplayName : ComponentService.getComponentDisplayName,
502                 getSummaryList : getSummaryList,
503                 getParameters : function(getParametersHandler) {
504                         _this.getParametersHandler = getParametersHandler;
505                         UtilityService.setHttpErrorHandler(_this.httpErrorHandler);
506                         UtilityService.startAsyncOperations(getAsyncOperationList(),
507                                         internalGetParametersHandler);
508                 },
509                 updateUserParameterList : updateUserParameterList,
510                 getMsoRequestDetails : getMsoRequestDetails,
511                 getMsoUrl : getMsoUrl,
512                 isMacro : DataService.getMacro()
513     }
514 }
515
516 appDS2.factory("DeleteResumeService", [ "$log", "AaiService", "AsdcService",
517         "DataService", "ComponentService", "COMPONENT", "FIELD",
518         "UtilityService", DeleteResumeService ]);